单片机/MCUwilliam hill官网
直播中

王世通

12年用户 24经验值
擅长:EDA/IC/PCB设计
私信 关注
[文章]

谁能帮我修改一下程序

if (h    {
      led1=1;    //电机启动抽水指示灯
      beep=1;     //蜂鸣器启动报警
      led2=1;          //报警指示灯
      Delay400Ms;     
    }
    else if (h>max)  //水位超出最大值40cm
  {
      beep=1;   //蜂鸣器启动报警
      led2=1;    //报警指示灯
      led1=0;
  }
  else
     beep=0;       //蜂鸣器断开
     led1=0;      //电机启动抽水指示灯
这是我写的一个判断水位的程序 编译通过了 仿真的时候  当 水位小于10CM的时候功能都能实现  但是当水位大于40(或着是介于10~40)CM 时候 led1是一直在亮着 不会改变状态  有一个是蜂鸣器响的时候就只响一下而已 我想要蜂鸣器报警时一直响的  新手求大家帮助一下啊 谢谢了

回帖(5)

张三

2012-11-16 09:02:25
程序的逻辑关系不对,led1=0;      //电机启动抽水指示灯,最后一句LED1一直亮着就没关闭,还有蜂鸣器不是给个高电平或者低电平就会一直响,需要不间断的给高低电平才会不断的发出蜂鸣声音
举报

1653384077.075000

2012-11-16 11:06:13
引用: lovezjf234 发表于 2012-11-16 09:02
程序的逻辑关系不对,led1=0;      //电机启动抽水指示灯,最后一句LED1一直亮着就没关闭,还有蜂鸣器不是 ...

楼主正确.....要是无源蜂鸣器的话,确实需要方波来驱动........有源的 电流就可以直接驱动。。。

检查一下,最后那个else 是不是少了一个大括号。。。。。

要是还不行的话,建议你把你要实现的功能清楚的叙述出来,然后大家帮你瞧瞧。。
举报

王世通

2012-11-16 18:23:09
引用: yatoo 发表于 2012-11-16 11:06
楼主正确.....要是无源蜂鸣器的话,确实需要方波来驱动........有源的 电流就可以直接驱动。。。

检查一 ...

我所做的设计是自动控制水位    用一个传感器检测水位的高低  当检测到水位小于10CM的时候报警指示灯亮蜂鸣器一直响 抽水指示灯亮  当水介于10~40CM时报警指示灯跟抽水指示灯灭 蜂鸣器没有响 当水位大于40CM时报警指示灯又亮了蜂鸣器响 就是这样
举报

1653384077.075000

2012-11-16 20:06:35
引用: 酱油一号 发表于 2012-11-16 18:23
我所做的设计是自动控制水位    用一个传感器检测水位的高低  当检测到水位小于10CM的时候报警指示灯亮蜂 ...

那你的程序问题就不大,还是觉得最后应该加上一个大括号

/****************
    水位h,
    h<10cm:指示灯报警,蜂鸣器报警,抽水指示灯亮
    10     h>40cm: 指示灯报警,蜂鸣器报警,
   *******************/

    if (h    {
      led1=1;    //电机启动抽水指示灯
      beep=1;     //蜂鸣器启动报警
      led2=1;          //报警指示灯
      Delay400Ms;     
    }
    else if (h>max)  //水位超出最大值40cm
  {
      beep=1;   //蜂鸣器启动报警
      led2=1;    //报警指示灯
      led1=0;
  }
  else
  {
     beep=0;       //蜂鸣器断开
     led2=0;    //报警指示灯
     led1=0;      //电机启动抽水指示灯
  }

你所说的问题:
1、h在10 和 40之间时候LED1一直亮,因为你忽略了最后那个大括号所致,加上以后应该可以解决问题了.......
2、蜂鸣器的问题:建议首先判断是否为有源蜂鸣器,(直接给蜂鸣器加电,若一直响则为有源,否则为无源),要是为有源蜂鸣器的话,以上程序没有问题.....要是为无源蜂鸣器的话,需要输出一定频率的方波来驱动。。。。当时我是打开定时器,让定时器产生pwm,来驱动蜂鸣器,你可以参考下......

举报

王世通

2012-11-18 22:23:51
引用: yatoo 发表于 2012-11-16 20:06
那你的程序问题就不大,还是觉得最后应该加上一个大括号

/****************

谢谢了    我搞定了   就是程序少了一个括号{:soso_e113:}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分