历史上的今天
今天是:2024年09月20日(星期五)
2019年09月20日 | 51单片机学习笔记(二)
2019-09-20 来源:eefocus
按照教材,昨天学到了检测按键的程序,也很明确昨天学那个程序难登大雅之堂,因为它没有实现按键在闭合和开关时的电压信号抖动。
如图示,键按下试产生多个抖动的波形,也就是产生了多个101010,而我们实际中只是两个状态只是1,或只是0。所以收集了干扰信号。于是就有今天我学的“去抖动程序”
去抖原理:收到第一个低电平信号(按下的信号)后,开始延迟再次收集信号,再确认是否低电平(一直被按下)这时收集的信息就来自抖动波形图的中间部分,所以只要这个时间段是低电平,按键就肯定被按下了,不会再有抖动。这时就跳到指令检测这个按键引脚什么时候变为高电平(表示释放按键),不断循环检测,直至按键被释放。检测到释放信号后,就有cpl指令修改相应led灯的开关状态。所以这个程序通过 延时和 检测到按键被释放后才控制led灯的亮灭 而实现了去抖的功能。准确地实现按一下就真正等于单片机收集到一个信号而不是多个抖动的信号。
需要提一下的是如果没有 检测到按键被释放后才控制led灯的亮灭 的指令的话(27--33行指令),而只有延时,经实验证明,是无法实现去抖的。因为这样在波形中间时段就已经不断控制led的亮灭,而那么长的波段,led不断闪烁,当按键释放的时候,led是亮还是灭,就听天由命了。。。
无检测到按键被释放后才控制led灯的亮灭 指令程序如下:
ORG 0000H
SJMP START
ORG 0030H
START:
MOV SP,#060H
MOV P0,#0FFH
MOV P2,#0FFH
MAIN:
JNB P0.0,QUEREN
JNB P0.7,QUEREN2
SJMP MAIN
QUEREN:
CALL DELAY
JNB P0.0,SHIFANG
SJMP MAIN
QUEREN2:
CALL DELAY
JNB P0.7,SHIFANG2
SJMP MAIN
SHIFANG:
WAIT: JB P0.0,LED0
SJMP WAIT
SHIFANG2:
WAIT2: JB P0.7,LED7
SJMP WAIT2
LED0:
CPL P2.0
SJMP MAIN
LED7:
CPL P2.7
SJMP MAIN
DELAY:
MOV R0,#25
D1: MOV R1,#100
D2: DJNZ R1,D2
DJNZ R0,D1
RET
END
这个程序虽然有缺陷,但很值得分析 。。
上一篇:51单片机学习笔记(三)
下一篇:实现位变量反转功能
史海拾趣
|
哈哈,抽时间写了一个博客,说说自己学习dsp2812的体会,欢迎大家共同探讨哦~~~ https://home.eeworld.com.cn/my/space.php?uid=117818&do=blog&id=22384&cid=1945… 查看全部问答> |
|
USB作为一种新型的接口技术以其简单易用速度快等特点而备受青睐本文简单介绍USB 接口的特点和PHILIPS 公司的USB 接口芯片PDIUSBD12 并详细说明USB 软硬件开发过程中 应注意的问题… 查看全部问答> |
|
尚为科技-机房环境监控专家,机房环境监控产品专业厂商,产品具有稳定、易用、低功耗的特点,产品经过了权威部门的测试,已形成较完整的产品系列和行业解决方案,获得良好的用户口碑。 欢迎来电垂询,电话:0592-5204071 6300605 6300607 ...… 查看全部问答> |
|
我用台式机跟研华6552的工控板 wince系统 通过双机互联线连接 台式机ip是192.168.0.12 工控机是192.168.0.192 从台式机上ping 工控机没有问题 但是ActiveSync一直连接不上 ActiveSync图标一直是灰色的 … 查看全部问答> |
|
现在在调TELECHIPS中的TCC7901芯片板子,TCC7901有6个PORT,但只有4个通道,我老板要我把2。2的BSP中的4个通道都用上,但2。2的BSP默认是把CH0和CH2分别用在了调试和IRda中,所以只有两个串口可用,我的任务就是改CH0和CH2为可用,请问一下有没有调 ...… 查看全部问答> |
|
今天有空,开贴讲讲,怎样配合ST提供的库函数理解STM32F102/103的USB模块,以及怎么调用这些库函数来实现基本的USB通信。 题目很大,先只讲讲最简单的应用。… 查看全部问答> |




