[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:




![[Hướng dẫn] Bật tắt các thiết bị điện từ xa bằng hồng ngoại](https://dammedientu.com/wp-content/uploads/2018/04/3d-1-218x150.png)

![[Hướng dẫn] Làm mạch nguồn chỉnh áp từ 0-15v](https://dammedientu.com/wp-content/uploads/2018/03/2112312-218x150.png)
![[Hướng Dẫn] Bật tắt đèn bằng tiếng vỗ tay](https://dammedientu.com/wp-content/uploads/2018/03/sadsd-218x150.png)

![[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20…!](https://dammedientu.com/wp-content/uploads/2018/05/logo-218x150.jpg)

![[Chia sẻ] Phần mềm truyền nhận dữ liệu qua cổng com bằng VB.Net](https://dammedientu.com/wp-content/uploads/2018/03/Phan-mem-218x150.png)

![[HỌC ALTIUM] KINH NGHIỆM VẼ MẠCH ALTIUM THÀNH THẠO SAU 1 TUẦN](https://dammedientu.com/wp-content/uploads/2020/11/6-218x150.jpg)




![[HỌC AVR] Bài 5: TẠO XUNG ĐIỀU RỘNG PWM VỚI AVR](https://dammedientu.com/wp-content/uploads/2018/05/logo-100x70.jpg)