lập trình led ma trận và bàn phím

11 2.5K 3
lập trình led ma trận và bàn phím

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu hướng dẫn lập trình bàn phím hex, hiển thị trên led ma trận. Mạch sử dụng ATMEGA32. Tài liệu bao gồm nguyên lý hoạt động, phương pháp lập trình và mạch điện. Thuận tiện cho người mới bắt đầu nghiên cứu dòng vi điều khiển AVR

Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 29 BÀI 03: ĐIỀU KHIỂN MA TRẬN LED BÀN PHÍM HEX (LED MATRIX AND KEYPAD CONTROL)  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 bàn phím. - Các giải thuật dùng để quét ma trận Led 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 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 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 cột ví dụ như khi PA0 = 1 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 thế thấp trên Cathode. Như vậy khi có 1 cặp tín hiệu điều khiển hàng cột thì chỉ có duy nhất 1 LED tại điểm hàng 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. Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 30 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 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 PB0-4 ở mức cao, lúc này sẽ làm sáng các ở hàng RW7 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 á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 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 1 2 3 1 2 3 PORT B 1 2 3 4 5 6 7 8 +5V 1 2 1 2 PORT A 1 2 3 4 5 6 7 8 1 2 3 1 2 3 1 2 3 1 2 3 1 2 1 2 1 2 3 1 2 Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 31 cho các hàng 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 ; Sáng cột LED thứ nhất CL1 Nhịp 2 : PA0 - PA5 = 0, PA6 = 1, PB1 = 1 ; Sáng LED hàng RW7 cột CL2 Nhịp 3 : PA0 - PA5 = 0, PA6 = 1, PB2 = 1 ; Sáng LED hàng RW7 cột CL3 Nhịp 4 : PA0 - PA5 = 0, PA6 = 1, PB3 = 1 ; Sáng LED hàng RW7 cột CL4 Nhịp 5 : PA0 - PA5 = 0, PA6 = 1, PB4 = 1 ; Sáng LED hàng RW7 cột CL5 Nhịp 6 : Quay lại giống nhịp 1. (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 PB1 PB2 PB3 PB4 PA0 1 PA1 1 PA2 1 PA3 1 PA4 1 PA5 1 PA6 1 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 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 đọ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áy. Chương trình sẽ quét lần lượt ma trận phím 4x4 hiển thị giá trị ra ma trận LED 7x5 tương ứng với giá trị phím ấn. Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 32 *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 Có phím nhấn? Phím 'T'? End Có phím nhấn trên bàn phím Hex? Đị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 Y Y N Y N Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 33 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 đất (POWER INPUT) của khối μPM-303 với nguồn +5V đấ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 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 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. 1 8 2 PC1 7 3 +5V E PORT C 1 2 3 4 5 6 7 8 PC3 B9 6 A PC2 PC0 5 +5V PC4 PC7 +5V D 4 FC PC5 PC6 +5V 0 Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 34 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 start: mov ah,0Bh ; Kiem tra phim nhan 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 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 Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 35 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 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 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 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 Led là: 50*6 + 5 + 3 = 308 byte. Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 36 - Hiển thị ký tự: Quá trình hiển thị cho chữ chạy mô tả như hình vẽ: 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] Pa [ 0 ] Pa [ 4 ] Lần 0 Pa [ 1 ] Pa [ 5 ] Lần 1 Pa [ 2 ] Pa [ 6 ] Lần 2 Pa [ 15 ] Pa [ 19 ] Lần 15 Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 37 Æ Chuỗi “AB” gồm 2 ký tự cần lưu trữ 20 byte 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 quét 304 lần. - Chương trình chạy chuỗi ký tự: .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 start: mov ah,0Bh ; Kiem tra phim nhan 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 ; Phòng thí nghiệm Vi xử lý Bài thí nghiệm Vi xử lý Trang 38 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 - 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 cho chuỗi chạy tữ trái sang phải. Gợi ý: tính toán tất cả các bảng cho các ký tự từ A Æ Z 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 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 [...]... al,11110000b al,10110000b PhimA start ; Chon cot 3 ; Doc du lieu tu cong tac ; Neu nhan phim A 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ý... đổ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 . 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. 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ể. 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

Ngày đăng: 18/06/2014, 16:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan