Tài liệu Bài giảng Thiết kế giao tiếp ngoại vi: Chương 4: Thiết kế giao tiếp ngoại vi 1 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Chương 4 
GIAO TIẾP VỚI NGOẠI VI 
Để vi điều khiển làm việc được cần có một hệ thống kết nối giữa bộ vi xử lý với các 
thiết bị ngoại vi như bàn phím, LCD, Led… Họ vi điều khiển mà bộ giao tiếp chọn làm 
thành phần trung tâm là họ 8051, vì những lí do sau đây: 
+ Họ 8051 là họ vi điều khiển phổ biến nhất hiện nay, được sử dụng rất rộng rãi trong 
các ứng dụng công nghiệp cũng như trong việc chế tạo các sản phẩm dân dụng. 
+ Họ 8051 đã và đang là môn học được nằm trong chương trình đào tạo của các trường 
trung học, cao đẳng và đại học trong cả nước, đây còn là một đối tượng cụ thể cho sinh viên 
khi bắt đầu nhập môn vi điều khiển. Vì vậy, việc chọn họ 8051 làm thành phần trung tâm 
của bộ KIT là phù hợp với chương trình đào tạo và điều kiện học tập của sinh viên. 
Vì những lí do trên, và xuất phát từ mục đích, yêu cầu của môn học, ở đây thiết kế một 
bộ giao tiếp vi...
                
              
                                            
                                
            
 
            
                 41 trang
41 trang | 
Chia sẻ: haohao | Lượt xem: 1613 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Thiết kế giao tiếp ngoại vi, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Chương 4: Thiết kế giao tiếp ngoại vi 1 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Chương 4 
GIAO TIẾP VỚI NGOẠI VI 
Để vi điều khiển làm việc được cần có một hệ thống kết nối giữa bộ vi xử lý với các 
thiết bị ngoại vi như bàn phím, LCD, Led… Họ vi điều khiển mà bộ giao tiếp chọn làm 
thành phần trung tâm là họ 8051, vì những lí do sau đây: 
+ Họ 8051 là họ vi điều khiển phổ biến nhất hiện nay, được sử dụng rất rộng rãi trong 
các ứng dụng công nghiệp cũng như trong việc chế tạo các sản phẩm dân dụng. 
+ Họ 8051 đã và đang là môn học được nằm trong chương trình đào tạo của các trường 
trung học, cao đẳng và đại học trong cả nước, đây còn là một đối tượng cụ thể cho sinh viên 
khi bắt đầu nhập môn vi điều khiển. Vì vậy, việc chọn họ 8051 làm thành phần trung tâm 
của bộ KIT là phù hợp với chương trình đào tạo và điều kiện học tập của sinh viên. 
Vì những lí do trên, và xuất phát từ mục đích, yêu cầu của môn học, ở đây thiết kế một 
bộ giao tiếp vi điều khiển phục vụ mục đích đào tạo môn học này, ta lựa chọn phương án sử 
dụng chip vi điều khiển 89C52 của hãng ATMEL để làm thành phần trung tâm của giao 
tiếp, cùng với các thành phần bộ nhớ ROM, RAM bên ngoại và các thiết bị ngoại vi phong 
phú. 
Chip vi điều khiển AT89C52 là một bộ vi điều khiển cũng thuộc họ 8051, do đó nó có 
tất cả những đặc trưng cơ bản của họ này. Ngoài ra nó còn có thêm 1 bộ định thời Timer 2 
và 3 nguồn ngắt so với 8051. 
4.1. XÂY DỰNG SƠ ĐỒ KHỐI VỚI KIT GIAO TIẾP 
Sau đây ta sẽ xây dựng sơ đồ khối của bộ KIT vi điều khiển như sau: 
Hình 4.1: Sơ đồ khối giao tiếp củ 8051 
Trong sơ đồ khối của bộ KIT như trên, chức năng của các khối như sau: 
Chương 4: Thiết kế giao tiếp ngoại vi 2 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
- Khối CPU : Đây là khối trung tâm của hệ thống. Nó bao gồm chip vi điều khiển 
AT89C52, EEPROM, RAM, các cổng giao tiếp mở rộng, mạch chốt, giải mã địa chỉ... Khối 
này làm nhiệm vụ trung tâm điều hành hoạt động của cả bộ KIT. 
- Khối PC : Đây là khối giao tiếp giữa hệ vi điều khiển của bộ KIT và máy tính. PC giúp 
cho người sử dụng có thể phát triển các ứng dụng trên bộ KIT từ máy tính. Người sử dụng 
dùng PC để nạp các chương trình ứng dụng cho bộ KIT. Ngoài ra PC còn cho phép người sử 
dụng nạp các chương trình điều hành của người sử dụng viết cho bộ KIT hoặc thay đổi 
chương trình điều hành hiện đang có trong bộ KIT. Chương trình điều hành phải được nạp 
từ các mạch nạp ngoài và cố định trên KIT. Chương trình ứng dụng của người sử dụng được 
nạp cho bộ KIT từ máy tính thông qua phần mềm nạp đi kèm theo KIT. 
- Bàn phím: Đây là khối thiết bị đầu vào giao tiếp giữa vi điều khiển và người sử dụng. 
Bàn phím cho phép người sử dụng sử dụng nó để điều khiển hoạt động của KIT theo hướng 
dẫn trên màn hình LCD như: 
Chạy chương trình từng bước (nút STEP) 
Xem, sửa đổi các thanh ghi (R0-R7), các thanh ghi đặc biệt (SFR), các PORT (P0,P1,P2, 
P3), các ô nhớ RAM ... 
Chuyển đổi qua lại giữa các kiểu hiển thị dữ liệu như nhị phân, hexa hay thập phân. 
- Khối LCD: màn hình tinh thể lỏng với kích thước lớn 24x8 kí tự giúp ta có thể quan sát 
dễ dàng giá trị của các thanh ghi (R0-R7), các thanh ghi đặc biệt (SFR) các PORT 
(P0,P1,P2, P3), các ô nhớ trong RAM ... Ngoài ra trên màn hình còn có các hướng dẫn 
người sử dụng, chức năng của các phím tùy theo ngữ cảnh. LCD tạo ra sự tiện lợi, thân 
thiện cho người sử dụng trong làm quen cũng như thí nghiệm trên KIT. 
- Khối A/D : Có chức năng chuyển đổi tín hiệu điện áp tương tự 0 – 5V thành tín hiệu số 
8 bit để đưa vào vi điều khiển xử lí. Tín hiệu vào 0-5V có thể được đưa từ bên ngoài hoặc 
thông qua DIP-SWITCH (Dual Inline Pakage - SWITCH) để nối các tín hiệu tương tự có 
sẵn trên kit nhờ bộ chia áp là 3 biến trở vi chỉnh và đặc biệt là đầu ra của 1 bộ cảm biến 
nhiệt độ LM35, có thể tiến hành ở đây một bài thí nghiệm về đo nhiệt độ phòng. 
- Khối D/A : Là khối cho phép chuyển đổi tín hiệu số 8 bit thành tín hiệu tương tự 0 – 
10V đưa ra ngoài, có thể hiển thị được trên máy hiện sóng. 
- Khối vào/ra xung số - điều khiển động cơ bước và động cơ 1 chiều: Là khối vào/ra tín 
hiệu số, cho phép bộ KIT nhận vào một tín hiệu số 8 bit, 4 tín hiệu vào dạng xung bằng các 
nút ấn, 4 tín hiệu vào dạng xung từ bên ngoài như các bộ encoder, ngoài ra còn có 6 đầu ra 
Chương 4: Thiết kế giao tiếp ngoại vi 3 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
xung, có đệm tầng khuyếch đại để điều khiển động cơ bước và động cơ 1 chiều. Ngoài ra 
người sử dụng có thể sử lựa chọn loại điện 5V hoặc 12V tùy theo loại động cơ bằng công 
tắc thay đổi nguồn cấp cho động cơ trên mạch. 
- LED 7 thanh : Là khối hiển thị LED 7 thanh, có thể dùng để hiển thị các giá trị theo 
chương trình của người sử dụng. 
- Khối LED Matrix (8x8) : Là một ma trận đèn LED gồm 8 hàng x 8 cột, tại mỗi điểm 
của ma trận LED có 2 đèn với 2 màu xanh và đỏ, nếu điều khiển cho sáng cùng lúc cả 2 đèn 
thì ta sẽ được màu cam. 
4.2. THIẾT KẾ MẠCH NGUYÊN LÝ 
4.2.1. Chọn dung lượng bộ nhớ và thiết bị ngoại vi: 
Ta chọn các thành phần của bộ nhớ trên KIT bao gồm: 
- 8K-byte parallel (song song) EEPROM – chip sử dụng AT28C64. 
- 32K-byte RAM ngoài – chip sử dụng HM62256. 
- 5 chip 8255 mở rộng I/O để giao tiếp với các thiết bị sau: 
LCD – 24x8 ký tự 
Bàn phím 5x4 
8 LED đơn 
4 LED 7 đoạn 
LED ma trận 2 màu 8x8 
Các bộ chuyển đổi ADC, DAC 
Vào ra xung số, các tầng khuyếch đại đệm để điều khiển động cơ bước, động cơ 1 chiều. 
4.2.2. Giải mã địa chỉ: 
Ta sắp xếp bộ nhớ và địa chỉ của các thiết bị ngoại vi giao tiếp với KIT trong bảng 4.1 
như sau: 
Bảng 4.1 Giải mã địa chỉ của các thiết bị ngoại vi 
Chương 4: Thiết kế giao tiếp ngoại vi 4 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Dựa vào bảng 4.1 trên ta có sơ đồ bộ nhớ cụ thể như bảng 4.2 sau: 
Chương 4: Thiết kế giao tiếp ngoại vi 5 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Nhìn vào các cột có màu xám trong bảng 4.2 trên ta có được cách phân công giải mã như 
sau: 
Ta sử dụng 3 chip giải mã chuyên dụng là vi mạch 74HC138 để phục vụ việc giải mã địa 
chỉ cho các chip nhớ cũng như các chip mở rộng I/O là 8255, đầu vào và ra của các chip giải 
mã được trình bày trong bảng sau: 
Chương 4: Thiết kế giao tiếp ngoại vi 6 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Đầu vào chọn chip CS (Chip Select) của các chip EEPROM, RAM, và 8255 như bảng 
sau: 
(*) Do yêu cầu thiết kế của bộ KIT, các chip nhớ RAM và EEPROM vừa phải có khả 
năng làm bộ nhớ dữ liệu và bộ nhớ chương trình nên các chân OE (Output Enable) của các 
chip nhớ này có logic như sau /OE = /PSEN * /RD. 
Để rõ hơn ta tìm hiểu kỹ về chức năng của chân /PSEN và EA trong ứng dụng mở rộng 
bộ nhớ ngoài của họ 8051. PSEN (Program Store Enable) có nghĩa là cho phép cất chương 
trình. Đây là tín hiệu ra và được nối với chân OE của bộ nhớ chương trình ngoài. Khi chân 
EA được nối đất thì 8031/51 nạp mM lệnh từ bộ nhớ ngoài thông qua chân PSEN, ở đây bộ 
nhớ ngoài đóng vai trò là bộ nhớ chương trình. Ngoài ra khi bộ nhớ ngoài làm chức năng là 
bộ nhớ dữ liệu thì tín hiệu RD được sử dụng để truy cập không gian dữ liệu ngoài (dùng 
lệnh MOVX), nên RD được nối đến OE của chip nhớ. Trong thiết kế phần mềm của KIT 
đòi hỏi cả 2 chức năng này của bộ nhớ, vừa là bộ nhớ chương trình, vừa là bộ nhớ dữ liệu 
do đó các chân OE của các chip nhớ phải có mức logic như trên /OE = /PSEN * /RD. 
4.3. GIỚI THIỆU VỀ CÁC THÀNH PHẦN TRÊN CPU 
4.3.1. IC AT89C52 
Chương 4: Thiết kế giao tiếp ngoại vi 7 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.2: Sơ đồ chức năng CPU 
Đây là phần điều khiển trung tâm của bộ KIT, là bộ phận quan trọng nhất. Khối CPU 
gồm có chip vi điều khiển chính AT89C52, EEPROM, RAM, mạch chốt, giải mã địa chỉ... 
Sơ đồ nguyên lý của khối CPU như hình . 
Các linh kiện chính có trong khối : 
- Vi điều khiển AT89C52 Với thực tế thị trường của nước ta nói chung ta chọn 
AT89C52 là chip dễ dàng mua được, bộ nhớ 8Kbyte vừa đủ cho chương trình MONITOR 
điều hành KIT. AT89C52 có 8K Flash ROM làm bộ nhớ chương trình, 256 byte RAM, 32 
đường xuất nhập, 3 bộ định thời, một cấu trúc ngắt 2 mức ưu tiên và 8 nguồn ngắt, một port 
nối tiếp song công (full duplex). Timer T2 của 89C52 có thể làm việc như Timer T0, T1 
trong chế độ Reload ngay cả ở lúc làm Timer 16 bit. Vùng nhớ Flash ROM có thể nạp và 
xóa khoảng 1000 lần. Vi điều khiển AT89C52 hỗ trợ tần số làm việc đến 24 MHz. Có chế 
độ Power Down để tiết kiệm điện năng của hệ thống tuy nhiên vẫn duy trì nội dung RAM 
nhưng không cho mạch dao động cấp xung clock nhằm vô hiệu hóa các hoạt động khác cho 
chip cho đến khi có reset cứng tiếp theo. Chế độ Idle hay còn gọi là chế độ nghỉ dừng CPU 
Chương 4: Thiết kế giao tiếp ngoại vi 8 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
trong khi vẫn cho phép RAM, các bộ định thời/ đếm, port nối tiếp và hệ thống ngắt tiếp tục 
hoạt động. 
4.3.2. Mạch chốt tín hiệu/ giải mã 
Chốt 74HC573 là mạch chốt tín hiệu tốc độ cao được chế tạo theo công nghệ CMOS. 
Các đặc điểm của vi mạch : Tốc độ truyền tín hiệu từ đầu vào sang đầu ra chỉ có 18 ns. 
Phạm vi điện áp hoạt động : 2 – 6 V. Dòng điện đầu v_o : lớn nhất 1 A. 
Hình 4.3: Sơ đồ lắp ráp Chốt 74HC573 và giải mã 74HC138 
Hoạt động : Khi chân /LE ở mức cao, đầu ra Q phụ thuộc v_o đầu v_o D. Khi chân /LE 
ở mức thấp, tín hiệu đầu vào D được giữ lại ở đầu ra cho đến khi nào chân /LE trở lại mức 
cao. Khi chân /OE ở mức cao, tất cả các đầu ra Q đều ở mức cao. Mạch giải mã địa chỉ 
74HC138. Đây là vi mạch được chế tạo theo công nghệ CMOS. Vi mạch này được dùng để 
giải mã địa chỉ khi hệ thống có nhiều linh kiện cần định địa chỉ ghép nối. Nó là một trong 
những vi mạch phổ biến nhất trong các mạch vi điều khiển. Các chân đầu ra đảo Yk phụ 
thuộc vào các chân tín hiệu đầu vào A, B, C. Tuy nhiên các tín hiệu địa chỉ chỉ được giải mã 
khi chân G1(E3) ở mức High, còn các chân /G2A(/E1), /G2B(/E2) ở mức Low. 
Bảng 4.4.chức năng của vi mạch như sau: 
Giải mã địa chỉ 74138: 
Chương 4: Thiết kế giao tiếp ngoại vi 9 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 Do 8051 thiết kế cần quản lý nhiều thiết bị ngoại vi, nhiều ô nhớ, muốn làm được việc 
này người ta phải cung cấp cho mỗi ô nhớ và thiết bị ngoại vi tầm địa chỉ cho thiết bị đó. Vì 
vậy cần có mạch giải mã địa chỉ trong mạch điện. Người ta thường dùng IC giải mã 
74HC138 với các ngõ ra được nối tới các ngõ vào chọn chip (CS\) trên các IC nhớ. Sau đây 
là sơ đồ chân, bảng sự thật và đặc điểm của 74138: 
INPUTS 
ENABLE SELECT 
OUTPUTS 
G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 
x H x x x H H H H H H H H 
L x x x x H H H H H H H H 
H L L L L L H H H H H H H 
H L L L H H L H H H H H H 
H L L H L H H L H H H H H 
H L L H H H H H L H H H H 
H L H L L H H H H L H H H 
H L H L H H H H H H L H H 
H L H H L H H H H H H L H 
H L H H H H H H H H H H L 
sơ lược về các chân: 
- Ngõ vào A,B,C là các chân ngõ vào số nhị phân 3 bit. C là bit có trọng số lớn nhất, A 
là bit có trọng số nhỏ nhất 
- Các chân ngõ ra: Yo → Y7, tích cực mức thấp. 
- Các chân điều khiển: G1,G2A, G2B. IC chỉ hoạt động giải mã khi các chân điều khiển 
đồng thời tích cực. G1 tích cực ở mức cao; G2A\ và G2B\ tích cực ở mức thấp Khi một trong 
3 chân này không tích cực các ngõ ra từ Yo → Y7 ở mức cao. 
Giải đa hợp các đường dữ liệu và đường địa chỉ 74HC373: 
 Khi dùng bộ nhớ ngoài, port 0 không còn là port IO thuần túy. Nó được kết hợp giữa 
