Professional Documents
Culture Documents
BÀI 03:
ĐIỀU KHIỂN MA TRẬN LED VÀ BÀN PHÍM HEX
(LED MATRIX AND KEYPAD CONTROL)
THIẾT BỊ SỬ DỤNG
1. Bộ thí nghiệm μPTS-31.
2. Board thí nghiệm μPM-303.
3. Máy vi tính.
PHẦN I : CƠ SỞ LÝ THUYẾT
I. KẾT NỐI PHẦN CỨNG
Trong bài thí nghiệm này sử dụng khối thí nghiệm μPM-303 trên đó có ma trận
LED 5x7 và 1 bàn phím 4x4 như sau :
1. MA TRẬN LED
Ma trận LED gồm các LED phát quang bố trí thành hàng và cột trong một võ.
Các tín hiệu điều khiển hàng PA0 - PA6 ( Port A ) nối vào Anode của tất cả các LED
trên cùng một hàng. Các tín hiệu điều khiển cột PB0 -PB4 (Port B) nối vào Cathode
của tất cả cácv LED trên cùng một cột.
Khi có 1 cặp tín hiệu điều khiển hàng và cột ví dụ như khi PA0 = 1 và PB0 = 1,
các Anode của hàng LED thứ nhất RW1 (hàng trên cùng) được cấp điện thế cao. Đồng
thời các Cathode của cột LED thứ nhất CL1 (bìa trái) được cấp thế thấp.Tuy nhiên chỉ
có LED 1 là sáng vì nó có đồng thời thế cao trên Anode và thế thấp trên Cathode. Như
vậy khi có 1 cặp tín hiệu điều khiển hàng và cột thì chỉ có duy nhất 1 LED tại điểm
hàng và cột gặp nhau là sáng. Trên cơ sở cấu trúc như vậy ta có thể xây dựng được
bảng ma trận LED với số lượng LED lớn hơn ví dụ như trong các bảng quang báo.
Trang 29
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
2 3
+5V
1
2 3
1
1
2 2 3
3
4
5
6
7
1
8
PORT A 2 3
2 1
1 3
2 3
1
2 3
1 2
1
1 2
1
2
3 1 2
4
5
6
7 1 2
8
PORT B
1 2
Tương tự cho khi hiển thị các ký hiệu hay các chữ khác.
2. BÀN PHÍM
Bàn phím trên khối μPM303 cũng được xây dựng theo cấu trúc ma trận gồm
16 phím (0-9, A-F) bố trí thành 4 hàng và 4 cột, gọi là bàn phím HEX. Để kiểm tra có
phím nhấn hay không máy tính xuất ra cột thứ nhất mức 0 và đọc vào các hàng, nếu
hàng nào xuống 0 tức là có phím nhấn trên hàng đó. Tín hiệu quét đọc từ máy tính cấp
qua các chốt PC0-PC3 (Port C). Khi nhấn công tắc nào sẽ cho phép tín hiệu từ máy
tính truyền qua công tắc nối tới hàng tương ứng. Máy tính sẽ so sánh đồng bộ với tín
hiệu quét cột đã phát để xác định công tắc được nhấn. Ví dụ khi nhấn số 9 tín hiệu quét
từ ngõ vào PC2 sẽ qua tiếp điểm công tắc 9 truyền ra PC6. Như vậy ngõ vào bàn phím
sẽ là cột còn ngõ ra là hàng.
Trang 31
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
Y
Có phím nhấn?
Phím 'T'?
Y
N
End
N
Có phím nhấn trên
bàn phím Hex?
Trang 32
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
+5V +5V +5V +5V
C D E F
PC7
8 9 A B
PC6
4 5 6 7
PC5
0 1 2 3
PC4
8
7
6
5
4
3
2
1
PORT C
Trang 33
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
II. TRÌNH TỰ THÍ NGHIỆM
1. Hiển thị một ký tự lên ma trận Led
Nhập chương trình dùng để hiển thị ký tự 'A' trên ma trận Led như sau:
.model small
.stack 100h
.data
pa db 7Eh,09h,09h,09h,7Eh
pb db 01h,02h,04h,08h,10h
.code
main proc
mov ax,@data
mov ds,ax
mov dx,30Bh
mov al,88h
out dx,al ; Dinh cau hinh cho U9
call ledmatrix
jmp start
;--------------------------------------------
ledmatrix proc
mov bx,0 ; Lap 5 lan cho 5 cot
cont: mov dx,308h
mov al,pa[bx] ; Xuat du lieu ra Port A (hien
; thi cot cho ma tran Led)
out dx,al
mov dx,309h
mov al,pb[bx] ; Chon cot cho ma tran Led
out dx,al
call delay
inc bx
cmp bx,5
jne cont
ret
Trang 34
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
ledmatrix endp
;--------------------------------------------
delay proc
push cx
mov cx,0FFFFh
loop $
pop cx
ret
delay endp
end main
Như vậy, một ký tự cần hiển thị trên ma trận Led cần 6 byte và 5 byte 00h đầu
chuỗi, 3 byte 00h cuối chuỗi Æ một chuỗi dài 50 ký tự sẽ cần số byte lưu trữ cho
mã Led là: 50*6 + 5 + 3 = 308 byte.
Trang 35
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
- Hiển thị ký tự:
Quá trình hiển thị và cho chữ chạy mô tả như hình vẽ:
Pa[0] Pa[4] Pa[1] Pa[5] Pa[2] Pa[6]
Pa[15] Pa[19]
Lần 15
Lần 1: hiển thị từ pa[0] ÷ pa[4]
Lần 2: hiển thị từ pa[1] ÷ pa[5] Æ lần j: hiển thị từ pa[j] ÷ pa[j+5]
Lần 16: hiển thị từ pa[15] ÷ pa[19]
Trang 36
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
Æ Chuỗi “AB” gồm 2 ký tự cần lưu trữ 20 byte và quét tổng cộng 20 – 4 = 16
lần Æ chuỗi 50 ký tự cần lưu trữ 50*6 + 8 = 308 byte và quét 304 lần.
.model small
.stack 100h
.data
pa DB 00h, 00h, 00h, 00h, 00h
DB 7Eh, 09h, 09h, 09h, 7Eh, 00h
DB 7Fh, 49h, 49h, 49h, 36h, 00h
DB 00h, 00h, 00h
pb DB 01h,02h,04h,08h,10h
.code
main proc
mov ax,@data
mov ds,ax
mov dx,30Bh
mov al,88h
out dx,al ; Dinh cau hinh cho U9
quetled:
mov cx,15 ; Hien thi 1 lan can 15 lan quet
led:
call ledmatrix
loop led
inc si
cmp si,16 ; Quet 16 lan, tu lan 0 -> 15
jne quetled
jmp start
main endp
;--------------------------------------------
Trang 37
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
ledmatrix proc
mov bx,0 ; Lap 5 lan cho 5 cot
cont: mov dx,308h
mov al,pa[bx+si] ; Xuat du lieu ra Port A (hien
; thi cot cho ma tran Led)
out dx,al
mov dx,309h
mov al,pb[bx] ; Chon cot cho ma tran Led
out dx,al
call delay
inc bx
cmp bx,5
jne cont
ret
ledmatrix endp
;--------------------------------------------
delay proc
push cx
mov cx,0FFFFh
loop $
pop cx
ret
delay endp
end main
Nhập đoạn chương trình kiểm tra phím nhấn A trên bàn phím hex.
.model small
.stack 100h
.data
pa db 5 dup(0)
pb db 01h,02h,04h,08h,10h
.code
main proc
mov ax,@data
mov ds,ax
mov dx,30Bh
Trang 38
Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý
mov al,88h
out dx,al ; Dinh cau hinh cho U9
- Viết chương trình kiểm tra 2 phím bất kỳ trên bàn phím hex (nằm trên 2 cột
khác nhau), nhấn một phím sẽ hiển thị một ký tự trên ma trận Led.
- Sửa đổi chương trình để ma trận Led luôn hiển thị ký tự mặc dù chỉ nhấn
phím 1 lần.
Trang 39