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、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。
电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。
由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。
通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P1.0。代码如下:#include
<reg51.h>
#define
u8
unsigned
char
sbit
BEEP=P1^0
void
main
{
EA=1//开总中断
IT0=1//打开定时器0源中断允许开关
TMOD=0x01//选择定时器0工作在方式0
TR0=1//启动定时器0
TH1=(65536-1000)/256//赋值,定时1ms
TL1=(65536-1000)%256
while(1)
{}
}
void
TIM()
interrupt
1
{
TH1=(65536-1000)/256
TL1=(65536-1000)%256
BEEP=~BEEP//蜂鸣器引脚输出1KHz方波
}
完整的源程序:#include<reg52.h>
define uint unsigned int
sbit spk=P1^2 //与喇叭相连接的单片机引脚的定义
void delayms(uint) //延时子函数声明
main()
{
uint i=8 //轰鸣的次数
spk=0//喇叭的初始状态为不响
while(i) //喇叭鸣响控制核心
{
spk=!spk
delayms(1000) //延时1000毫秒
i--
}
}
void delayms(uint ms) //延时子函数
{
uint x,y
for(x=msx>0x--)
for(y=110y>0y--)
}
哥们专门给你写的,看的够明白吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)