c51单片机: 利用定时器+蜂鸣器实现定时报警功能,30秒内,每一秒响一下,30秒时间到了,蜂鸣器长鸣 求程序

c51单片机: 利用定时器+蜂鸣器实现定时报警功能,30秒内,每一秒响一下,30秒时间到了,蜂鸣器长鸣 求程序,第1张

参考颤哗程序:

#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=60

int 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、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电腔团庆材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变或丛。

电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜伍握。

由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12505610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存