找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1956|回复: 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;
        }
   }
   }

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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语句还是一样
回复

使用道具 举报

5#
ID:820487 发表于 2020-9-18 10:59 | 只看该作者
jmpw 发表于 2020-9-18 10:28
fmq函数死循环了呀

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

使用道具 举报

6#
ID:820563 发表于 2020-9-18 11:19 | 只看该作者
死循环了
回复

使用道具 举报

7#
ID:820487 发表于 2020-9-18 12:25 | 只看该作者
已解决,谢谢大家
回复

使用道具 举报

8#
ID:553941 发表于 2020-9-18 14:01 | 只看该作者
我家小孩儿 发表于 2020-9-18 10:59
去掉while那一句和for语句都还是一样

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

使用道具 举报

9#
ID:123289 发表于 2020-9-18 14:03 | 只看该作者
逻辑混乱,时序未规划好。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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