4X4键盘扫描演示程序
2011-05-04 23:30
225 查看
由于需要做一个单片机按键 通过串口发送按键信息的小程序 自己用AVR 模拟了一下 发送到LCD1602上
4x4一个16个键 正好两个字节 发送到串口 可以支持多个按键同时按下。
4x4一个16个键 正好两个字节 发送到串口 可以支持多个按键同时按下。
void KeyInit() { DDRA = 0x0f; //4个输出 4个输入 } unsigned int KeyScan() { unsigned char temp; unsigned int value; PORTA = 0x01; //扫描第一行 delay_nms(1); temp = PINA; value = temp>>4; PORTA = 0x02; //扫描第二行 delay_nms(1); temp = PINA; value += temp&0xf0; PORTA = 0x04; //扫描第三行 delay_nms(1); temp = PINA; value += (unsigned int)(temp&0xf0)<<4; PORTA = 0x08; //扫描第四行 delay_nms(1); temp = PINA; value += (unsigned int)(temp&0xf0)<<8; return value; } void main(void) { unsigned int keyvalue; unsigned int beforekey; unsigned char i; INIT_1602(); KeyInit(); while(1) { if( KeyScan()!=0) //有按键 { delay_nms(10); //防抖 keyvalue=KeyScan(); //取值 if( keyvalue!=0) { if(beforekey!=keyvalue) //新按键值 { beforekey=keyvalue; for(i=0;i<16;i++) { if(keyvalue&(1<<i)) Write_1602_Byte(i,0,49) ; else Write_1602_Byte(i,0,48) ; } } } } else if( KeyScan()==0) { if(beforekey!=0) //按键松开 发一次值 {clear_1602(); beforekey=0;} } } }
相关文章推荐
- 4X4矩阵键盘扫描程序
- linux下4x4矩阵 键盘驱动,用了定时器控制扫描程序来抗抖。
- 4X4矩阵键盘扫描程序
- 4x4矩阵键盘 扫描程序
- 4X4矩阵键盘扫描程序
- 键盘扫描程序及体会
- 4*4键盘扫描程序--去抖加长按
- Win10 IoT C#开发 6 - 4x4矩阵键盘扫描
- 51单片机的4x4矩阵键盘扫描例程(C51)
- 键盘扫描程序进展顺利
- 4*4键盘扫描C程序
- 51单片机矩阵扫描键盘程序(源代码)
- AVR单片机(ATMEGA16)矩阵键盘扫描程序
- C51行列键盘扫描程序
- 键盘扫描程序
- STC单片机按键扫描程序演示
- 键盘扫描程序
- [嵌入式开发模块]4X4矩阵键盘扫描 基于MC9S12XEP100
- 经典的verilog键盘扫描程序
- C51矩阵键盘扫描程序