找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请教一下蜂鸣器叫三下,暂停0.5S再叫,一直循环的单片机程序问题

查看数: 2453 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-10-11 10:54

正文摘要:

我带了自己代码, 因该怎么修改。谢谢了。

回复

ID:602673 发表于 2019-10-12 10:14
baiyun1234 发表于 2019-10-11 13:11
//注释:你这个 “BUZCOM=Bin(00001001);  //打开”我不知道哪一位是控制buzzer的,你自己改,我下面的是  ...

谢谢,非常感谢
ID:602673 发表于 2019-10-12 10:14
baiyun1234 发表于 2019-10-11 13:59
buzzerflag=1;// 后面是g,不是h.写错了。
上面的两个地方

谢谢了
ID:609989 发表于 2019-10-11 13:59
buzzerflag=1;// 后面是g,不是h.写错了。
上面的两个地方
ID:609989 发表于 2019-10-11 13:21
在你的main之前加上一句这个:
  void delayms(uint);
ID:609989 发表于 2019-10-11 13:11
//注释:你这个 “BUZCOM=Bin(00001001);  //打开”我不知道哪一位是控制buzzer的,你自己改,我下面的是 根据你的copy的。
// 我自己写的延时,晶振11.0592 ,这个延时是1ms,你的晶振是多少,你自己定.
//你的代码顶部加一个:      #define uint unsigned int(如果有就算了)
void beep_on()
{
     unsigned char i;
      unsigned char time_cnt;
       unsigned char beep_cnt,p;
       bit buzzerflag;
if(temperature>29) buzzerflah=1;
while(buzzerflag)
{
     for(i=3;i>0;i--)
         {
              delayms(100);
              BUZCOM=Bin(00001001);  //打开
               delayms(100);
                BUZCON=Bin(00001000);   //close
         }
     delayms(500);
    if(temperature<=29)
       {
          BUZCON=Bin(00001000) //close
          delayms(20);
          buzzerflah=0;
       }
}
}

//delayms
   void delayms(uint time)
{      
   
      uint i,j;
                                                                 
             for( i=0;i<time;i++)
           
                     for(j=0;j<112;j++);
               
}

  
ID:610816 发表于 2019-10-11 12:59
for循环写成死循环,不然响几次后就不响了
ID:602673 发表于 2019-10-11 11:09
我加了 IF延时  也没有作用

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

Powered by 单片机教程网

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