单片机按键程序编写.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于一个由单片机为核心构成的系统而言,输入通道是相当重要的,可以看到几乎每一样基 于单片机的产品都有人机交互的部分。如各种仪器设备上的各种按钮和开关,以及我们手机 上的键盘,MP3 上的按键等等。最常见的输入部分,莫非就是按键了。对于大多数初学者而 言,编写一个好的按键程序是一件颇为头疼的事情。于是乎在网上乱搜一气,程序倒是找到 了不少,但是看了半天依然是不明白。或者在某某论坛上面发帖“跪求 XX 按键程序,大虾 帮忙……”如果你偶然间进了这个论坛,又偶然看到了这个帖子,而且恰好你对按键程序的 写法也不是很清楚,那么我希望你能够静静的看完这个帖子。如果你觉得对你很有帮助,那 么我希望你能够在以后的日子中能够坚持到这个论坛来,一起交流学习,分享自己学习过程 中的喜悦或者一起探讨棘手的问题,这是我写这个帖子的最大的初衷了。OK,不能再说了, 再说就变成水帖了。那么我们开始吧。 按键的种类很多。不过原理基本相似。下面我们以一种轻触开关为例讲 解按键程序的写法。 这种轻触开关大家不陌生吧^_^ 一般情况下,按键与单片机的连接如下面这幅图所示。 (图中电阻值一般去 4.7k~10k 之间,对于内部端口有上拉电阻的单片机则可省略此电阻) 单片机对于按键的按下与否则是通过检测相应引脚上的电平来实现的。对于上图而言,当 P17 引脚上面的电平为低时,则表示按键已经按下。反之,则表明按键没有按下。我们在程 序中只要检测到了 P17引脚上面的电平为低了,就可以判断按键按下。呵呵,简单吧。等会, 您先别乐呵,话还没说完呢。下面我们来看看,当按键按下时,P17 引脚上面的波形是怎么 变化的。 上图是一个理想波形图,当按键按下时,P17 口的电平马上被拉低到 0V 了。当然理想的东 西都是不现实的。所以我们还是看看现实的波形图吧。 看出什么区别来了没。呵呵,只要你不是傻子我相信都能看出其中的区别。由于按键的机械 特性。当按键闭合时,并不能马上保存良好的接触,而是来回弹跳。这个时间很短,我们的 手根本感觉不出来。但是对于一秒钟执行百万条指令的单片机而言,这个时间是相当的长了。 那么在这段抖动的时间内,单片机可能读到多次高低电平的变化。如果不加任何处理的话, 就会认为已经按下,或者松开很多次了。 而事实上,我们的手一直按在按键上, 并没有重复按动很多次。要想能够正确 的判断按键是否按下就要避开这段抖动 的时间。根据一般按键的机械特点,以 及按键的新旧程度等而言,这段抖动的 时间一般在 5MS~20MS 之间。 看到这里你明白了该如何做了吧。 看看下面的这个流程图,你应该不 陌生吧。

文档评论(0)

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

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

1亿VIP精品文档

相关文档