bus địa chỉ và bus dữ liệu nên dùng tín hiệu ALE và IC chốt để chốt byte thấp của bus địa 
chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port2 cho byte cao của bus địa chỉ. Ơ đây chúng em 
dùng IC chốt 74373. Sơ đồ chân, đặc điểm và bảng trạng thái của 74373 
Hình 4.4: Sơ đồ giải đa hợp của 74HC373 
Chương 4: Thiết kế giao tiếp ngoại vi 10 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 Bảng trạng thái: 
Output 
Control (OC) 
Enable 
G D OUTPUT 
L H H H 
L H L L 
L L x Q0 
H x x HI-Z 
 Đặc điểm 
_ 74LS373 gồm 8 D-FF có ngõ ra 3 trạng thái được điều khiển chốt và xuất dữ liệu 
bằng chân G và OC. Trong ứng dụng này chân G được nối với chân ALE của 8051, chân 
OC nối mass. 
_ là IC chốt 8 bit 
_ Các bộ đệm ngõ ra 3 trạng thái 
_ Tín hiệu điều khiển ngõ ra 3 trạng thái chung. 
Xếp chồng các vùng nhớ chương trình và dữ liệu bên ngoài: 
 Vì bộ nhớ chương trình là Rom nên xảy ra vấn đề bất tiện khi phát triển phần mềm cho 
8051 là tổ chức bộ nhớ như thế nào để có thể sửa đổi chương trình và có thể ghi trở lại khi 
nó được chứa trong bộ nhớ Rom. Cách giải quyết là xếp chồng các vùng dữ liệu và chương 
trình. Một bộ nhớ Ram có thể chứa cả chương trình và dữ liệu bằng cách nối đường OE\ của 
Ram đến ngõ ra cổng AND có 2 ngõ vào là PSEN\ và RD\. Sơ đồ mạch như hình sau cho 
phép bộ nhớ Ram có 2 chức năng vừa là bộ nhớ chương trình vừa là bộ nhớ dữ liệu. 
 Vậy 1 chương trình có thể được tải vào Ram (bằng cách ghi nó như bộ nhớ dữ liệu) và 
