矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: Fireflying

【求助】学习单片机C语言编程,头文件的困惑,以及消除按键抖动

[复制链接]
     
发表于 2020-12-29 14:20:36 | 显示全部楼层
本帖最后由 isoimg2130 于 2020-12-29 14:24 编辑

  楼上的程序比起以下这种方式肯定强了不止一点:
  按键函数(void)
  {
      如果按键等于0
      {
        延时10毫秒;
        如果按键还是等于0
        {
           触发按键;
           等待按键松手;
        }
      }
  }
说下这种按键函数的问题。
如果按键按下,其他函数都在等那10毫秒延时,比如:有些不是用定时器扫描数码管的程序数码管就灭了。或者显示乱码,或者闪一下。这要是做个产品试问谁要?
不光数码管,再比如有个示波器,按了下按键,结果10毫秒延时,那波形就断了10毫秒,这示波器谁要?等等东西同理就不一一举例了。。

再说那个等待按键松手。我看别人写的都是while(按键==1)这样,问题在于一旦按键卡住或者坏了,从此程序就卡在等待按键等于1那了,相当于死机了。

上面的按键程序只是一种,还有其他多种方式,比如:扫描io状态,以返回值形式返回按键是双击,长按,组合状态等等,还有矩阵方式就不一一举例了。
总而言之,像网上这种按键程序是千万不能用的,自己弄来玩玩要求不高是可以的。搞成产品的话就是坑自己。坑客户了。
回复 支持 反对

使用道具 举报

     
发表于 2020-12-30 15:28:15 | 显示全部楼层
reg51不是stc89XX51  52的头吗?
你用的不是51 52,应该包含下边的。
赞同下建议,能用硬件消抖,就不用软件,软件做实验可以,实际使用问题太多,最起码会耽误你主线程的任务流。
如果对及时性有要求,那果断上中断,如果中断太少,可以用电阻分压法,共享中断,不过得需要单片机支持adc吧。
回复 支持 反对

使用道具 举报

     
发表于 2020-12-30 16:24:10 | 显示全部楼层
膜拜大神!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-30 22:18:05 | 显示全部楼层
iffi123 发表于 2020-12-29 13:54
突然对一个电阻电容较起真来,你设计多密的电路板,连2个元件都放不下,呵呵

刚才在按键两端并联一个0.1uF电容器,结果不起作用,反而按键失灵了,可能容量不合适,也或者需要电阻配合,再或者需要把P1.0切换到高阻输入再配合电阻器实现,暂时没有深入测试了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-30 22:20:10 | 显示全部楼层
isoimg2130 发表于 2020-12-29 14:20
楼上的程序比起以下这种方式肯定强了不止一点:
  按键函数(void)
  {

用您提供的程序立马生效,效果非常好!
我才刚开始学习,有些函数的用法还有点生疏,待我把相关函数的拼写格式和含义学明白之后,再来反刍这段代码。再次致谢!
回复 支持 反对

使用道具 举报

     
发表于 2020-12-30 22:20:27 | 显示全部楼层
Fireflying 发表于 2020-12-30 22:18
刚才在按键两端并联一个0.1uF电容器,结果不起作用,反而按键失灵了,可能容量不合适,也或者需要电阻配 ...


直接并电容是不行,放电太快起不到作用
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-31 08:09:01 来自手机 | 显示全部楼层
iffi123 发表于 2020-12-30 22:20
直接并电容是不行,放电太快起不到作用


电容器上串联了100欧电阻再并联到按键开关两端也还是不管用。
回复 支持 反对

使用道具 举报

     
发表于 2020-12-31 09:58:19 | 显示全部楼层
本帖最后由 iffi123 于 2020-12-31 10:02 编辑
Fireflying 发表于 2020-12-31 08:09
电容器上串联了100欧电阻再并联到按键开关两端也还是不管用。



参考一下,RC参数不严格,图上时间常数几ms
defalue.JPG
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-12-31 10:13:15 | 显示全部楼层
iffi123 发表于 2020-12-31 09:58
参考一下,RC参数不严格,图上时间常数几ms

收到,感谢!后面找时间试试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-8 09:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表