前辈们,请问如何编写使蜂鸣器只响一声的程序,试过了很多,都是一直响的,请各位前辈指导、、

#include <reg51.h>
sbit Beep = P1^5 ;
void delay(unsigned int i) ;
void main()
{
unsigned int m,n=1;
for(m=0;m<2000; m++)
{
Beep= 1;
delay(5);
Beep= 0;
delay(5);

}

}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);

你好!!

你在蜂鸣器一直再响,是因为你的单片机程序一直在重新启动;

你的程序少了while 的循环,在程序的结尾加上:

   while(1){}

完整的代码是:

#include <reg51.h>
sbit Beep =  P1^5 ;
void delay(unsigned int i) ;
void main()
{
    unsigned int m,n=1;
    for(m=0;m<2000; m++)
    {
        Beep= 1;
        delay(5);
        Beep= 0;
        delay(5);
    

    while(1){}
 }
 void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-17
目测是delay时间太短,导致声响还没结束,下一声又响了,加到足够大的延时(几秒)再看
相似回答