thi hành chương trình (bằng cách truy xuất nó như bộ nhớ chương trình) 
4.3.3. Bộ nhớ RAM 32K 62256 
4.3.3.1. Vi mạch 62256 được dùng làm bộ nhớ dữ liệu ngoài cho các vi điều khiển. 
- A0 A14 : l_ 15 bit dùng để xác định địa chỉ của các vùng nhớ trong RAM. 
- /OE : Output Enable, cho phép đọc dữ liệu từ RAM ra Data Bus. 
- /WE : Write Enable, cho phép ghi dữ liệu vào RAM. 
- CS1, CS2 : Dùng để chọn chip. 
- D0 D7 : l_ các chân nối v_o Data Bus của hệ thống. 
Chương 4: Thiết kế giao tiếp ngoại vi 11 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.5: Sơ đồ chân AT89C2051/ RAM 62256 
4.3.3.2. SRAM 6264: là bộ nhớ được chế tạo theo công nghệ CMOS, có dung lượng 
65536 bit được tổ chức thành 8192x8 bit (8KByte), điện áp cung cấp là +5V, thời gian truy 
cập khoảng 150ns. Ngõ vào/ra dữ liệu được dùng chung, các ngõ vào/ra này tương thích 
TTL. Công suất tiêu tán ở trạng thái chờ rất thấp chỉ khoảng 0,1mW so với khi hoạt động 
bình thường là 200mW. 
Hình 4.6: Sơ đồ chân SRAM 6264 
 Sơ đồ chân và sơ đồ logic của 6264: 
Mode \ Pin WE\ CE1\ CE2 OE\ Output 
x H x x Not Select 
x x L x 
Hi-Z 
Output 
Disable 
H L H H Hi-Z 
Read H L H L Dout 
Write L L H H Din 
Từ sơ đồ chân cho ta thấy cá chân được chia thành 4 nhóm: 
 + Vcc, GND : chân nguồn 
Chương 4: Thiết kế giao tiếp ngoại vi 12 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 + Do đến D7 : chân dữ liệu 
 + Ao đến A12 : chân địa chỉ 
 + 
4.3.4. Bộ nhớ EEPROM 
4.3.4.1. EEPROM 8K 28C64: Đây là bộ nhớ không bay hơi có thể đọc và ghi được bằng 
chương trình như bộ RAM mà không cần sử dụng những mạch nạp chuyên dụng, nhưng có 
khả năng bảo vệ dữ liệu khi mất nguồn. 
- A0 A12 : là 12 bit dùng để xác định địa chỉ của các vùng nhớ trongEEPROM. 
- /OE : Output Enable, cho phép đọc dữ liệu từ EEPROM ra Data Bus. 
- /WR : Write Enable, cho phép ghi dữ liệu vào EEPROM. 
- /CE : Dùng để chọn chip. 
- D0 D7 : là các chân nối vào Data Bus của hệ thống. 
Ngoài các linh kiện chính đ3 kể ra ở trên, khối CPU còn có rất nhiều thành phần khác 
như mạch Reset của CPU, thạch anh 11.0592 MHz để tạo dao động cho vi điều khiển 
89C52... Trong khối CPU có công tắc 3 trạng thái SW2 - Select cho phép người sử dụng 
thay đổi mức điện áp đặt lên chân EA của vi điều khiển chính để chọn thực hiện chương 
trình lưu ở bộ nhớ trong hay bộ nhớ ngoài. Một điều cần lưu ý trên mạch CPU là đầu ra P0 
của vi điều khiển cần treo trở vì cổng P0 của vi điều khiển không được thiết kế có trở kháng 
trong. Nếu không treo trở thì khi nuôi tải lớn sẽ làm sụt áp trên các chân tín hiệu dẫn đến sự 
sai lệch tín hiệu, làm hệ thống mất chính xác. 
4.3.4.2. EPROM 2764: là bộ nhớ chỉ đọc được chế tạo theo công nghệ NMOS, dùng một 
nguồn đơn +5V, dung lượng bộ nhớ là 65536 bit, được tổ chức thành 8192x8 bit (8KByte). 
2764 là loại EPROM có thể xóa bằng tia cực tím và có thể ghi lại được nhiều lần. Có hai 
kiểu họat động: bình thường và chờ. Ở trạng thái chờ, công suất tiêu thụ là 132mW so với 
525mW khi ở trạng thái đọc dữ liệu, thời gian truy xuất là 200ns. Sơ đồ chân và sơ đồ logic 
của 2764 như sau: 
WE, OE, CS1, CS2 : chân điều khiển 
Chương 4: Thiết kế giao tiếp ngoại vi 13 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.7: Sơ đồ chân EPROM 2764 
Mode (chế độ) CE\ OE\ PGM\ VPP Ra (Output) 
Đọc L L H Vcc Dout 
Chờ H x x Vcc Hi-Z 
Lập trình L x L Vpp Din 
Kiểm tra L L H Vpp Do ut 
Cấm lập trình H x x Vpp Hi-Z 
- EPROM có thể được lập bởi người lập trình sử dụng và nó cũng có thể xóa để lập trình 
lại khi nào muốn. 
-EPROM dùng trong mạch được chứa sẵn chương trình điều khiển, tức là chỉ xuất Data 
mỗi khi CPU tham khảo đến, do đó ta chỉ quan tâm đến chế độ đọc và chờ. Dựa vào các 
Mode hoạt động trên thì EPROM được điều khiển các chân sau: 
- PGM = 5 Volt (Vcc ) 
- OE\ nối chân PSEN của CPU 
- CE\ nối xuống CSO 
+ Chế độ đọc (Read Mode ): Chế độ này được thiết lập khi CE\ và OE\ ở mức thấp, 
PGM ở mức cao. Có hai ngõ vào điều khiển dùng để truy xuất Data từ ROM là CE\ và OE\ 
dùng để kiểm soát ngõ ra Data, đưa Data lên Data bus. 
+ Chế độ chờ (Stanby Mode ): Chế độ này làm giảm công suất tiêu thụ được thiết lập 
khi CE\ ở mức cao, ở chế độ này Data ở trạng thái trở kháng cao độc lập. 
4.4. GIAO TIẾP XUẤT /NHẬP 
4.4.1. Màn tinh thể lỏng LCD 2408 
Để có thể hiển thị một cách thuận tiện, linh hoạt các thông số của hệ thống đồng thời 
đảm bảo được tính mỹ thuật, ta chọn màn hình tinh thể lỏng LCD 2408. Đây là loại màn 
Chương 4: Thiết kế giao tiếp ngoại vi 14 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
tinh thể lỏng gồm có 8 dòng, mỗi dòng có thể hiển thị 24 ký tự, rất tiện cho người sử dụng 
trong khi làm việc với KIT ở chế độ monitor. 
LCD 2408 có 4 chân điều khiển và 8 chân dữ liệu, 4 chân điều khiển là RS, R/W, E1, 
E2. Chân E1, E2: được gọi là chân “Enable”. Chân này cho phép gửi dữ liệu vào LCD hay 
không. E1 dùng chọn làm việc với 4 dòng trên của màn hình. E2 làm việc với 4 dòng dưới. 
Để có thể gửi dữ liệu vào LCD, đầu tiên chân này phải được set lên “1”. Sau khi thực hiện 
xong các lệnh, chân này phải set xuống “0” để báo cho biết rằng LCD đ3 thực hiện lệnh và 
đang chờ lệnh tiếp theo. Chân RS: “Register Select”. Khi chân này ở mức “0”, LCD sẽ biết 
rằng các dữ liệu truyền đến nó dùng để điều khiển như các lệnh xóa màn hình, đặt vị trí con 
trỏ, .... Nếu RS ở mức “1” các dữ liệu truyền đến LCD được nó hiểu là các dữ liệu dạng ký 
tự cần hiển thị. Chân R/W: l_ chân “Read/Write”. Để có thể ghi dữ liệu lên LCD, chân này 
phải ở mức “0”. Còn để đọc dữ liệu từ LCD thì chân này phải ở mức “1”. Tuy nhiên trong 
LCD chỉ có một lệnh đọc dữ liệu từ LCD, đó chính là lệnh lấy trạng thái của LCD để báo 
cho biết nó đang bận hay không. Chính vì vậy chân này hầu như chỉ ở mức tín hiệu “0”. 
DB0 - DB7: 8 chân dữ liệu của LCD. Mỗi lần thực hiện một lệnh, LCD phải mất một 
khoảng thời gian để hoàn tất việc này. Chính vì vậy khi ra lệnh thực hiện cho LCD, ta phải 
trễ một khoảng thời gian. Sau đó mới được thực hiện lệnh tiếp theo. Tuy nhiên phương pháp 
trễ không được ổn dịnh và chính xác khi tần số thạch anh thay đổi, còn một phương pháp 
nữa là phương pháp kiểm tra LCD đ3 sẵn sàng nhận dữ liệu hay chưa bằng cách kiểm tra bit 
có trọng số cao nhất - D7 - của thanh ghi lệnh (lưu ý là thanh ghi lệnh, tức khi RS = 0), khi 
bit này xuống 0 báo hiệu LCD đ3 sẵn sàng nhận lệnh tiếp theo. Phương pháp này có ưu 
điểm là làm việc ổn định, đồng bộ và không phải mất thời gian trễ dư ra không cần thiết. Để 
cho LCD có thể hoạt động, đầu tiên ta phải khởi tạo LCD, báo cho nó biết số hàng, số ký tự 
hiển thị trên một hàng. Các dữ liệu điều khiển lần lượt được chuyển vào Data Bus của LCD 
là 38H, 0EH, và 06H. Sau các lệnh khởi tạo LCD này ta mới có thể hiển thị ký tự lên trên 
màn hình LCD. Việc xóa màn hình, đưa con trỏ về góc trên bên trái có thể thực hiện được 
bằng các chuyển dữ liệu điều khiển 01H vào Data Bus của LCD. Các thao tác lập trình với 
LCD sẽ được bàn kỹ trong phần xây dựng các bài thí nghiệm cho KIT. 
Chương 4: Thiết kế giao tiếp ngoại vi 15 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.8: Sơ đồ cấu trúc LCD 
Sau đây là bảng mã lệnh của LCD: 
Mã (Hexa) Lệnh đến thanh ghi của LCD 
1 Xóa màn hình hiển thị 
2 Trở về đầu dòng 
4 Dịch con trỏ sang trái 
5 Dịch con trỏ sang phải 
6 Dịch hiển thị sang phải 
7 Dịch hiển thị sang trái 
8 Tắt con trỏ, tắt hiển thị 
A Tắt hiển thị, bật con trỏ 
C Bật hiển thị, tắt con trỏ 
E Bật hiển thị, nhấp nháy con trỏ 
F Tắt con trỏ, nhấp nháy con trỏ 
10 Dịch vị trí con trỏ sang trái 
14 Dịch vị trí con trỏ sang phải 
18 Dịch toàn bộ hiển thị sang trái 
1C Dịch toàn bộ hiển thị sang phải 
80 Đưa con trỏ về đầu dòng thứ nhất (*) 
C0 Đưa con trỏ về đầu dòng thứ hai (*) 
38 Hai dòng và ma trận 5x7 
(*) Địa chỉ của các dòng cụ thể của LCD 2408 như sau 
Chương 4: Thiết kế giao tiếp ngoại vi 16 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Dòng 1 0080H Dòng 2 0098H 
Dòng 3 00B8H Dòng 4 00D8H 
LCD 2408 được phân làm 2 nửa màn hình và chân E1, E2 được dùng để chọn 
làm việc với các màn hình theo thứ tự 1, 2, mức tích cực của các chân này là mức "1". 
Cụ thể, ví dụ ta muốn in kí tự 'A' lên dòng 2 của nửa màn hình 2 (dưới) của LCD, ta thực 
hiện: 
- Đặt E1 =0, E2 = 1 
- Chuyển sang thanh ghi lệnh: đặt RS=0 
- Gửi m3 lệnh ra LCD: mov LCD_DATA_PORT, #DONG2 
- Chuyển sang thanh ghi dữ liệu: đặt RS =1 
- In kí tự 'A': mov LCD_DATA_PORT , #'A' 
Ví dụ : Hiện thị chữ chạy trên LCD 
ORG 0000h 
 MOV A,#38H ; 
 ACALL CSTROBE 
 MOV A,#0EH 
 ACALL CSTROBE 
 MOV A,#01H ;clear LCD 
 ACALL CSTROBE 
 MOV A,#06H 
 ACALL CSTROBE 
 MOV A,#80H 
 ACALL CSTROBE 
 MOV DPTR,#MYDATA 
