Tài liệu Thí nghiệm vi xử lý - Bài 3: Điều khiển ma trận Led và bàn phím Hex (Led matrix and keypad control)

Phòng thí nghiệm Vi xử lý  
Bài thí nghiệm Vi xử lý  
› MỤC ĐÍCH THÍ NGHIỆM  
Giúp sinh viên bằng thực nghiệm khảo sát các vấn đề chính sau đây :  
- Cách ghép nối máy tính với thiết bị ngoại vi như ma trận Led và bàn phím.  
- Các giải thuật dùng để quét ma trận Led và kiểm tra phím nhấn.  
› 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
2
3
3
+5V  
1
2
3
4
5
6
7
8
2
2
2
2
2
3
3
3
3
3
PORT A  
1
1
1
1
1
2
2
2
2
2
1
2
3
4
5
6
7
8
PORT B  
Sơ đồ kết nối ma trận Led 5 x 7  
Trong trường hợp ta cần hiển thị đồng thời 1 số LED trong ma trận để có thể  
hiển thị một ký hiệu nào đó ví dụ chữ ‘L‘ trên ma trận LED. Khi đó ta thấy các LED ở  
cột bìa trái (CL1) sáng và các LED ở hàng dưới cùng (RW7) sáng. Nếu trong hiển thị  
tĩnh ta phải đặt tất cả các PA0 đến PA6 và PB0-4 ở mức cao, lúc này sẽ làm sáng các ở  
hàng RW7 và cột CL1 nhưng khi đó điều gì sẽ xảy ra?. Ta thấy rõ ràng là khi đó thì  
các LED khác trong ma trận cũng được cấp áp cao vào Anode và áp thấp vào Cathode  
do đó nó sẽ sáng tất cả các LED trong ma trận. Vì vậy trong điều khiển ma trận LED  
ta không thể sử dụng phương pháp hiển thị tĩnh mà phải dùng phương pháp quét (hiển  
thị động). Nnghĩa là tiến hành cấp tín hiệu điều khiển theo dạng xung theo kiểu quét  
Trang 30  
Phòng thí nghiệm Vi xử lý  
Bài thí nghiệm Vi xử lý  
cho các hàng và cột cần hiển thị. Tần số quét nhỏ nhất cho một chu kỳ cần khoảng  
20Hz (50ms) nhằm bảo đảm cho mắt thấy các LED sáng đều không nháy. Như vậy để  
hiển thị được chữ L có thể điều khiển tuần tự như trong bảng sau:  
Nhịp 1 : PA0 - PA6 = 1, PB0 = 1  
Nhịp 2 : PA0 - PA5 = 0, PA6 = 1, PB1 = 1  
; Sáng cột LED thứ nhất CL1  
; Sáng LED hàng RW7 và cột  
CL2  
CL3  
CL4  
CL5  
Nhịp 3 : PA0 - PA5 = 0, PA6 = 1, PB2 = 1  
Nhịp 4 : PA0 - PA5 = 0, PA6 = 1, PB3 = 1  
Nhịp 5 : PA0 - PA5 = 0, PA6 = 1, PB4 = 1  
Nhịp 6 : Quay lại giống nhịp 1.  
; Sáng LED hàng RW7 và cột  
; Sáng LED hàng RW7 và cột  
; Sáng LED hàng RW7 và cột  
(từ nhịp 1 đến nhịp 6 là 1 chu kỳ quét tối thiểu phải là 20Hz)  
TÍN HIỆU  
PB0  
1
1
1
1
1
1
1
PB1  
PB2  
PB3 PB4  
PA0  
PA1  
PA2  
PA3  
PA4  
PA5  
PA6  
1
1
1
1
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.  
II. PHẦN MỀM  
Trong máy tính đã nạp sẵn 2 bộ chương trình viết bằng ngôn ngữ ASSEMBLY  
chứa trong thư mục C:\TNVXL\TASM  
- UPM302.ASM: Là chương trình gốc.  
- UPM302.EXE: Là chương trình mã máy.  
Chương trình sẽ quét lần lượt ma trận phím 4x4 và hiển thị giá trị ra ma trận  
LED 7x5 tương ứng với giá trị phím ấn.  
Trang 31  
Phòng thí nghiệm Vi xử lý  
Bài thí nghiệm Vi xử lý  
*Lưu đồ chương trình cho bài thí nghiệm μPM303:  
Begin  
Khởi động 8255  
U9: PA xuất, PB xuất, PCH nhập, PCL  
xuất  
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?  
Y
Định lại dữ liệu cho mảng pa chứa  
ký tự tương ứng với phím nhấn  
trên bàn phím Hex  
Hiển thị dữ liệu trong mảng pa lên  
ma trận Led  
Trang 32  
Phòng thí nghiệm Vi xử lý  
Bài thí nghiệm Vi xử lý  
+5V +5V +5V +5V  
C
8
D
9
E
A
F
B
PC7  
PC6  
4
0
5
1
6
2
7
3
PC5  
PC4  
PC2  
PC1  
PC0  
PC3  
PORT C  
Sơ đồ kết nối của bàn phím Hex  
PHẦN II : TIẾN TRÌNH THÍ NGHIỆM  
I.  
KẾT NỐI PHẦN CỨNG  
1. Nối cáp liên lạc giữa ổ nối CON1 của μPTS-31 với khối giao tiếp PCBUS-2  
gắn trong máy tính.  
2. Sử dụng dây có chốt cắm để nối mạch như sau:  
- Nối các chốt nguồn +5V và đất (POWER INPUT) của khối μPM-303 với  
nguồn +5V và đất của thiết bị chính μPTS-31. Chú ý cắm đúng phân cực nguồn.  
3. Điều khiển từ bàn phím và chỉ thị tương ứng trên LED:  
Trong thí nghiệm khi nhấn phím nào trên bàn phím (0 - 9, A - F) máy tính sẽ  
điều khiển nhận và chỉ thị tương ứng trên ma trận LED.  
- Nối cáp liên lạc giữa trạm PORT C của μPTS-31 (PART B) với trạm PORT C  
trên khối thí nghiệm μPM-303.  
- Nối cáp liên lạc giữa trạm PORT A của μPTS-31 (PART B ) với trạm PORT  
A của khối thí nghiệm μPM-303.  
- Nối cáp liên lạc giữa trạm PORT B của μPTS-31 (PART B ) với trạm PORT  
B của khối thí nghiệm μPM-303.  
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  
100h  
.stack  
.data  
pa  
db 7Eh,09h,09h,09h,7Eh  
db 01h,02h,04h,08h,10h  
pb  
.code  
main proc  
mov ax,@data  
mov ds,ax  
mov dx,30Bh  
mov al,88h  
out dx,al  
; Dinh cau hinh cho U9  
; Kiem tra phim nhan  
start: mov ah,0Bh  
int 21h  
cmp al,0FFh ; Neu co nhan phim thi ket thuc  
; chuong trinh  
je exit  
call  
ledmatrix  
jmp start  
exit: mov ah,4Ch  
int 21h  
main endp  
;--------------------------------------------  
ledmatrix  
mov bx,0  
cont: mov dx,308h  
proc  
; Lap 5 lan cho 5 cot  
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  
- Sửa đoạn chương trình trên để xuất ra ma trận Led ký tự B, C, 0, 1.  
- Viết chương trình xuất lần lượt các ký tự A, B, C, 0, 1 ra ma trận Led. Gợi  
ý: tạo vòng lặp hiển thị chữ A ra ma trận Led khoảng 15 lần, sau đó đến chữ  
B, …  
2. Di chuyển ký tự trên ma trận Led  
Di chuyển chuỗi “AB” trên ma trận Led từ trái sang phải:  
- Tính toán dữ liệu hiển thị  
Giả sử cần hiển thị chuỗi “AB”:  
Chữ ‘A’: 7Eh, 09h, 09h, 09h, 7Eh  
Chữ ‘B’: 7Fh, 49h,49h,49h, 36h  
Giữa chữ A và B có một cột trống để phân biệt.  
Æ Chuỗi “AB”: 7Eh, 09h, 09h, 09h, 7Eh, 00h, 7Fh, 49h,49h,49h, 36h  
Có thể thêm khoảng trắng trước và sau chuỗi để chuỗi hiện ra từ từ  
Æ Chuỗi “ AB ”: 00h, 00h, 00h, 00h, 00h, 7Eh, 09h, 09h, 09h, 7Eh, 00h,  
7Fh, 49h,49h,49h, 36h,00h, 00h, 00h, 00h  
Khai báo biến:  
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  
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]  
Lần 0  
Lần 1  
Lần 2  
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 16: hiển thị từ pa[15] ÷ pa[19]  
Æ lần j: hiển thị từ pa[j] ÷ pa[j+5]  
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.  
- Chương trình chạy chuỗi ký tự:  
.model  
.stack  
.data  
small  
100h  
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  
; Kiem tra phim nhan  
start: mov ah,0Bh  
int 21h  
cmp al,0FFh ; Neu co nhan phim thi ket thuc  
je exit  
; chuong trinh  
mov si,0  
; Lan quet 0  
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  
exit: mov ah,4Ch  
int 21h  
main endp  
;--------------------------------------------  
Trang 37  
Phòng thí nghiệm Vi xử lý  
Bài thí nghiệm Vi xử lý  
ledmatrix  
mov bx,0  
proc  
; 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  
endp  
inc bx  
cmp bx,5  
jne cont  
ret  
ledmatrix  
;--------------------------------------------  
delay proc  
push cx  
mov cx,0FFFFh  
loop  
$
pop cx  
ret  
delay endp  
end main  
- Viết chương trình để chuỗi chạy từ phải sang trái.  
- Viết chương trình nhập một chuỗi từ bàn phím và cho chuỗi chạy tữ trái  
sang phải. Gợi ý: tính toán tất cả các bảng mã cho các ký tự từ A Æ Z và  
dùng hàm 0Ah nhập một chuỗi từ bàn phím.  
3. Kiểm tra phím nhấn trên bàn phím  
Nhập đoạn chương trình kiểm tra phím nhấn A trên bàn phím hex.  
.model  
.stack  
.data  
small  
100h  
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  
start: mov ah,0Bh  
int 21h  
; Kiem tra phim nhan  
cmp al,0FFh  
je exit  
mov al,0Dh  
mov dx,30Ah  
out dx,al  
in al,dx  
; Chon cot 3  
; Doc du lieu tu cong tac  
and al,11110000b  
cmp al,10110000b ; Neu nhan phim A  
je PhimA  
jmp start  
exit: mov ah,4Ch  
int 21h  
PhimA:  
mov  
mov  
mov  
mov  
mov  
call  
jmp  
pa[0],7Eh  
pa[1],09h  
pa[2],09h  
pa[3],09h  
pa[4],7Eh  
ledmatrix  
start  
...  
- 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.  
Sinh viên có thể tham khảo chương trình: C:\TNVXL\TASM\uPM303.ASM  
Trong máy có sẵn 1 chương trình ví dụ về ứng dụng LED ma trận làm quang  
báo.  
Chạy chương trình như sau :  
C:\TNVXL\TASM\QUANGBAO.EXE ↵  
Gõ vào 1 câu bất kỳ trên màn hình nó sẽ chạy ra trên ma trận Led.  
Trang 39  
pdf 11 trang myanh 25341 Free
Bạn đang xem tài liệu "Tài liệu Thí nghiệm vi xử lý - Bài 3: Điều khiển ma trận Led và bàn phím Hex (Led matrix and keypad control)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_thi_nghiem_vi_xu_ly_bai_3_dieu_khien_ma_tran_led_va.pdf