#include <reg52.h>
sbit Beep = P3^0
unsigned char t1s,t50ms
unsigned char flag30s = 0,flag1s = 0
void delayms(unsigned int xms)
{
unsigned int i,j
for(i=0i<xmsi++)
for(j=0j<110j++)
}
void Alarm(void)
{
Beep = 0
delayms(200)
Beep = 1
}
void main()
{
TMOD = 0x01
TH0 = 0x3C
TL0 = 0xB0//50ms中断尘拍一次
EA = 1
ET0 = 1
TR0 = 1
while(1)
{
if(flag30s)Beep = 0//30s到蜂鸣器一直响
if(flag1s)//1s到,蜂鸣器响一下派洞羡
{
flag1s = 0
Alarm()
}
}
}
void TIM0(void) interrupt 1
{
TH0 = 0x3C
TL0 = 0xB0
t50ms++
if(t50ms == 20)//1s
{
t50ms = 0
t1s++
flag1s = 1
if(t1s == 30)//30s
{
TR0 = 0
flag30s = 1
}
}
}
int sec=60int cnt=0
char Buzzer=1//关闭蜂鸣器
void Timer0Init(void) //5毫秒@11.0592MHz
{
AUXR &= 0x7F //定时器时钟12T模式
TMOD &= 0xF0 //设置定时器模式
TL0 = 0x00 //卖伏旅设置定时初值
TH0 = 0xEE //中凳设置定时初值
TF0 = 0 //清除TF0标志
ET0 = 1//开T0中断
EA = 1;//开总厅纤中断
TR0 = 1 //定时器0开始计时
}
void Timer0Interrupt(void)interrupt 1
{
cnt++
if(cnt>=200)
{
cnt=0sec--
if(sec==0)EA=0
}
}
其它就自己写了。
if(sec==0)Buzzer=0
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条)