DONG1: CLR A 
 MOVC A,@A+DPTR 
 JZ THOAT 
 ACALL DSTROBE 
 INC DPTR 
 SJMP DONG1 
THOAT: MOV A,#18H 
 ACALL CSTROBE 
 ACALL DELAY100MS 
 SJMP THOAT 
HERE: SJMP HERE 
CSTROBE: 
 ACALL READY 
 MOV P1,A 
 CLR P3.0 ;RS=0: le^.nh 
 CLR P3.1 
 SETB P3.2 
 CLR P3.2 
DSTROBE: ;data strobe 
 ACALL READY ; 
 MOV P1,A ; 
 SETB P3.0 
 CLR P3.1 
 SETB P3.2 ; 
 CLR P3.2 ;E=0, cho^'t 
 RET 
READY: SETB P1.7 
 CLR P3.0 ; 
 SETB P3.1 
BACK: CLR P3.2 
 SETB P3.2 ;E=1 
 JB P1.7,BACK ;cho 
 RET 
DELAY100ms: MOV R2,#100 
DL5: MOV R1,#250 
DL4: NOP 
 NOP 
 DJNZ R1,DL4 
 DJNZ R2,DL5 
 RET 
 ORG 250H 
MYDATA: 
 DB "DAI HOC BACH KHOA HA 
NOI", 0 
 END 
Chương 4: Thiết kế giao tiếp ngoại vi 17 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.9: Sơ đồ ghép nối LCD với 8051 
4.4.2. Bàn phím 
Giao tiếp bàn phím cho phép người sử dụng có thể nhập dữ liệu và thông qua các phím 
chức năng điều khiển hoạt động của bộ KIT. Với yêu cầu của KIT, ta sử dụng bàn phím 
dạng ma trận để nhập dữ liệu. Để quản lý được các phím của bàn phím mà không làm ảnh 
hưởng nhiều tới quá trình thực hiện tính toán của vi điều khiển chính, ta sử dụng riêng một 
vi điều khiển loại nhỏ để quản lý bàn phím. Bàn phím được xây dựng theo kiểu ma trận, 
gồm 4 hàng x 5 cột. 
+ 4 hàng được lấy từ các chân P1.0 - P1.3 của vi điều khiển 
+ 5 cột được lấy từ các chân P1.4 P1.7 của vi điều khiển và cột cuối cùng nối đất. 
Tổ chức các phím gồm các phím từ 0 -9 từ A- F làm thành phần nhập dữ liệu. Các phím 
chức năng F1, F2 là phím lựa chọn các lệnh trên menu, phím BACK SPACE là phím xóa, 
giúp chỉnh sửa khi nhập liệu nhầm. Phím ENTER để kích hoạt lệnh hiện hành, tùy theo ngữ 
cảnh, được hiển thị trên LCD. Trên bộ KIT, bàn phím được dặt tách rời so với các phần 
Chương 4: Thiết kế giao tiếp ngoại vi 18 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
khác ở góc để thuận tiện cho việc thao táo vói bàn phím. Sơ đồ nguyên lý của bàn phím như 
hình 4.10: 
Hình 4.10: Sơ đồ ghép nối LCD với 8051 
Ví dụ : Kiểm tra phím 4x4 
TESTPHIM: 
KT_4PHIM_COT1: 
MOV A,#0FFH 
MOV P1,A 
CLR P1.4 ; noi dat cot 1 
MOV A,P1 
ANL A,#0FH ; kiem tra phim nhan 
CJNE A,#0FH,CO_PHIM_NHAN 
KT_4PHIM_COT2: 
MOV A,#0FFH 
MOV P1,A 
CLR P1.5 ; noi dat cot 2 
MOV A,P1 
ANL A,#0FH 
CJNE A,#0FH,CO_PHIM_NHAN 
KT_4PHIM_COT3: 
MOV A,#0FFH 
MOV P1,A 
CLR P1.6 ; noi dat cot 3 
MOV A,P1 
ANL A,#0FH 
CJNE A,#0FH,CO_PHIM_NHAN 
KT_4PHIM_COT4: 
MOV A,#0FFH 
MOV P1,A 
CLR P1.7 ; noi dat cot 4 
MOV A,P1 
ANL A,#0FH 
CJNE A,#0FH,CO_PHIM_NHAN 
LJMP KET_THUC ; khong co phim nao 
CO_PHIM_NHAN: 
MOV A,P1 
P0_C1: ; hang 1 cot 1 
CJNE A,#11101110B,P1_C1 ; 
MOV A,#0 ;co phim C nhan 
MOV 50H,A ; 
LJMP KET_THUC 
P1_C1: ;hang 2 cot 1 
CJNE A,#11101101B,P2_C1 ; 
MOV A,#1 
MOV 50H,A 
LJMP KET_THUC 
P2_C1: ;hang 3 cot 1 
CJNE A,#11101011B,P3_C1 ; 
MOV A,#2 
MOV 50H,A 
LJMP KET_THUC 
P3_C1: ;hang 4 cot 1 
CJNE A,#11100111B,P0_C2 ; 
MOV A,#3 
MOV 50H,A 
LJMP KET_THUC 
P0_C2: ;hang 1 cot 2 
CJNE A,#11011110B,P1_C2 
MOV A,#4 
MOV 50H,A 
Chương 4: Thiết kế giao tiếp ngoại vi 19 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
LJMP KET_THUC 
P1_C2: ;hang 2 cot 2 
CJNE A,#11011101B,P2_C2 ; 
MOV A,#5 
MOV 50H,A 
LJMP KET_THUC 
P2_C2: ;hang 3 cot 2 
CJNE A,#11011011B,P3_C2 ; 
MOV A,#6 
MOV 50H,A 
LJMP KET_THUC 
P3_C2: ;hang 4 cot 2 
CJNE A,#11010111B,P0_C3 
MOV A,#7 
MOV 50H,A 
LJMP KET_THUC 
P0_C3: ;hang 1 cot 3 
CJNE A,#10111110B,P1_C3 
MOV A,#8 
MOV 50H,A 
LJMP KET_THUC 
P1_C3: ;hang 2 cot 3 
CJNE A,#10111101B,P2_C3 
MOV A,#9 
MOV 50H,A 
LJMP KET_THUC 
P2_C3: ;hang 3 cot 3 
CJNE A,#10111011B,P3_C3 
MOV A,#10 
MOV 50H,A 
LJMP KET_THUC 
P3_C3: ;hang 4 cot 3 
CJNE A,#10110111B,P0_C4 ; 
MOV A,#11 
MOV 50H,A 
LJMP KET_THUC 
P0_C4: ;hang 1 cot 4 
CJNE A,#01111110B,P1_C4 
MOV A,#12 
MOV 50H,A 
LJMP KET_THUC 
P1_C4: ;hang 2 cot 4 
CJNE A,#01111101B,P2_C4 
MOV A,#13 
MOV 50H,A 
LJMP KET_THUC 
P2_C4: ;hang 3 cot 4 
CJNE A,#01111011B,P3_C4 ; 
MOV A,#14 
MOV 50H,A 
LJMP KET_THUC 
P3_C4: ;hang 4 cot 4 
CJNE A,#01110111B,KET_THUC 
MOV A,#15 
MOV 50H,A 
LJMP KET_THUC 
KET_THUC: 
RET 
4.4.3. Vi mạch mở rộng cổng giao tiếp có thể lập trình 8255 
Do 89C52 chỉ có 32 đường xuất nhập nên ta sử dụng 8255 - một vi mạch chuyên dụng 
của hãng Intel để mở rộng I/O của 89C52. Sau đây ta tìm hiểu kỹ về vi mạch này. Đây là vi 
mạch của hãng Intel dùng để mở rộng thêm các cổng giao tiếp cho các vi điều khiển cũng 
như các vi điều khiển. Nó được sử dụng rất rộng rãi trong các ứng dụng điều khiển bởi tính 
linh hoạt và độ ổn định hoạt động. Chip có 3 cổng A, B, C được truy cập riêng biệt. Các 
cổng này đều có khả năng lập trình làm cổng vào hoặc ra độc lập. Ngoài ra các cổng của 
8255 còn có khả năng bắt tay, do vậy, cho phép giao diện với các thiết bị khác cũng có tín 
hiệu bắt tay, ví dụ như máy in. 
Chương 4: Thiết kế giao tiếp ngoại vi 20 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.11: Sơ đồ chân 8255 
- PA0 - PA7, PB0-PB7: Cả 8 bit của cổng A, B có thể được lập trình thành 8 bit vào, 8 
bit ra, hoặc cả 8 bit 2 chiều vào/ra. 
- PC0 - PC7: Tất cả các bit của cổng C đều có thể được lập trình thành các bit vào hoặc 
các bit ra. 8 bit này cũng có thể được chia làm 2 phần: Phần cao (PC4- PC7) là CU (Uppers 
bits) và phần thấp (PC0 - PC3) là CL (Lower Bits). Mỗi phần có thể được sử dụng độc lập 
làm đầu vào hoặc ra. Ngoài ra, từng bit của cổng C từ PC0 - PC7 cũng có thể được lập trình 
riêng rẽ. 
- D0 D7: các chân dữ liệu D0-D7 của 8255 được nối tới các chân dữ liệu của bộ vi điều 
khiển để cho phép trao đổi dữ liệu giữa chúng. 
- RD, WR: Là hai tín hiệu điều khiển tích cực mức thấp và là các chân vào của 8255. 
Các chân tín hiệu của /RD /WR của 8031/51 được nối đến các chân này. 
- RESET: Là tín hiệu vào tích cực mức cao được dùng để xóa thanh ghi điều khiển. Khi 
chân RESET được kích hoạt thì tất cả các cổng được khởi động lại làm các cổng vào. Trong 
nhiều thiết kế thì chân này được nối tới đầu ra RESET của bus hệ thống hoặc được nối đất 
để không bị kích hoạt. Cũng như tất cả các chân vào của IC, chân này cũng có thể để hở. 
- A0, A1, /CS: /CS là chân chọn chip, còn A0, A1 cho phép chọn cổng. Các chân này 
được dùng để truy cập các cổng A, B, C hoặc thanh ghi điều khiển như trình bày ở bảng 
sau: 
Chương 4: Thiết kế giao tiếp ngoại vi 21 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Các chế độ l6m việc của 8255 
Các cổng A, B, C của 8255 được dùng để nhập xuất dữ liệu, còn thanh ghi điều khiển thì 
được lập trình để chọn chế độ làm việc cho các cổng này. Các cổng của 8255 được lập trình 
theo các chế độ sau: 
- Chế độ 0 (Mode 0): Đây là chế độ vào/ra đơn giản. ở chế độ này, các cổng A, B, CL, 
CU có thể được lập trình làm đầu vào hoặc đầu ra. Nên nhấn mạnh rằng, ở chế độ 0 thì tất 
cả các bit hoặc làm đầu vào, hoặc làm đầu ra mà không thể điều khiển riêng rẽ từng bit như 
các cổng P0- P3 của 8051. Vì các ứng dụng liên quan đến 8255 chủ yếu sử dụng chế độ này 
và KIT cũng chỉ sử dụng chế độ này nên chúng ta sẽ tìm hiểu kỹ hơn. 
- Chế độ 1 (Mode 1): ở chế độ này, cổng A ,B có thể dùng làm cổng vào/ ra hai chiều 
với khả năng bắt tay. Tín hiệu bắt tay được cấp bởi các bit của cổng C. 
- Chế độ 2 (Mode 2): ở chế độ này, cổng A có thể được dùng làm cổng vào/ra hai chiều 
với khả năng bắt tay, tín hiệu bắt tay được cấp bởi các bit cổng C. Cổng B có thể được dùng 
như ở chế độ vào/ ra đơn giản hoặc ở chế độ bắt tay Mode 1. 
- Chế độ BSR: Đây là chế độ thiết lập / xóa bit (Bit Set/Reset). ở chế độ này chỉ có 
những bit riêng rẽ của cổng C có thể lập trình được. 
Lập trình chế độ vào ra đơn giản 
Hãng Intel gọi chế độ 0 là chế độ vào / ra cơ sở. Một thuật ngữ khác được sử dụng hổ 
biến đó là vào ra đơn giản. ở chế độ này thì bất kì công A, B, hay C để thể được lập trình 
làm cổng vào hoặc ra riêng rẽ. Tuy nhiên một cổng không thể đồng thời vừa là đầu vào lại 
vừa là đầu ra. 
Chương 4: Thiết kế giao tiếp ngoại vi 22 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Ví dụ: để đọc port A vào thanh chứa : 
MOV DPTR, #0102H ; DPTR trỏ đến port A của 8255 
MOVX A, @DPTR ; đọc port A vào ACC 
Ví dụ: để cấu hình port B xuất còn các port A và C vẫn lầm nhiệm vụ nhập: 
MOV DPTR, 0100H ; thanh ghi lệnh điều khiển của 8255 
MOV A, #00000010B ; port B xuất 
MOVX @DPTR, A ; khởi động 8255 
Vì dòng ra các port của 8255 rất nhỏ (lớn nhất là port A khoảng 5mA) nên cần có IC 
đệm dòng để nâng dòng lên đủ kéo cho led sáng. Chọn IC đệm 74245, sau đây là sơ đồ 
chân, bảng trạng thái của 74245. Sơ đồ chân và sơ đồ logic của 74245 như sau: 
 Ví dụ : giao tiếp với 8255: 
