找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4950|回复: 6
打印 上一主题 下一主题
收起左侧

单片机外部中断计数时消除抖动的方法 很好用

[复制链接]
跳转到指定楼层
楼主
马达上转一圈会压到限位开关然后发一个+12的电压,我用7805接的取一个5V电压用来连单片机,听说这样的话共地会有影响有干扰然后我又加了个光藕,现在开关抖动的问题搞了半天也没搞好都是用延时的教程但用延时又影响CPU和其它事件的执行,偶然发现大神们有用电容来做硬件延时的我也照着弄了一个简直太好了,发来给大家看下。

一个12V的东东怎么和5V的单片机简单相连呢我的这种方法可以吗?或者有其它什么更好的方法吗?希望大神们帮我一下。还有虽然用了电容可是程序里还得写延时虽然时间很短,要是不写延时的话有机率会出现该亮不亮,不亮又亮的情况,怎么才能避免呢?

电路原理图如下:


单片机源程序如下:
  1. #include<reg52.h>
  2. sbit LED=P1^0; //定义LED端口

  3. void DelayUs2x(unsigned char t);//us级延时函数声明
  4. void DelayMs(unsigned char t); //ms级延时

  5. main()
  6. {
  7.   LED=0;         //LED灯点亮
  8.   EA=1;          //全局中断开
  9.   EX1=1;         //外部中断1开
  10.   IT1=1;         //IT1=1表示边沿触发
  11.   while(1)
  12.   {
  13.                  
  14.   }
  15. }


  16. void ISR_INT1(void) interrupt 2
  17. {

  18. if(!INT1)
  19.    {
  20.    DelayMs(20);//在此处可以添加去抖动程序,防止按键抖动造成错误
  21.    if(!INT1)
  22.    //while(!INT1);//等待按键释放
  23.      {
  24.      LED=!LED;   
  25.      }
  26.    }
  27. }


  28. void DelayUs2x(unsigned char t)
  29. {   
  30. while(--t);
  31. }

  32. void DelayMs(unsigned char t)
  33. {
  34.      
  35. while(t--)
  36. {
  37.      //大致延时1mS
  38.      DelayUs2x(245);
  39.          DelayUs2x(245);
  40. }
  41. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:452950 发表于 2021-3-20 21:37 | 只看该作者
可以用继电器控制12V的电机

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:718523 发表于 2021-3-20 21:51 | 只看该作者
xxpp2011 发表于 2021-3-20 21:37
可以用继电器控制12V的电机

12V的电机要返回信号的,控制我就用继电器,返回信号的过程弄不好了
回复

使用道具 举报

地板
ID:390416 发表于 2021-3-20 23:04 | 只看该作者
你可以参考 框架式编程方式 学会少用死等延迟
回复

使用道具 举报

5#
ID:68800 发表于 2021-3-20 23:06 | 只看该作者
限位开关输出out直接接光耦,中间串电阻限流,在光耦两端加电容滤波消抖

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:68800 发表于 2021-3-20 23:12 | 只看该作者
如果一定要延时消抖,可以使用定时器延时。外部中断进去启动定时器,定时时间到了以后再检测电压。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:213173 发表于 2021-3-21 08:02 | 只看该作者
机械开关肯定会有抖动问题,用硬件或软件滤波对于低速或对响应速度要求不高的场合没有什么问题。否则得用光电或霍尔较佳。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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