《KEY(按键)应用》大全.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《KEY(按键)应用》大全

《KEY(按键)应用》大全技术类别:单片机需要确认注册邮箱后才能下载,立即确认我的邮箱?设计中你是否遇到过这样的问题:你的产品上要求有几十个按键,处理器IO口很少,PCB的面积又有严格限制,或者你要严格控制成本,无法使用象7219那样的扩展芯片,怎么解决这个问题?下面有个方法,大家都见过遥控器吧,上面不但有几十个按键,而且功能还挺多什么去抖动,同时按键处理都有了,最最重要的是控制芯片体积小,价格便宜(也就1,2块钱),外围器件少。。不过具体实现起来有点小麻烦,这类芯片的信号一般是PPM输出的,通常为了有更远的遥控距离,按键编码调制在一个38k左右的载波上。所以我们不得不再为这个方案多花上1块钱,加一个有烂运放做的低通滤波器,将载波滤除后在接到单片机的IO脚上,由于两个频率相差较多,这个滤波器并不难做。我使用LM324做的。其中有两级低通,一个比较器。当你的示波器上出现一串可爱的几百赫兹的方波时,你的硬件就成功啦。既然只用一条IO就扩展了几十个按键,软件上自然会多费些事,此类芯片发码都是有引导头,同步部分,用户码,键码等部分组成,有三十多个位,具体可参照sc6121资料。下面时一个完整的接收程序,针对的芯片是sc6121,处理器89c51////////////////////////////////////////////////////////////////////////////////*定时器1中断服务程序*//*每100us中断一次,定时检测HangSignal线上的电平状态,根据6121的砝码格式译出用户码键码.\\ib_KeyCode[0] 用户码低位,ib_KeyCode[1]用户码高位,ib_KeyCode[2]键码,ib_KeyCode[3]键码的反码*//////////////////////////////////////////////////////////////////////////////////////void HandIn()??interrupt 3 using 3 {? ?unsigned char tempbit=0;? ?bit Hbit;? ?Hbit=HandSignal;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???/*采样信号线*/? ?if (NewKey==FALSE){? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???/*如果上一次按键事件已经北处理*/switch (ib_HandState){? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*根据接收状态散转*/? ?case LEAD:? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/*引导头接收情况*/? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?if (Hbit){? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*如果信号线是高电平*/??? ?? ?? ?? ?? ???if ((ib_LowTimeMIN_LeadTime)(ib_LowTimeMAX_LeadTime)) /*判断低电平时间是否合乎要求*/? ?? ?ib_HandState=START;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*正确进入同步头接收状态*/? ?? ?? ?? ?? ???else ib_HandState=RESTART;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???/*否则复位接收程序*/? ?? ???ib_LowTime=0;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*清除低电平时间计数*/? ?}? ?else{? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*如果信号是低电平*/??? ???ib_LowTime++;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?/*增加低电平时间计数器*/if (ib_LowTimeMAX_LeadTime)? ?? ?? ?? ?? ?? ?? ?? ?/*判断低电平时间是否超时*/? ?? ?? ?? ?? ???ib_HandState=RESTART;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /*是的话复位接收程序*/? ?}? ?? ?? ?? ?

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档