lhy 发表于 2019-5-22 22:36:09

如何让蜂鸣器只响0.5s

请问怎么修改代码,让蜂鸣器在函数运行时只响0.5s然后退出呢?
下边是程序:

/**************************************************************************************
*                              蜂鸣器实验                                                                                                  *
实现现象:下载程序后蜂鸣器发声
注意事项:无                                                                                                                                                                  
***************************************************************************************/

#include "reg52.h"                       //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit beep=P1^5;          

/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能               : 主函数
* 输    入       : 无
* 输    出           : 无
*******************************************************************************/
void main()
{       
        while(1)
        {       
                beep=~beep;
                delay(1000); //延时大约100us   通过修改此延时时间达到不同的发声效果       
        }
       
}

lhy 发表于 2019-5-22 22:37:22

请问不用中断可以实现吗?

风颂极光 发表于 2019-9-8 11:24:40

#include<reg52.h>
#define led         P0
sbit         d7=P1^5;
void delay(unsigned int a)
{
while(a--);
}
void main()
{
int i;       
for(i=0;i<5000;i++)
{
d7=1;
delay(20);
d7=0;
delay(5);
}
while(1);                                                                                                                       

}

神奇 发表于 2019-9-8 11:42:12

普中的板用的是无源蜂鸣器吧,必须用方波驱动发声,还要响一定的时间,最好是用中断来操作,这样才不会阻塞。
页: [1]
查看完整版本: 如何让蜂鸣器只响0.5s