Chương 4: Thiết kế giao tiếp ngoại vi
1
Giáo trình vi xử lý
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, 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. Ngồ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:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
2
Giáo trình vi xử lý
- 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. Ngồ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 ... Ngồ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 ngồ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 ngồ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 ngồi như các bộ encoder, ngồi ra cịn có 6 đầu ra
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
3
Giáo trình vi xử lý
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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
4
Giáo trình vi xử lý
Dựa vào bảng 4.1 trên ta có sơ đồ bộ nhớ cụ thể như bảng 4.2 sau:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
5
Giáo trình vi xử lý
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:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
6
Giáo trình vi xử lý
Đầ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 ngồi. Khi chân
EA được nối đất thì 8031/51 nạp mM lệnh từ bộ nhớ ngồi thơng qua chân PSEN, ở đây bộ
nhớ ngồi đóng vai trị là bộ nhớ chương trình. Ngồi ra khi bộ nhớ ngồ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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
7
Giáo trình vi xử lý
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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
8
Giáo trình vi xử lý
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:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
9
Giáo trình vi xử lý
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
G1
G2
C
B
A
x
H
x
x
x
L
x
x
x
x
H
L
L
L
L
H
L
L
L
H
H
L
L
H
L
H
L
L
H
H
H
L
H
L
L
H
L
H
L
H
H
L
H
H
L
H
L
H
H
H
OUTPUTS
Y0
H
H
L
H
H
H
H
H
H
H
Y1
H
H
H
L
H
H
H
H
H
H
Y2
H
H
H
H
L
H
H
H
H
H
Y3
H
H
H
H
H
L
H
H
H
H
Y4
H
H
H
H
H
H
L
H
H
H
Y5
H
H
H
H
H
H
H
L
H
H
Y6
H
H
H
H
H
H
H
H
L
H
Y7
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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
10
Giáo trình vi xử lý
Bảng trạng thái:
Output
Control (OC)
L
L
L
H
Enable
G
D
OUTPUT
H
H
L
x
H
L
x
x
H
L
Q0
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 ngồ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.
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
11
Giáo trình vi xử lý
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
Not Select
Output
Disable
Read
Write
WE\
x
x
H
CE1\
H
x
L
CE2
x
L
H
OE\
x
x
H
Output
H
L
L
L
H
H
L
H
Dout
Din
Hi-Z
Hi-Z
Từ sơ đồ chân cho ta thấy cá chân được chia thành 4 nhóm:
+ Vcc, GND : chân nguồn
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
12
Giáo trình vi xử lý
+ Do đến D7 : chân dữ liệu
+ Ao đến A12
: chân địa chỉ
+ WE, OE, CS1, CS2
: chân điều khiển
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 ni 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:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
13
Giáo trình vi xử lý
Hình 4.7: Sơ đồ chân EPROM 2764
Mode (chế độ)
CE\
OE\
PGM\
VPP
Ra (Output)
Đọc
Chờ
Lập trình
Kiểm tra
Cấm lập trình
L
H
L
L
H
L
x
x
L
x
H
x
L
H
x
Vcc
Vcc
Vpp
Vpp
Vpp
Dout
Hi-Z
Din
Do ut
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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
14
Giáo trình vi xử lý
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 để hồ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.
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
15
Giáo trình vi xử lý
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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
16
Giáo trình vi xử lý
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
Canquynhon.blogtiengviet.net
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
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
17
Giáo trình vi xử lý
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 q trình thực hiện tính tố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
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
18
Giáo trình vi xử lý
khác ở góc để thuận tiện cho việc thao táo vói bàn phím. Sơ đồ ngun 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
Canquynhon.blogtiengviet.net
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
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
19
Giáo trình vi xử lý
LJMP KET_THUC
LJMP KET_THUC
P3_C3:
;hang 4 cot 3
P1_C2:
;hang 2 cot 2
CJNE A,#10110111B,P0_C4
;
CJNE A,#11011101B,P2_C2
;
MOV A,#11
MOV A,#5
MOV 50H,A
MOV 50H,A
LJMP KET_THUC
LJMP KET_THUC
P0_C4: ;hang 1 cot 4
P2_C2:
;hang 3 cot 2
CJNE A,#01111110B,P1_C4
CJNE A,#11011011B,P3_C2
;
MOV A,#12
MOV A,#6
MOV 50H,A
MOV 50H,A
LJMP KET_THUC
LJMP KET_THUC
P1_C4:
;hang 2 cot 4
P3_C2:
;hang 4 cot 2
CJNE A,#01111101B,P2_C4
CJNE A,#11010111B,P0_C3
MOV A,#13
MOV A,#7
MOV 50H,A
MOV 50H,A
LJMP KET_THUC
LJMP KET_THUC
P2_C4:
;hang 3 cot 4
P0_C3:
;hang 1 cot 3
CJNE A,#01111011B,P3_C4
;
CJNE A,#10111110B,P1_C3
MOV A,#14
MOV A,#8
MOV 50H,A
MOV 50H,A
LJMP KET_THUC
LJMP KET_THUC
P3_C4:
;hang 4 cot 4
P1_C3:
;hang 2 cot 3
CJNE A,#01110111B,KET_THUC
CJNE A,#10111101B,P2_C3
MOV A,#15
MOV A,#9
MOV 50H,A
MOV 50H,A
LJMP KET_THUC
LJMP KET_THUC
KET_THUC:
P2_C3:
;hang 3 cot 3
CJNE A,#10111011B,P3_C3
RET
MOV A,#10
MOV 50H,A
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. Ngồ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.
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn
Chương 4: Thiết kế giao tiếp ngoại vi
20
Giáo trình vi xử lý
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:
Canquynhon.blogtiengviet.net
Đại học Quy Nhơn