Xem mẫu
- ĐẠI HỌC GIAO THÔNG VẬN TẢI THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐIỆN-ĐIỆN TỬ VIỄN THÔNG
----------
BÁO CÁO
Giao tiếp bàn phím ma trận, LCD và PPI8255
GVHD: Thầy Nguyễn Thanh Hiếu
Danh sách nhóm 9:
Nguyễn Thanh Duy
Nguyễn Thị Các Linh
Phan Thị Huỳnh Giao
Phạm Văn Hiếu
Bùi Văn Thời
Nguyễn Ngọc Thương
Nhận xét của Giáo Viên Hướng Dẫn
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
- …………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
TP.HCM, ngày…. .Tháng 12 năm 2013
Giáo viên hướng dẫn
I. Yêu cầu :
Bàn phím ma trận nhận dữ liệu được nhập vào và xuất ra LCD
II.Nội dung báo cáo
A. PHẦN 1
Tìm hiểu về vi điều khiển
8051……………….4
Giới thiệu về PPI
8255………………………...7
Giới thiệu về bàn phím giao tiếp
44………...11
Giới thiệu về LCD………………………….
…14
- B. PHẦN 2
Sơ đồ nguyên
lý………………………………21
Lưu đồ giải
thuật……………………………...22
Viết chương trình cho vi điều
khiển…………..23
Mạch mô phỏng protues
A. PHẦN 1
I. Giới thiệu vi điều khiển 8501
GIỚI THIỆU HỌ MSC-51
MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất. Các IC tiêu biểu cho họ là
8051 và 8031. Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển. Việc
xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều
chế độ truy xuất dữ liệu nhanh trên RAM nội. Chíp này có đặc điểm : 4 port , 8bit , có
tốc độ, công suất thấp có lập trình được nhờ bộ nhớ Flash và dùng thuật ngữ lập trình
80C51 Được sử dụng để điều khiển công nghiệp hay tự động hoá AT89C51 cung cấp
- những đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh
(EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, vecto ngắt có
cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung
Clock và dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho
hoạt động đến mức không tần sốvà hỗ trợ hai phần mềm có thể lựa chọn những chế
độ tiết kiện công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho
phép RAM, timer/counter, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ
giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt
động của tất cả những chức năng khác cho đến khi Reset hệ thống
Bộ nhớ chương trình bên trong: 4 KB (ROM)
Cấu trúc của
8051
- Chức năng các chân của AT89C51
89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. trong đó có 24 chân
có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt động như
đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu
và bus địa chỉ.
Các port:
1/ Port 0 là port có hai chức năng ở các chân 32-39 của 89C51. trong các thiết kế cỡ
nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như các đường IO. Đối với các
thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
2/ Port 1 là port IO trên các chân 1-8 các chân được kí hiệu `p1.0, p1.1, p1.2, có thể
dùng cho giao tiếp với các thiết bị ngoài nếu cần. port 1 không có chức năng khác, vì
vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.
3/ Port 2 là 1 port có tác dụng kép trên các chân 21-28 được dùng như các đường xuất
nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
4/ Port 3 là port có tác dụng kép trên các chân 10-17 các chân, các chân của port này có
nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của
89C51 như bảng sau
- Các ngõ ra tín hiệu điều khiển:
a/Ngõ tín hiệu PSEN:
- Psen là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng thường nói đến chân OE của Eprom cho phép đọc các byte mở rộng
- Psen ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh
của chương trình đọc từ Eprom qua bus dữ liệu và được chốt từ thanh ghi bên
trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong Rom nội Psen
sẽ ở mức logic1.
b/ Ngõ tín hiệu điều khiển ALE
ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30.
- Chức năng:
• Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ
byte thấp và bus dữ liệu đa hợp (AD0 – AD7).
• Là tín hiệu xuất, tích cực mức cao.
ALE = 0 →trong thời gian bus AD0 - AD7 đóng vai trò là bus D0 - D7.
ALE = 1 →trong thời gian bus AD0 - AD7 đóng vai trò là bus A0 - A7.
- Khi lập trình cho ROM trong chip thì chân ALE đóng vai trò là ngõ vào của xung
lập trình.
c/Chân EA\:
- EA (External Access): truy xuất ngoài, chân số 31.
- Chức năng:
• Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chương trình (ROM) ngoài.
• Là tín hiệu nhập, tích cực mức thấp.
EA\ = 0 →Chip 8051 sử dụng chương trình của ROM ngoài.
EA\ = 1 →Chip 8051 sử dụng chương trình của ROM trong.
- Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của điện áp
lập trình
d/Chân RST
- Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51, khi ngõ
vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các
thanh ghi bên trong đươc nạp những giá trị thích hợp để
khởi động hệ thống, khi cấp mạch điện tự động reset.
II. GIỚI THIỆU VỀ PPI 8255
a. Giới thiệu về PPI8255
- PPI: programmable peripheral interface – giao
tiếp ngoại vi lập trình được
- Dùng 8255 để mở rộng I/O. từng port có thể
lập trình là input hay output một cách linh
hoạt bằng phần mềm (so sánh với việc thiết kế
I/O port dùng 74LS244 và 74LS373 ở chương 1
→ input hay output được thiết kế “cứng”,cố định).
- Các chân:
D0÷D7: bus dữ liệu 2 chiều
PA0÷PA7: port A.
PB0÷PB7: port B.
PC0÷PC7: port C.
/RD: Read. (Nối với /RD (P3.7) của 8051.)
/WR: Write. (Nối với /WR của 8051.)
RESET: khởi động lại 8255. (thường được nối với mạch reset của 8051
hoặc GND.
/CS: chọn chíp.)
A0, A1: địa chỉ port. (Nối với bus địa chỉ.)
- - hoạt động I/O cơ bản của 3 mode:
o Mode 0: I/O đơn giản
o Mode 1: I/O có bắt tay
o Mode 2: bus 2 chiều
- b. Sơ đồ ghép nối PPI 8255 với IC 8051
- c. Giao tiếp PPI8255 với LCD
- III. Giới thiệu về bàn phím giao tiếp 44.
Có 2 cách xác định phím nhấn bằng phần cứng và phần mềm:
Ở đây ta xác định mã các phím nhấn bằng phần mềm:
- Khi nhấn phím thì hàng và cột tương ứng sẽ được nối với nhau.
- Để xác định được phím nhấn ta quét bàn phím: ta thực hiện quét từng
hàng, đầu tiên cho hàng 1 ở mức logic 0, các hàng và cột khác ở mức logic
1, ta đọc giá trị hàng và cột thông qua Port 1.
- Nếu 1 phím nào đó được nhấn: hàng và cột tương ướng nối với nhau và ở
mức logic 0, tuân theo quy tắc sau ta xác định mã phím:
+Ta có số hàng là 4: đếm theo thứ tự:
hi = 1(ứng với H4), 2( ứng với H3), 3(ứng với H2), 4(ứng với H1)
ci = 0 (ứng với C1), 4(ứng với C2), 8(ứng với C3), 12(ứng với C4).
Ta có thể thấy các cột hơn kém nhau 4 đơn vị
Ma phimi = (4-hi)+ci
- Ta thực hiện quét 4 lần, lần lượt 4 hàng
- - Thuật toán quét bàn phím như sau:
Chương trình quét bàn phím được viết như sau:
SCAN_KEY: RL A
MOV R1,#0FEH XCH A,R1
MOV R6,#4 DJNZ R6,SCAN
SCAN: CLR F0
MOV P1,R1 LJMP EXIT
MOV A,P1 GET_CODE:
ANL A,#0F0H PUSH ACC
CJNE A,#0F0H,GET_CODE MOV A,#4
XCH A,R1 CLR C
- SUBB A,R6 ADD A,#4
MOV R5,A XCH A,R5
POP ACC DJNZ R4,LOOP2
SWAP A SET_FLAG:
MOV R4,#4 SETB F0
LOOP2: MOV A,R5
RRC A EXIT: MOV R1,#00H
JNC SET_FLAG MOV R6,#00H
XCH A,R5 RET
VI. Giao tiếp với LCD
- Trong nhöõng naêm gaàn ñaây, LCD ñaõ ñöôïc söû duïng roäng raõi thay theá cho LED
7 ñoaïn hay caùc loaïi LED nhieàu ñoaïn khaùc. Ñoù laø do giaù thaønh ngaøy caøng
giaûm cuûa caùc loaïi LCD; khaû naêng hieån thò ña daïng bao goàm caû chöõ soá, chöõ
caùi vaø caû caùc kyù töï graphic; vieäc tích hôïp caùc boä ñieàu khieån LCD vaøo
cuøng moät module, giuùp cho CPU khoûi phaûi ñieàu khieån lieân tuïc vieäc hieån thò
döõ lieäu; vaø söï deã daøng trong vieäc laäp trình hieån thò treân LCD. Ñeå chuaån
hoùa vieäc ñieàu khieån caùc loaïi LCD khaùc nhau, caùc haõng saûn xuaát LCD
thöôøng söû duïng moät loaïi IC ñieàu khieån laø HD44780 cuûa haõng Hitachi. Ñieàu
naøy giuùp cho vieäc ñieàu khieån LCD ñöôïc deã daøng vaø chuaån hoùa.
Moâ taû caùc chaân cuûa LCD
Chaân Teân Möùc logic Chöùc naêng
soá
1 VSS GND GND
2 VDD +5V Cöïc + cuûa
nguoàn
- 3 Vo 0 . . . +5 V Ñieàu khieån ñoä
töông phaûn
4 RS H/L Choïn thanh ghi
L: Thanh ghi
leänh; H: Thanh
ghi döõ lieäu
5 R/W H/L Ñoïc/Ghi
L: Ñoïc; H: Ghi
6 E H/L Cho pheùp
7-14 DB0 - DB7 H/L Caùc bit döõ lieäu
• VSS, VDD: caùc chaân nguoàn vaø GND cuûa LCD
• Vo: chaân ñieàu khieån ñoä töông phaûn cuûa maøn hình hieån thò.
• RS (register select): Coù 2 thanh ghi raát quan troïng trong LCD laø thanh ghi
leänh vaø thanh ghi döõ lieäu. Neáu RSôû möùc thaáp, thanh ghi leänh seõ ñöôïc
choïn, cho pheùp ngöôøi söû duïng gôûi caùc meänh leänh ñeán LCD chaúng haïn
nhö xoùa maøn hình hieån thò hoaëc chuyeån con troû veà ñaàu doøng, … Neáu
RS ôû möùccao, thanh ghi döõ lieäu seõ ñöôïc choïn, cho pheùp ngöôøi söû duïng
gôûi caùc döõ lieäu kyù töï ñeå hieån thò leân LCD.
• R/W (read/write): Cho pheùp ghi caùc leänh hay döõ lieäu kyù töï leân LCD hoaëc
ñoïc caùc döõ lieäu kyù töï hay thoâng tin traïng thaùi töø caùc thanh ghi cuûa noù.
• E (enable): Duøng ñeå choát caùc leänh hay döõ lieäu giöõa module LCD vaø
caùcñöôøng döõ lieäu cuûa noù. Khi ghi döõ lieäu ra maøn hình hieån thò LCD,
döõ lieäu seõ ñöôïc choát khi coù xung caïnh xuoáng ôû chaân naøy. Xung naøy
phaûi coù ñoä roäng toái thieåu laø 450ns. Tuy nhieân, khi ñoïc döõ lieäu ra töø
- LCD, sau khi coù xung caïnh leân ôû chaân naøy thì döõ lieäu ñoïc ñöôïc môùi laø
döõ lieäu coù yù nghóa.
• DB0 – DB7: 8 ñöôøng bus döõ lieäu (töø D0 ñeán D7). Döõ lieäu coù theå ñöôïc
chuyeån ñeán vaø laáy ra khoûi boä hieån thò LCD theo daïng moät byte 8 bit hay
daïng hai nöûa byte 4 bit.
Trong tröôøng hôïp sau chæ coù 4 ñöôøng döõ lieäu cao ñöôïc söû duïng (töø D4 ñeán
D7). Cheá ñoä 4 bit naøy thuaän tieän khi söû duïng vi xöû lyù vì caàn coù ít ñöôøng I/O
hôn.
*Baûng kyù töï chuaån cuûa LCD (ROM CODE A00)
- - Chöông trình con kieåm tra traïng thaùi baän cuûa LCD
WAIT_LCD:
CLR E ; E = 0 ñeå taïo caïnh leân, baét ñaàu leänh
LCD
CLR RS ;choïn cheá ñoä gôûi leänh
- SETB RW ;choïn cheá ñoä ñoïc döõ lieäu
MOV DATA,#0FFH ;choïn DATA laø input
SETB E ;taïo caïnh leân
MOV A,DATA ;ñoïc giaù trò traû veà
JB ACC.7,WAIT_LCD ;neáu DB7 = 1, LCD vaãn baän
CLR RW ;taét RW cho caùc leänh LCD keá
RET
Khôûi ñoäng LCD
- Tröôùc khi coù theå söû duïng LCD thì ta phaûi khôûi ñoäng vaø ñaët
caáu hình cho noù.
- Toaøn boä maõ khôûi ñoäng nhö sau:
INIT_LCD:
SETB E ;E = 1 ñeå taïo caïnh xuoáng, baét ñaàu leänh
LCD
CLR RS ;choïn cheá ñoä gôûi leänh
MOV DATA,#38H ;choïn bus 8 bit, font kyù töï 5x8, 2 haøng
CLR E ;taïo caïnh xuoáng treân E
LCALL WAIT_LCD ;chôø ñeán khi LCD heát baän
SETB E ;E = 1 ñeå taïo caïnh xuoáng, baét ñaàu leänh
CLR RS ;choïn cheá ñoä gôûi leänh
MOV DATA,#0EH ;LCD on, cursor off
CLR E ;taïo caïnh xuoáng treân E
LCALL WAIT_LCD ;chôø ñeán khi LCD heát baän
SETB E ;E = 1 ñeå taïo caïnh xuoáng, baét ñaàu leänh
CLR RS ;choïn cheá ñoä gôûi leänh
MOV DATA,#06H ;vò trí cursor töï ñoäng dòch sang phaûi khi
coù
CLR E ;taïo caïnh xuoáng treân E
LCALL WAIT_LCD ;chôø ñeán khi LCD heát baän
RET
Xoùa maøn hình hieån thò LCD
CLR_LCD:
SETB E
CLR RS
- MOV DATA,#01H
CLR E
LCALL WAIT_LCD
RET
Ghi ra maøn hình
WRITE_TEXT: SETB E
SETB RS
MOV DATA,A
CLR E
LCALL WAIT_LCD
RET
B. Phần 2: thực hành
1. Sơ đồ nguyên lý
- 2. Lưu đồ giải thuật
- 3. Chương trình cho vi điều khiển-code asm
ORG 0H MOV R3,#0H
RS EQU P1.0 MOV R2,#0H
RW EQU P1.1 ACALL CAUHINH_PPI8255
E EQU P1.2 LCALL KHOITAO_LCD
DB0 EQU P0.0 LCALL XUAT_CHUOI
DB1 EQU P0.1 MOV R7,#30
DB2 EQU P0.2 LAP:
DB3 EQU P0.3 ACALL DELAY
DB4 EQU P0.4 DJNZ R7,LAP
DB5 EQU P0.5 ACALL KHOITAO_LCD
DB6 EQU P0.6 MOV R1,#0H
DB7 EQU P0.7 LOOP:
H1 EQU P2.0 ACALL QUETPHIM
H2 EQU P2.1 SJMP LOOP
H3 EQU P2.2
H4 EQU P2.3
C1 EQU P2.4 CAUHINH_PPI8255:
C2 EQU P2.5 SETB P3.4
C3 EQU P2.6 SETB P3.5
C4 EQU P2.7 MOV DATA_LCD,#83H
DATA_LCD EQU P0 SETB P3.6
CLR P3.7
MAIN: SETB P3.7
RET
mov DPTR,#string1
nguon tai.lieu . vn