
资深工程师
  
- 积分
- 12515
- 在线时间
- 189 小时
- 精华
- 0
- 注册时间
- 2010-4-10
- 最后登录
- 2018-4-16
|
首先确定:真的是用的蜂鸣器吗???看代码似乎是扬声器????
如果是蜂鸣器,你不需要用BEEP=~BEEP方法给她方波,只需要直接给加电就是了
P3.7输出直接驱动蜂鸣器,一般是不行的声音太小,可以加一级三极管驱动一下。
这就要看三极管接法是否等价于一个反相器,如果是,用BEEP=0就能让蜂鸣器响,否则BEEP=1让蜂鸣器响
如果是扬声器,现在这样给方波就对了。当然也要考虑三极管驱动才有大一点的声音。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;
uint n, nn;
uint j;
char Beep_End = 0; //新加的变量
void delay500(void)
{
uchar i;
for(i=230; i>0; i--);
}
void beep_beep()
{
for(j=200;j>0;j--)
{
BEEP=~BEEP; //输出频率1KHz
delay500(); //延时500us
}
for(j=200;j>0;j--)
{
BEEP=~BEEP; //输出频率500Hz
delay500(); //延时1ms
delay500();
}
}
main()
{
TMOD=0x01;
TH0=0xfc; TL0=0x66; //1ms定时
EA=1; ET0=1;
TR0=1;
while(1)
{
if(!Beep_End) BEEP = 0;//也许要写成BEEP = 1。如果是扬声器用beep_beep();
else BEEP = 1;//也许要写成BEEP = 0。
}
}
void Time0(void) interrupt 1 using 0
{
TH0=0xfc; //1ms定时
TL0=0x66;
n++;
if(n==100)
{
n=0;
if(nn<5) nn++;
}
if(nn==5)
{
nn=0;
Beep_End = 1; //新加的
// BEEP=1; //关闭蜂鸣器,关不了的,嘿嘿
}
} |
|