51单片机蜂鸣器程序为:
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
void delay(u16 i)
{
while(i--);
}
void main()
{
while(1)
{
beep=~beep;
delay(1000);//控制音调频率
beep=~beep;/控制声音大小
delay(10);
}
}
扩展资料:
BUZZER蜂鸣器的分类:
1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器)。
2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。
3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器)。
4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。
电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。
由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。
2024-11-28 广告
#include<reg51.h>
sbit buzzer = P1^0 ;声明区
void delay(int) ;
void pulse_BZ(int,int,int);声明函数void main(void)
{
while(1)
{
pulse_BZ(500,1,1); 调用发声
delay(1000); 延时1000 X 0.5ms
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000);
}
}void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<60;j++);
}void pulse_BZ(int count;int TH;int TL)
{
int i;
for(i=o;i<count;i++) //循环count次,时间count x 1ms
{
buzzer=1; //此程序段产生1HZ 信号
delay(TH);
buzzer=0;
delay(TL);
}
}
51单片机蜂鸣器
开关C语言程序:
sbit P2^0=KEY;
sbit P2^1=BEEP;
unsigned char KEYNUM=0;
void main()
{
while(1)
{
if(KEY==0)//开关按下;
{
KEYNUM++;
}
if(KEYNUM==1)//第一次按下;
{
BEEP=1; //蜂鸣器响
}
if(KEYNUM==2)/第二次按下;
{
BEEP=0; //蜂鸣器不响
KEYNUM=0;
}
}
}
51单片机,编写延时程序,控制蜂鸣器发声:
很简单的
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fengmingqi=P0^0; //声明IO口
void delay(uint x)//延时子函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=50;j>0;j--);
}
void main(void)
{
while(1) //循环
{
fengmingqi=1; //p0.0口高电平,蜂鸣器发声
delay(500); //延时
fengmingqi=0; //p0.0口低电平,蜂鸣器不发声
delay(500); //延时
}
}
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit buzzer=P2^0;
uchar temp[4]={4,0,2,0};
uchar n=1;
void delay250uS(void)//延时250us
{
unsigned char a,b;
for(b=19;b>0;b--)
for(a=5;a>0;a--);
}
void main(void)
{
uchar i=0,n0=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
n0=n;
if(n0!=0)
{
if(++i==temp[n])i=1;
if((i==1)|(i==temp[n]/2))buzzer=~buzzer;
delay250uS();
}
}
}
void Timer0Interrupt(void) interrupt 1
{
static uchar temp1=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++temp1==10)
{
if(++n==4)n=0;
}
}