接前两集,这集我们实现用按键控制led灯的亮灭。首先,仍旧是分析硬件电路原理图:
四个按键,分别接到了单片机io口的p3.2-p3.5,从原理图分析,按键按下时,io口与gnd相连,此时io接收到的是低电平信号。因此,我们的按键是低电平有效。当然,这种设计也与51单片机io内部结构中的弱上拉电阻有关。
那么可以编写程序,接口宏定义和延时函数定义
#include sbit key0=p3^2;//定义按键引脚sbit led0=p1^0;void delay_ms(unsigned int nms){ unsigned char cnt=125; unsigned char i,j; for (i=0;i< nms;i++) for(j=0;j< cnt;j++);}//这里我们经验值给定是125个for循环为1ms主函数编写
void main(){ while(1) { if(key0==0)//检测低电平,也就是按键是否按下 { delay_ms(10);//消抖延时 if(key0==0) { led0=~led0; while(!key0);//确保松开了按键,防误触 } } }}肯定有小伙伴们好奇,为什么要两次确认按键按下,而且中间还有10ms的延时程序。这是因为按键按下的过程并不是我们以为的完美的信号:
而是有着抖动边沿的信号
这些毛刺就会影响按键的识别精确度。而通常我们人手按下一次低电平能够维持25ms以上,所以我们先通过延时过渡前面从高电平转低电平的时间,尽可能地直接进入到低电平这一稳定的环节,所以采取经验值5-15ms的消抖延时。
除了这种软件上的消抖,还有硬件消抖的办法,在按键两端并联电容,借助电容的充放电过程,消耗掉抖动的那部分电信号,缺点是大批量生产时考虑电容的成本。
小米官方开始预热小米6!小米6搭载双摄板上钉钉
蓝牙的技术有哪些特点?
未来“人脸门禁”将会颠覆“二维码门禁”吗
移动蜂窝通信从 1G 向 5G 演进,并可以提供宽带互联网接入?
海信电视发布史上最强MiniLED电视:分区数达4万,10000尼特
使用51单片机实现按键控制LED灯的亮灭
华为是解决快速充电中涉及的热失控问题的?
成就音质车空间,马自达阿特兹改装芬朗汽车音响
一个公司六个部门如何设置ip地址,划分子网?
独家!小米100%环绕屏专利被曝光
以五大发展理念为指引,加快构建城市能源互联网
英伟达能否在AI芯片领域脱颖而出
GaN的晶体结构及射频应用
变频器滤波电容引起的一个问题
华为将于7月29日召开旗舰新品发布会
esp8266加入到c51单片机单通道程序的编写
小米6、华为P10、一加5、魅族pro7、努比亚Z17区别对比评测,旗舰机大较量哪家强?
如何把KUKA-C4的通过网络备份到PC上?
三星A70s炫目红高清图集
小米下定决心,全面整治MIUI广告!