微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 谁能帮我修改一下程序

谁能帮我修改一下程序

时间:10-02 整理:3721RD 点击:
if (h<min)     //水位小于最小值10cm
   {
      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是一直在亮着 不会改变状态  有一个是蜂鸣器响的时候就只响一下而已 我想要蜂鸣器报警时一直响的  新手求大家帮助一下啊 谢谢了

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

小编正确.....要是无源蜂鸣器的话,确实需要方波来驱动.有源的 电流就可以直接驱动。
检查一下,最后那个else 是不是少了一个大括号。
要是还不行的话,建议你把你要实现的功能清楚的叙述出来,然后大家帮你瞧瞧。

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

那你的程序问题就不大,还是觉得最后应该加上一个大括号
/****************
    水位h,
    h<10cm:指示灯报警,蜂鸣器报警,抽水指示灯亮
    10<h<40 cm:无报警现象
    h>40cm: 指示灯报警,蜂鸣器报警,
   *******************/
    if (h<min)     //水位小于最小值10cm
   {
      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,来驱动蜂鸣器,你可以参考下......

谢谢了    我搞定了   就是程序少了一个括号

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top