《单片机驱动蜂鸣器原理与设计》由会员分享,可在线阅读,更多相关《单片机驱动蜂鸣器原理与设计(9页珍藏版)》请在金锄头文库上搜索。
1、单片机驱动蜂鸣器原理与设计 2008 年 05 月 04 日 星期日 09:12蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂 鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中 作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接 通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场, 振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、 外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5
2、15V 直流工作电压),多谐振荡器起振,输出 1.52.5kHZ 的音频信号,阻抗匹配 器推动压电蜂鸣片发声。下面是电磁式蜂鸣器的外形图片及结构图。电磁式蜂鸣器实物图: 电磁式蜂鸣器结构示意图: 图 1 图 2 电磁式蜂鸣器内部构成: 1. 防水贴纸 2. 线轴 3. 线圈 4. 磁铁 5. 底座 6. 引脚 7. 外壳 8. 铁芯 9. 封胶 10. 小铁片 11. 振动膜 12. 电路板一、电磁式蜂鸣器驱动原理一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动 膜发声的,因此需要一定的电流才能驱动它,单片机 IO 引脚输出的电流较小, 单片机输出的 TT
3、L 电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的 电路。S51 增强型单片机实验板通过一个三极管 C8550 来放大驱动蜂鸣器,原 理图见下面图 3:图 3 S51 增强型单片机实验板蜂鸣器驱动原理图:如图所示,蜂鸣器的正极接到 VCC(5V)电源上面,蜂鸣器的负极接到 三极管的发射极 E,三极管的基级 B 经过限流电阻 R1 后由单片机的 P3.7 引脚 控制,当 P3.7 输出高电平时,三极管 T1 截止,没有电流流过线圈,蜂鸣器不 发声;当 P3.7 输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发 出声音。因此,我们可以通过程序控制 P3.7 脚的电平来使蜂鸣器发出声音和
4、 关闭。程序中改变单片机 P3.7 引脚输出波形的频率,就可以调整控制蜂鸣器音 调,产生各种不同音色、音调的声音。另外,改变 P3.7 输出电平的高低电平 占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。二、蜂鸣器列子二、蜂鸣器列子 下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。1、简单的蜂鸣器实验程序:本程序通过在 P3.7 输出一个音频范围的方 波,驱动实验板上的蜂鸣器发出蜂鸣声,其中 DELAY 延时子程序的作用是使输 出的方波频率在人耳朵听觉能力之内的 20KHZ 以下,如果没有这个延时程序的 话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到
5、声音。更改延 时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中 更改#228 为其他值,听听蜂鸣器音调的改变。ORG 0000HAJMP MAIN ;跳转到主程序ORG 0030H MAIN: CPL P3.7 ;蜂鸣器驱动电平取反LCALL DELAY ;延时AJMP MAIN ;反复循环DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发 出的音调 DE1: DJNZ R7,DE1RETEND2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发 出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注 意。本实验例程就
6、实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同 时通过实验板上 P1.2 和 P1.5 上的两个黄色发光二极管来发出黄色警示灯。ORG 0000HAJMP START ;跳转到初始化程序ORG 0033H START:MOV SP,#60H ;SP 初始化MOV P3,#0FFH ;端口初始化MAIN: ACALL SOUND ;蜂鸣器发声ACALL YS500M ;延时AJMP MAINSOUND:MOV P1,#11011011B ;点亮 2 个警示黄色发光二极管 MOV R2,#200 ;响 200 个周期 SND1: CLR P3.7 ;输出低电平 T1 导通,蜂鸣器响ACALL
7、 YS1ms ;延时SETB P3.7 ;输出高电平 T1 截止,蜂鸣器不响ACALL YS1ms ;延时DJNZ R2,SND1MOV P1,#0FFH ;熄灭黄色警示灯RETYS1ms: ;1ms 延时子程序 MOV R0,#2 YL1: MOV R1,#250 ;改变 R0 的数值可改变声音频率DJNZ R1,$DJNZ R0,YL1RETYS500M: ;500ms 延时子程序MOV R0,#6 YL2: MOV R1,#200 YL3: MOV R2,#250DJNZ R2,$DJNZ R1,YL3DJNZ R0,YL2RETEND3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有
8、客人来访时候, 如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的 发音,当我们按压实验板上的 K1 按钮时候,蜂鸣器发出“叮咚”音乐声,是 一个比较实用的程序。“叮咚”电子门铃实验 ASM 源程序: “叮咚”电子门铃 C 语言源程序:ORG 0000HLJMP START ;跳转到初始化程序ORG 000BHLJMP PGT0 ;跳转到 T0 中断服务程序START: OBUF1 EQU 30H ;初始化程序OBUF2 EQU 31HOBUF3 EQU 32HOBUF4 EQU 33HFLAGB BIT 00HSTOPB BIT 01HK1 BIT P3.2 ;定义按钮 K
9、1,作为门铃按钮MOV TMOD,#02H ;定时器初始化MOV TH0,#06HMOV TL0,#06HSETB ET0 ;启动定时器 T0SETB EA ;启动总中断MAIN: ;主程序JB K1,MAIN ;检测 K1 按钮LCALL YS10M ;延时去抖动JB K1,MAIN SETB TR0 ;按钮有效MOV P1,#00H ;点亮按钮指示灯MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$MOV P1,#0FFHLJMP MAIN ;发出“叮咚”完毕,返回重新检
10、测按钮YS10M: ;10ms 延时子程序MOV R6,#20 D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETPGT0: ;定时器 T0 中断服务程序INC OBUF3 ;中断服务程序中发出一声“叮咚”响声MOV A,OBUF3CJNE A,#100,NEXTMOV OBUF3,#00HINC OBUF4MOV A,OBUF4CJNE A,#20,NEXTMOV OBUF4,#00HJB FLAGB,PGSTPCPL FLAGBAJMP NEXT PGSTP:SETB STOPBCLR TR0LJMP INT0RET NEXT: JB FLAGB,SOU2INC O
11、BUF2MOV A,OBUF2CJNE A,#03H,INT0RETMOV OBUF2,#00HCPL P3.7LJMP INT0RET SOU2: INC OBUF1MOV A,OBUF1CJNE A,#04H,INT0RETMOV OBUF1,#00HCPL P3.7LJMP INT0RET INT0RET: RETIEND#include unsigned char obuf1; unsigned char obuf2; unsigned int obuf3;bit stopb; bit flagb;void main(void) unsigned char i,j;TMOD=0x02;
12、 /定时器 T0 初始化 TH0=0x06; TL0=0x06; ET0=1; EA=1; /允许总中断while(1) if(P3_2=0) /检测 K1 按键 P1=0x00;for(i=10;i0;i-)for(j=248;j0;j-);if(P3_2=0)obuf1=0;obuf2=0;obuf3=0;flagb=0;stopb=0;TR0=1; /启动定时器 T0,发出“叮咚”声while(stopb=0);P1=0xff; void t0(void) interrupt 1 using 0 obuf3+; if(obuf3=2000) obuf3=0;if(flagb=0)flagb=flagb; elsestopb=1;TR0=0; if(flagb=0) obuf2+; if(obuf2=3) obuf2=0; P3_7=P3_7; else obuf1+; if(obuf1=4) obuf1=0; P3_7=P3_7; 单片机驱动蜂鸣器原理的程序编写