三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態判斷哪個按鍵被按下。 本實驗採用中斷式實現使用者鍵盤介面。 掃描法 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。 反轉法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4键盘程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按键按下 {delayms(1); //延时去抖动 if((PINC&0x0f)!=0x0f) //有按下则判断 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //复位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按键是否放开 { display(data); } i=4; //计算返回码 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的键盘码 } } else return 17; //没有按键按下 }
上传时间: 2013-11-12
上传用户:a673761058
详细介绍了按键消抖的实现方法,对实际操作有很大的指导意义
上传时间: 2013-12-13
上传用户:oooool
一次网络“抖动”分析:
上传时间: 2013-11-13
上传用户:wangzeng
智能小车启动定时保护无线加按键设定
上传时间: 2013-11-11
上传用户:cursor
1602LCD显示防手机键盘按键字符1 源代码
上传时间: 2014-03-30
上传用户:a471778
用计数器中断实现100以内的按键计数
上传时间: 2013-10-09
上传用户:dazhihui66
单片机C语言程序设计实训-基于8051+Proteus仿真:按键选播电子音乐 按键选播电子音乐.DSN 按键选播电子音乐.PWI Last Loaded 按键选播电子音乐.DBK
上传时间: 2014-03-17
上传用户:dave520l
详细介绍了按键消抖的实现方法,对实际操作有很大的指导意义
上传时间: 2015-01-01
上传用户:thesk123
它将记录所有的按键。示范了如何写一个全局钩子,记录密码,并将之发送给您的邮箱。
上传时间: 2015-01-06
上传用户:moshushi0009
此程序是一个按键打气球的小游戏
上传时间: 2015-01-07
上传用户:Yukiseop