vi xử lý hệ thống điều khiển bàn phím - Pdf 13


KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

T
T
À
À
I
IL
L
I
I


U
UH
H
Ư
Ư





M
M-
-T
T
H
H


C
CH
H
À
À
N
N
H
H
• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Biết cách viết các chương trình điều khiển bàn phím ma trận.
• Nắm được sơ đồ và nguyên lý hoạt động của khối bàn phím ma trận trên mô hình thí nghiệm.
• Nắm được nguyên lý và kỹ thuật quét phím cho các dạng bàn phím ma trận.
• Biết cách viết các chương trình ứng dụng có sử dụng bàn phím ma trận để điều khiển các thiết bị ngoại vi
khác nhau.
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 1: Chương trình điều khiển bàn phím và hiển thị mã của phím nhấn trên 8 LED dưới dạng số
BIN (LED sáng = mức 1, LED tắt = mức 0), khơng phím nào được nhấn thì mã phím là FFH
(KEYPAD được nối với Port0, LED được nối với Port1).
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J15 (KEYBOARD) ở khối phím ma
trận.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.
LED DÃY
BAR LED 2 BAR LED 1POWER
BÀN PHÍM
MA TRẬN
VI ĐIỀU KHIỂN
A0 A7
SELECT
CHIP
CLOCK

AD7
AD6
AD5
D0
D0 D0
D1 D1
D2 D2
D3 D3
D4 D4
D5 D5
D6 D6
D7 D7
D7
D6
D5
D4
D3
D2
D1
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST

7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12

D4
R5
330
+5V
D5
R6
330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5

6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN BÀN PHÍM MA TRẬN 4 x 4
MẠCH ĐIỀU KHIỂN BÀN PHÍM MA TRẬN 4 x 4MẠCH ĐIỀU KHIỂN BÀN PHÍM MA TRẬN 4 x 4
MẠCH ĐIỀU KHIỂN BÀN PHÍM MA TRẬN 4 x 4
2
3
4
5
6
7
8
9
1
RP2
10K
1 2 3
654
8 9
=
7
++
C
ON

MOV P1,A ;XUAT MA PHIM RA LED HIEN THI DANG SO BIN
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
;***************************************************
SCANKEYPAD: ;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG DOI.
PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST


RET
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn trên LED 7 đoạn. Tự lựa chọn
phương pháp kết nối bàn phím và LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn trên LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
• Bài 3: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn trên LED 7 đoạn. Tự lựa chọn
phương pháp kết nối bàn phím và LED 7 đoạn.
• Bài 4: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn trên LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “F1”: 8 LED sáng tắt 3 lần.
Nhấn phím “F2”: 8 LED sáng dần và tắt dần.
Nhấn phím “F3”: 8 LED đếm lên nhị phân.
Nhấn phím “F4”: 8 LED sáng dồn.
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:

GỌI CTC TẠO TRỄ
DELAY500MS
ĐIỀU KHIỂN LED TẮT
(P1) = 00000000B / 0 = TẮT
GỌI CTC TẠO TRỄ
DELAY500MS
RET
XUẤT DỮ LIỆU RA LED
(P1) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
TĂNG GIÁ TRỊ (+1)
(A) = (A) + 1
DEMLEN
DEMLEN:
CẤT TẠM GIÁ TRỊ CỦA THANH
GHI A VÀO STACK
LẤY LẠI GIÁ TRỊ CHO THANH
GHI A TỪ STACK
NẠP GIÁ TRỊ BẮT ĐẦU ĐẾM
(A) = 00H
DL:
Đ
S
CHƯA ĐẾM XONG
(A) 00H
RET
SANGDAN
SANGDAN:
NẠP GIÁ TRỊ ĐẦU

GHI A TỪ STACK
RET
NẠP SỐ LẦN DỊCH BIT
(R0) = 08H
TRẠNG THÁI DÃY LED Ở LẦN
DỒN ĐẦU TIÊN
(R1) = 00000000B / 0 = TẮT
LAP2:
NẠP SỐ LẦN PHẢI DỊCH BIT
(R2) = (R0)
NẠP TRẠNG THÁI DỊCH BIT
ĐẦU TIÊN
(R3) = 000000001B / 1 = SÁNG
LAP1:
NẠP TRẠNG THÁI DỊCH BIT
(A) = (R3)
KẾT HỢP TRẠNG THÁI DÃY
LED VÀ TRẠNG THÁI DỊCH BIT
HIỆN TẠI
(A) = (R3) + (R1)
XUẤT DỮ LIỆU RA PORT
(P1) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
DỊCH TRÁI (R3)
RL A / SÁNG ĐUỔI
GIÃM SỐ LẦN DỊCH BIT (R2)
SỐ LẦN DỊCH BIT ≠ 0
(CHƯA DỊCH BIT XONG)
Đ

SANGDAN
Đ
S
PHÍM NHẤN
(A) 04H
NEXT2:
F1
F2
GỌI CTC LED ĐẾM LÊN
DEMLEN
Đ
S
PHÍM NHẤN
(A) 08H
NEXT3:
GỌI CTC LED SÁNG DỒN
SANGDON
Đ
S
PHÍM NHẤN
(A) 0CH
NEXT4:
F3
F4

;***************************************************
;CHUONG TRINH DIEU KHIEN LED HIEN THI CAC KIEU KHAC NHAU KHI
;TA NHAN CAC PHIM TREN BAN PHIM MA TRAN 4 X 4.
;***************************************************
;KET NOI: LED -> PORT1 (CO DEM DAO), KEYPAD -> PORT0.

BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO

MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
RET
;***************************************************
DEMLEN: ;CTC DIEU KHIEN 8 LED DEM LEN NHI PHAN
PUSH ACC
MOV A,#00H ;LED TAT
DL:
MOV P1,A
LCALL DELAY500MS
INC A ;TANG NHI PHAN
CJNE A,#00H,DL ;KIEM TRA DEM LEN HOAN TAT
POP ACC
RET
;***************************************************
SANGDAN: ;CTC DIEU KHIEN 8 LED SANG DAN VA TAT DAN
PUSH ACC
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
SD1:
SETB C ;C=1

được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “F1”: 8 LED sáng tắt 3 lần.
Nhấn phím “F2”: 8 LED sáng dần và tắt dần.
Nhấn phím “F3”: 8 LED đếm lên nhị phân.
Nhấn phím “F4”: 8 LED sáng dồn.
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
MOV R3,A
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LẠI
POP ACC
RET
;***************************************************
DELAY500MS: ;CTC TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL1:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL1
POP 00H

Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của ký tự “A” trên LED ma trận. Tự
lựa chọn phương pháp kết nối bàn phím và LED ma trận.
 Nhấn phím “F1”: hiển thị ký tự màu đỏ.
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “F1”: 8 LED sáng tắt 3 lần.
Nhấn phím “F2”: 8 LED sáng dần và tắt dần.
Nhấn phím “F3”: 8 LED đếm lên nhị phân.
Nhấn phím “F4”: 8 LED sáng dồn.
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
 Nhấn phím “F2”: hiển thị ký tự màu xanh.
 Nhấn phím “F3”: hiển thị ký tự màu vàng.
 Nhấn phím “ESC”: không hiển thị ký tự.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 5: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
 Nhấn phím “ESC”: không hiển thị.
 Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED ma trận.
 Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED ma trận.
 Nhấn phím “3”: hiển thị các ký tự từ A đến Z trên LED ma trận.
 Nhấn phím “4”: hiển thị các ký tự từ Z đến A trên LED ma trận.
• Bài 6: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của chuỗi ký tự “DAI HOC CONG
NGHIEP TP HO CHI MINH” trên LED ma trận. Tự lựa chọn phương pháp kết nối bàn phím và LED ma
trận.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
 Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 7: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của hai chuỗi ký tự “DAI HOC

Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “F1”: 8 LED sáng tắt 3 lần.
Nhấn phím “F2”: 8 LED sáng dần và tắt dần.
Nhấn phím “F3”: 8 LED đếm lên nhị phân.
Nhấn phím “F4”: 8 LED sáng dồn.
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
Chương trình con quét phím có chống dội:
o Lưu đồ:
CẤT TẠM GIÁ TRỊ CỦA R5, R6,
R7 VÀO STACK
GETKEY
GETKEY:
LẤY LẠI GIÁ TRỊ CHO R5, R6, R7
TỪ STACK
RET
NẠP MÃ QUÉT CỘT ĐẦU TIÊN
(A) = 11101111B = EFH
NẠP GIÁ TRỊ BỘ ĐẾM CỘT
(R6) = 4
TEST:
XUẤT MÃ QUÉT CỘT
(P0) = (A)
LƯU MÃ QUÉT CỘT HIỆN TẠI
(R7) = (A)
ĐỌC GIÁ TRỊ TỪ BÀN PHÍM
(A) = (P0) = c
4
c
3

h
1
B AND 00001111B = 0000h
4
h
3
h
2
h
1
B
(A) = 0000h
4
h
3
h
2
h
1
B
Đ
S
CÓ NHẤN PHÍM
(A) 00001111B 0FH
KHÔNG
NHẤN

NHẤN
DỊCH MÃ QUÉT SANG CỘT KẾ TIẾP
RL A

RRC A
Đ
S
TÌM ĐƯỢC VỊ TRÍ
(CY) = 0
TĂNG TRỌNG SỐ CHO HÀNG KẾ TIẾP
(R6) = (R6) + 4
Đ
S
GIÃM GIÁ TRỊ SỐ PHÍM TRONG MỘT CỘT
(R5) = (R5) - 1
(R5) ≠ 0
(CHƯA KIỂM TRA HẾT PHÍM)
DONE:
ĐẶT CỜ CY VÌ CÓ PHÍM NHẤN
(CY) = 1
LƯU MÃ PHÍM ĐƯỢC NHẤN
(A) = (R6)
EXIT:
CẤT TẠM GIÁ TRỊ CỦA R3 VÀO
STACK
SCANKEYPAD
NAME: SCANKEYPAD - QUÉT BÀN PHÍM MA TRẬN 4x4.
INPUT: P0.0 – P0.3 = HÀNG 0 – HÀNG 3 (MÃ NHẬN DẠNG PHÍM NHẤN).
P0.4 – P0.7 = CỘT 0 - CỘT 3 (TÍN HIỆU QUÉT, TÍCH CỰC = 0)
OUTPUT: CÓ PHÍM NHẤN – (CY) = 1 VÀ (A) = MÃ PHÍM (00H – 0FH).
KHÔNG PHÍM NHẤN – (CY) = 0 VÀ (A) = KHÔNG XÁC ĐỊNH.
SCANKEYPAD:
LẤY LẠI GIÁ TRỊ CHO R3 TỪ
STACK

PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status