51单片机求助

[复制链接]
3924|22
 楼主| yangyang1 发表于 2013-8-19 00:02 | 显示全部楼层 |阅读模式
小弟现在编一程序,给单片机输入一信号,该信号是高低电平变化的,当检测到该信号稳定到低电平时 输出一个控制信号 ;现在迷惑的是怎么检测稳定信号的到来啊??万分感谢阿
ayb_ice 发表于 2013-8-19 08:09 | 显示全部楼层
那你需要定义什么叫稳定低电平,连续一段时间?时间多少?
 楼主| yangyang1 发表于 2013-8-19 08:47 | 显示全部楼层
ayb_ice 发表于 2013-8-19 08:09
那你需要定义什么叫稳定低电平,连续一段时间?时间多少?

是这个意思,就是说一个开关,接到单片机上, 开关接到地上,这个开关会不停的开合,这个时候单片机不会做什么,直到它接地稳定一段时间,单片机就会发出控制信号,我该怎么做啊 谢谢啊
南宫云明 发表于 2013-8-19 08:53 | 显示全部楼层
定义一个全局变量或者静态变量count=0

开个定时器,检测IO口信号,如果为1,则count++,如果为0,则count=0

如果count大于某个值(根据稳定时间计算),就认为IO口在这一段时间内是稳定的,你就发出控制信号。


 楼主| yangyang1 发表于 2013-8-19 09:04 | 显示全部楼层
南宫云明 发表于 2013-8-19 08:53
定义一个全局变量或者静态变量count=0

开个定时器,检测IO口信号,如果为1,则count++,如果为0,则count=0 ...

谢谢啊 真是太感谢了
原野之狼 发表于 2013-8-19 09:09 | 显示全部楼层
这不就是键盘扫描的思路么
airwill 发表于 2013-8-19 09:11 | 显示全部楼层
4楼的方法是最常用的. 还可以有很多灵活的变化.
高低电平的加权计算, 有效触发处理等
tong1991海深 发表于 2013-8-19 09:41 | 显示全部楼层
南宫云明 发表于 2013-8-19 08:53
定义一个全局变量或者静态变量count=0

开个定时器,检测IO口信号,如果为1,则count++,如果为0,则count=0 ...

不错
xiaox314 发表于 2013-8-19 09:56 | 显示全部楼层
 楼主| yangyang1 发表于 2013-8-19 12:01 | 显示全部楼层
yangyang1 发表于 2013-8-19 09:04
谢谢啊 真是太感谢了

还是有点不明白啊 是在定时器中检测么 假如稳定时间是10s  就发出控制信号  是定时器定10S么
 楼主| yangyang1 发表于 2013-8-19 12:02 | 显示全部楼层
airwill 发表于 2013-8-19 09:11
4楼的方法是最常用的. 还可以有很多灵活的变化.
高低电平的加权计算, 有效触发处理等 ...

能说点具体点么 有点着急 谢谢
airwill 发表于 2013-8-19 12:07 | 显示全部楼层
可以在定时器里检测
草民 发表于 2013-8-19 12:36 | 显示全部楼层
小弟献丑一下,抛砖引玉。
定时器时基部分没写。

bit DelaFlag;        //标记位
unsigned int count;  //计数值
//------------------------------
//处理函数
{   
    if(IO口 == 0)
    {
        DelaFlag=1;
        if(count>10S计数值)
          { 处理任务; }
      }
     else
     {DekaFlag = 0;}
}
//-----------------------------
//定时器函数
{
    //省去定时器处理部分
    if(DelaFlag)
    {
         count++;
    }
    else
        count = 0;
}
 楼主| yangyang1 发表于 2013-8-19 12:36 | 显示全部楼层
airwill 发表于 2013-8-19 12:07
可以在定时器里检测

这个时间怎么定时,怎么确定10S 的到来???谢谢啊  这个能精确吗
 楼主| yangyang1 发表于 2013-8-19 12:38 | 显示全部楼层
草民 发表于 2013-8-19 12:36
小弟献丑一下,抛砖引玉。
定时器时基部分没写。

膜拜一下,谢谢了啊 我试试
草民 发表于 2013-8-19 12:39 | 显示全部楼层
yangyang1 发表于 2013-8-19 12:36
这个时间怎么定时,怎么确定10S 的到来???谢谢啊  这个能精确吗

时间你自己按照定时器使用方法设置啊,上面代码供参考一下。
linfeng24 发表于 2013-8-19 12:53 | 显示全部楼层
同意四楼。如果定时器不够用的话,那么就用延时咯。。。按键扫描的办法
新光科技 发表于 2013-8-19 15:05 | 显示全部楼层
建议LZ拿出课本翻开定时\计数器一章,复习一下,其实很简单的.....
tergy2012 发表于 2013-8-19 16:00 | 显示全部楼层
路过学习的
79xiaozaizai 发表于 2013-8-19 16:23 | 显示全部楼层
用按键去抖的思路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部