[HỌC AVR] BÀI 11: GIAO TIẾP MA TRẬN PHÍM 4×4
Xin chào các bạn!
Trong bài viết này, mình sẽ hướng dẫn các bạn lập trình giao ma trận phím 4×4 với Atmega16.
I.SƠ ĐỒ PHẦN CỨNG
Trên KIT AVR V4 hỗ trợ các bạn khối ma trận phím 4×4 có sơ đồ như sau:
Trong đó, kết nối với Atmega16:
–COL1:4 kết nối với PORTA4:7.
–ROW1:4 kết nối với PORTA0:3.
II.LẬP TRÌNH PHẦN MỀM
Trong bài toán này, mình sẽ lập trình hiển thị giá trị của các phím trên ma trận phím lên LCD16x2.
Các bạn cấu hình GPIO:
–PORTC3:5 (chân điều khiển LCD16x2), PORTB4:7 (chân dữ liệu LCD16x2), PORTA0:3 (các chân hàng của MTP4x4) là OUTPUT với mức logic đầu ra ban đầu là mức 1.
–PORTA4:7 (các chân cột của MTP4x4) là INPUT và có trở kéo lên bên trong.
// Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=P State6=P State5=P State4=P State3=1 State2=1 State1=1 State0=1 PORTA=0xFF; DDRA=0x0F; // Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=1 State6=1 State5=1 State4=1 State3=T State2=T State1=T State0=T PORTB=0xF0; DDRB=0xF0; // Port C initialization // Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In // State7=T State6=T State5=1 State4=1 State3=1 State2=T State1=T State0=T PORTC=0x38; DDRC=0x38; |
Các bạn sử dụng hàm đọc giá trị ma trận phím 4×4 (trong File key_4x4 thuộc Folder User):
uint8_t KEY4X4_GetKey(void) { uint8_t i; KEY4X4_ROW1=KEY4X4_ROW2=KEY4X4_ROW3=KEY4X4_ROW4=0; if(KEY4X4_IsPush()) { delay_ms(5); if(KEY4X4_IsPush()) { for(i=0;i<4;i++) { KEY4X4_CheckRow(i); if(!KEY4X4_COL1) return KEY_4X4[i][0]; if(!KEY4X4_COL2) return KEY_4X4[i][1]; if(!KEY4X4_COL3) return KEY_4X4[i][2]; if(!KEY4X4_COL4) return KEY_4X4[i][3]; } } } return 0; } |
Thực hiện chương trình chính:
LCD16X2_Init(); LCD16X2_Gotoxy(0,0); LCD16X2_Puts(" MTP4x4 AVR V4 "); while(1) { Key=KEY4X4_GetKey(); if(Key) { sprintf(Str,"Key = %c ",Key); LCD16X2_Gotoxy(0,1); LCD16X2_Puts(Str); while(Key)Key = KEY4X4_GetKey(); } } |
Link download File Code của chương trình TẠI ĐÂY: