标题: 单片机温控系统加了一个蜂鸣器函数就没有LED显示是怎么回事 [打印本页]

作者: 我家小孩儿    时间: 2020-9-18 09:52
标题: 单片机温控系统加了一个蜂鸣器函数就没有LED显示是怎么回事
void main()
{
       
        countSet = 0;
        while(1)
        {
         uint8 key= keyScan();
         if(KeyValue!=key)
         {
           KeyValue=key;
           switch(KeyValue)
           {
                case KEY1:high++;
                                   break;
            case KEY2:high--;
                                  break;
                default:break;
         }
        }
     LcdDisplay(Ds18b20ReadTemp());
         fmq();
         motor();
         delay(1000);
}
}
void fmq(void)
{
while(1)
        {
    for(ul=0;ul<1000;ul++) //输出一个频率的声音
    {
    for(n=0;n<100;n++); //延时
    buzzer=~buzzer; //取反输出到喇叭的信号
    }
    for(ul=0;ul<500;ul++) //输出另一个频率的声音
    {
    for(n=0;n<60;n++); //延时
    buzzer=~buzzer; //取反输出到喇叭的信号
   if(Ds18b20ReadTemp()>high)
        {
          buzzer=~buzzer; //取反输出到喇叭的信号
    }
         else  
        {
         buzzer=buzzer;
        }
   }
   }

}



作者: 13303022280    时间: 2020-9-18 10:08
蜂鸣器程序写到while(1)里面了,肯定就执行不了显示程序了呀
作者: jmpw    时间: 2020-9-18 10:28
fmq函数死循环了呀
作者: 我家小孩儿    时间: 2020-9-18 10:54
13303022280 发表于 2020-9-18 10:08
蜂鸣器程序写到while(1)里面了,肯定就执行不了显示程序了呀

可是删掉那几行,只留if语句还是一样

作者: 我家小孩儿    时间: 2020-9-18 10:59
jmpw 发表于 2020-9-18 10:28
fmq函数死循环了呀

去掉while那一句和for语句都还是一样
作者: lmw0417    时间: 2020-9-18 11:19
死循环了
作者: 我家小孩儿    时间: 2020-9-18 12:25
已解决,谢谢大家
作者: 13303022280    时间: 2020-9-18 14:01
我家小孩儿 发表于 2020-9-18 10:59
去掉while那一句和for语句都还是一样

贴上全部代码吧,去掉while的话蜂鸣器不会影响显示了,可能别的函数还有影响。
作者: yzwzfyz    时间: 2020-9-18 14:03
逻辑混乱,时序未规划好。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1