Tài liệu tham khảo chuyên ngành tin học Thiết kế hệ vi xử lý 8051
Trang 12 Bộ nhớ chương trình ROM : 8KB từ địa chỉ 0000H
3 Bộ nhớ dữ liệu RAM : 8KB có địa chỉ tuỳ chọn
4 Cổng vào tương tự 8 kênh nhận tín hiệu nhiệt độ từ 0 – 10Vtương ứng vói nhiệt độ từ 0 – 100 độ C , các cổng vào/ra số vàcác mạch điều khiển
đó Giá trị cho phép này đặt trong một ô nhớ của Ram
5 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 2BµI tËp vi xö lý
MỤC LỤC
Lời nói đầu ………
I Bộ vi xử lý ……… 4
a Giới thiệu………4
b Bên trong Vi xử lý 8051……… 2
II Thiết kế hệ Vi xử lý dùng 8051……… 5
1 Thiết kế bộ nhớ ……… 8
2 Mạch chuyển đổi số tương tự ADC 0809………9
3 Mạch giải mã địa chỉ 74HC138……….10
4 Mạch chốt 74LS373……… 12
5 Cổng vào ra – vi mạch PPI 8255………13
6 Lập bản đồ bộ nhớ……….15
7 Lưu đồ bộ nhớ………16
8 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 , Phan Quố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ụng
cụ đ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:
Interrupt control
Register
RAM 128 byte
ROM 4K
Port 3
Port 2
Port 1
Port 0
Oscilator CPU
Timer 0 Timer 1 Serial port INT 0
INT 1
Timing and Control
PSEN EA RST ALE
XTAL1,2
Trang 5 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
FF
§Þa chØ cña c¸c SFR
80 bytes of RAM (Scrach pad)
80h 7Fh
16 bytes of bit-addressable
30h 2Fh
Khèi c¸c thanh ghi Bank 32 bytes ( 4 bank )
Hình Bản đồ bộ nhớ trong vi xử lý 8051
Trang 6đi qua thanh ghi SFR SBUF Những bit riêng lẻ của SCON xác lập những chế
độ khác nhau của cổng nối tiếp SCON có thể được xem như thanh ghi điềukhiển và SBUF được gọi là thanh ghi dữ liệu SFR có byte địa chỉ trongkhoảng [80h FFh] (Tiếp theo phần địa chỉ của RAM trong từ 00h 07h như đãnói ở trên ) 8051 có thể truy nhập RAM và SFR bằng chế độ địa chỉ gián tiếpthanh ghi
SFR 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
8751 và 8752 là EPROM là phiên bản sau của 8051 và 8052, 8031,
8032, 80C535A và 80C537A là ROM phiên bản sau của 8051, 8052,80C515A và 80C517A
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ểu
là 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ằng
0 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ất
là 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 8có 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 qua
2 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 9TÝn HiÖu ANALOG
ThiÕt BÞ Ngo¹i Vi
ADC 8085
Sơ đồ khối hệ vi sử lý 8 bít
Trang 10BµI tËp vi xö lý
1.Thiết kế bộ nhớ
A0-12
VCC VCC
16 17 18 19
15 13 12 11 10
9 8 7
3
456
2
27
20 22
23
242125
1
11 12 13 15
19 18 17 16
1
25 21 24 23
22 20 27 2
6 5 4 3
7 8 9 10
6264
RAM 8Kx8Bit
2764
ROM 8Kx8Bit
D0 D1 D2 D3 D4 D5 D6 D7
A0 A1 A3 A2
A6 A7 A5 A4
A8 A9 A11 A10 A12
CS1
WE CS2 OE
D7 D6 D5 D4 D3 D2 D1 D0
CE PGM OE VPP
A12
A10 A11 A9 A8
A4 A5 A7 A6
A2 A3 A1 A0
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 8 Kªnh 7 Kªnh 6 Kªnh5 Kªnh 4 Kªnh3 Kªnh 2 Kªnh 1
ALE 10 6 9 22 23 24 25 7 17 14 15 8 18 19 20 21
16 12
2 3
5 4
28 1 27 26
A 2
A 1
A 0
RD_ADC WR_ADC
INT 0
PORT 0
2-5 2-6 2-8 2-7
2-3 2-4 2-2
ADC0809
CLOCK
ADD-C ADD-B
START ENALBE
ADD-A
EOC
2-1
mf(+) mf(-) IN-7 IN-6 IN-5 IN-4 IN-3 IN-2 IN-1 IN-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ãi
có 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
CS0 CS1 CS2 CS3
CS7 CS6 CS5 CS4
A13A14A15
6 5
1 2 3
4
11 10 9 7
12 13 14
15 C
B A
E1 E2 E3
Trang 13CS4 : Chọn 8255CS5
CS6CS7
- 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:
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:
Trang 16BµI tËp vi xö lý
Trang 17BµI tËp vi xö lý
*8255 có PA dùng để hiển thị 2 LED 7 thanh biểu diễn hàng đơn vị vàhàng chục
- PC dùng để hiển thị LED báo kênh hiện hành ở mức thấp
- PB dùng để hiển thị LED báo kênh hiện hành ở mức cao
6 Lập bản đồ bộ nhớ
* 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)
RAMNgoa×
00H
07H 08H 0FH 10H 17H 18H 1FH 20H
2FH 30H
7FH
Register bank
Bit addressable segment
scratch rad area
Trang 18… 8: 37H
- Giá trị trung bình dạng mã Hexa được chứa trong hai ô nhớ
Byte thấp (của số bị chia hoặc của kết quả) : 51H
Byte cao (của số bị chia hoặc của kết quả) : 52H
Trang 19BµI tËp vi xö lý
- Sử dụng ngắt ngoài INTO khi vào dữ liệu từ ADC
+ Địa chỉ vector ngắt IEO: 0003H
- Sử dụng ngắt ngoài INT1 khi vào dữ liệu từ bàn phím
+ Địa chỉ vector ngắt INT1 : 0013H