6单片机 键盘(非中断)

6单片机 键盘(非中断)

ID:40797276

大小:420.00 KB

页数:11页

时间:2019-08-07

6单片机 键盘(非中断)_第1页
6单片机 键盘(非中断)_第2页
6单片机 键盘(非中断)_第3页
6单片机 键盘(非中断)_第4页
6单片机 键盘(非中断)_第5页
资源描述:

《6单片机 键盘(非中断)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、键盘:一组按键开关的集合。行线电压信号通过键盘开关机械触点的断开、闭合,其输出波形如右图所示。???触点抖动行线上拉电阻键盘接口独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。(适于键数较少、操作快、同时多键动作场合)分独立式按键接口和行列式键盘接口。键盘接口类型适于按键数目较多的场合;可节省较多的I/O口线端;同时只会有一个键闭合的场合。输出口驱动列线输入口读取行线电平行列式(矩阵式)键盘接口a.扫描法第1步:识别键盘有无键按下;驱动所有列线为‘0’,输入各行线电平如果有‘0’,就说明有键按下,如

2、果行线电平全‘1’,则全部无键按下。第2步:如有键被按下,识别具体的按键。依序驱动某一列为‘0’,其余列均为‘1’,输入各行线电平,如果某行线电平为‘0’,可确定此行列交叉点处的按键被按下;如果行线电平全为‘1’则本列无按键按下。输出口驱动列线输入口读取行线电平行列式键盘按键的识别方法第1步:列线输出为全‘0’,随后输入行线电平如有‘0’,则‘0’所在的行就是闭合的按键所在行;无‘0’则无键闭合。第2步:行线输出为全‘0’,随后输入列线电平如有‘0’,则‘0’所在的列就是闭合的按键所在列;无‘0’则无键闭合。结合上述两步,可确定按键所在行和列。采用线反

3、转法的键盘行线、列线端口各自应当可以在输入与输出方式间切换!如图:高四位与低四位均可独立改变其输入或输出方式b.线反转法键盘编程实例送往MCU0123456789ABCDEFVDDMCU内部上拉电阻PTD0PTD1PTD2PTD3PTD4PTD5PTD6PTD7列线n1n2n3n4行线m1m2m3m4来自MCU1、往PTD0~PTD3输出低电平,输入PTD4~PTD7。2、若PTD4~PTD7全1,说明无键被按下,返回,否则,转3。3、延时10ms,再次读PTD4~PTD7,若与延时前的值不同,判为抖动,返回。4、使行线m1(PTD0)为低电平,其余三

4、根行线高电平,读列线PTD4~PTD7状态。如果PTD4~PTD7都为高电平,则m1行上没有键闭合,如果PTD4~PTD7的状态不全为高电平,那么为低电平的列线和m1相交的键处于闭合状态,转5;如果m1行上没有键闭合,接着使行线m2为低电平,其余行线为高电平,用同样方法检查m2行上有无键闭合;以此类推,最后使行线m4为低电平,其余的行线为高电平,检查m4行上是否有键闭合。若都没有键闭合,则返回,否则,转5。5、根据行、列值形成键值(扫描码)。键值应与键盘一一对应。6、根据键值查表,获得键对应定义值。7、根据键定义值转入该键定义的操作。键盘扫描法按键识别

5、与键盘定义子程序0EE1DE2BE37E4ED5DD6BD77D8EB9DBABBB7BCE7DD7EB7F77定义值键值(1)键值获取方法按扫描法获得键值表,如右图。再由键值通过查表可得到定义值。(2)键盘子程序//-----------------------------------------------------////功能:扫描法获取按键//入口:无//返回:按键定义,此处为序号(0-F)//---------------------------------------------------//按键扫描(C程序)unsignedchark

6、ey_scan(void){inti;unsignedcharline,row,k_value;staticunsignedcharlastkey=0xff;constunsignedcharKBTable[]={0xEE,'0',0xDE,'1',0xBE,'2',0x7E,'3',0xED,'4',0xDD,'5',0xBD,'6',0x7D,'7',0xEB,'8',0xDB,'9',0xBB,'A',0x7B,'B',0xE7,'C',0xD7,'D',0xB7,'E',0x77,'F',0x00,0xff};//PTD0~PTD3输出0DDR

7、D=0x0F;PTDPUE=0XF0;PTD=PTD&0xF0;if((PTD&0xf0)==0xf0)return0xff;//无键按下row=PTD;//延时,消除抖动for(i=0;i<100;i++);if(row!=PTD)return0xff;//判为抖动,无键按下按键扫描(C程序)续line=0xFE;for(i=0;i<4;i++){PTD=line;//输出扫描信号row=PTD;//读键盘口if((row&0xf0)!=0xf0)break;line=(line<<1)+1;}if(i==4)return0xff;k_value=(

8、row&0xf0)(line&0x0f);for(i=0;i<32;i+=2)if(k_val

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。