找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2213|回复: 8
收起左侧

单片机温控系统加了一个蜂鸣器函数就没有LED显示是怎么回事

[复制链接]
ID:820487 发表于 2020-9-18 09:52 | 显示全部楼层 |阅读模式
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;
        }
   }
   }

}


回复

使用道具 举报

ID:553941 发表于 2020-9-18 10:08 | 显示全部楼层
蜂鸣器程序写到while(1)里面了,肯定就执行不了显示程序了呀
回复

使用道具 举报

ID:94134 发表于 2020-9-18 10:28 | 显示全部楼层
fmq函数死循环了呀
回复

使用道具 举报

ID:820487 发表于 2020-9-18 10:54 | 显示全部楼层
13303022280 发表于 2020-9-18 10:08
蜂鸣器程序写到while(1)里面了,肯定就执行不了显示程序了呀

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

使用道具 举报

ID:820487 发表于 2020-9-18 10:59 | 显示全部楼层
jmpw 发表于 2020-9-18 10:28
fmq函数死循环了呀

去掉while那一句和for语句都还是一样
回复

使用道具 举报

ID:820563 发表于 2020-9-18 11:19 | 显示全部楼层
死循环了
回复

使用道具 举报

ID:820487 发表于 2020-9-18 12:25 | 显示全部楼层
已解决,谢谢大家
回复

使用道具 举报

ID:553941 发表于 2020-9-18 14:01 | 显示全部楼层
我家小孩儿 发表于 2020-9-18 10:59
去掉while那一句和for语句都还是一样

贴上全部代码吧,去掉while的话蜂鸣器不会影响显示了,可能别的函数还有影响。
回复

使用道具 举报

ID:123289 发表于 2020-9-18 14:03 | 显示全部楼层
逻辑混乱,时序未规划好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表