INCLUDE 89C51.MC 
ORG 0000H 
 MOV DPTR,#0F300H 
 MOV A,#89H 
 MOVX @DPTR,A 
 MOV R0,#00H 
OUT_LED: MOV A,#0FFH 
 MOV DPTR,#0F000H 
 MOVX @DPTR,A 
 MOV DPTR,#0F100H 
 MOVX @DPTR,A 
 MOV DPTR,#TABLE 
 MOV A,R0 
 MOVC A,@A+DPTR 
 MOV DPTR,#0F000H 
 MOVX @DPTR,A 
 INC R0 
 MOV DPTR,#TABLE 
 MOV A,R0 
 MOVC A,@A+DPTR 
 MOV DPTR,#0F100H 
 MOVX @DPTR,A 
 LCALL DELAY 
 INC R0 
 CJNE R0,#10,OUT_LED 
 MOV R0,#00H 
 SJMP OUT_LED 
DELAY: MOV R7,#50 
Chương 4: Thiết kế giao tiếp ngoại vi 23 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 LOOP1: MOV R6,#30 
 LOOP2: DJNZ R6,LOOP2 
 DJNZ R7,LOOP1 
 RET 
TABLE: DB
 07FH,01H,49H,02hH,49H,04H,49H,08
H,36H,10H 
END 
Hình 4.12: Sơ đồ chân IC đệm 74245 
Tuy nhiên dòng ra lớn nên phải dùng thêm điện trở hạn dòng từ mỗi ngõ ra (B1 _ B8) 
của 74245 
4.4.4 Khối v+o/ra ADC, DAC 
Hình 4.13: Sơ đồ ghép nối ADC/DAC 
Chương 4: Thiết kế giao tiếp ngoại vi 24 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
ADC0809 
Hình 4.14: Sơ đồ chân ADC 0809 
ADC0809 là vi mạch chuyển đổi tín hiệu từ tương tự sang số 8 bit. Vi mạch này được 
chế tạo theo công nghệ CMOS. Bộ chuyển đổi tương tự số này sử dụng phương pháp 
chuyển đổi xấp xỉ. Sai số của phép chuyển đổi là 1 bit. Tuy nhiên do yêu cầu về độ chính 
xác của tín hiệu trong bộ KIT không quá cao nên sai số như trên là chấp nhận được. Sau đây 
là một vài đặc điểm của vi mạch ADC0809 : 
- Nguồn nuôi 5 V. Dải tín hiệu lối vào tương tự 5V 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ể. 
- Dễ dàng giao tiếp với vi điều khiển vì đầu ra có bộ đệm 3 trạng thái nên có thể ghép 
trực tiếp vào kênh dữ liệu của hệ vi điều khiển. 
- Tổng sai số chưa chỉnh 1/2 LSB. 
- Thời gian chuyển đổi 100 s . 
- Tần số xung clock 10kHz – 1028 kHz. 
- Đảm bảo sai số tuyến tính trong dải nhiệt độ từ –400C 850C. 
Chức năng của các chân của ADC0809 : 
- IN0 – IN7 : 8 chân đầu vào tương tự. 
- A, B, C : các chân tín hiệu chọn kênh. 
- Các chân D0 D7 : là các đầu ra số. 
Chương 4: Thiết kế giao tiếp ngoại vi 25 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
- ALE : chân tín hiệu cho phép chốt số liệu đầu vào. 
- Start : xung cho phép bắt đầu chuyển đổi. 
- Clk : đầu vào cung cấp xung clock cho ADC 
- Ref(+) : điện áp vào chuẩn +5v 
- Ref(-) : điện áp vào chuẩn 0 
- OE : Chân cho phép xuất dữ liệu đ3 chuyển đổi ra DataBus. 
- EOC : Cho biết quá trình chuyển đổi đ3 kết thúc. 
- Vcc: nguồn cung cấp 
Hoạt động của ADC0809 : Đầu tiên ta phát tín hiệu vào 3 chân A, B, C để chọn cổng 
vào tương tự. Để bắt đầu cho ADC0809 hoạt động, ta phát xung vào chân Start. Tiếp tục 
phát xung ALE để chốt dữ liệu tương tự đầu vào. Sau khi quá trình chuyển đổi tương tự – số 
đã diễn ra xong. ADC0809 sẽ tự phát ra một xung trên chân EOC để báo cho biết đã kết 
thúc quá trình chuyển đổi. Để dữ liệu được đưa ra các chân D0 D7, ta phát một xung vào 
chân OE của ADC0809. Bây giờ có thể đọc dữ liệu được. Trong mạch nguyên lý của khối 
vào/ra ADC-DAC, ADC0809 được điều khiển bởi 2 cổng của 8255. Cổng PA của 8255 
được nối với các chân ra số của ADC, còn việc phát xung điều khiển ADC được thực hiện 
bởi 4 bit thấp của cổng PC. 
Ví dụ: sử dụng ADC 0809 
in_port equ 30h 
count equ 31h 
Out_enable bit P3.7 
Start bit P3.6 
 ORG 0000h ; 
 LJMP MAIN 
 ORG 0030H ; 
