单片机驱动蜂鸣器原理与程序学习资料
蜂鸣器的驱动电路设计及原理分析.pdf
蜂鸣器的驱动电路设计及原理分析
蜂鸣器的驱动电路设计及原理分析
以下介绍的几种蜂鸣器驱动电路是针对单片机I/O口的驱动电路,适用于现行的压电式蜂鸣器。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kH Z的音频信号,阻抗匹配器推动压电蜂鸣片发声。
一、以一个9012驱动P1.0口方波
测试程序:
二、双端口驱动
电路原理图
工作原理简介
BUZ1、BUZ2两端口均接单片机的I/O口或单片机的蜂鸣器驱动口。
BUZ1端口为“高频口”(相对BUZ2而言),其脉冲电压频率一般为几KHz,具体频率依蜂鸣器需发出的音乐声来调整;
BUZ2端口为“低频口”,其电压周期相对较长一些,一般为数十ms至数百ms。
工作时,两端口输出电压脉冲驱动三极管Q2和Q3,当BUZ2端口出现高电平时,
三极管Q3导通, +12V电压经Q4三极管给蜂鸣器提供工作电压,同时为电容E7充电; BUZ2端口电平变低时,Q3和Q4三极管均截止,+12V电压被隔离,此时
已充满电的电容E7放电,为蜂鸣器工作提供能量。
蜂鸣器的工作状态直接由三极管Q2决定,当BUZ1端口出现高电平时,三极管Q2导通,蜂鸣器工作,BUZ1
端口电平变低时,Q2三极管截止,蜂鸣器停止工作。
蜂鸣器的通电频率与内部的谐振频率(固定)相互作用就产生我们所需的音乐声。
——本站文章均来自本公司工程师整理或用户来稿或网络,如果我们转载的文章中有涉及或侵犯您的相关权益,请即时与我们取得联系。
邮件内容中请注明文章所在网址及文章标题,我们会即时处理或删除,感谢您的合作!。
单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程
单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电电磁式蜂鸣器实物图:磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器结构示意图:图1电磁式蜂鸣器内部构成:1.防水贴纸2.线轴3.线圈4.磁铁图25.6.7.8.底座引脚外壳铁芯9.封胶10.小铁片11.振动膜12.电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
五、单片机学习——继电器与蜂鸣器实验
五、单⽚机学习——继电器与蜂鸣器实验实验⽬的:理解并掌握继电器和蜂鸣器驱动电路的⼯作原理; 理解并掌握⽤单⽚机 I/O 驱动⼤电流器件的驱动⽅法;实验模块:核⼼板+流⽔灯与独⽴按键模块+继电器模块+蜂鸣器模块;实验内容:按键控制继电器和蜂鸣器动作,并⽤相应的 led 灯进⾏指⽰,即第⼀ 个按键按下,第⼀位 led 灯点亮,蜂鸣器响应;第⼆个按键按下,第⼆位 led 灯点亮,继电器吸合;第三个按键按下,第⼀个、第⼆个流⽔灯点亮,继电器吸 合、蜂鸣器响应;第四个按键按下,恢复初始状态,所有的 led 灯熄灭、继电器 断开、蜂鸣器不响应。
模块连接图:电路原理图:电路驱动原理:(1)蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产⽣磁场来驱动振动膜发声的,仅仅依靠单⽚机 I/O 不⾜以驱动蜂鸣器进⾏⼯作;蜂鸣器的正极接到三极管的 C 极上⾯,蜂鸣器的负极接到地端,三极管的基极 B 经过限流电阻后由单⽚机的 P1.2 引脚控制,当 P1.2 输出⾼电平时,三极管 T1 截⽌,没有电流流过线圈,蜂鸣器不发声;当 P1.42 输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声⾳。
因此,我们可以通过程序控制 P1.2 脚的电平来使蜂鸣器发出声⾳或关闭。
(2)继电器驱动电路如上,主要通过 PNP 型的三极管 S8550 来实现通过单⽚机的 I/O ⼝控制继电器的吸合与断开;三极管驱动继电器主要是应⽤三极管的放⼤特性和开关特性;当与单⽚机相连的 I/0 ⼝输出低电平时,三极管导通,此时三极管的 E 极(发射极)与 C 极(集电极)间的阻值很⼩,此时电路相当于 VCC 经过继电器,再经过通过三极管接到地形成完整回路,继电器吸合;相反,当与单⽚机相连的 I/0⼝输出⾼电平时,三极管截⽌,此时三极管的 E 极(发射极)与 C 极(集电极)间的阻值很⼤,电路⽆法形成回路,继电器不吸合。
因此,我们可以通过程序控制与单⽚机相连 I/O ⼝的电平来控制继电器的吸合与关闭。
蜂鸣器驱动电路(实践出真理)
蜂鸣器驱动电路(实践出真理)1、蜂鸣器的发声原理蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型。
无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出。
有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号。
2、BUZZER蜂鸣器的分类:1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器);2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器;3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器);4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。
同样,当通电时压电材料会发生形变。
电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。
由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。
而电磁式由于音色好,所以多用于语音、音乐等设备。
有源蜂鸣器驱动电路续流二极管的作用:有源电磁式蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。
否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。
三极管:起开关作用,有源蜂鸣器让该三极管导通即可以发声。
无源蜂鸣器驱动电路电阻的作用:无源压电式蜂鸣器本质上可以看作是一个电容,电阻的作用是用于在驱动为低电平时消耗掉电容里面的能量,驱动通过三极管发送脉冲信号,频率越高声音越刺耳,电阻一般选择1K。
三极管:起开关作用,无源蜂鸣器则这里输入脉冲电压即可发声。
下图为我实际测的压电式无源蜂鸣器的波形(注意看幅值),该蜂鸣器用12V电源供电。
stm32蜂鸣器工作原理
stm32蜂鸣器工作原理
STM32蜂鸣器是一种电子元器件,常用于发出警报、提醒等声音提示。
其工作原理是通过控制GPIO输出脚的高低电平来控制蜂鸣器发出不同频率的声音。
在STM32开发板中,蜂鸣器通常被连接到一个GPIO输出脚上。
当该GPIO输出脚的电平为高时,蜂鸣器就会发出一定频率的声音;当该GPIO输出脚的电平为低时,蜂鸣器则不发出声音。
要控制蜂鸣器发出不同频率的声音,需要控制GPIO输出脚的高低电平的时序。
通常使用软件延时的方式来控制时序,例如在代码中循环一定次数,使GPIO输出脚的电平高低切换的时间间隔符合蜂鸣器要求的频率。
除了软件延时之外,还可以使用定时器来控制GPIO输出脚的高低电平时序。
定时器可以设置不同的计数值和计数方式,从而实现精确的时序控制。
这种方法比软件延时更加准确和稳定,适用于需要高精度控制的场景。
总之,STM32蜂鸣器的工作原理是通过控制GPIO输出脚的高低电平来控制蜂鸣器发出不同频率的声音。
软件延时和定时器是实现时序控制的两种常用方法。
- 1 -。
单片机课程设计报告蜂鸣器
单片机课程设计报告蜂鸣器河南师范大学新联学院单片机课程设计报告课程单片机原理及接口技术设计题目蜂鸣器演奏歌曲年级专业级计算机科学与技术学号 11学生姓名李指导教师莹6 月 15 日蜂鸣器演奏歌曲实验报告一、要求完成驱动蜂鸣器歌曲演奏的实验二、目的1、学习KEIL软件的使用方法;2、掌握BST-V51单片机学习板设计蜂鸣器音乐的发生;3、掌握设计中各模块的功能,能够填入并演奏曲子;4、学习乐谱的基本知识,掌握其演奏的原理。
三、分析1、基本原理简述声音是经过振动产生的。
单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波经过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。
若改变输出方波的频率,产生的声音随之改变。
经过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就能够产生电子音乐。
音乐的播放选择能够经过按键的输入得以实现。
为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半。
因此,输出引脚在每个方波周期内要动作两次:一次升高,一次降低。
即输出引脚的频率是原音频率的两倍。
2、单片机产生不同频率脉冲信号的原理(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就能够在I/O脚上得到此频率的脉冲。
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下: N=Fi/2/Fr(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)(3)其计数值的求法如下:T=65536-N=65536-Fi/2/Fr计算举例:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
基于51单片机的蜂鸣器实验
第5讲
蜂鸣器的使用
蜂鸣器的发声
• 本讲任务: •如何驱动蜂鸣器发声 •简单蜂鸣器发声实验 •给上节课的流水灯加入报警效果 •蜂鸣器演奏音器:有绿色电路板的一
种是无源蜂鸣器,没有电路板而用黑胶封 闭的一种是有源蜂鸣器。
蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,
蜂鸣器驱动电路
由于蜂鸣器的工作电流一般比较大,
以致于单片机的I/O 口是无法直接 驱动的,所以要利用放大电路来驱 动,一般使用三极管来放大电流就 可以了
了解一下实验板蜂鸣器电路
蜂鸣器软件设计方法
• 软件设计方法 • IO口电平取反方法:I/O 口的电平进行翻转一 次,直到蜂鸣器不需要鸣叫的时候,将I/O 口 的电平设置为高电平即可。
广泛应用于计算机、打印机、复印机、报警器、电子玩具、 汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂 鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、 “JD”等)表示。 有源蜂鸣器和无源蜂鸣器:判断有源蜂鸣器和无源蜂鸣器, 还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器"+"引脚, 红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电 阻只有8Ω(或16Ω)的是无源蜂 蜂鸣器,如果能发出持续声音 的,且电阻在几百欧以上的,是有源蜂鸣器。
有源蜂鸣器和无源蜂鸣器
这里的“源”不是指电源。而是指震荡源。 也就是 说有源蜂鸣器内部带震荡源,所以只要一通电就会 叫。 而无源内部不带震荡源,所以如果用直流信号无法 令其鸣叫。必须用2K~5K的方波去驱动它。 有源蜂鸣器往往比无源的贵,就是因为里面多个震 荡电路。 无源蜂鸣器的优点是:1。便宜,2。声音频率可控, 可以做出“多来米发索拉西”的效果。3。在一些 特例中,可以和LED复用一个控制口 有源蜂鸣器的 优点是:程序控制方便 。
51单片机通过按键控制蜂鸣器发生详解
单片机开发报告院系:电子工程学院专业:自动化班级:自动化1401学号:姓名:赵越指导老师:刘星光2018年01 月04 日一.系统任务按键控制蜂鸣器发声二.电路原理图三.程序设计内容“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。
使用无源蜂鸣器输出7个基本音阶声音是由物体振动所产生的。
只是由于物体的材料以及振幅、频率不同,而产生不同的声音。
声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。
五.汇编程序ORG 0000HAJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0F0H 12M晶振,形成10毫秒中断RETIORG 001BHLJMP INTT1 ;跳转到T1中断服务程序START: MOV DPTR,#00H ;初始化程序MOV A,#00HOBUF1 EQU 30HOBUF2 EQU 31HOBUF3 EQU 32HOBUF4 EQU 33HFLAGB BIT 00HSTOPB BIT 01HMOV SP,#50HMOV TH0,#0D8HMOV TL0,#0F0HMOV TMOD,#21HMOV TH1,#09HMOV TL1,#09HMOV IE,#8AHAJMP LOOPLOOP: JNB P3.2,MUSIC0JNB P3.1,MAINAJMP LOOPMAIN:JB P3.1,MAIN ;检测p3.1按钮LCALL YS10M ;延时去抖动JB P3.1,MAINSETB TR1 ;按钮有效MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$AJMP START ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序MOV R6,#20MOV R7,#100DJNZ R7,$DJNZ R6,D1RETTING: AJMP STARTINTT1: ;定时器T1中断服务程序INC OBUF3 ;中断服务程序中发出一声“叮咚”响声MOV A,OBUF3CJNE A,#100,NEXTMOV OBUF3,#00HINC OBUF4MOV A,OBUF4CJNE A,#20,NEXTMOV OBUF4,#00HJB FLAGB,PGSTPCPL FLAGBAJMP NEXTPGSTP:SETB STOPBCLR TR1LJMP INT0RETJB FLAGB,SOU2INC OBUF2MOV A,OBUF2CJNE A,#04H,INT0RETMOV OBUF2,#00HCPL P1.5LJMP INT0RETSOU2:INC OBUF1MOV A,OBUF1CJNE A,#05H,INT0RETMOV OBUF1,#00HCPL P1.5INT0RET:RETIMUSIC0: JB p3.2,MUSIC0LCALL YS10MJB p3.2,MUSIC0NOPMOV DPTR,#DAT 表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0 MAIN2: JNB P3.3,TINGCLR AMOVC A,@A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,@A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL P1.5MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRINC BLJMP MAIN2MUSIC3: ;休止100毫秒NOPCLR TR0MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MAIN2END0:NOPMOV R2,#0FFH ;歌曲结束,延时MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6CLR TR0LJMP LOOPDEL:NOPDEL3:MOV R4,#03HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETDENG1: MOV R3,#64HDJNZ R3,$AJMP MAINDAT:DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00hEND六、程序下载及调试步骤:1.点击translate 按钮预编译2.点击build 按钮编译3.点击rebuild 按钮编译所有目标4.打开普中烧录软件四.程序流程图。
51单片机驱动无源蜂鸣器
51单片机驱动无源蜂鸣器在学习过程中遇到如下例题:8 个发光管由上至下间隔1s 流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
流水灯的程序相对我个人来说比较简单,但是蜂鸣器有些难度,正常给I/0 口一个信号,蜂鸣器既然不响,后经查证是无源蜂鸣器;无源的蜂鸣器,就要通过IO 口输出振荡信号来驱动蜂鸣器蜂鸣器简介:蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。
理想的振荡源为一定频率的方波。
由于系统采用了无源蜂鸣器,所以需要我们通过编程来控制I/0 口的翻转来产生一定频率的方波信号。
本文采用默认频率0.5KHZ 的标准方波。
可以算出周期T = 2ms 脉宽t = 1ms,因此我们可以通过简单的延时函数延时1ms。
然后控制P3.7 口的电平高低产生0.5KHZ 的方波信号;本程序只是通过简单延时达到驱动蜂鸣器的效果。
#include sbit buzzer = P1 ;void delayms(unsigned int xms)//延时函数,延时xms{unsigned int i , j;for(i = 0; i#include#define uint unsigned int#define uchar unsigned charsbit buzzer=P1 ;sbitD1=P1;void delay(uint z)//延时1ms{uint x,y;for(x=z;x>0;x--){for(y=0;y<114;y++){}}}fasheng() //发声子程序{unsigned int a,x;for (a=0;a<456;a++){buzzer=!buzzer;for(x=0;x<45;x++); //45 为蜂鸣器发声频率}}void main(){while (1){D1=0;fasheng();D1=1;delay(200);}}tips:感谢大家的阅读,本文由我司收集整编。
单片机驱动蜂鸣器原理
单片机驱动蜂鸣器原理
单片机驱动蜂鸣器的原理是通过控制IO口的高低电平来控制
蜂鸣器的开关状态。
蜂鸣器通常是由一个振荡电路和一个放大电路组成。
当IO口输出高电平时,通过一个NPN型晶体管将电流传导到振荡电路中的电容上,电容开始充电。
当IO口输出低电平时,晶体管截断,电容开始放电。
电容放电时会产生声音,通过放大电路将声音放大,最终输出给蜂鸣器。
通过改变IO口输出高低电平的频率及持续时间,可以控制蜂
鸣器发出不同的声音。
例如,根据蜂鸣器发出声音的频率可以模拟出不同音调的声音。
根据IO口输出高低电平的持续时间
可以控制蜂鸣器发出短暂的提示音或长时间持续的声音。
总之,单片机驱动蜂鸣器的原理是通过IO口输出高低电平来
控制蜂鸣器的开关状态,从而产生不同的声音效果。
51单片机蜂鸣器代码理解
51单片机蜂鸣器代码理解1.引言1.1 概述概述:蜂鸣器是一种广泛应用于电子设备中的声音输出装置,它通过控制某个频率的电信号使蜂鸣器发出特定的声音。
而51单片机,则是一种常见的单片机芯片,具有广泛的应用领域。
本文将主要探讨51单片机蜂鸣器的代码理解和应用。
通过对其基本原理的概述以及相关代码的解析,希望读者能够深入理解51单片机蜂鸣器的工作原理和实现方式。
在第二部分中,我们将介绍单片机蜂鸣器的基本原理。
包括如何通过单片机控制蜂鸣器的电信号频率和时长,从而实现不同的声音效果。
接着,在第二点中,我们将详细解析51单片机蜂鸣器的代码。
通过对代码的分析,读者可以了解到如何使用51单片机的引脚功能和定时器功能来控制蜂鸣器。
最后,在结论部分,我们将对所述内容进行总结,并展望51单片机蜂鸣器在未来的应用前景。
蜂鸣器作为一种重要的声音输出装置,具有广泛的应用前景,可以应用于报警系统、提醒装置等领域。
通过本文的阅读,读者将能够全面了解51单片机蜂鸣器的工作原理和代码实现方式,为相关领域的应用开发提供参考和指导。
让我们开始探索吧!1.2 文章结构文章结构的部分主要介绍了本文的组织和分类方式,以帮助读者更好地理解文章的内容和思路。
本文按照以下结构进行组织:1. 引言部分:介绍了文章的概述、结构和目的。
通过引言部分,读者可以初步了解到本文的内容和主题,并对文章的结构和目的有一个整体的认识。
2. 正文部分:主要分为两个小节,分别是"单片机蜂鸣器的基本原理"和"51单片机蜂鸣器代码解析"。
2.1 单片机蜂鸣器的基本原理:该部分将详细介绍单片机蜂鸣器的基本工作原理,包括蜂鸣器的构成和工作原理,以及单片机如何控制蜂鸣器发出指定的声音。
2.2 51单片机蜂鸣器代码解析:该部分将对51单片机蜂鸣器的代码进行解析,包括如何初始化引脚、设置定时器和中断等相关代码。
通过对代码的逐行解析和说明,读者可以更加深入地理解代码的功能和实现原理。
单片机学习(四)蜂鸣器和独立按键的使用
单⽚机学习(四)蜂鸣器和独⽴按键的使⽤⽬录蜂鸣器两种蜂鸣器的介绍有源蜂鸣器⼀般是输⼊⼀个电流或电压即可直接驱动⼯作,⽽⽆源蜂鸣器则需要输⼊脉冲信号才可以进⾏⼯作。
在51单⽚机开发板上的即为⽆源蜂鸣器。
蜂鸣器相关电路图可以看出,信号是通过P15传递到ULN2003D芯⽚后进⽽传递到芯⽚的OUT5(即BEEP端⼝)再传递到蜂鸣器中的,其中ULN2003D芯⽚起着电流放⼤的作⽤。
控制代码⾸先我们先获得控制蜂鸣器的引脚,从电路图可以看出是P15,所以:sbit BEEP= P1^5;因为这是⽆源蜂鸣器,所以我们需要给它提供脉冲信号输⼊才能使它⼯作。
⽽当BEEP为0时有电流,BEEP为1时⽆电流,所以我们需要循环改变BEEP的值,主函数代码如下所⽰:int main() {while (1){BEEP = ~BEEP;deley(10);}}如果我们希望改变蜂鸣器的⾳调,只需要改变脉冲信号的频率即可,也就是while循环中deley()的参数。
我们也可以不断改变deley()中填⼊的参数来使蜂鸣器发出奇怪的声⾳ :int main() {u16 time = 10;u8 cnts = 50;u8 i;for(time=10;time<200;time++) {for(i=0;i<cnts;i++) {BEEP = ~BEEP;deley(time);}}}独⽴按键独⽴按键电路图可以看到,这4个独⽴按键都是⼀端和单⽚机的引脚(P3[0..3])相连,⽽另⼀端直接接地的。
这些按键的效果是,当按键没有按下时,它们对应的端⼝的输出是⾼电平,⽽当按键按下之后,这些端⼝的输出则变为低电平了。
因此我们可以使⽤轮询的⽅式查看这些端⼝的电平情况来检测按钮是否被按下,如果按下,则我们可以进⾏计数等控制其他元件的操作。
按键控制⼀个LED的点亮和熄灭我们希望当点击按键时,第⼀个LED点亮,⽽在此单击时则熄灭。
按照之前的思路,我们很容易就能写出对应的控制代码:sbit OneLED = P2^0; // 使⽤OneLED来控制对应的引脚的输出sbit k1 = P3^1;void keypros() {if (k1 == 0) {deley(1000); // 消抖if (k1 == 0) {OneLED = ~OneLED;}while (!k1);}}int main() {while (1) {keypros();}}重要的是keypros()函数中的内容,当我们点击第⼀个按钮时,k1的值会变为0,因此我们进⾏轮询的时候就会进⼊到keypros()函数的第⼀个if中。
单片机驱动蜂鸣器C51程序
*******************************************************/
main()
{
while(1)
{
if(k1==0)
{
key_time();
}
}
}
按键延时程序
*********************************************************/
key_time()
{
uchar k;
for(k=0;k<15;k++)
BEEP();
}
/*******************************************************
*********************************************************/
void Delay(uint num)//延时函数
{
while( --num );
}
/*********************************************************
#define uint unsigned int
sБайду номын сангаасit k1=P1^4; //按钮1
sbit k2=P1^5; //按钮2
sbit beep=P3^7; //接蜂鸣器
/*********************************************************
本程序出自会员uiesers的辛勤劳动,作用是驱动蜂鸣器发出声音,蜂鸣器接在单片机的p1.5口,由两个按钮控制.p1.4开,p1.5 关闭声音。
单片机驱动蜂鸣器原理与设计
单片机驱动蜂鸣器原理与设计蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器实物图:电磁式蜂鸣器结构示意图:图 1 图 2电磁式蜂鸣器内部构成:1. 防水贴纸2. 线轴3. 线圈4. 磁铁5. 底座6. 引脚7. 外壳8. 铁芯9. 封胶10. 小铁片11. 振动膜12. 电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
单片机蜂鸣器音乐代码
单片机蜂鸣器音乐代码在单片机的应用中,蜂鸣器是一个常用的音频输出设备。
它可以通过产生不同频率的声音来实现音乐播放、提醒和警报等功能。
本文将介绍如何使用单片机控制蜂鸣器播放音乐,并提供一个简单的音乐代码示例。
首先,让我们了解一下单片机蜂鸣器的工作原理。
蜂鸣器实际上是一个压电陶瓷元件,当电压作用于其上时,它会振动产生声音。
为了产生不同的音调,我们需要控制蜂鸣器的频率和占空比。
单片机通过IO口与蜂鸣器连接,并使用定时器来产生所需的频率。
具体的代码实现将依赖于使用的单片机型号和开发环境。
在这里,我们将以C语言为例,并基于51单片机进行说明。
以下是一个简单的单片机蜂鸣器音乐代码示例,演奏的是《欢乐颂》的前几个音符:```c#include <reg52.h>// 定义各个音符的频率#define C4 4778#define D4 4257#define E4 3792#define F4 3579#define G4 3189#define A4 2841#define B4 2531#define C5 2388// 延时函数void delay(unsigned int count){while(count--);}// 发声函数void beep(unsigned int frequency, unsigned int duration) {unsigned int i;unsigned long time;time = 11059200 / frequency; time >>= 1;for(i = 0; i < duration; i++) {P1 = 0x08;delay(time);P1 = 0x00;delay(time);}}// 主函数void main(){// 设置定时器TMOD = 0x01;TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; TR0 = 1;// 播放音乐beep(C4, 100);beep(D4, 100);beep(E4, 100);beep(F4, 100);beep(G4, 100);beep(A4, 100);beep(B4, 100);beep(C5, 100);while(1);}```以上代码中,我们首先定义了各个音符的频率,这些频率是通过实验测量得到的,具体数值可能因蜂鸣器型号、电源电压等因素而略有差异。
AVR教程第十一课蜂鸣器
动手学 AVR 单片机十一、让蜂鸣器发 出声音
CEPARK-AVR 单片机教程. 技术专家 tiankai 原创 专家技术博客地址: /space.php?uid=8160 有技术类问题欢迎去给技术专家留言. 推荐论坛: 收集人:wang1jin
{
unsigned char i;
推荐网站:
推荐论坛:
PORTE |= (1 << PE5);
//
DDRE |= (1 << PE5);
//
Delayms(500);
PORTE &= ~(1 << PE5);
//
Delayms(500);
最下面给大家介绍几个下载资料的地方: 51 学习专区: / USB 学习专区: / CAN 学习专区: AVR 学习专区: / FPGA 学习专区: / STM32 学习专区: / ARM 学习专区: / DSP 学习专区: / PIC 学习专区: / DIY 电子制作专区: / GPS 学习专区:
下图是一种比较安全的蜂鸣器驱动电路
推荐网站:
推荐论坛:
图中在蜂鸣器两端并联了一个二极管,这个二极管称为续流二极管,蜂鸣器本质 上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣 器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。
#include <util/delay.h>
//GCC 中的延时函数头文件
//函数声明
void Delayus(unsigned int lus);
//us 延时函数
void Delayms(unsigned int lms);
(整理)单片机中蜂鸣器驱动模块.
单片机中蜂鸣器驱动模块在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器來做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
1.驱动方式由于自激蜂鸣器(有源蜂鸣器)是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音,很简单,这里就不对自激蜂鸣器进行說明了。
这里只对必须用1/2duty的方波信号进行驱动的他激蜂鸣器进行说明。
单片机驱动他激蜂鸣器(无源蜂鸣器)的方式有兩种:一种是PWM输出口直接驱动,另一种是利用I/O定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波來直接驱动蜂鸣器。
在单片机的软体设置中有几个系统寄存器是用來设置PWM口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM输出,PWM输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz的方波,通过这个方波再利用三极管就可以去驅動這個蜂鳴器了。
而利用I/O定时翻转电平來产生驱动波形的方式会比较麻烦一点,必须利用计时器來做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用來驱动蜂鸣器了。
比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
2.蜂鸣器驱动电路由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路來驱动,一般使用三极管來放大电流就可以了。
3.蜂鸣器驱动设计由于这里要介绍兩种驱动方式的方法,所以在设计模组系统中将兩种驱动方式做到一块,即程式里边不仅介绍了PWM输出口驱动蜂鸣器的方法,还要介绍I/O口驱动蜂鸣器的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机驱动蜂鸣器原理与程序单片机驱动蜂鸣器原理与设计作者:mcu110 来源:51hei 点击数:12159 更新时间:2007年08月01日【字体:大中小】蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器实物图:电磁式蜂鸣器结构示意图:图 1 图 2 电磁式蜂鸣器内部构成:1. 防水贴纸2. 线轴3. 线圈4. 磁铁5. 底座6. 引脚7. 外壳8. 铁芯9. 封胶10. 小铁片11. 振动膜12. 电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图 3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。
二、蜂鸣器列子下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。
1、简单的蜂鸣器实验程序:本程序通过在P3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。
更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。
大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。
ORG 0000HAJMP MAIN ;跳转到主程序ORG 0030HMAIN: CPL P3.7 ;蜂鸣器驱动电平取反LCALL DELAY ;延时AJMP MAIN ;反复循环DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调DE1: DJNZ R7,DE1RETEND2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。
本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上P1.2和P1.5上的两个黄色发光二极管来发出黄色警示灯。
ORG 0000HAJMP START ;跳转到初始化程序ORG 0033HSTART: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 YS1ms ;延时SETB P3.7 ;输出高电平T1截止,蜂鸣器不响ACALL YS1ms ;延时DJNZ R2,SND1MOV P1,#0FFH ;熄灭黄色警示灯RETYS1ms: ;1ms延时子程序MOV R0,#2YL1: MOV R1,#250 ;改变R0的数值可改变声音频率 DJNZ R1,$DJNZ R0,YL1RETYS500M: ;500ms延时子程序MOV R0,#6YL2: MOV R1,#200YL3: MOV R2,#250DJNZ R2,$DJNZ R1,YL3DJNZ R0,YL2RETEND3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的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 ;定义按钮K1,作为门铃按钮MOV TMOD,#02H ;定时器初始化MOV TH0,#06H #include <AT89X51.H> unsigned char obuf1;unsigned char obuf2;unsigned int obuf3;bit stopb;bit flagb;void main(void){unsigned char i,j;TMOD=0x02; //定时器T0初始化TH0=0x06;TL0=0x06;ET0=1;EA=1; //允许总中断while(1)MOV TL0,#06HSETB ET0 ;启动定时器T0SETB EA ;启动总中断MAIN: ;主程序JB K1,MAIN ;检测K1按钮LCALL YS10M ;延时去抖动JB K1,MAINSETB TR0 ;按钮有效MOV P1,#00H ;点亮按钮指示灯MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$MOV P1,#0FFHLJMP MAIN ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序{if(P3_2==0) //检测K1按键{P1=0x00;for(i=10;i>0;i--)for(j=248;j>0;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{MOV R6,#20D1: 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 NEXTPGSTP:SETB STOPBCLR TR0 obuf3++;if(obuf3==2000) {obuf3=0;if(flagb==0) {flagb=~flagb;}else{stopb=1;TR0=0;}}if(flagb==0) {obuf2++;if(obuf2==3) {obuf2=0;P3_7=~P3_7;}LJMP INT0RET NEXT: JB FLAGB,SOU2 INC OBUF2MOV A,OBUF2CJNE A,#03H,INT0RET MOV OBUF2,#00HCPL P3.7LJMP INT0RETSOU2: INC OBUF1MOV A,OBUF1CJNE A,#04H,INT0RET MOV OBUF1,#00HCPL P3.7LJMP INT0RETINT0RET:RETIEND}else{obuf1++;if(obuf1==4){obuf1=0;P3_7=~P3_7;}}}单片机驱动蜂鸣器原理的程序编写。