Kỹ thuật quét ma trận phím

Một phần của tài liệu tnvxlvdk_v2-1 (Trang 46 - 50)

Nội dung:

Khảo sát cấu tạo, hoạt động của ma trận phím.

Tìm hiểu kỹ thuật lấy dữ liệu từ ma trận phím, chống rung phím nhấn.

u cầu:

Viết chương trình lấy dữ liệu từ phím nhấn sau đó hiện thị giá trị của phím nhấn ra led đơn.

5.1 Kết nối mạch ma trận phím

Ma trận 16 phím có cấu tạo gồm 4 hàng x 4 cột như hình bên dưới. Cột có trở kéo lên để đảm bảo mức logic 1 khi phím khơng được nhấn.

Nối ma trận phím vào mạch ứng dụng như hình phía trên bên phải (cần có bàn phím, cáp và đầu nối bus).

Sử dụng PortD để kết nối với ma trận 16 phím (4 hàng x 4 cột) :

 Cột COL1 - COL4 : cổng nhập, nối vào các bit D0-D3.

 Hàng ROW1 - ROW4 : cổng xuất, nối vào D4-D7.

Để thực hiện kiểm tra phím, ta lần lượt xuất dữ liệu ra D7 -D4 sao cho mỗi lần chỉ có hàng cần kiểm tra xuống 0, cịn các hàng khác lên 1. Sau đó, đọc dữ liệu về từ D3 -D0, chuyển sang LED ở portB để xem kết quả. Lần lượt nhấn các phím trên hàng đang được kiểm tra và quan sát LED.

5.2 Kiểm tra bàn phím

Bước 1. Tạo project mới tên là Key.

Bước 2. Đánh code vào tập tin Key.asm theo dạng "Relocatable".

ROW 1 COL 2 COL 3 COL 4 COL 1 ROW 2 ROW 3 ROW 4 Ma trận phím Cáp Đầu nối

Bộ mơn Kỹ Thuật Máy Tính 43 Thực hành Vi xử lý Bước 3. Define các port tương ứng với hàng và cột của ma trận phím để dễ sử dụng sau

này. Dựa vào sơ đồ mạch ta đ ịnh nghĩa như sau: #define COLUMN_1 PORTD, 0

#define COLUMN_2 PORTD, 1 #define COLUMN_3 PORTD, 2 #define COLUMN_4 PORTD, 3 #define ROW_1 PORTD, 4 #define ROW_2 PORTD, 5 #define ROW_3 PORTD, 6 #define ROW_4 PORTD, 7

Bước 4. Khởi tạo input và output cho các port tương ứng. Ở đây column là output, còn row là input. Portb dùng để hiển thị led đơn cũng được cấu hình là output. INIT_IO ;chọn PortD là ngỏ nhập Digital movlw 0x0F movwf ADCON1 ; chọn PortB xuất clrf TRISB clrf LATB

; chọn PortD nửa xuất nửa nhập movlw 0x0F

movwf TRISD

setf LATD

return

Bước 5. Thêm vào chương trình con TestKey đơn giản như sau: TestKey

movlw B’11010000’ ; bit D5=0 --> kiểm tra hàng 2 movwf LATD TestKey1 movf PORTD, W andlw B’00001111’ xorlw B’00001111’ movwf KeyRead movwf LATB bra TestKey1 return

Bước 6. Dịch và chạy chương trình.

Bước 7. Nhấn phím trên hàng 2 và quan sát LED ở PortB.

Bước 8. Sửa chương trình để kiểm tra các hàng còn lại. Quan sát và cho nhận xét.

5.3 Qt tồn bàn phím:

Bước 1. Dùng timer tạo thời khoản 10ms. Trong Timer_isr gọi TestKey.

Bước 2. Sửa lại TestKey dùng chỉ số r_idx (= 0, 1, 2, 3) để kiểm tra từng hàng tương ứng.

cpfslt r_idx bra TestRow4 decf WREG cpfslt r_idx bra TestRow3 decf WREG cpfslt r_idx bra TestRow2 TestRow1

; gọi chương trình con kiểm tra hàng 1 braKetthuc

TestRow2

; gọi chương trình con kiểm tra hàng 2 braKetthuc

TestRow3

; gọi chương trình con kiểm tra hàng 3 braKetthuc

TestRow4

; gọi chương trình con kiểm tra hàng 4 Ketthuc

incf r_idx ; tăng chỉ số qua hàng kế lần sau movlw .4 ; khống chế chỉ số không quá 3 cpfslt r_idx

clrf r_idx

Bước 3. Xác định số thứ tự phím nhấn và xuất ra LED PortB. Hàng 1: số từ 0 đến 3.

Hàng 2: số từ 4 đến 7. Hàng 3: số từ 8 đến 11. Hàng 4: số từ 12 đến 15.

Có thể sử dụng cơng thức : Số thứ tự = chỉ số hàng * 4 + chỉ số cột

Như vậy, cần xác định chỉ số cột (0-3) của phím được nhấn từ dữ liệu đọc được từ PortD (KeyRead) bằng cách đổi giá trị theo bảng sau:

B’00001000’ --> 0 B’00000100’ --> 1 B’00000010’ --> 2 B’00000001’ --> 3 Đoạn code như sau :

clrf c_idx movlw B’00001000’ cpfslt KeyRead bra Ketthuc2 incf c_idx rrncf WREG cpfslt KeyRead bra Ketthuc2 incf c_idx

Bộ mơn Kỹ Thuật Máy Tính 45 Thực hành Vi xử lý rrncf WREG cpfslt KeyRead bra Ketthuc2 incf c_idx Ketthuc2

; gọi chương trình con kiểm tra hàng 1 braKetthuc

TestRow2

; gọi chương trình con kiểm tra hàng 2 braKetthuc

TestRow3

; gọi chương trình con kiểm tra hàng 3 braKetthuc

TestRow4

; gọi chương trình con kiểm tra hàng 4 Ketthuc

incf r_idx ; tăng chỉ số qua hàng kế lần sau movlw .4 ; khống chế chỉ số không quá 3 cpfslt r_idx

clrf r_idx

5.4 Bài tập

a) Cải tiến hàm chống rung phím, khi nhấn đè 1 phím thì phải sau 1 thời gian TimeOutForKey thì mới tích cực phím nhấn đó.

b) Viết ứng dụng đồng hồ casio đơn giản (hiển thị giờ, ngày, cho phép chỉnh sửa ngày giờ) sử dụng ma trận phím và LCD.

Một phần của tài liệu tnvxlvdk_v2-1 (Trang 46 - 50)

Tải bản đầy đủ (PDF)

(69 trang)