为什么无源蜂鸣器一直响个不停。因为定时器都被占用,只能用延时实现响的时间

2019-07-15 13:52发布


  #include <reg52.h>  //器件配置文件


   sbit SPK=P1^0;           //蜂鸣器引脚
            
/*********************************************************/
void delayus()     //延时函数,
{
unsigned char i;
        {
for(i=0; i<7; i++)
  {;}
        }
}
                             
/*********************************************************/

void  main(  void  )
{  
     unsigned int  j;
         
        SPK=0;           
  j = 60;     
  while(j>0)   
  {
   SPK = 1;
               delayus();  //高电平
                        delayus();
                        
   SPK = 0;
                delayus();  //低电平
                         delayus();
                        
   j--;
                 }
     
}
     
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
张大猛
1楼-- · 2019-07-15 14:47
闹腾呗 发表于 2016-5-22 19:55
能不能解释一下怎么就死循环了。j不断减减,满足条件不就跳出来了吗

while(j>0)这个是一直满足条件的   所以一直在while中循环 最佳答案
djotm
2楼-- · 2019-07-15 20:15
无源蜂鸣器是给它一个脉冲就会响相对应脉冲的那个音,而你程序while里面就是产生了一个脉冲。如果想要它响一下停一下,可以试着把延时延长点(可能要到毫秒)。我也是新手,不对的话请原谅。
闹腾呗
3楼-- · 2019-07-15 22:06
这段程序本来是我调用蜂鸣器响的函数,但是一旦调用,进入蜂鸣器的函数,就进入死循环再也出不来。已经检查过无源蜂鸣器可以发出不同频率的声音
融稔
4楼-- · 2019-07-16 03:41
看你这程序,不知道是让它响一声就停了,还是连续响60下,就停。。还是让它一直响下去。。。。延时长一点,声音就是一声一声的。。。
闹腾呗
5楼-- · 2019-07-16 07:29
 精彩回答 2  元偷偷看……
闹腾呗
6楼-- · 2019-07-16 08:10
融稔 发表于 2016-5-22 16:17
看你这程序,不知道是让它响一声就停了,还是连续响60下,就停。。还是让它一直响下去。。。。延时长一点,声音就是一声一声的。。。

是想让他j=60循环完了就不再想。现在就是程序烧上,就一直响个不停。是不是单片机把这个主函数运行完会重新运行啊。所以就一直响

一周热门 更多>