MAIN: ; Khoi tao cac gia tri ban dau 
 MOV P1,#0FFH ; 
 MOV P3,#0FFH 
 MOV DPTR,#LED7SEG 
 SETB P0.0 
 SETB P0.1 
 SETB P0.2 
 SETB P0.3 
 CLR Start 
 CLR Out_enable 
 MOV 40H,#C6H 
 MOV 41H,#9CH ; Ky tu do 
 mov R6,#0 
 mov count,#10 
 acall send_start 
 acall read_0809 
BACK: 
 acall send_start 
 acall read_0809 
next: ; 
 LCALL DISPLAY ; 
 SJMP BACK ; 
read_0809: 
 setb out_enable 
 mov A,P1 
 LCALL BIN2BCD 
 clr out_enable 
 ret 
Read_ADC0809: 
 nop 
HERE: JB P3.2, HERE 
 setb out_enable ; 
 nop 
 nop 
 MOV A,P1 ; 
Chương 4: Thiết kế giao tiếp ngoại vi 26 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 LCALL BIN2BCD 
 clr out_enable 
 ret 
LM555: Đây là vi mạch dùng để tạo xung clock cho ADC0809. Vi mạch này được sử 
dụng rộng rãi trong các ứng dụng cần tạo ra xung vuông có tần số thay đổi. Dưới đây là sơ 
đồ khối và cách làm việc của IC này. 
Hình 4.15: Sơ đồ cấu trúc LM555 
Trong phần chuyển đổi ADC, DAC ngoài đầu vào tín hiệu tương tự bằng các biến trở vi 
chỉnh, trên KIT còn trang bị một cảm biến nhiệt độ, họ LM35. Đây là họ cảm biến nhiệt, 
mạch tích hợp, chính xác cao, có điện áp đầu ra tỷ lệ tuyến tính với nhiệt độ theo thang độ 
C. Họ cảm biến này không yêu cầu căn chỉnh ngoài vì vốn nó đã được căn chỉnh. Họ này 
cho điện áp ra 10mV ứng với thay đổi nhiệt độ là 10C. 
DAC0808 : là vi mạch chuyển đổi tín hiệu từ số sang tương tự có độ chính xác 8 bit. Tín 
hiệu tương tự là dòng (Iout) và nếu nối điện trở tới chân Iout thì kết quả sẽ được chuyển 
thành điện áp. Dòng tổng được cấp bởi chân Iout là một hàm số nhị phân của các đầu vào 
D0 – D7 của DAC0808 và được tính theo Iref như sau: 
Dòng đầu vào IREF phải được áp vào chân 14. Dòng IREF thường đạt giá trị 2mA. Nếu 
IREF = 2mA, còn tất cả đầu vào nối với mức cao thì dòng điện cực đại ở đầu ra là 1.99mA. 
Chương 4: Thiết kế giao tiếp ngoại vi 27 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Chuyển IOUT sang điện áp ở DAC0808. Nếu nối điện trở tới chân IOUT thì dòng được 
chuyển thành điện áp và có thể kiểm tra đầu ra bằng máy hiện sóng. Tuy nhiên, như vậy sẽ 
làm giảm độ chính xác do bị thay đổi trở kháng vào của tải. Vì vậy dòng IREF cần được 
cách ly bằng cách dùng khuyếch đại thuật toán, ví dụ như HA17741 với điện trở hồi tiếp Rf 
= 5 K. 
Chức năng các chân : 
- A1 A8 : Các đầu vào số 
- VR+ : Điện áp chuẩn dương 
- VR- : Điện áp chuẩn âm 
- V- (VEE) : Điện áp so sánh hiệu chỉnh 
- V+ : Điện áp nguồn cung cấp 
- COMP : Chân tín hiệu so sánh 
- IOUT : Dòng ra dương 
- /IOUT : Dòng ra âm 
Sau đây là mạch ứng dụng phổ biến nhất của ADC0808 : 
Hình 4.16: Sơ đồ chuyển đổi ADC 
4.4.5 Khối vào/ra xung số, điều khiển động cơ bước 
Động cơ bước: Thực hiện việc chuyển các xung điện thành các bước quay mịn của 
motor. Do có sự tương ứng 1-1 giữa xung điện điều khiển và bước quay của motor nên động 
cơ bước có độ chính xác dịch chuyển cao. Vì vậy động cơ bước thường được sử dụng trong 
các thiết bị toạ độ chính xác như cánh tay robot, máy in, máy vẽ, thiết bị khoa học... 
Nguyên lý hoạt động và cấu tạo của động cơ bước được trình bày như sau : 
Chương 4: Thiết kế giao tiếp ngoại vi 28 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Như hình vẽ trên là loại động cơ bước loại nam châm vĩnh cửu. Roto làm bằng nam 
châm vĩnh cửu còn các cuộn dây được quấn trên stato. Bước góc của rôto là 900. Động cơ 
có 4 cực được đặt ở vị trí đối diện nhau từng cặp một, gồm X, X và Y ,Y . 
Tuỳ thuộc vào chiều dòng điện chạy qua các cuộn dây mà từ trường của stato sẽ có một 
hướng nhất định. Do đó roto sẽ được định vị chính xác. 
Việc thay đổi thứ tự chiều dòng điện chạy qua các cuộn dây theo một trình tự nhất định 
sẽ điều khiển được động cơ chạy thuận hay chạy ngược như mong muốn. Và tốc độ của 
động cơ có thể được điều chỉnh bằng khoảng thời gian trễ giữa hai lần thay đổi thứ tự chiều 
dòng điện. 
Hình 4.17: Sơ đồ nguyên lý động cơ bước 
Trong mạch nguyên lý ở hình 4.17 có một header 6 đầu ra để điều khiển động cơ bước 
(Stepper motor). Loại động cơ bước được lắp đặt trên bộ KIT là động cơ bước có điện áp 
nguồn cấp là 5V và độ phân giải là 200, tức là với mỗi nhịp điều khiển, motor bước sẽ quay 
một góc = 3600/200 = 1,80. 
4.4.6. Led Matran 
LED matrix 8x8 : là một bảng 64 điểm LED bố trí theo kiểu ma trận 8 hàng x 8 cột, tại 
mỗi điểm 2 LED xanh và đỏ đấu chung Anôt, mỗi hàng gồm 8 điểm cũng đấu chung Anôt 
với nhau. Như vậy ma trận LED có 24 chân : 8 chân Anôt chung, 8 chân điều khiển đèn 
xanh và 8 chân điều khiển đèn đỏ. Địa chỉ các cổng và thanh ghi điều khiển của 8255 điều 
khiển LED matrix như sau : PA5 : 800Ch PB5 : 800Dh PC5 : 800Eh CW5 : 800Fh 
Chương 4: Thiết kế giao tiếp ngoại vi 29 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.18: Sơ đồ của khối LED đơn, LED 7 đoạn, LED ma trận 
ULN2803: IC àm nhiệm vụ đệm dòng cho LED ma trận và động cơ bước cũng như động 
cơ 1 chiều. IC này gồm 8 bộ tranzitor NPN mắc Darlington, chịu được điện áp đầu vào đến 
30V, đầu ra đến 50V, dòng IC cực đại có thể chịu được là 500mA, đủ để đệm dòng cho ma 
trận LED. Ngoài ra nó còn tích hợp các transistor để chống quá áp khi đóng ngắt các tải cảm 
(các cuộn dây của động cơ). 
Nguyên lý hoạt động: Khi đầu vào tương ứng ở mức cao thì đầu ra tương ứng ở mức 
thấp. 
Hình 4.19: Sơ đồ chân của UNL2803 
Ví dụ sử dụng LED Matran chớp tắt ký tự A: 
Chương 4: Thiết kế giao tiếp ngoại vi 30 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
ORG 0500H 
DATAHT: DB 0E0H, 0DBH, 0BBH, 
0DBH, 0E0H 
ORG 0000H 
MOV DPTR, #0500H 
MAIN: MOV R2, #250 
MAINB: MOV R1, #00 
MOV R3. #00000010B 
MAINC: MOV A, R1 
MOVC A,@A+DPTR 
MOV P3, A 
MOV P2, R3 
LCALL DELAY 
MOV P2, #00H 
INC R1 
MOV A, R3 
MOV R1, A 
MOV R3, A 
CJNE R1, #5, MAINC 
DJNZ R2, MAINB 
LCALL DELAY1S 
SJMP MAIN 
DELAY: MOV R5, #1 
DE: MOV R6, #50 
DJNZ R6, $ 
DJNZ R5, DE 
RET 
DELAY1S: MOV R5, #0 
PDE: MOV R6, #0 
DJNZ R6, $ 
DJNZ R5, PDE 
MOV P2, #00H 
MOV P3, #0BBH 
MOV P2, #00000100B 
LCALL DELAY 
MOV P2, #00H 
MOV P3, #0DBH 
MOV P2, #00001000B 
LCALL DELAY 
MOV P2, #00H 
MOV P3, #0E0H 
MOV P2, #00010000B 
LCALL DELAY 
MOV P2, #00H 
SJMP MAIN 
END 
4.4.7 Khối hiển thị LED 7 đoạn và LED đơn 
Hình 4.20: Sơ đồ nối led 7 đoạn 
Chương 4: Thiết kế giao tiếp ngoại vi 31 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.21: Sơ đồ nối led đơn 
Ví dụ LED 7 đoạn: 2 số đếm lùi 
ORG 00H 
MOV 70H,#11000000B ;0 
MOV 71H,#11111001B ;1 
MOV 72H,#10100100B ;2 
MOV 73H,#10110000B ;3 
MOV 74H,#10011001B ;4 
MOV 75H,#10010010B ;5 
MOV 76H,#10000010B ;6 
MOV 77H,#11111000B ;7 
MOV 78H,#10000000B ;8 
MOV 79H,#10011000B ;9 
MOV 60H,#11111110B 
MOV 61H,#11111101B 
MOV 20H, #0 
MOV 21H, #0 
MOV TMOD, #00010001B 
B23: MOV 16H,#2 
B22: MOV 17H,#9 
B21: CALL GMA 
 CALL DELAY 
 DEC 17H 
