Tài liệu tham khảo chuyên ngành tin học Thiết kế hệ vi xử lý 8051
Trang 15 Chương trinh dừng lại và báo động bằng còi khi xảy ra mộttrong các trường hợp sau :
- Có ít nhất 4 kênh đo vượt quá hoặc nhỏ hơn giá trị giới hạncho phép cho trước so với giá trị trung bình
- Giá trị nhiệt độ trung bình lớn hơn hoặc nhỏ hơn giá trị giớihạn MAX và MIN tương ứng Các giá trị giới hạn MAX vàMIN được đặt ở hai ô nhớ của RAM
6 Thiết kế bàn phím nhập dữ liệu
Trang 28 Soạn thảo chương trình bằng mã ngữ của 8051………….18
9 Sơ đồ chi tiết của hệ vi xử lý ……….36
TÀI LIỆU THAM KHẢO
1 Họ vi điều khiển 8051 – Tống Văn On , Hoàng Đức Hải Nhà xuất bản laođộng – xã hội , Hà Nội – 2001
2 Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn Tăng Cường , PhanQuốc Thắng Nhà xuất bản khoa học và kỹ thuật , Hà Nội - 2004
Trang 3BµI tËp vi xö lý
Ngày nay với sự phát triển của khoa học công nghệ, việc áp dụngnhững thành tựu khoa học vào trong đời sống và sản xuất ngày càng nhiều Hơn nữa trong các nhà máy, xí nghiệp việc tự động hoá các quá trình sảnxuất , tự động hoá các thiết bị điều khiển là một vấn đề hết sức quan trọng vàcần thiết Trong các thiết bị tự động muốn điều khiển một quá trình nào đómột cách tối ưu thì nhất thiết phải có các thiết bị đo, chính nhờ các thiết bị đongười ta có thể kiểm soát được các thông số của hệ thống mà từ đó đưa ra cáctín hiệu điều khiển nhằm làm cho hệ thống hoạt động ổn định
Trước đây khi ngành vật liệu chưa tìm ra các vật liệu mới, thì các dụngcụ đo thường được làm bằng cơ khí có độ chính xác không cao, dải đo hẹp,không làm việc được trong các môi trường đòi hỏi độ bền cơ học cao Khingành vật liệu tìm ra được các vật liệu mới, công nghệ chế tạo phát triển đãcó thể tạo ra các thiết bị đo thông minh, có độ chính cao, làm việc được trongcác môi trường khắc nghiệt như : đo nhiệt độ lò nung, đo nồng độ các chấthoá học … nhờ các thiết bị đo thông minh này người ta có thể kiểm soát cácthông số của hệ thống một cách chặt chẽ
Khi khoa học công nghệ ngày càng phát triển việc đo không chỉ là biếtgiá trị của đại lượng cần đo mà những giá trị này còn là những thông tin cầnđược lưu trữ và xử lý Để cho quá trình thu thập các thông tin đo một cách tựđộng người ta gắn vào các thiết bị đo các bộ vi điều khiển nhằm điều khiểncác quá trình đo, xử lý và có thể là phải truyền đi
Theo như yêu cầu của bài toán đặt ra là xây dung một hệ đo, thu thậpnhiệt độ Với 8 kênh đo nhiệt độ ở những vị trí khác nhau và những dải nhiệtđộ khác nhau thì việc sử dụng một bộ vi điều khiển trong hệ là một điều cầnthiết Hiện nay, trên thị trường có rất nhiều họ vi điều khiển như : 8051,68HC11, PIC, AVR… vì vậy việc lựa chọn một bộ vi điều khiển cho hệ thốngcần phải có giá thành rẻ nhưng vẫn đáp ứng được yêu cầu của bài toán tối ưu.ở đây ta sử dụng bộ vi điều khiển 8051 là đủ để điều khiển hệ thống hoạtđộng tốt
Trang 4Sơ đồ khối của 8051 là như sau:
Register
RAM 128byte
Oscilator CPU
Timer 0Timer 1Serial portINT 0
INT 1
XTAL1,2
Trang 5 Các thanh ghi:
Khối RAM từ [ 0 1Fh ] được dùng cho các thanh ghi Có 4 banks với 8thanh ghi trong mỗi bank(s) đó từ R0 đến R7.
Bank 0: Từ 00h đến 07hBank 1: Từ 08h đến 0FhBank 2: Từ 10h đến 17hBank 3: Từ 18h đến 1Fh
Để chọn địa chỉ các thanh ghi, đầu tiên các register bank(s) phải đượckích hoạt (active) Việc lựa chọn được làm bởi cờ trong PSW Sau khi đãđược chọn thanh ghi i được ký hiệu là Ri
Bản đồ của bộ nhớ:
Khối nhớ trong khoảng [20h 2Fh] gồm 16 bytes = 128 bits có thể đánhđịa chỉ theo từng bit Mỗi bit có địa chỉ từ 0h đến 7Fh Bit 0 của byte 20 là bitđịa chỉ 0 và bit 7 của byte 2Fh là bit địa chỉ 7Fh.
Khèi c¸c thanh ghi Bank 32 bytes ( 4 bank )
Hình Bản đồ bộ nhớ trong vi xử lý 8051
Trang 6SFR bao gồm cả thanh ghi a, thanh ghi b và PSW PSW bao gồm cả cờhệ thống như cờ carry có 2 bit để kích hoạt register bank
Trong bộ nhớ ROM trong chiếm khối nhớ thấp nhất của bộ nhớ chươngtrình Chân EA# (External Enable) của vi điều khiển được cấp +5V để chophép chương trình có thể được tìm và đọc trực tiếp từ ROM trong Tuy nhiênnhững chương trình có khối nhớ trên 4K hoặc 8K thì sẽ tìm và đọc lệnh từ bộnhớ chương trình ngoài Các chương trình sẽ được đọc từ bộ nhớ bên ngoàikhi chân EA# được nối đất (Khi đặt ký hiệu # ở phía sau toán hạng thì sẽ hiểulà tín hiệu đó được kích hoạt khi ở mức thấp).
Bộ đếm chương trình:
Bộ đếm chương trình (Program Counter) được dùng để chỉ đến bytelệnh tiếp theo sẽ được đọc Nó không bị ảnh hưởng trực tiếp nhưng sẽ bị thayđổi bằng những lệnh rẽ nhánh như lệnh Jmp hoặc Call Nó cũng có thể dùngnhư địa chỉ cơ sở cho chỉ số địa chỉ khi đọc từ bộ nhớ chương trình.
Cổng vào ra song song:
Trang 7BµI tËp vi xö lý
8051 có 4 cổng vào ra song song (Parallel input/output port) Khi cổngđược dùng là cổng ra, dữ liệu được để trong SFR tương ứng Giá trị được viếtđến SFR tương ứng sẽ được chốt và phát ra tín hiệu sau khi quá trình ghi kếtthúc Giá trị của cổng ra thay đổi khi giá trị mới được chốt.
Khi cổng được dùng là cổng vào, đầu tiên giá trị FFh sẽ được ghi lêncổng, sau đó tất cả các cổng vào làm cho chân điện thế thấp sẽ được đặt bằng0 Việc đọc các SFR tương ứng sẽ đọc giá trị của cổng Bộ chốt cửa ra sẽ điềukhiển chân cổng lên mức logic 1 nếu không có dòng điện của mạch ngoài hạxuống trên chân.
Mặc dù cùng 1 SFR đang được dùng, nhưng bên trong vẫn có hai thaotác được tiến hành khi cổng đang được đọc và đang được ghi Các thao tác đóđược thực hiện hoàn toàn bằng phần cứng, bảo vệ giúp người dùng từ việc giữhướng khi dữ liệu được vận chuyển.
Một điều chú ý nữa là mặc dù tất cả các thao tác đọc mà đọc giá trị từchân cổng có 1 vài thao tác đọc vẫn ngầm đọc giá trị của cổng chốt, gọi làthao tác read-modify-write
Để tiến hành lựa chọn các chức năng thì các SFR tương ứng phải đượcthiết lập (Đặt bằng 1).
Bộ phát dao động:
8051 có 1 bộ phát dao động dùng tinh thể thạch anh ngoài Bộ tạo daođộng tần số giống như tần số của tinh thể và được chia cho 12, nó có thể đượcdùng làm đầu vào của timer.
Dùng 12 MHz crystal thì timer input sẽ là 1 MHz 8051 có 12 chu kỳdao động trên 1 chu kỳ máy Nó có 255 thao tác những nhóm mã lệnh, tươngđương 111 chỉ thị Ví dụ có15 mã thao tác cụ thể phụ thuộc vào byte đích,byte nguồn và chế độ địa chỉ Thêm vào đó, có 2 lệnh dịch chuyển bit và 1lệnh dịch chuyển word, lệnh đó dịch chuyển 16 bit vào con trỏ dữ liệu (datapointer) Trong 255 mã thao tác đó, 159 thao tác hết 1 chu kỳ máy, 51 thaotác cần 2 chu kỳ máy, 43 thao tác cần 3 chu kỳ máy và 2 thao tác cần 4 chu kỳmáy Từ khi có nhiều thao tác chỉ cần 1 chỉ thị máy, 8051 đã xem xét đến khảnăng có thể thực hiện hàng triệu lệnh trong 1 giây (Million Instruction PerSecond: MIPS) Rất nhiều hệ thống 8051 dùng dao động tinh thể 11.0592MHz, sở dĩ có sự lựa chọn này vì trong thực tế có rất nhiều dao động đồng hồcó thể phát ra tốc độ Baud rất cao Với đồng hồ 12 MHz tốc độ Baud lớn nhấtlà 4800, còn dùng dao động tinh thể 11.0592MHz tốc độ có thể lên tới19200baud.
Cổng nối tiếp:
Trang 8BµI tËp vi xö lý
Cổng nối tiếp được điều khiển bởi SFR SCON Dữ liệu vào và ra cổngnối tiếp đều đi qua SFR SBUF Khi cổng nối tiếp đã được khởi tạo, ta có thểdễ dàng ghi dữ liệu vào SBUF để khởi đầu cho việc truyền nối tiếp Tương tựnhận dữ liệu cũng được đọc từ SBUF Mặc dù SBUF được nói ở trên giốngnhư là SFR riêng lẻ nhưng phần cứng của nó bao gồm hai buffer tách biệt,một buffer để truyền và một buffer để nhận dữ liệu Truyền và nhận nối tiếpcó thể diễn ra đồng thời (full duplex operation).
Timer/Counter.
8051 có hai Timer/Counter, mỗi Timer/Counter được dành cho haiSFR Timer/Counter 0 là TH0 và TL0, còn Timer/Counter 1 là TH1 và TL1.Các thanh ghi dành cho Timer/Counter là các thanh ghi 16 bit Khi hoạt động,mỗi khi có xung vào thì số đếm xung lưu trong 1 hoặc 2 SFR sẽ tăng lên.Timer dùng tín hiệu đồng hồ hệ thống làm nguồn của những xung vào.Counter dùng xung ngoài để tăng số lượng xung Xung ngoài được nhận qua2 bit của cổng 3 Số xung hiện tại của Timer/Counter có thể đọc từ TH0 vàTL0 hoặc TH1 và TL1 Timer/Counter cũng phát ra ngắt với điều kiện lànhững ngắt đó không bị IE chắn Khi bộ đếm bị tràn (và lại quay về 0) thìngắt được phát ra Trạng thái của các ngắt đó được quan sát qua SFR TCON.
Hoạt động của Timer/Counter được điều khiển bởi khối xung ngẫunhiên từ nguồn tới thanh ghi đếm dữ liệu Nguồn dữ liệu sẽ tới thanh ghi dữliệu của Timer 0 nếu điều kiện (GATE# or INT0#) And TR0 đúng GATE# làbit điều khiển Timer 0 của TMOD 8051 coi bit điều khiển là GATE Tuynhiên khi Timer/Counter hoạt động trong lúc GATE đang ở mức logic thấpthì sẽ giống như trên, chứng tỏ bit điều khiển là GATE# TR0 cũng là bit điềukhiển của Timer 0 trong thanh ghi TMOD, INT0# là chân P3.2 của 8051.Điều kiện trên đã chỉ rõ rằng những thanh ghi dữ liệu của Timer 0 đã đượccập nhật nguồn khi bit điều khiển TR0 được thiết lập và cả bit điều khiểnGATE# bị xoá hoặc Port P3.2 ở mức logic 1.
Timer/Counter có 4 chế độ hoạt động Hoạt động của cả hai Timer đượcquyết định bởi SFR TMOD 4 bit thấp của TMOD điều khiển Timer 0, 4 bitcao của TMOD điều khiển Timer 1.
Điều khiển ngắt:
8051 có 5 ngắt TF0, TF1, INT0#, INT1# và kết quả của cổng nối tiếp.TF0 và TF1của thanh ghi TCON tạo ra 2 ngắt Timer/Counter, chúng phát rangắt khi bộ đếm bị tràn.
II.Thiết kế hệ vi xử lý dùng 8051
Sơ đồ khối của hệ vi xử lý như sau:
Trang 9BµI tËp vi xö lý
ALEBµn phÝm
DATA BUS
ADDRESS BUS
TÝn HiÖu ANALOG
ThiÕt BÞ Ngo¹i Vi
Sơ đồ khối hệ vi sử lý 8 bít
Trang 10BµI tËp vi xö lý
1.Thiết kế bộ nhớ.
6264RAM 8Kx8Bit
2764ROM 8Kx8Bit
liệu của hệ thống (cổng Port 0 của 8051)
* ROM: - Chân OE của ROM 2764 được nối với PSEN của 8051
Trang 11BµI tËp vi xö lý
2.Mạch chuyển đổi số tương tự ADC 0809 (8 kênh x 8 bit)
Kªnh 8Kªnh 7Kªnh 6Kªnh5Kªnh 4Kªnh3Kªnh 2Kªnh 1
A 2A 1A 0
INT 0
PORT 0
a.Các thông số cơ bản
* Bộ biến đổi ADC 0809 là ADC thông dụng được sử dụng rộng rãicó tám đầu vào tương tự từ IN_0->IN7 và đầu ra 8 bit số chuyển đổi theophương pháp xấp xỉ liên tiếp.
* Các đặc trưng cơ bản của ADC 0809:
- Đầu ra có bộ điện 3 trạng thái để ghép trực tiếp vào kênh dữ liệucủa hệ VXL.
- Giải tín hiệu ra vào tương tự SV khi nguồn nuôi là +5V Có thểmở rộng thang đo bằng các giải pháp kỹ thuật cho từng mạch cụ thể.
- Không đòi hỏi điều chỉnh “0” - Thời gian biến đổi 100s - Sai số tổng cộng 1/2LSB.
- Sử dụng nguồn nuôi đơn +5V, hiệu suất cao.
b.Ghép nối
* ADC 0809 được ghép với hệ VXL được thể hiện như trên hình vẽ.
Trang 12BµI tËp vi xö lý
- Đầu ra dữ liệu 2.1-2.7 được nối với Port 0 của 8051
- Các kênh vào anolog được nối với các đầu IN_0->IN7 tương ứngcủa ADC.
- Mỗi kênh vào có địa chỉ riêng do tổ hợp 3 bit ADD_A, ADD_B,
đã qua một khâu đảo.
- Tín hiệu RD_ADC qua mạch đảo sẽ được nối với Enable củaADC nhằm chốt dữ liệu đã biến đổi xong ở đầu ra.
- Tương tự WR_ADC sẽ được đưa vào ALE và Start nhằm khởiđộng ADC và chốt địa chỉ của kênh hiện hành có giá trị là 3 bit ABC.
3 Mạch giải mã địa chỉ 74HC138
A B C CS0 CS1 CS2 CS3 CS4 CS5 CS6CS7
/CS
Trang 13BµI tËp vi xö lý
0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1
0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
CS0 : ROMCS1 : RAMCS2 : WR_ADCCS3 : RD_ADC
CS4 : Chọn 8255CS5
- Giải mã địa chỉ sử dụng IC74HC138 có 3 đầu vào ABC được nốitương ứng với 3 dây Port 2.5, 2.6, 2.7 của 8051 Sử dụng các đầu ra làm tínhiệu /CS để chọn chíp Byte mã xuất ra từ cổng P2 của 8051 có giá trị tươngứng với chế độ chọn chíp như sau:
P2(#40H)->/CS2: WR_ADCP2(#60H)->/CS3: RD_ADCP2(#80H)->/CS4: Chọn 8255
Chốt đệmChốt đệmTrở kháng cao
Trang 14Chân OE được nối đất.
Chân LE được nối với ALE của 8051 Xung chốt ALE được phát 2lần trong một chu kỳ máy nhằm chốt 8 bit thấp của địa chỉ được lấy ra từPort 0 cộng với 8 bit cao của địa chỉ được xuất ra từ Port 2 tạo thành địa chỉ16 bit.
5 Cổng vào ra - vi mạch PPI 8255.
- Vi mạch 8255 A là vi mạch cỡ lớn ISI thường được gọi là mạchphối ghép vào/ra song song lập trình được Do khả năng mềm dẻo trong cácứng dụng thực tế, nó là mạch phối ghép được dùng rất phổ biến cho các hệVXL 8_16_32bit 8255 có các chân được bố trí như trên hình vẽ trong đó cóchứa 24 đường dẫn lớn vào ra được xếp thành 3 cổng song song (port A,port B, portC) Một nửa của cổng Port C (PC4 PC7) thuộc vào nhóm Acòn nửa kia thuộc nhóm B.
- Các chân của 8255 được ghép với hệ VXL như trên hình.
Trang 15BµI tËp vi xö lý
+ Các chân RD, WE được nối tương ứng với các chân RD, WR của8051.
+ Chân CS được nối với CS4 (đầu ra của giải mã địa chỉ).* Chế độ làm việc:
Có hai loại từ điều khiển cho 8255A:
- Từ điều khiển định nghĩa cấu hình cho các cổng PA, PB, PC- Từ điều khiển lập/xoá từng bit ở đầu ra của PC
Tuỳ theo từng lệnh được ghi vào thanh ghi điều khiển khi ???(kd) vimạch mà ta có Port A, B, C hoạt động ở các chế độ 0,1,2 khác nhau.
* Trong hệ VXL này 8255 được dùng làm việc ở chế độ 0.
- Chế độ 0 hay còn gọi là chế độ vào ra cơ số Trong chế độ này mỗicổng PA, PB, PCH, PCL đều có thể định nghĩa là các cổng vào hoặc ra.
- ở đây sử dụng 8255 như các cổng ra (Số liệu ra được chốt).* Xác định địa chỉ các thanh ghi, chế độ và chiều của cửa.
- Do dùng hai bit thấp nhất A0, A1 của Address Bus làm tín hiệu chọnthanh ghi bên trong 8255 tên ta có.
PA có địa chỉ 00h (A1=A0=0)PB có địa chỉ 01h (A1=0, A0=1)PC có địa chỉ 02h (A1=1, A0=0)
Thanh ghi điều khiển có địa chỉ 03h (A1=1, A0=1)* Xác định lỗi điều khiển:
Vì PA là cửa ra -> D4=0, chế độ 0 -> D5=D6=0PB là cửa ra -> D1=0, chế độ 0 -> D2=0
1/2 C thấp là của ra -> D0=0
1/2 C cao là cửa ra -> D3=0 Vậy từ điều khiển chế độ là:
Trang 16BµI tËp vi xö lý
Trang 17* Bản đồ bộ nhớ của hệ VXL được thể hiện như trên hình vẽ- 8K x 8bit ROM ngoài có địa chỉ từ 0000h -> 1FFFh
- 8K x 8bit RAM ngoài có địa chỉ từ 2000h -> 3FFFh
- 128byte RAM trong được chia thành 3 vùng nhớ chính có địa chỉ từ00h -> 7Fh
* Trang thiết kế hệ VXL này dùng hoàn toàn bộ nhớ chương trìnhngoài (ROM ngoài) và bộ nhớ dữ liệu trong (RAM trong)
07H 08H 0FH
10H 17H 18H 1FH 20H
2FH 30H
7FH
RegisterbankBit addressable
radarea
Trang 18BµI tËp vi xö lý
R3: Địa chỉ chốt WR_ADCR4: Địa chỉ chốt RD_ADC
- Số liệu của từng kênh lấy từ ADC 0809 được lưu giữ lần lượt tại ônhớ có địa chỉ:
Kênh 1: 30H2: 31H3: 32H… 8: 37H
- Giá trị trung bình dạng mã Hexa được chứa trong hai ô nhớPhần nguyên Hexa: 38H
Phần dư Hexa: 39H Giá trị BCD của TB: 3AHBáo động cao :20H
Báo động thấp :21HSai lệch : 40HMin : 41HMax : 42HSố chia : 50H
Byte thấp (của số bị chia hoặc của kết quả) : 51HByte cao (của số bị chia hoặc của kết quả) : 52H
Trang 21BµI tËp vi xö lý
9.Soạn thảo chương trình bằng mã ngữ của 8051.
Thủ tục thực hiện lệnh Reset
ORG 0000H
-SJMP MAIN
Thủ tục thực hiện ngắt INT0 :
ORG 0003H
-ACALL ADCRETI
Thủ tục thực hiện ngắt INT1 :
ORG 0013H
-ACALL BPHIMRETI
Chương trình chính MAIN :
ORG 0030H
MOVX @DPTR,A
MOV DPTR,#8001HMOVX @DPTR,AMOV DPTR,#8002HMOVX @DPTR,A