Tải bản đầy đủ (.pdf) (12 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (544.68 KB, 12 trang )


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




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I
I



M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H



















D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Điều khiển các thiết bị ngoại vi bằng bàn phím (bàn phím thiết kế theo kiểu ma trận).
• Trình bày kỹ thuật quét phím cho dạng bàn phím ma trận 16 phím (4 hàng x 4 cột).
• Trình bày một số ứng dụng trong kỹ thuật điều khiển bàn phím.

B. YÊU CẦU:


• 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

OUT
POWER
SW
NGUỒN
+5V
8
8

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD4
AD0
AD1
AD2
AD3

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

9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6

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

25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V

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

6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U2
ULN2803
2
3
4
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

0
A
B
C
D
1
2
4
3
+5V
+5V

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ý. 4 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN BAN PHIM MA TRAN 4 X 4.
;***************************************************
;KET NOI: LED -> PORT1 (CO DEM DAO), KEYPAD -> PORT0.
;***************************************************
ORG 00H
MAIN:
LCALL SCANKEYPAD ;QUET KEYPAD
JC MP1 ;KIEM TRA CO NHAN PHIM (C = 1)
MOV A,#0FFH ;KHONG NHAN PHIM A = FFH
MP1: ;CO NHAN PHIM A = MA PHIM

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


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
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ý. 5 Biên soạn: Phạm Quang Trí
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H

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:

1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ đồ nguyên lý của hệ thống:
• Sơ đồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
SCANKEYPAD
(XEM CTC NÀY TẠI PHẦN HƯỚNG
DẪN CỦA VÍ DỤ D2)
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)
ĐIỀU KHIỂN LED TẮT
(P1) = 00000000B / 0 = TẮT
CHOPTAT
GỌI CTC TẠO TRỄ
DELAY500MS
ĐIỀU KHIỂN LED SÁNG
(P1) = 11111111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
CHOPTAT:
ĐIỀU KHIỂN LED SÁNG
(P1) = 11111111B / 1 = SÁNG
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
ĐIỀU KHIỂN LED SÁNG
(P1) = 11111111B / 1 = SÁNG

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

(A) = 0 / 0 = TẮT
THIẾT LẬP CỜ C / 1 = SÁNG
(C) = 1
XUẤT DỮ LIỆU RA PORT
(P1) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
DỊCH TRÁI (A) KÈM C
RLC A / SÁNG DẦN
SD1:
CHƯA SÁNG 8 LED
(C) = 0
Đ
S
CẤT TẠM GIÁ TRỊ CỦA THANH
GHI A VÀO STACK
XÓA CỜ C / 0 = TẮT
(C) = 0
XUẤT DỮ LIỆU RA PORT
(P1) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
DỊCH TRÁI (A) KÈM C
RLC A / TẮT DẦN
SD2:
CHƯA TẮT 8 LED
(C) = 1
Đ
S
LẤY LẠI GIÁ TRỊ CHO THANH

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)
Đ

S
GIÃM SỐ LẦN PHẢI DỊCH BIT
(R0) = (R0) - 1
THAY ĐỔI TRẠNG THÁI DÃY
LED CHO LẦN DỒN KẾ TIẾP
(DỊCH PHẢI BIT 1 VÀO R1)
SỐ LẦN PHẢI DỊCH ≠ 0
(CHƯA ĐỦ 8 LẦN)
Đ
SANGDON
SANGDON:
S
RET
CẤT TẠM GIÁ TRỊ CỦA THANH
GHI A VÀO STACK
GỌI CTC QUÉT BÀN PHÍM
SCANKEYPAD
BEGIN
GỌI CTC LED CHỚP TẮT
CHOPTAT
MAIN:
D2
Đ
S
PHÍM NHẤN
(A) 00H
ĐIỀU KHIỂN TẮT LED
(P1) = 00H
NEXT1:
GỌI CTC LED SÁNG/TẮT DẦN

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.

;***************************************************
ORG 00H
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ý. 7 Biên soạn: Phạm Quang Trí
MAIN:
MOV P1,#00H ;LED TAT
LCALL SCANKEYPAD ;QUET KEYPAD
CJNE A,#00H,NEXT1 ;KHONG PHAI PHIM F1 -> KIEM TIEP
LCALL CHOPTAT ;PHIM F1 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT1:
CJNE A,#04H,NEXT2 ;KHONG PHAI PHIM F2 -> KIEM TIEP
LCALL SANGDAN ;PHIM F2 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT2:
CJNE A,#08H,NEXT3 ;KHONG PHAI PHIM F3 -> KIEM TIEP
LCALL DEMLEN ;PHIM F3 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT3:
CJNE A,#0CH,NEXT4 ;KHONG PHAI PHIM F4 -> KIEM TIEP
LCALL SANGDON ;PHIM F4 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT4:
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
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 R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6

DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
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ý. 8 Biên soạn: Phạm Quang Trí
EXIT:
POP 07H
POP 06H
POP 05H
RET
;***************************************************
CHOPTAT: ;CTC DIEU KHIEN 8 LED SANG TAT

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

MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC SD1 ;CHUA SANG HET THI LAM TIEP
SD2:
CLR C ;C=0
MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, TAT DAN
JC SD2 ;CHUA TAT HET THI LAM TIEP
POP ACC
RET
;***************************************************
SANGDON:
PUSH ACC
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP2:
MOV R2,00H
MOV R3,#01H
LAP1:
MOV A,R3
ORL A,R1

