网站大量收购闲置独家精品文档,联系QQ:2885784924

任务十键盘接口.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

任务十键盘接口扩展硬件独立式键盘与行列式键盘的结构和原理编译、下载、调试编译软件:keil下载软件:STC-ISP任务分析:实现键盘接口扩展软件独立式键盘查询原理行列式键盘列扫描查询原理12345键盘:由若干个按键组成的开关矩阵,是实现人机对话或人机通信的常用工具。01根据按键的识别方式分:由硬件识别键的闭合—编码键盘由软件识别键的闭合—未编码键盘02按键开关:机械弹性开关,机械开关在闭合及断开瞬间均伴随有一连串的抖动,时间一般为035~10ms。04按键及键盘按键及键盘键按下闭合稳定前沿抖动后沿抖动释放稳定键释放按键时的抖动消除键抖动可用硬件和软件两种方法硬件消抖:RS触发器软件消抖:延时10ms左右再检测Vcc(+5V)Vcc(+5V)AB输出RS触发器消抖电路键盘扫描控制方式程序控制方式:键盘处理程序固定在主程序的某个程序段。特点:对CPU工作影响小应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输入响应的及时性。定时控制扫描方式:利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描。特点:采用定时/计数器定时控制扫描间隔。定时时间不能太长,否则影响对键盘输入响应的及时性。中断控制方式:利用外部中断源,响应键盘输入信号。特点:能及时处理键盘输入,又能提高CPU运行效率要占用一个中断资源。独立式未编码键盘接口独立式键盘:各按键相互独立地接通一条输入数据线。查询方式:输入线平时为高电平;若有任意键按下时,输入线为低电平。优点:电路、编程简单缺点:按键较多时,占用较多I/O口线。K0K1K2例、用查询方式编写独立式按键程序#includereg51.hunsignedcharkey_value;voidmain(void){P1=P1|0x07; //设置为输入状态 while(1){key_value=P10x07; //读的状态 switch(key_value) { case0x06:…;break; //K0按下 case0x05:…;break; //K1按下 case0x03:…;break; //K2按下default:;break; }}}行列式未编码键盘原理未编码4*4行列式键盘行列式键盘列扫描查询原理行列式键盘列扫描查询原理先判别按键所在的行:由P2口输出列扫描字0x0F,然后读行线状态到变量temp1中。如果有按键按下,则行输入不全为1,即不等于0x0F;如果无按键按下,则行输入全为1,即等于0x0F。再判别按键所在的列:由P2口输出行扫描字0xF0,然后读列线状态到变量temp2中。将temp1和temp2的状态相或得到按键的编码,从而知道按键的值。#includereg52.hvoidmDelay(unsignedintDelay);sbitLED_CS=P1^4;//延时子程序:由Delay参数决定延时时间voidmDelay(unsignedintDelay){unsignedinti;for(;Delay0;Delay--){for(i=0;i114;i++){;}}}//按键扫描子程序,有键按下,返回键值00-15;无键按下,返回0xff。unsignedcharMatrix_key(){unsignedcharkey,temp1,temp2;key=0xff; //初始化键值P2=0x0f; //输出列扫描字if((P20x0F)!=0x0f) //读行线状态,判断是否有键按下{ mDelay(10); //延时消抖 P2=0x0f; //输出列扫描字temp1=P20x0f;//读行线状态到temp1中if(temp1!=0x0f) //有键按下{P2=0xf0; //输出行扫描字temp2=P20x

文档评论(0)

yingjiali1998 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档