本文需要用到定时器与中断的相关内容,已做该内容总结:
STC学习:定时器与中断
程序设计目标及程序运行效果说明
程序设计目标:通过按下按键1来控制无源蜂鸣器的发声。
程序运行效果说明:蜂鸣器初始状态是没有发声;按下按键1,则蜂鸣器开始发声。再次按下按键1,蜂鸣器停止发声。
程序相关电路及原理说明
1.原理说明
本实验利用无源蜂鸣器与按键key1两外接模块实现蜂鸣器的发声功能。
蜂鸣器分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。理想的振荡源为一定频率的方波。
本实验板采用的是无源蜂鸣器,相比于有源蜂鸣器,无源蜂鸣器的优点在于价格便宜,可以通过控制其振动频率来改变发出的声音,因此,无源蜂鸣器可以用于音乐的播放。而有源蜂鸣器的优点在于使用简单,不需要编写“乐谱”。本实验板使用的无源蜂鸣器是电磁式蜂鸣器,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,接收到的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
无源蜂鸣器只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音,不同的频率发出的声音不同。其中,ULN2003是一个功放,用于放大电流。电阻R14和电容C21是用来保护电路的。若人为将Beep端口的电平一直置为高电平,在没有保护电路的情况下,容易烧毁电路,但即使有保护电路也应该注意不要将Beep端口长时间置于高电平,这对器件也是有一定损害的。
程序烧入单片机后,需要按下按键key1才会进行演奏。
蜂鸣器引脚:Bee=P3.4
KEY1引脚:KEY1=P3.2
初始化:设置推挽输出,设置中断
2.相关电路
2.2无源蜂鸣器电路原理图
2.3按键控制电路
用途
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中做发声器件
代码如下
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Bee=P3^4;
sbit KEY1=P3^2;
uchar flag;
void init()
{
P3M1=0x00;
P3M0=0x10;//调整蜂鸣器为推挽模式
TMOD=0x00;
TH0=0xff;
TL0=0x10;
ET0=1;
EA=1;
TR0=1;
flag=0;
P0=0X00;
Bee=0;
}
void delay(int n)
{
while(n--);
}
void T0_interrupt()interrupt 1
{
if(flag)
Bee=~Bee;
else
Bee=0;
}
void main()
{
init();
while(1)
{
if(KEY1==0)
{
delay(10);//延时消抖
if(KEY1==0)
{
while(!KEY1);
flag=~flag;//蜂鸣器开关标志位变化
}
}
}
}