MOV P1,A ;HIEN THI
LCALL DELAY500MS
MOV A,R3 ;DON LED
RL A
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ý. 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

RET
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: 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ự “DIEN-TU” trên
tám 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.
 Nhấn phím “ENTER”: hiển thị chuỗi.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: sáng tắt chuỗi liên tục.
 Nhấn phím “2”: dịch chuyển chuỗi từ phải sang trái liên tục.
 Nhấn phím “3”: 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 2: 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 một số chuỗi ký tự trên tám 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.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: hiển thị chuỗi “COCACOLA”.
 Nhấn phím “2”: hiển thị chuỗi “PEPSI”.
 Nhấn phím “3”: hiển thị chuỗi “FANTA”.
 Nhấn phím “4”: hiển thị chuỗi “TRIBECO”.
 Nhấn phím “5”: hiển thị chuỗi “NUOCSUOI”.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 3: 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 LED1. Tự lựa chọn phương
pháp kết nối bàn phím và LED 7 đoạ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 LED1.
 Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED1.
 Nhấn phím “3”: hiển thị đếm HEX từ 0 lên F trên LED1.
 Nhấn phím “4”: hiển thị đếm HEX từ 9 xuống 0 trên LED1.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 4:

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

CONG NGHIEP TP HO CHI MINH” và “KHOA DIEN TU” 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.
 Nhấn phím “F1”: chọn chuỗi hiển thị có màu đỏ.
 Nhấn phím “F2”: chọn chuỗi hiển thị có màu xanh.
 Nhấn phím “F3”: chọn chuỗi hiển thị là “DAI HOC CONG NGHIEP TP HO CHI MINH”.
 Nhấn phím “F4”: chọn chuỗi hiển thị là “KHOA DIEN TU”.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
NHẤN PHÍM 7
NHẤN PHÍM 4
NHẤN PHÍM 1
NHẤN PHÍM ESC
NHẤN PHÍM 8
NHẤN PHÍM 5
NHẤN PHÍM 2
NHẤN PHÍM 0
NHẤN PHÍM 9
NHẤN PHÍM 6
NHẤN PHÍM 3
NHẤN PHÍM ENTER
NHẤN PHÍM F1
NHẤN PHÍM F2
NHẤN PHÍM F3
NHẤN PHÍM F4
KHÔNG NHẤN PHÍM

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ý. 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

c
2
c
1
h
4
h
3
h
2
h
1
B
TÁCH LẤY GIÁ TRỊ HÀNG RA KHỎI GIÁ TRỊ ĐỌC TÙ
BÀN PHÍM (XÓA BỎ GIÁ TRỊ CỘT)
(A) = (A) AND 0FH
c
4
c
3
c
2
c
1
h
4
h
3
h
2

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

LẤY LẠI MÃ QUÉT CỘT HIỆN TẠI
(R7) = (A)
Đ
S
GIÃM GIÁ TRỊ BỘ ĐẾM CỘT (-1)
(R6) = (R6) - 1
GIÁ TRỊ BỘ ĐẾM ≠ 0
(CHƯA QUÉT CỘT XONG)
KEYPRESSED:
LƯU MÃ HÀNG CỦA PHÍM ĐƯỢC NHẤN
(R7) = (A)
XÓA CỜ CY VÌ KHÔNG CÓ PHÍM NHẤN
(CY) = 0
NẠP GIÁ TRỊ ĐỂ TÍNH TRỌNG SỐ
CỦA CỘT CÓ PHÍM ĐƯỢC NHẤN
(A) = 4 - SỐ LƯỢNG CỘT
TÍNH TRỌNG SỐ (NHỎ NHẤT) CỦA CỘT CÓ PHÍM ĐƯỢC NHẤN
TRỌNG SỐ (MIN) = SỐ LƯỢNG CỘT - GIÁ TRỊ BỘ ĐẾM CỘT
(A) = (A) - (R6)
LƯU TRỌNG SỐ CỦA CỘT CÓ PHÍM
ĐƯỢC NHẤN
(R6) = (A)
LẤY LẠI MÃ HÀNG CỦA PHÍM ĐƯỢC NHẤN
DÙNG ĐỂ TÍNH TOÁN VÀ TẠO MÃ PHÍM
(A) = (R7)
NẠP GIÁ TRỊ SỐ PHÍM TRONG MỘT CỘT
(R5) = 4
AGAIN:
XOAY MÃ HÀNG ĐỂ TÌM VỊ TRÍ PHÍM ĐƯỢC
NHẤN THUỘC HÀNG NÀO - TÌM MỨC THẤP (0)

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

RET
BACK:
GỌI CTC TẠO MÃ PHÍM NHẤN
GETKEY
NẠP THỜI GIAN CHỐNG DỘI PHÍM KHI NHẤN PHÍM
(R0) = 50 - SỐ LẦN LẶP
Đ
S
GIÃM SỐ LẦN QUÉT
SỐ LẦN LẶP ≠ 0
(CHƯA XONG)

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ý. 12 Biên soạn: Phạm Quang Trí
o Chương trình mẫu:
;***************************************************
;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG DOI.
;***************************************************
;NAME: SCANKEYPAD.
;INPUT: PORT 0 (ROW0 ROW4 -> P0.0 P0.3 & COL0 COL4 -> P0.4 P0.7).
;OUTPUT: C = 1: CO PHIM NHAN - ACC = CHUA MA PHIM (00H -> FFH).
; C = 0: KHONG CO PHIM NHAN.
;***************************************************
SCANKEYPAD:

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

CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H

POP 05H
RET
;***************************************************

×