自己制作的简单温度传感器,温度可以正常显示,但是在设置报警电路时,已经输入了温度的上下限,但是喇叭却一直响,没有停下来
喇叭的设置程序为:
void sound()
{
int n=100;
while(n--)
{
beep=~beep;
delay_ms(100);
}
}
void baojing()
{
if(temp>30.00||temp<10.00)
{
sound();
}
}
在while(1)的设置为
while(1)
{ LCD_write_english_string(0,0,"t:");
// if(RunStatus)
{
tdata=MemRead(SlaveAddress,command); //Read memory
temp=tdata*2-27315;
for(i=10000;i>0;i=i/10)
{
j=temp/i;
LCD_write_char(j+'0');
temp=temp-i*j;
if(i=100)
LCD_write_char('.');
}
baojing();
LCD_write_char(temp+'^');
LCD_write_char('C');
delay_ms(500);
}
if(temp>30.00||temp<10.00)
{
print("temp = %f",temp);
sound();
}
确认下报警时温度值是否是需要报警的值来排除数据问题。
void sound()
{
int n=100;
while(n--)
{
beep=~beep;
delay_ms(100);
}
}
你这个代码大概报警会响10秒 100次*100毫秒 会不会是报警间隔导致上次的报警一直没取消
其次没在你这个代码上看到关闭报警的地方,
beep=~beep; 应该是将控制寄存器修改了一下。但是没发现你修改回来啊。具体机制不清楚请自行根据情况考虑
望采纳