任务5.10 蜂鸣器和音乐发生器
- 格式:doc
- 大小:267.35 KB
- 文档页数:15
蜂鸣器原理蜂鸣器是一种常见的声音发生器,它广泛应用于各种电子设备中,如手机、电脑、家电等。
它的主要作用是发出一种持续的蜂鸣声,用于提醒用户或者传达信息。
那么,蜂鸣器的原理是什么呢?接下来,我们将深入探讨蜂鸣器的原理。
蜂鸣器的原理其实很简单,它利用了电磁感应的原理。
蜂鸣器内部通常包含一个线圈和一个振膜。
当电流通过线圈时,会在周围产生一个磁场,这个磁场会使振膜产生振动,从而产生声音。
具体来说,当电流通过线圈时,线圈会成为一个电磁铁,产生磁场。
这个磁场会吸引或者排斥振膜,使振膜产生振动。
这种振动会导致空气的振动,最终产生声音。
通过控制电流的大小和频率,可以控制振膜的振动频率,从而产生不同的音调和音量的声音。
蜂鸣器通常分为有源蜂鸣器和无源蜂鸣器两种类型。
有源蜂鸣器需要外部电路驱动,它本身不包含振荡器,需要外部提供振荡信号。
而无源蜂鸣器则内部集成了振荡器,只需要外部提供电源即可发出声音。
在实际应用中,蜂鸣器通常会与其他电路配合使用,比如与微处理器、传感器等连接,根据需要发出不同的声音。
蜂鸣器可以用于警报、提醒、报警等场合,也可以用于模拟乐器中,产生音乐。
除了电磁感应原理外,蜂鸣器还可以利用压电效应或者压电陶瓷来产生声音。
压电蜂鸣器是利用压电陶瓷的压电效应产生声音的,当施加电压时,压电陶瓷会发生形变,产生声音。
这种蜂鸣器具有体积小、功耗低的特点,广泛应用于手持设备中。
总的来说,蜂鸣器是一种利用电磁感应或者压电效应产生声音的设备,它在现代电子产品中有着广泛的应用。
通过对蜂鸣器原理的深入了解,我们可以更好地应用它,也可以在需要时进行维护和故障排查。
希望本文对您有所帮助,谢谢阅读!。
一、实验目的1. 熟悉51单片机的基本结构和工作原理。
2. 掌握51单片机的I/O口编程方法。
3. 学习蜂鸣器的驱动原理和应用。
4. 通过实验,提高动手实践能力和问题解决能力。
二、实验原理蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生按键音、报警音等提示信号。
根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。
1. 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
2. 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才能发声,调整提供振荡脉冲的频率,可发出不同频率的声音。
在本次实验中,我们使用的是无源蜂鸣器。
51单片机通过控制P1.5端口的电平,产生周期性的方波信号,驱动蜂鸣器发声。
三、实验器材1. 51单片机实验板2. 蜂鸣器3. 连接线4. 电路焊接工具5. 编程软件(如Keil)四、实验步骤1. 电路连接:- 将蜂鸣器的正极连接到51单片机的P1.5端口。
- 将蜂鸣器的负极接地。
2. 程序编写:- 使用Keil软件编写程序,实现以下功能:1. 初始化P1.5端口为输出模式。
2. 通过循环,不断改变P1.5端口的电平,产生方波信号。
3. 调整方波信号的频率,控制蜂鸣器的音调。
3. 程序下载:- 将程序下载到51单片机中。
4. 实验观察:- 启动程序后,观察蜂鸣器是否发声,以及音调是否与程序设置一致。
五、实验结果与分析1. 实验结果:- 成功驱动蜂鸣器发声,音调与程序设置一致。
2. 结果分析:- 通过实验,我们掌握了51单片机的I/O口编程方法,以及蜂鸣器的驱动原理。
- 在程序编写过程中,我们学习了方波信号的生成方法,以及如何调整方波信号的频率。
六、实验总结本次实验成功地实现了51单片机控制蜂鸣器发声的功能,达到了预期的实验目的。
通过本次实验,我们提高了以下能力:1. 对51单片机的基本结构和工作原理有了更深入的了解。
2. 掌握了51单片机的I/O口编程方法。
3. 学习了蜂鸣器的驱动原理和应用。
实验课程名称:监测控制系统应用实验五实验项目名称:音乐发生器的设计与实现实验成绩:实验者:专业班级:电信130 班同组者:实验日期:周四3~4节课一.实验内容掌握单片机片内定时器应用设计技巧,会确定定时器的时间常数,能够进行定时器的初始化编程。
掌握利用微处理器设计音乐发生器的方法二.探究内容1.利用定时器产生特定的频率信号,设计一个音乐发生器,可以循环播放音乐,候选乐曲3首。
2.用按键选择播放哪一首音乐。
有音乐播放的启停键。
3.用8个LED灯随节拍闪烁(选做)4.扩展内容(选做),用7个按键分别产生音阶1、2、3、4、5、6、7,按一下键,即产生一个节拍的相应音符,也就是设计电子琴。
三.实验设计:1.设计要求具体任务:(1)设计一个音乐发生器,候选音乐有三种,K1可启动停止音乐,K2用于选择音乐段;(2)用proteous仿真电路,保证设计的正确性;(3)基于开发板完成实物制作。
2. 探究内容:(1)如何利用音阶计算定时器的时间常数?(2)音乐声音的洪亮稳定如何保证?(3)节拍如何实现?三、实验设计:1.设计音乐发生器的基本任务的基本任务:(1)研究产生音阶1、2、3、4、5、6、7的方法,计算7个音阶对应的时间常数 (2)设计产生单首乐曲循环的软件,调试后下载到开发板(3) 设计产生3首乐曲的音乐发生器,用按键选择循环的单曲,调试后下载到开发板,运行。
2.相关知识介绍2.3 音阶对应频率计数初值的计算单片机的振荡频率为f osc =12MHz ,通过定时器T0溢出后对P3.0口取反产生方波,故定时器溢出时间为1/2f 。
由:nosc n f f X ⨯=⨯-2112)2(16 , 则定时初值为:16224osc n n f X f =- 以音阶“1”为例:f =523 Hz ,则T =1/f定时初值:6161612102264580442424523osc n n f X FC Hf ⨯=-=-==⨯用同一方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查表向定时器T0装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。
课程设计目标与任务、计划与进度安排:要求:利用51单片机,蜂鸣器设计音乐播放器。
按键控制播放三首歌曲。
完成以下设计环节:1)使用PROTEUS仿真软件,设计仿真原理图。
2)使用Uvision2开发平台,采用C语言设计软件程序。
3)在仿真原理图上调试运行软件程序,完成系统仿真。
1.项目功能概述二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。
随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质,功能,品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。
而品质的提高,功能的更新,可靠性的增强,品种的变化无不于产品的核心控制部分水平的提高密不可分。
家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。
而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。
现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。
例如,就市场上的 mp3目前的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。
但这些音乐播放器也或多或少的存在着一些问题,解决这些问题,除智能化的单片机莫属。
2.硬件电路设计2.1 制作音乐播放器所使用的主要元器件主要元器件个数8051单片机1个晶振 12MHZ 1个小喇叭1个电容 30pf 2个极性电容 1uf 2个10nf 1个电阻 10k 1个排阻 1k 1个2.2 8051单片机8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔公司于1981年制造。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,如Atmel、飞利浦、深联华等公司,相继开发了功能更多、更强大的兼容产品。
音乐发生器实验目录1 前言 (2)2 需求分析 (2)2.1原理 (2)2.2要求 (2)2.3任务 (2)2.4运行环境 (2)2.5开发工具 (2)3 概要设计 (3)3.1系统流程图: (3)3.2音符文件读取程序流程图 (3)3.3播放子程序 (4)3.4延时子程序 (4)4 详细设计 (5)4.1歌曲编排 (5)4.2分析和设计 (5)4.3具体代码实现 (8)5 课程设计的总结与体会 (13)6 致谢 (13)7 参考资料 (13)1前言编写一个程序来初始化8253定时/计数器和8255并行通信接口芯片。
通过接口控制音乐发声器的播放和灯光的闪烁,实现通过运行在MFDI平台运行程序对硬件电路的控制。
2需求分析2.1 原理编写程序对8253和8255芯片进行初始化,按照音符来设定频率和8253定时/计数器的延时时间。
对8255芯片pc0和pc6口的置0和1来控制扬声器的开关,对pc4口的置0和1控制LED灯的闪烁。
2.2 要求(1)熟悉电路,理解各个元件之间的控制流程。
(2)熟悉MFDI平台的运行环境。
(3)熟练掌握C语言,调用中断子程序和端口函数对端口进行读写数据的操作。
(4)理解乐谱知识,熟悉音频转换表和节拍的延长时间2.3 任务(1)曲谱转换(2)分析电路图(3)画出程序流程图(4)编写代码(5)程序分析与调试(6)测试2.4 运行环境(1)WINDOWS2000/XP系统(2)MFDI实验平台(3)VC编译环境2.5 开发工具C语言3概要设计3.1 系统流程图(如图3.1):图3.1 系统流程图3.2 音符文件读取程序流程图(如图3.2):图3.2 音符文件读取流程图3.3 播放子程序流程图(如图3.3):图3.3 播放流程图3.4 延时子程序流程图(如图3.4):图3.4 延时流程图4详细设计4.1 歌曲编排根据歌曲的音符来获取它的频率和延时时间,具体介绍请参考《音乐发声器-音乐篇》4.2 分析和设计在程序的开头部分是声明了四首歌曲的频率和延时时间然后分别定义了指向频率数组和延时数组的指针,void interrupt (*oldhandler)(__CPPARGS);void interrupt handler(__CPPARGS){(*pTimeDelay) -- ; // 延时点数减一oldhandler(); // 调用原例程}这个函数表示的是调用的延时子程序。
蜂鸣器音乐发生器实验报告一、实验目的(1)学习用数控分频器设计蜂鸣器音乐发生电路。
(2)了解乐谱的基本知识,可以将乐谱转换为Quartus II 文件,掌握其演奏的原理。
(3)掌握设计中各模块的功能,能够填入并演奏新的曲子。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1. 实验可实现的功能(1)蜂鸣器可以演奏四首音乐,四首音乐通过两个拨码开关控制,可以随意更改想听的曲目。
(2)在播放音乐的同时,用一位数码管显示当前音乐的简谱,并且用两个发光二极管显示高、中、低不同的音调。
(3)在用拨码开关选择曲目的同时,可以在LCD1602液晶屏上看到当前音乐的名称。
2. 音频方案设计蜂鸣器音乐发生器的基本原理:组成乐曲的每个音调的频率值以及音长所延续的时间是乐曲能够连续演奏的两个基本数据,所以只要控制输出到蜂鸣器的时钟信号频率的高低和持续的时间,就可以使蜂鸣器发出连续的乐曲声。
(1)音调频率值的控制简谱中音调与音频的对应关系如表3.2.1所示,表中的低、中、高音的频率遵循二倍规则,就是说中音1是低音1频率的2倍,高音1是中音1频率的2倍,以此类推。
已知低音的频率,可以通过如下的MATLAB程序计算出中、高音的频率,并且可以得出各音调的分频值与频率预直数,其中预置数是用11位计数器来表示的。
计算中、高音及各音调分频值与频率预置数的MATLAB程序:clc;f=50000000; %50MHzbilv=2^(1/12); %相邻音调频率之间的比率a(6)=440.0; %低音6的频率为440Hza(7)=a(6)*bilv*bilv; %低音7的频率a(5)=a(6)/bilv/bilv; %低音5的频率a(4)=a(5)/bilv/bilv; %低音4的频率a(3)=a(4)/bilv; %低音3的频率a(2)=a(3)/bilv/bilv; %低音2的频率a(1)=a(2)/bilv/bilv; %低音1的频率b=a*2; %中音的频率c=b*2; %高音的频率counter=2^11; %分频值对应的位数为11位f=f/50/2; %50MHz,50分频,再2分频for i=1:7zhia(i)=counter-f/a(i); %低音的分频预置数zhib(i)=counter-f/b(i); %中音的分频预置数zhic(i)=counter-f/c(i); %高音的分频预置数end音调、分频值及频率预置数的表格如下:表3.2.1 音符、音频及其预置数低音音符 1 2 3 4 5 6 7 音频/Hz 262 294 330 349 392 440 494 预置数137 345 531 616 772 912 1036中音音符 1 2 3 4 5 6 7 音频/Hz 523 587 659 698 784 880 988 预置数1092 1197 1290 1332 1410 1480 1542高音音符 1 2 3 4 5 6 7 音频/Hz 1047 1175 1319 1397 1568 1760 1976 预置数1570 1622 1669 1690 1729 1764 1795(2)音调持续时间的控制音乐中的银除了有高低音之分外,还有长短之分。
蜂鸣器方案设计及分析报告# 蜂鸣器方案设计及分析报告## 1. 引言蜂鸣器是一种常见的声响发生器,广泛应用于各种电子设备中。
该报告旨在介绍蜂鸣器的设计方案及其分析。
## 2. 蜂鸣器原理蜂鸣器是一种能够发出不同频率声音的电子元件,其工作原理基于震动振膜的声学效应。
当电流通过蜂鸣器时,振膜会产生机械振动,从而产生声音。
## 3. 蜂鸣器设计方案为了设计一个稳定可靠的蜂鸣器方案,我们需要考虑以下几个方面:### 3.1 电源供应蜂鸣器通常采用直流电源供应,常见的电压为5V。
因此,在设计中需考虑电源的稳定性和适配性。
### 3.2 控制电路为了控制蜂鸣器的声音频率和持续时间,我们需要设计一个合适的控制电路。
一种常见的设计方案是使用555定时器芯片。
该芯片能够通过调节电容和电阻的值来控制输出频率和占空比。
### 3.3 驱动电路蜂鸣器需要一个合适的驱动电路来提供足够的电流。
一种常见的设计方案是使用三极管驱动电路。
通过调节三极管的工作状态来控制电流的流动,从而驱动蜂鸣器发声。
### 3.4 声音输出为了提供更好的声音效果,可以通过添加一个音频放大器电路来增强蜂鸣器的声音输出。
音频放大器可以增加声音的音量和清晰度。
## 4. 蜂鸣器方案分析在设计和选择蜂鸣器方案时,我们需要综合考虑以下几个因素:### 4.1 成本成本是考虑蜂鸣器方案的重要因素之一。
我们需要选择经济实用的材料和器件,以确保整体成本的可控性。
### 4.2 可靠性蜂鸣器在长时间工作时需要具备良好的可靠性。
因此,选择质量可靠、寿命长的蜂鸣器元件尤为重要。
### 4.3 功耗功耗是设计中需要考虑的关键因素之一。
如果蜂鸣器方案要求长时间工作且使用电池供电,我们需要选择尽量低功耗的蜂鸣器。
### 4.4 音效音效是蜂鸣器的关键功能之一。
我们需要选择能够提供清晰、音量适宜的蜂鸣器。
在一些特殊应用场景中,还需要考虑音高的可调性。
## 5. 结论蜂鸣器是一种常见的声响发生器,广泛应用于电子设备中。
目录摘要 (1)绪论 (2)1.1研究的目的和意义 (2)1.2国内外研究的现状及发展趋势 (2)1.2.1国内外研究的现状 (2)1.3音乐发生器的扩展 (3)第1章设计方案 (4)1.1 设计方案论证 (4)1.1.1利用AT89C51、74LS373锁存器和27512外部扩展组成的音乐播放器 (4)第2章硬件设计 (5)2.1 电路组成及工作原理 (5)2.1.1 电路组成 (5)2.1.2 电路工作原理 (6)2.2 AT89C51的简介 (6)2.2.1 AT89C51功能概述 (6)2.2.2 AT89C51的管脚图 (7)2.2.3 AT89C5 单片机的引脚介绍 (7)2.2.4 晶振电路 (8)2.3 扬声器电路 (8)2.4 显示电路 (8)2.5 更换歌曲电路 (9)2.6 复位电路 (9)2.7 程序存储器外部扩展电路 (9)第3章软件系统设计 (10)3.1 软件流程设计 (10)第4章系统调试 (11)4.1 常用调试工具 (12)4.1.1 Keil C 软件 (12)4.1.2 PROTEUS软件 (13)4.2 系统调试及性能分析 (13)心得体会 (15)参考文献 (16)附录 (17)附录1 音乐发生器电路原理图 (17)附录2 元件明细表 (18)附录3 源程序代码 (19)摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
当今,利用单片机控制音乐播放多不胜举,音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。
它有功能多﹑价格优﹑外围电路简单的特点,很受音乐爱好者及音乐芯片制造商的青昧。
本文中,用单片机芯片及少数外围电路控制音乐播放。
音乐发生器 课程设计一、课程目标知识目标:1. 学生能理解并掌握音乐的基础理论知识,如音符、音长、音高和音色。
2. 学生能掌握音乐发生器的基本操作,并了解其工作原理。
3. 学生能运用音乐发生器创作简单旋律,理解不同音符组合对音乐效果的影响。
技能目标:1. 学生能通过音乐发生器实践操作,提高动手能力和问题解决能力。
2. 学生能运用所学的音乐知识,创作并演奏出自己的音乐作品。
3. 学生能在团队协作中发挥个人特长,与他人共同完成音乐创作。
情感态度价值观目标:1. 学生培养对音乐的兴趣和热情,增强对音乐艺术的欣赏能力。
2. 学生在创作过程中,培养创新意识和实践精神,提高自信心。
3. 学生通过团队协作,培养集体荣誉感,学会尊重和理解他人。
课程性质:本课程为音乐与信息技术相结合的实践课程,注重培养学生的动手操作能力、创新意识和团队协作能力。
学生特点:五年级学生具备一定的音乐基础知识和信息技术操作能力,好奇心强,喜欢动手操作和团队活动。
教学要求:结合学生特点,教师应采用启发式教学,引导学生主动探索,关注个体差异,鼓励学生积极参与,使学生在实践中提高音乐素养和信息技术能力。
通过本课程的学习,实现以上课程目标,为学生后续音乐创作和信息技术的学习打下坚实基础。
二、教学内容1. 音乐基础知识回顾:音符、音长、音高、音色及五线谱的认识。
相关教材章节:第一章 音乐基础知识2. 音乐发生器介绍:介绍音乐发生器的基本结构、功能及操作方法。
相关教材章节:第三章 乐器与音乐制作3. 音乐创作实践:a. 使用音乐发生器创作简单旋律。
b. 学习不同音符组合对音乐效果的影响。
c. 尝试为旋律添加音色和节奏。
相关教材章节:第五章 音乐创作实践4. 团队协作与展示:a. 学生分组进行音乐创作,发挥各自特长。
b. 每组展示创作成果,进行交流和评价。
c. 教师点评,指导改进方法。
教学进度安排:第一课时:回顾音乐基础知识,介绍音乐发生器。
第二课时:学生动手实践,使用音乐发生器创作简单旋律。
湖南铁路科技职业技术学院单片机课程设计题目:基于单片机的数字音乐盒设计专业:机电一体化系部:机械工程系姓名:班级:309-2班湖南铁路科技职业技术学院单片机课程设计说明书基于单片机的数字音乐盒设计任务书一、任务设计一款基于AT89C51单片机的数字音乐盒。
二、设计要求(1)利用单片机的I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
(2)共有10首音乐,每首乐曲都由相应的按键控制,并有开关键、暂停键、上一曲及下一曲控制键;(3)利用LCD液晶显示歌曲的序号、播放时间,开机时显示英文欢迎提示字符。
湖南铁路科技职业技术学院单片机课程设计说明书目录任务书 (1)目录 (2)1 概述 (5)1.1单片机数字音乐盒有关介绍 (5)1.2LED显示屏控制技术状况 (9)1.3本设计任务 (10)2总体方案论证与设计 (12)2.1单片机的选取 (12)2.2LED显示方式 (13)2.3LED驱动模块 (13)2.4系统总体结构框图 (14)3 系统硬件设计 (15)3.1AT89C51芯片功能和硬件连接 (15)3.2LED显示器 (18)3.3键盘 (19)3.4系统复位电路的设计 (20)3.5时钟电路模块 (20)3.6输出显示电路 (21)3.7音频输出部分 (21)3.8整体硬件电路 (23)4系统软件设计 (25)4.1主模块的设计 (25)4.2外部中断源系统设计 (26)4.3基本显示模块设计 (27)4.4系统初始化程序 (28)湖南铁路科技职业技术学院单片机课程设计说明书4.5音调、节拍以及编码的确定方法 (28)4.6程序流程图 (33)4.7文档顶端程序清单 (35)5 调试结果 (46)5.1系统总电路图 (46)5.2运行结果及分析 (46)总结 (48)参考文献 (49)湖南铁路科技职业技术学院单片机课程设计说明书1 概述传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
任务5.10 蜂鸣器的原理和驱动5.9.1 任务介绍在实际应用中,经常利用利用单片机控制蜂鸣器产生各种音乐用于报警和提示,如手机的铃声、时钟的音乐报时和按键提示音等。
本节的任务是:通过单片机I/O控制开发板上的蜂鸣器演奏音乐。
5.9.2 知识准备1、蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型。
压电蜂鸣器内部有压电陶瓷和金属片,是利用压电陶瓷的压电效应,带动金属片的振动来发声,频率在1KHz~10KHz。
电磁式蜂鸣器内部有磁铁和线圈,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声,频率在0.5KHz~5KHz。
压电蜂鸣器结构简单耐用,声音大,多用于报警器等设备。
电磁蜂鸣器音色好,多用于语音、音乐等设备。
蜂鸣器按其是否带有振荡器又分为有源和无源两种类型。
有源蜂鸣器内部带有振荡器,只需要在其供电端加上额定直流电压,其内部的振荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。
无源蜂鸣器内部没有振荡器,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。
开发板上的蜂鸣器属于电磁式无源蜂鸣器。
2、开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图5.10.1所示。
5.10.1 开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似,需要几十mA的电流,通常借助于三极管来作为中间功率驱动。
图5.10.1中,蜂鸣器接在PNP三极管(8550)的集电极上,单片机I/O接三极管的基极,电阻R10是三极管基极限流电阻,电阻R11是上拉电阻。
蜂鸣器内部线圈是感性器件,二极管D10并联在蜂鸣器两端,起到限制反峰电压的作用。
3、无源蜂鸣器的程序驱动无源蜂鸣器本身不带振荡器,只有让蜂鸣器不停的处于“通电-断电”的状态,才能发出声音。
对于开发板上蜂鸣器驱动电路而言,只需要让控制蜂鸣器的I/O口不停的“置1-置0”就可以了。
下面是利用51单片机P.20驱动蜂鸣器的程序。
#incldue<reg52.h>#define uchar unsigned char#define uint unsigend intsbit Buzzer=P2^0; //蜂鸣器接口定义#define BuzzerOn Buzzer=0#define BuzzerOff Buzzer=1//ms级延时函数void DelayMs(uint xms){uint i,j;for(i=0;i<xms;i++)for(j=0;j<122;j++);}//主函数void main(){while(1){BuzzerOn;DelayMs(1);BuzzerOffDelayMs(1);}}在程序中,1ms让蜂鸣器通电,1ms让蜂鸣器断电,频率500Hz。
程序编译下载后,蜂鸣器引脚控制端接P2.0引脚,蜂鸣器发出“嗡嗡”的声音。
然后在把延时改为2ms、3ms、5ms,蜂鸣器会发出不同频响的声音。
4、蜂鸣器程序改造和按键提示音利用延时函数来驱动蜂鸣器显然不是个好的办法,下面的程序通过定时器驱动蜂鸣器,开发板上2个独立按键,每个按键按下时,蜂鸣器响一声,持续时间为0.3秒。
2个按键对应的频率分别为500Hz和1KHz。
要求程序不堵塞CPU,效率高。
(1)工程结构和主函数工程结构图如图5.10.2所示。
除了主函数外,还有按键模块、定时器模块和键值处理模块。
图5.10.2 工程结构图主函数如下:#include<reg52.h>#include"MicroDefine.h"#include"Timer.h"#include"IndependentKey.h"#include"KeyProcess.h"/****************************************************************************函数名称:main()*功能:主函数*入口参数:无*出口参数:无*说明:按键被按下时,蜂鸣器产生0.5S提示音。
按键A提示音频率:500Hz按键B提示音频率:1KHz***************************************************************************/void main(){uchar KeyValue=0;DelayMs(200);TimerInit(); //定时器初始化while(1){if(FlagSystem1Ms==1) //1ms时标信号{FlagSystem1Ms=0;KeyValue=KeyGetValue(); //获取键值KeySound(KeyValue); //键值处理}}}程序解释:主函数内容简单,获取按键键值,并处理键值。
(2)其它功能模块①定时器模块(Timer.c,Timer.h不列出)#include"Timer.h"bit FlagSystem1Ms=0; //1m时标信号uchar T1High=0; //T0高8位uchar T1Low=0; //T1低8位/*************************************************************************** *函数名称:TimerInit()*功能:定时器初始化*入口参数:无*出口参数:无*说明:定时器0:产生1ms时标信号,方式2定时器1:驱动蜂鸣器,方式1***************************************************************************/ void TimerInit(){TMOD=0x12;TH0=TL0=56;TH1=TL1=0;ET0=ET1=1;EA=1;TR0=1; //开定时器0,TR1=0; //定时器1关闭,按键按下,才能开定时器1}/****************************************************************************函数名称:Timer0Isr()*功能:定时器0中断服务函数*入口参数:无*出口参数:无*说明:***************************************************************************/ void Timer0Isr() interrupt 1{static uchar Cnt200us=0;if(++Cnt200us<=5) //产生1ms时标信号{Cnt200us=0;FlagSystem1Ms=1;}}/****************************************************************************函数名称:Timer1Isr()*功能:定时器1中断服务函数*入口参数:无*出口参数:无*说明:通过改变定时器的初装值,产生不同频率的蜂鸣器驱动信号***************************************************************************/ void Timer1Isr() interrupt 3{TH1=T1High; //加载初值,键值处理模块设置初值TL1=T1Low;Buzzer=~Buzzer; //电平反转}程序解释:使用了2个定时器,定时器0用来产生1ms时标信号,定时器1用来驱动蜂鸣器。
在定时器初始化中,定时器1配置好后,先不开定时器1,只有按键按下后,才能开定时器1。
定时器1使用了方式1(16位),每一次溢出后,在中断服务函数中,手动重装初值,初值的大小由键值处理模块给定。
在中断服务函数中,实现蜂鸣器驱动I/O的电平反转。
③键值处理模块(KeyProcess.h)#include"KeyProcess.h"/****************************************************************************函数名称:KeySound()*功能:按键提示音*入口参数:按键值*出口参数:无*说明:***************************************************************************/ void KeySound(uchar KeyValue){static uchar SoundState=0; //状态机变量static uint Cnt1Ms=0; //1ms计数器switch(SoundState){case 0: //状态0:按键被按下,开定时器1{if(KeyValue==0x81) //按键A被按下,蜂鸣器响{T1High=0xFC; //定时器1初值,输出500Hz方波T1Low=0x18;TH1=0xFF; //让定时器快速完成第一次溢出,TL1=0xFF;TR1=1; //开定时器SoundState=1; //跳转到状态0}if(KeyValue==0x82) //按键B被按下,蜂鸣器响{T1High=0xFE;T1Low=0x0c;TH1=0xFF;TL1=0xFE;SoundState=1;TR1=1;}}break;case 1: //状态1:延时299ms,关闭蜂鸣器{if(++Cnt1Ms>=299){Cnt1Ms=0;TR1=0; //关闭定时器,蜂鸣器不响SoundState=0; //跳转到状态0}}}}程序解释:KeySound()由状态机构成,分成两个状态。
状态0:检测到按键被按下,根据按键值,给定时器赋初值,并启动定时器。
状态1:延时299ms后,关闭定时器1,并返回到状态0。
利用状态机构成按键提示音函数,不堵塞CPU,系统效率高。
5.9.3 任务实施1、音符和频率的关系通过以上知识的学习,初学者了解到蜂鸣器发声的原理,即通过I/O口输出脉冲信号,再将信号通过三极管放大,推动发声器件(蜂鸣器)发声。
脉冲信号的频率不同,蜂鸣器发出的声音不同。
要完成本节的音乐播放器,需弄清楚两个概念即可,也就是“音符”和“节拍”。
音符其实就是我们常说的“Do Re Mi Fa Sol La Si Do”,每一个音符对应一定的频率。
以中音“1”为例,其频率为523Hz,周期为1秒/523=1912us,半周期为956us。
通常没有做特殊说明,我们把音乐的一个节拍的时间长度定位0.4秒,1/4节拍的时间则为0.1秒。