谁能帮我修改一下程序
{
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,来驱动蜂鸣器,你可以参考下......
谢谢了 我搞定了 就是程序少了一个括号