Luận Văn: Thiết kế hệ vi xử lý 8051
Trang 1Đề tàI THIếT Kế Hệ VI Xử Lý 8 BIT
Phần cứng :
1 Bộ vi xử lý
2 Bộ nhớ chơng trình ROM : 8KB từ địa chỉ 0000H3 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
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 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ảnlao độ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 3LờI NóI ĐầU
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ản xuấ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ầnthiết Trong các thiết bị tự động muốn điều khiển một quá trình nào đó mộtcá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ị đo ngờita có thể kiểm soát đợc các thông số của hệ thống mà từ đó đa ra các tí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 cha 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ônglàm việc đợc trong các môi trờng đòi hỏi độ bền cơ học cao Khi ngành vậtliệ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 racác thiết bị đo thông minh, có độ chính cao, làm việc đợc trong các môi trờng
thiết bị đo thông minh này ngời ta có thể kiểm soát các thông số của hệ thốngmộ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 lu 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ển cácquá 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,
cần phải có giá thành rẻ nhng 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 độngtốt
Trang 4 Có khả năng quản lý đợc 64 KB bộ nhớ mã chơng trình ngoài (ROMngoài).
Có khả năng quản lý đợc 64 KB bộ nhớ dữ liệu ngoài (RAM ngoài) Có bộ xử lý logic riêng (thao tác trên các bit)
Có thể thao tác trực tiếp đợc 210 bit (các bit này đã đợc địa chỉ hoá)Sơ đồ khối của 8051 là nh sau:
b Bên trong VXL8051.
RAM.
RAM trong của 8051 bao gồm cả các thanh ghi và các thanh ghi có thểlập trình và xoá từng bit nh là RAM đa mục đích RAM đợc dùng nh là vùnglàm việc đa năng RAM On-chip có địa chỉ từ 00h đến 7Fh.
Các thanh ghi:
Register
RAM 128byte
CPU
Timer 0Timer 1Serial portINT 0
INT 1
PSENEARSTALEXTAL1,2
Trang 5Khố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 đã đợcchọ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
Những thanh ghi chức năng đặc biệt: SFR (Special Function Registers)
SFR bao gồm các thanh ghi dữ liệu và các thanh ghi điều khiển Chúngnằm trong các cổng, time hoặc là các thanh ghi điều khiển ngắt Ví dụ: Cổngnối tiếp đợc điều khiển bởi SFR SCON, trong khi dữ liệu vào và ra cổng này điqua 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ều khiểnvà SBUF đợc gọi là thanh ghi dữ liệu SFR có byte địa chỉ trong khoả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ếp thanhghi.
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
Trang 6Một vài thành viên của họ 8051 có chứa ROM ở ngay trong chúng:- 8051 có 4KB.
- 8052 có 8KB.
- 80C517A-5 và 80C515-A có 32KB.
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 để cho phépchơng trình có thể đợc tìm và đọc trực tiếp từ ROM trong Tuy nhiên nhữngchơ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ài khi 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 byte lệnhtiếp theo sẽ đợc đọc Nó không bị ảnh hởng trực tiếp nhng sẽ bị thay đổi bằngnhững lệnh rẽ nhánh nh lệnh Jmp hoặc Call Nó cũng có thể dùng nh đị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:
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 đếnSFR tơng ứng sẽ đợc chốt và phát ra tín hiệu sau khi quá trình ghi kết thú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, nhng bên trong vẫn có hai thao tácđợc tiến hành khi cổng đang đợc đọc và đang đợc ghi Các thao tác đó đợcthự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ớngkhi 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.
Trang 7Dù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, bytenguồn và chế độ địa chỉ Thêm vào đó, có 2 lệnh dịch chuyển bit và 1 lệnhdị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 thao táccầ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:
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ậndữ liệu cũng đợc đọc từ SBUF Mặc dù SBUF đợc nói ở trên giống nh là SFRriêng lẻ nhng 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ếp có 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 lu trong 1 hoặc 2 SFR sẽ tăng lên Timerdùng tín hiệu đồng hồ hệ thống làm nguồn của những xung vào Counter dùngxung 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ôngbị IE chắn Khi bộ đếm bị tràn (và lại quay về 0) thì ngắt đợc phát ra Trạngthá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ẫu nhiêntừ nguồn tới thanh ghi đếm dữ liệu Nguồn dữ liệu sẽ tới thanh ghi dữ liệu củaTimer 0 nếu điều kiện (GATE# or INT0#) And TR0 đúng GATE# là bit điềukhiển Timer 0 của TMOD 8051 coi bit điều khiển là GATE Tuy nhiên khiTimer/Counter hoạt động trong lúc GATE đang ở mức logic thấp thì sẽ giốngnh trên, chứng tỏ bit điều khiển là GATE# TR0 cũng là bit điều khiển củaTimer 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 đã đợc cập nhật nguồn khibit điều khiển TR0 đợc thiết lập và cả bit điều khiển GATE# bị xoá hoặc PortP3.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:iều khiển ngắt:
Trang 88051 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 9ALEBà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 101.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 11Kênh 8Kênh 7Kênh 6Kênh5Kênh 4Kênh3Kênh 2Kênh 1
A 2A 1A 0
INT 0PORT 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 theo ph-ơng pháp xấp xỉ liên tiếp.
- Sử dụng nguồn nuôi đơn +5V, hiệu suất cao.
- Mỗi kênh vào có địa chỉ riêng do tổ hợp 3 bit ADD_A, ADD_B,
của Address Bus.
Trang 12- Chân EOC của ADC 0809 đợc nối với INT0 của 8051 sau khi đãqua một khâu đảo.
- Tín hiệu RD_ADC qua mạch đảo sẽ đợc nối với Enable của ADCnhằ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 độngADC 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 CS6 CS7 /CS0 0 0
0 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 _ADCCS4 : Chọn 8255CS5
CS6CS7
Trang 13- Giải mã địa chỉ sử dụng IC74HC138 có 3 đầu vào ABC đợc nối tơ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ín hiệu/CS để chọn chíp Byte mã xuất ra từ cổng P2 của 8051 có giá trị tơng ứngvớ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 14- Khi 8051 truy nhập bộ nhớ ngoài, luôn sử dụng địa chỉ 16 bit thôngqua cổng Port 0 và Port 2 -> Dùng chốt để tạo Address Bus 16 bit.
- Sử dụng chốt là IC 74LS373 có bảng trạng thái đợc thể hiện nh trênhình vẽ.
Châ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 2 lầntrong một chu kỳ máy nhằm chốt 8 bit thấp của địa chỉ đợc lấy ra từ Port 0cộ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ạch phốighép vào/ra song song lập trình đợc Do khả năng mềm dẻo trong các ứngdụng thực tế, nó là mạch phối ghép đợc dùng rất phổ biến cho các hệ VXL8_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 A còn nửa kiathuộc nhóm B.
- Các chân của 8255 đợc ghép với hệ VXL nh trên hình.
+ 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ỉ).
Trang 15* 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 16*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 cao6 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ình ngoài(ROM ngoài) và bộ nhớ dữ liệu trong (RAM trong)
7FH
RegisterbankBit addressable
radarea
Trang 17- Số liệu của từng kênh lấy từ ADC 0809 đợc lu 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- 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
Trang 18
Kªnh-TB