历史上的今天
今天是:2025年03月29日(星期六)
2020年03月29日 | 单片机小白学习之路(八)---独立按键
2020-03-29 来源:eefocus
目标:独立按键取反一个led灯
按键是一种电子开关,使用时轻轻按下开关按钮就可使开关接通,当松开手时,开关断开。没按是高电平,按下就变低电平

按键
按键一开始有两种状态: 初始不导通,初始导通。当按键按下本来不导通的导通,本来导通的变不导通。这4根线可以看成两组,作为两个端口
比如按键导通的连个电视,按键按下就不导通就实现关闭功能。
这是按键按下的电平变化,上面是理想的,但往往现实和理想的丰满不同,下面的图体现了现实的骨感

现实
既然现实骨感,我们就要让它变理想,变理想的方式有两种:软件消抖,硬件消抖
硬件消抖:

硬件消抖
假如按下了,B处是低电平,那么5处是低,74LS00是与非门,所以有个0就是0,6处是0取反变1,到2处是1,而1本来就是1,所以输出是0,实现了消抖。原来就1(A),输出就1
如果你按键不多,还追求实时性的化,比如工业上的就用硬件消抖,我还是推荐大家用软件消抖,可以节省材料,还会减少不必要的麻烦
按键模块:

按键模块
4根线,作为2个端口,每个按键一个端口并联到地,另一个引出来,按键按下接地导通实现关闭。
代码:

keyless函数是软件消抖,if(k1==0)是为了判断按键是否按下,按下进入if语句,延迟1ms,再来判断下k1,其实那个延迟就实现了消抖,就是把抖动的部分跳过,第二个if满足则led取反。
while(!k)是k=0条件满足则一直在那循环,k是高电平就跳出,用于检测按键是否松开,松开就高电平跳出,这个函数就执行完了。这个函数还是有缺陷的,如果你一直按着不放那么那么cpu一直在那循环耗资源,下篇会讲到怎么改进哟
史海拾趣
|
ENH038QD1-450/650 尺寸大小: 3.8" 分辨率: QVGA 320 x 240 接口: 6-bits TTL interface 亮度 : 450/650nit(cd/m2) 对比度:高对比度、大开口率 显示模式:Normally White 响应时间:Rise 30ms/ Fall 50ms 功耗:3.4W 工作温度: -30℃--- ...… 查看全部问答> |
|
EMS 2009 Call for Papers: Sept. 20-22, 2009, Beijing, China ====================================================================== The 3rd Int’l Conference on Engineering Management and Service Sciences (EMS 2009) CALL FOR PAP ...… 查看全部问答> |
|
我们刚创建的wince家园,想让所有玩wince的人变成朋友。 logo都没来得及做。想先看看坛子上面兄弟的看法。 目的是想找同道之人共同参与,共同出出好点子,让我们搞wince的变成一个强大的同盟。 试运行网站 http://www.armce.cn/ 嘿嘿~~~ 预祝xd ...… 查看全部问答> |
|
在EVC下用win32方式编程. 功能是从strong1盘的所有数据全部copy到strong2\\\\file1下面. 怎么样用C写代码让copy动作最高效地执行?… 查看全部问答> |
|
应一位朋友要求,找PID的VB6算法,实际要求是:一个管道往容器里注入东西,要通过PID来调整注入速度,以便在指定时间内,注入的东西重量在指定范围内。 手头上有一个PID的VB6版DEMO,但不明白。请高人指点。 银两可以谈。… 查看全部问答> |
|
平台:arm开发板,用spi总线外接1个fir红外芯片,s3c2440 + linux2.6.24.7 现在2440这边已经做好了,insmod bitbang.ko,s3c24xx.ko,insmod spidev.ko,用testspi,用示波器可以测到时钟和数据的波形都是对的,但不知道如何读写fir的寄存器?以前都 ...… 查看全部问答> |