MOV A,17H ; 
CJNE A,#-1, B21 
DEC 16H 
MOV A, 16H 
CJNE A, #-1, B22 
SJMP B23 
GMA: 
 MOV A, 17H 
 MOV R0,#70H 
 ADD A, R0 ; 
 MOV R1, A ; 
 MOV 20H,@R1 ; 
 MOV A, 16H 
 MOV R0,#70H 
 ADD A, R0 
 MOV R1, A 
 MOV 21H,@R1 
 RET 
DELAY: 
MOV R5, #100 
DEL2: CLR TR0 
 CLR TF0 
MOV TH0, #HIGH(-10000) 
MOV TL0, #LOW(-10000) 
SETB TR0 
DEL1: CALL HTHI 
JNB TF0, DEL1 
DJNZ R5, DEL2 ; 
RET 
HTHI: 
MOV R0, #20H 
MOV R1, #60H 
HT1: 
MOV P2, @R0 ; 
MOV P0, @R1 ; 
MOV P0, #0FFH 
CALL DELAY1 
INC R0 
INC R1 
CJNE R1, #62H, HT1; 
DELAY1: 
MOV R7, #10 
DJNZ R7, $ 
RET 
END 
Chương 4: Thiết kế giao tiếp ngoại vi 32 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Mạch giải mã cho đèn LED 7 thanh DM7447A 
Để có thể hiển thị được các số liệu lên LED 7 thanh, ta cần vi mạch giải mã 7447. Vi 
mạch này có nhiệm vụ chuyển đổi dữ liệu đầu vào từ các chân D0 D3 thành các tín hiệu đưa 
đến các thanh của LED. 
Sau đây là bảng giải mã tín hiệu của vi mạch 7447 : 
Đèn LED 7 thanh 
Dòng tiêu thụ của đèn khá lớn, mỗi đèn có dòng khoảng 100mA. Chính vì vậy ta cần có 
điện trở giới hạn dòng giữa vi mạch giải mã 7447 và LED. Trong đồ án này, ta sử dụng loại 
đèn có Anốt chung, màu hiển thị là màu đỏ. 
4.4.8. Tạo nguồn áp chuẩn: 
7805 Đây là IC tự chỉnh định để tạo ra nguồn áp chuẩn dương +5V cung cấp cho mạch 
vi iều khiển. Sau đây là sơ đồ IC 7805.Chân 1 nối mass, chân 2 là ng vo của p nguồn, chn 3 
l ng ra +5V để cấp điện cho vi điều khiển và các linh kiện điện tử khác. 
7905 Đây là IC có chức năng giống như IC 7805 nhưng nó tạo ra áp chuẩn âm -5V nhằm 
cung cấp áp cho các linh kiện hay các module cần sử dụng nguồn áp âm hay nguồn áp 
lưỡng cực. Sau đây là 3 dạng chân cấu tạo và chức năng từng chân của IC 7905 ngoài thị 
trường. 
Chương 4: Thiết kế giao tiếp ngoại vi 33 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.22: Sơ đồ chân 7805 và nối nguồn chuẩn 5 V 
Đây là mạch dùng để tạo ra nguồn áp chuẩn 5V . Ta sử dụng IC 7805 để tạo ra p chuẩn 
+5V v IC 7905 để tạo áp chuẩn -5V. 
4.4.9. Hoạt động Reset 
8951 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ xung 
máy, sau đó xuống mức thấp để 8951 bắt đầu làm việc. RST có thể kích tay bằng một phím 
nhấn thường hở, sơ đồ mạch reset như sau: 
Chương 4: Thiết kế giao tiếp ngoại vi 34 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
Hình 4.23: Reset bằng (tay Manual Reset) 
Trạng thái của tất cả các thanh ghi trong 8951 sau khi reset hê thống được tóm tắt như 
sau: 
Thanh ghi Nội dung 
Đếm chương trình PC 
Thanh ghi tích lũyA 
Thanh ghi B 
Thanh ghi thái PSW 
SP 
DPRT 
Port 0 đến port 3 
IP 
IE 
Các thanh ghi định thời 
SCON SBUF 
PCON (HMOS) 
PCON (CMOS) 
0000H 
00H 
00H 
00H 
07H 
0000H 
FFH 
XXX0 0000 B 
0X0X 0000 B 
00H 
00H 
00H 
0XXX XXXXH 
0XXX 0000 B 
Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được reset tại địa chỉ 
0000H. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ 0000H của 
bộ nhớ chương trình. Nội dung của RAM trên chip không bị thay đổi bởi tác động của ngõ 
vào reset. 
Chương 4: Thiết kế giao tiếp ngoại vi 35 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
4.5. XÂY DỰNG CHƯƠNG TRÌNH 
4.5.1 Chương trình MONITOR cho KIT 
Do chương trình MONITOR của hệ thống phức tạp và khá lớn nên ta sẽ tổ chức thành 
nhiều module nhỏ ghép lại với nhau. Mỗi module thực hiện mỗi chức năng riêng, các 
module trong chương trình: 
+ Module thực hiện việc hiển thị LCD. 
+ Module quản lý bàn phím. 
+ Module quản lý việc đọc/ghi dữ liệu trong EEPROM và RAM. 
+ Module tạo thời gian trễ. 
+ Chương trình chính (Main). 
+ Module điều khiển truy cập các thanh ghi đặc biệt và các ô nhớ bên trong chip vi điều 
khiển chính. 
+ Module truyền thông giao tiếp với máy tính PC. 
Mã nguồn của chương trình hệ điều hành được giới thiệu ở phần phụ lục. 
Sau đây là lưu đồ thuật toán của chương trình MONITOR : 
Lưu đồ thuật toán của module Main: khởi tạo các thiết đặt ban đầu cho KIT và các thiết 
bị ngoại vi, hiển thị màn hình. 
4.5.2. Chương trình quản lí thiết bị 
4.5.2.1. Chương trình quét bàn phím 
Như đã trình bày ở chương 2, bàn phím sử dụng trong bộ KIT này gồm có 20 phím, 16 
phím đầu tiên được sắp xếp theo kiểu ma trận và 4 phím cuối cùng được xếp theo một cột 
nối đất chung. Trên bàn phím của bộ KIT, 4 phím trên một cột nối đất chung là các phím 
chức năng : F1, F2, BACK SPACE và ENTER. Các phím từ 0-9 và A-F dùng để nhập liệu, 
các phím chức năng có tác dụng khác nhau tùy theo ngữ cảnh của màn hình, gợi ý tác dụng 
của các phím bấm hiển thị trên màn hình, điều này giúp việc làm quen và thí nghiệm trên 
KIT rất thuận tiện và dễ dàng cho người học, nhất là khi thí nghiệm ở chế độ debug. 
3.5.2.2 Chương trình điều khiển hiển thị LCD 
Để cho LCD có thể hoạt động, đầu tiên ta phải khởi tạo LCD, báo cho nó biết số hãng, 
số ký tự hiển thị trên một hàng. Các dữ liệu điều khiển lần lượt được chuyển vào Data Bus 
của LCD là 38H, 0EH, và 06H. Sau các lệnh khởi tạo LCD này ta mới có thể hiển thị ký tự 
lên trên màn hình LCD. 
Chương 4: Thiết kế giao tiếp ngoại vi 36 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
PHỤ LỤC 
A. Nội dung chương trình kit 
 porta1 equ 8000h ;quan li dia chi thap a7-a0 
 portb1 equ 8001h ;quan li dia chi cao a11-a8 
 portc1 equ 8002h 
 cw1 equ 8003h 
 porta2 equ 0a000h 
 portb2 equ 0a001h 
 portc2 equ 0a002h 
 cw2 equ 0a003h 
 ht equ 0c000h 
 dk equ 0c001h 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
;chuong trinh kiem tra - hien thi 
 org 5200h 
 mov dptr,#cw1 ; khoi tao 8255 
 mov a,#80h 
 movx @dptr,a 
 mov dptr,#cw2 
 mov a,#90h 
 movx @dptr,a 
 mov dptr,#portc2 ;pc0=prog\=H 
 mov a,#03h ;pc1=Vpp=H 
 movx @dptr,a 
 mov dptr,#portc1 ;P2.6=PC0=L; P2.7=PC1=L; P3.6= PC2=H 
 mov a,#0ch ;P3.7=PC3=H 
 movx @dptr,a 
;chuyen dia chi bat dau doc va dia chi ket thuc vao cac o nho ben trong 
 mov dptr,#4f00h ;nap dia chi luu Begin_Addr can doc 
 movx a,@dptr 
 mov 10h,a ;cat tam byte B_A_L vao o nho 10h 
 inc dptr 
 movx a,@dptr 
 mov 11h,a ;cat tam byte B_A_H vao o nho 11h 
 inc dptr 
 movx a,@dptr 
 mov 12h,a ;cat tam byte E_A_L vao o nho 12h 
 inc dptr 
 movx a,@dptr 
 mov 13h,a ;cat tam byte E_A_H vao o nho 13h 
;goi dia chi can doc ra 8255 de dieu khien Addr cua EPROM trong 8951 
rd2: mov dptr,#porta1 
 mov a,10h ;chuyen byte B_A_L vao dpl 
 movx @dptr,a 
 mov dptr,#portb1 
