基于51单片机的独立按键设计

电子说

1.3w人已加入

描述

 

导语:

单片机在运用到实际的产品中,不仅仅只使用IO输出去控制,更多的时候,我们需要收到一些信号,比如数字信号,模拟量信号等。

按键作为一种人机交互的方式,被广泛的应用在各个工业控制领域。

通过单片机的轮询来检测按键的电平变化,实现相应的功能。独立按键通过独占IO,简化程序的设计,但与此对于的是需要占用IO,比较浪费IO,所以可以通过分时片选复用的方式实现8个IO使用16个按键,本节介绍单个IO的输入。

51单片机

 

 

轻触开关

俗称按键,常开型,按下后会自动弹起,恢复到断开状态。机械开关都伴随着抖动,由于金属触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动。

 

51单片机

 

常见的解决方法有硬件威廉希尔官方网站 解决,RS触发器,电容等方法。但与之对应的是成本的上升与威廉希尔官方网站 的复杂性上升。

平时更常见的有软件上的算法,如延时等待按键抖动结束,但会导致程序运行的实时性降低。

 

51单片机上电后,除P0端口外,其余默认为高电平,单片机内部自带上拉电阻把电平拉高。在传统8051中,并不能设置单片机IO的输入输出模式。通过编写按键程序,识别电平从高到低的过程,从而实现交互。

 

在程序编写中,需要实现检测IO电平是否为低,同时需要实现

  1. 自锁,按键按下一次只运行一次任务,当按键松开后,才能按下下一次实现功能,不然一直执行功能。不要去实现长按功能。
  2. 消抖,按下后不稳定的电平变化会影响程序,通过延时去屏蔽掉这段时间。
  • if(Key0 == 0) 

     delay(20); 
     if(Key0 == 0) 
     { 
         // 功能代码; 
         while(key0 == 0); 
     } 
    }

按键的抖动时间跟按下力度,本身属性有关,抖动时间不定,通常取经验值20ms。

独立按键较为简单,独立按键和矩阵按键本质上都是通过单片机的轮询来检测IO电平。

 

  审核编辑:汤梓红

 

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分