Chương 4: Thiết kế giao tiếp ngoại vi 37 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 mov a,#11h ;chuyen byte B_A_H vao dph 
 movx @dptr,a 
 mov dptr,#porta2 
 movx a,@dptr ;xuat data ra thanh ghi a 
 mov 14h,a ;cat byte data vua doc vao o nho 14h 
 lcall decode ;goi chtr con giai ma hien thi 
 lcall display ;goi chtr con hien thi 
rd5: lcall key ;goi chtr quet phim cho nhan phim de doc byte ke 
 cjne a,#0ffh,rd4 
 sjmp rd5 ;quay lai cho 
rd4: mov a,11h ;chuyen dia chi byte H vao a de so sanh 
 cjne a,13h,rd1 ;so sanh dia chi byte H neu chua bang thi tang len 1 
 mov a,10h ;chuyen dia chi byte L vao a de so sanh 
 cjne a,12h,rd1 ;so sanh dia chi byte L neu chua bang thi tang len 1 
;hien thi chu END de bao ket thuc 
 mov 25h,#79h ;ma chu E 
 mov 26h,#37h ;ma chu N 
 mov 27h,#5eh ;ma chu d 
 lcall display 
 sjmp $ ;ngung 
rd1: inc 10h ;tang B_A_L len 1 
 mov a,10h ;kiem tra xem co bang 0 hay khong 
 cjne a,#00,rd2 ;nhay ve vi chua bang 0 
 inc 11h ;tang B_A_H len 1 
 sjmp rd2 
;chuong trinh con giai ma hien thi 
 org 5280h 
decode: mov dptr,#0200h 
 mov a,11h ;lay byte B_A_H de giai ma hien thi 
 push 0e0h ;cat A 
 swap a ;xu li so thu nhat 
 anl a,#0fh 
 mov dpl,a 
 movx a,@dptr 
 mov 20h,a 
 pop 0e0h ;lay lai A 
 anl a,#0fh ;xu li so thu 2 
 mov dpl,a 
 movx a,@dptr 
 mov 21h,a 
 mov a,10h ;lay byte B_A_L de giai ma hien thi 
 push 0e0h ;cat A 
Chương 4: Thiết kế giao tiếp ngoại vi 38 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 swap a ;xu li so thu nhat 
 anl a,#0fh 
 mov dpl,a 
 movx a,@dptr 
 mov 22h,a 
 pop 0e0h ;lay lai A 
 anl a,#0fh ;xu li so thu 2 
 mov dpl,a 
 movx a,@dptr 
 mov 23h,a 
 mov a,14h ;lay byte DATA de giai ma hien thi 
 push 0e0h ;cat A 
 swap a ;xu li so thu nhat 
 anl a,#0fh 
 mov dpl,a 
 movx a,@dptr 
 mov 26h,a 
 pop 0e0h ;lay lai A 
 anl a,#0fh ;xu li so thu 2 
 mov dpl,a 
 movx a,@dptr 
 mov 27h,a 
 mov 24h,#00 
 mov 25h,#00 
 ret 
 org 52d5h 
display: 
 mov r1,#80h ;tu dieu khien 8279 chong nhap nhay 
 mov r0,#20h ;quan li dia chi ma hien thi 
dis1: mov dptr,#dk 
 mov a,r1 
 movx @dptr,a 
 mov dptr,#ht 
 mov a,@r0 
 movx @dptr,a 
 inc r1 
 inc r0 
 mov a,r0 
 cjne a,#28h,dis1 
 ret 
 org 0223h 
key: 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
;chuong trinh nap EPROM trong 8951 co hien thi dia chi va du lieu 
 org 5300h 
 mov dptr,#cw1 ; khoi tao 8255 
 mov a,#80h 
Chương 4: Thiết kế giao tiếp ngoại vi 39 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 movx @dptr,a 
 mov dptr,#cw2 
 mov a,#80h 
 movx @dptr,a 
;dieu khien Vpp = 5V 
 mov dptr,#portc2 ;pc0=prog\=H 
 mov a,#00000011b ;pc1=Vpp=H=5v 
 movx @dptr,a 
;chuyen dia chi bat dau Write cho EPROM vao cac o nho noi 
;dia chi bat dau DATA va dia chi ket thuc DATA vao cac o nho ben trong 
 mov dptr,#4f10h ;nap dia chi luu Begin_Addr can doc 
 movx a,@dptr 
 mov 16h,a ;cat tam byte B_A_E_L vao o nho 16h 
 inc dptr 
 movx a,@dptr 
 mov 17h,a ;cat tam byte B_A_E_H vao o nho 17h 
 inc dptr 
 movx a,@dptr 
 mov 18h,a ;cat tam byte B_D_L vao o nho 18h 
 inc dptr 
 movx a,@dptr 
 mov 19h,a ;cat tam byte B_D_H vao o nho 19h 
 inc dptr 
 movx a,@dptr 
 mov 1Ah,a ;cat tam byte E_A_H vao o nho 1Ah 
 inc dptr 
 movx a,@dptr 
 mov 1Bh,a ;cat tam byte E_A_H vao o nho 1Bh 
;goi ADDR can write ra 8255 de dieu khien Addr cua EPROM trong 8951 
wr4: mov dptr,#porta1 
 mov a,16h ;chuyen byte B_A_E_L vao dpl 
 movx @dptr,a 
 mov dptr,#portb1 
 mov a,#17h ;chuyen byte B_A_E_H vao dph 
 movx @dptr,a 
;goi DATA ra data bus de nap cho EPROM 
 mov dpl,18h ;lay Addr_L quan li vung data 
 mov dph,19h ;lay Addr_H quan li vung data 
 movx a,@dptr ;lay DATA can nap tu RAM ngoai 
 mov dptr,#porta2 ;nap dia chi dieu khien DATA vao dptr 
 movx @dptr,a ;xuat DATA ra bus data 
;chuyen dia chi va data can nap de hien thi 
 mov 10h,16h ;chuyen dia chi cua EPROM 
 mov 11h,17h 
 mov 14h,a ;cat tam vao o nho 14H de giai ma hien thi 
 lcall decode ;goi chtr con giai ma 
 lcall display ;goi chtr con hien thi 
;tao xung Vpp va PROG\ 
Chương 4: Thiết kế giao tiếp ngoại vi 40 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 mov dptr,#portc1 ;P2.6=PC0=L; P2.7=PC1=H; P3.6= PC2=H 
 mov a,#00001110b ;P3.7=PC3=H 
 movx @dptr,a 
 mov dptr,#portc2 ;pc0=prog\=H 
 mov a,#01h ;pc1=Vpp=L tuong duong 12V 
 movx @dptr,a ;pc0=prog\=L 
 mov a,#00h ;pc1=Vpp=L 
 movx @dptr,a 
 mov 1fh,#10 ;delay 
wr1: djnz 1fh,wr1 
 mov a,#01h ;pc1=Vpp=L tuong duong 12V 
 movx @dptr,a ;pc0=prog\=H 
 mov a,#03h ;pc1=Vpp=H tuong duong 5V 
 movx @dptr,a ;pc0=prog\=H 
;ket thuc doan chtr tao xung nap cham dut qua trinh nap 1 BYTE 
 inc 16h ;tang ADDR_L cua EPROM len 1 
 mov a,16h 
 cjne a,#00h,wr2 
 inc 17h ;tang ADDR_H cua EPROM len 1 khi byte L ve 00h 
wr2: mov a,19h ;chuyen dia chi byte H vao a de so sanh 
 cjne a,1bh,wr3 ;so sanh dia chi byte H neu chua bang thi tang len 1 
 mov a,18h ;chuyen dia chi byte L vao a de so sanh 
 cjne a,1ah,wr3 ;so sanh dia chi byte L neu chua bang thi tang len 1 
;hien thi chu END de bao ket thuc 
 mov 25h,#79h ;ma chu E 
 mov 26h,#37h ;ma chu N 
 mov 27h,#5eh ;ma chu d 
 lcall display 
 sjmp $ ;ngung 
wr3: inc 18h ;tang B_A_L len 1 
 mov a,18h ;kiem tra xem co bang 0 hay khong 
 cjne a,#00,wr4 ;nhay ve vi chua bang 0 
 inc 19h ;tang B_A_H len 1 
 sjmp wr4 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
;chuong trinh xoa eprom 
 org 5400h ; dia chi xoa 
 mov dptr ,# cw1 ; tu dieu khien 8255-1 
 mov a, #80h ; A,B,C: xuat 
 movx @dptr,a 
Chương 4: Thiết kế giao tiếp ngoại vi 41 Giáo trình vi xử lý 
Canquynhon.blogtiengviet.net Đại học Quy Nhơn 
 mov dptr, #cw2 ; tu dieu khien 8255-2 
 mov a ,#80h ; A,B,C:xuat 
 movx @dptr ,a 
;xuat cac tin hieu dieu khien xoa eprom 
 mov dptr,#portc1 
 mov a,#01h ;p2.6=h , p2.7=p3.6=p3.7=l 
 movx @dptr,a 
 mov dptr,#portc2 ;tao xung prog\ =h 
 movx @dptr ,a 
 mov a,#00h ;tao xung prog\ =l 
 movx @dptr ,a 
;toa xung delay 10ms 
 push #06h 
 push #07h 
 mov r6,#28h 
 y2: mov r7,#FFh 
 y1: djnz r7 ,y1 ;nhay neu r7 chua bang ffh 
 djnz r6 ,y2 ;nhay neu r6 chua bang 28h 
 pop #07h 
 pop #06h 
 mov a,#01h 
 movx @dptr ,a 
;ket thuc hien thi chu END 
 mov 25h ,79h ;ma chu E 
 mov 26h ,37h ;ma chu N 
 mov 27h ,5eh ;ma chu D 
 lcall display ; goi chuong trinh hien thi 
 sjmp $ ; ngung 
 end. 
B. Sơ đồ lắp ráp KIT 
            Các file đính kèm theo tài liệu này:
 Chương 4- Thiết kế giao tiếp ngoại vi Giáo trình vi xử lý.pdf Chương 4- Thiết kế giao tiếp ngoại vi Giáo trình vi xử lý.pdf