任务510蜂鸣器和音乐发生器论文艺术文章论文大学文章.pdf

上传人:c****1 文档编号:95961566 上传时间:2023-09-05 格式:PDF 页数:14 大小:681.86KB
返回 下载 相关 举报
任务510蜂鸣器和音乐发生器论文艺术文章论文大学文章.pdf_第1页
第1页 / 共14页
任务510蜂鸣器和音乐发生器论文艺术文章论文大学文章.pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《任务510蜂鸣器和音乐发生器论文艺术文章论文大学文章.pdf》由会员分享,可在线阅读,更多相关《任务510蜂鸣器和音乐发生器论文艺术文章论文大学文章.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、任务 5.10 蜂鸣器的原理和驱动 5.9.1 任务介绍 在实际应用中,经常利用利用单片机控制蜂鸣器产生各种音乐用于报警和提示,如手机 的铃声、时钟的音乐报时和按键提示音等。本节的任务是:通过单片机I/O控制开发板上的蜂鸣器演奏音乐。5.9.2 知识准备 1、蜂鸣器的原理和分类 蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型。压电蜂鸣器内部有压电陶瓷 和金属片,是利用压电陶瓷的压电效应,带动金属片的振动来发声,频率在 1KHz10KHN电 磁式蜂鸣器内部有磁铁和线圈,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发 声,频率在 0.5KHz5KHzo压电蜂鸣器结构简单耐用,声音大,多用

2、于报警器等设备。电磁 蜂鸣器音色好,多用于语音、音乐等设备。蜂鸣器按其是否带有振荡器又分为有源和无源两种类型。有源蜂鸣器内部带有振荡器,只需要在其供电端加上额定直流电压,其内部的振荡器就可以产生固定频率的信号,驱动蜂 鸣器发出声音。无源蜂鸣器内部没有振荡器,需要在其供电端上加上高低不断变化的电信号 才可以驱动发出声音。开发板上的蜂鸣器属于电磁式无源蜂鸣器。2、开发板蜂鸣器驱动电路 开发板蜂鸣器驱动电路如图 5.10.1所示。5.10.1开发板蜂鸣器驱动电路 蜂鸣器的驱动和继电器相似,需要几十 mA的电流,通常借助于三极管来作为中间功率驱 动。图5.10.1中,蜂鸣器接在PNP三极管(8550)

3、的集电极上,单片机I/O接三极管的基极,电阻R10是三极管基极限流电阻,电阻 R11是上拉电阻。蜂鸣器内部线圈是感性器件,二极 管D10并联在蜂鸣器两端,起到限制反峰电压的作用。3、无源蜂鸣器的程序驱动 无源蜂鸣器本身不带振荡器,只有让蜂鸣器不停的处于“通电 声音。对于开发板上蜂鸣器驱动电路而言,只需要让控制蜂鸣器的 就可以了。下面是利用 51单片机P.20驱动蜂鸣器的程序。#in cldue#defi ne uchar un sig ned char#defi ne uint un sige nd int sbit Buzzer=P2A0;/蜂鸣器接口定义#defi ne BuzzerO n

4、 Buzzer=0#defi ne BuzzerOff Buzzer=1/ms级延时函数 void DelayMs(uint xms)uint i,j;for(i=0;ixms;i+)for(j=0;j122;j+);/主函数 void mai n()while(1)BuzzerO n;DelayMs(1);BuzzerOff DelayMs(1);-断电”的状态,才能发出 I/O 口不停的“置1-置0”手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金

5、属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常在程序中,1ms让蜂鸣器通电,1ms让蜂鸣器断电,频率 500Hz。程序编译下载后,蜂鸣 器引脚控制端接 P2.0引脚,蜂鸣器发出“嗡嗡”的声音。然后在把延时改为 2ms、3ms、5ms

6、,蜂鸣器会发出不同频响的声音。4、蜂鸣器程序改造和按键提示音 利用延时函数来驱动蜂鸣器显然不是个好的办法,下面的程序通过定时器驱动蜂鸣器,开发板上2个独立按键,每个按键按下时,蜂鸣器响一声,持续时间为 0.3秒。2个按键对应 的频率分别为500Hz和IKHzo要求程序不堵塞 CPU效率高。(1)工程结构和主函数 工程结构图如图5.10.2所示。除了主函数外,还有按键模块、定时器模块和键值处理模 块。-:J Target 1 包巳User 匡main.c =1 S Hardware 爭圍 IndepencentKmy.c MicroDefine.c E-ffi KeyProcessc E-E T

7、imer,c 图5.10.2 工程结构图 主函数如下:#in clude#i ncludeMicroDefi ne.h#i ncludeTimer.h#in cludeI ndepe nden tKey.h#in cludeKeyProcess.h/*函数名称:mai n()*功能:主函数*入口参数:无*出口参数:无*说明:按键被按下时,蜂鸣器产生 0.5S提示音。按键A提示音频率:500Hz 按键B提示音频率:1KHz*/手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣

8、器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常void mai n()uchar KeyValue=O;DelayMs(200);TimerI nit();/定时器初始化 while(1)if(FlagSyste

9、m1Ms=1)/1ms 时标信号 FlagSystem1Ms=0;KeyValue=KeyGetValue();/获取键值 KeySou nd(KeyValue);/键值处理 程序解释:主函数内容简单,获取按键键值,并处理键值。(2)其它功能模块 定时器模块(Timer.c,Timer.h 不列出)#in cludeTimer.h bit FlagSystem1Ms=0;/1m 时标信号 uchar T1High=0;T0 高8位 uchar T1Low=0;/T1 低8位 /*函数名称:TimerI nit()*功能:定时器初始化*入口参数:无*出口参数:无*说明:定时器0:产生1ms时标信

10、号,方式2 定时器1:驱动蜂鸣器,方式 1*/void TimerI ni t()TMOD=0 x12;TH0=TL0=56;TH1=TL1=0;ETO=ET 1=1;EA=1;手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上

11、高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常TR0=1;/开定时器0,TR1=0/定时器1关闭,按键按下,才能开定时器 1 /*函数名称:TimerOlsr()*功能:定时器0中断服务函数*入口参数:无*出口参数:无*说明:*/void Timer0Isr()in terrupt 1 static uchar Cn t200us=0;if(+C nt200us=299)Cn t1Ms=0;TR1=0;/Sou ndState=O;/程序解释:KeySoun

12、d()由状态机构成,分成两个状态。状态 0:检测到按键被按下,根据按键值,给定时器赋初值,并启动定时器。状态 1:延时299ms后,关闭定时器1,并返回到状态 0。利用状态机构成按键提示音函数,不堵塞 CPU系统效率高。5.9.3 任务实施 1、音符和频率的关系 通过以上知识的学习,初学者了解到蜂鸣器发声的原理,即通过 I/O 口输出脉冲信号,再将信号通过三极管放大,推动发声器件(蜂鸣器)发声。脉冲信号的频率不同,蜂鸣器发 出的声音不同。要完成本节的音乐播放器,需弄清楚两个概念即可,也就是“音符”和“节 拍”。音符其实就是我们常说的“Do Re Mi Fa Sol La Si Do”,每一个音

13、符对应一定的频率。以中音“1”为例,其频率为 523Hz,周期为1秒/523=1912us,半周期为956us。通常没有做特殊说明,我们把音乐的一个节拍的时间长度定位 0.4秒,1/4节拍的时间则 为0.1秒。如果以1/4节拍为基准长度,则 1拍为4个基准长度,1/2拍为2个基准长度。定时器要产生中音“1”对应的频率(523Hz),则定时器每次溢出的时间为半个周期(即 956us)。假设中音“1”的时间长度为1/4拍,则定时器溢出的次数为 0.1秒/956us=105次。1/2拍和1拍对应的溢出次数分别 105次*2和105次*4。状态1:延时299ms,关闭蜂鸣器 关闭定时器,蜂鸣器不响 跳

14、转到状态0 手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似

15、需要几十的电流通常为了程序的方便,我们把低音音符(“5”“7”)、中音音符(“1”“7”)和高音 音符(“1”“3”)的频率、半周期及 1/4节拍内半周期数放在表 5.10.1中。表5.10.1 14 个音符频率对应表 数组下标 音符 频率(Hz)周期(us)半周期(us)1/4 节拍(0.1S)内半周期数的个数 0 5 392 2551 1276 78 1 6 440 2273 1136 88 2 7 494 2024 1012 99 3 1 523 1912 956 105 4 2 587 1074 851 117 5 3 659 1517 758 132 6 4 698 1436 716

16、 140 7 5 783 1277 638 157 8 6 880 1136 568 176 9 7 988 1012 506 198 10 1 1046 956 478 209 11 2 1175 851 425 235 12 3 1318 759 379 264 根据表5.10,我们先构建两个数组,分别存放以上音符的半周期时间和 1/4拍内半周期的 个数。13个音符的半周期长度 uchar code TableNoteTime=1276,1136,1012,956,851,758,716,638,568,506,478,425,379;13个音符1/4拍内半周期的个数 uchar code

17、 TableNoteNum=78,88,99,105,117,132,140,157,176,198,209,235,264;图5.10.3是儿童歌曲“两支老虎”的简谱。12 5 1 I 2 3 1 I 34 5|34 两只总虎,两只宠虎 跑彳鼻t*,跑帝 54 11 I 2_5 1 I 1 I V 一只没克用巴 H奇慢 ITS性.根据简谱,我们把简谱中对应的音符和其拍数再分别放到数组中。需要说明的是,该数 组元素和简谱中音符的对图 5.10.3“两只老虎”简谱 幔,一只沒育庫巴.手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类

18、蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常应关系,例如音符 1”,在数组TableNoteTime中是第4个元素,所以在音乐简谱数组中应写为“3”。拍

19、数以1/4拍为基本单位,拍数数组中元素的“1”、“2”和“4”分别对应音符的1/4拍、1/2拍和1拍。/简谱中对应的音符 uchar code TableMusicNote=3,4,5,3,3,4,5,3,5,6,7,5,6,7,7,8,7,6,5,3,7,8,7,6,5,3,4,0,3,4,0,3;/简谱中音符对应的拍数 uchar code TalbeMusicBeat=2,2,2,2,2,2,2,2,2,2,4,2,2,4,1,1,1,1,2,2,1,1,1,1,2,2,2,2,4,2,2,4;有了这4个数组,音乐播报就变得简单了。根据 TableMusicNote数组中的值,从 Tab

20、leNoteTime数组中找到待播放音符的半周期长度,将半周期长度作为定时器的溢出值,启 动定时器,蜂鸣器就会产生该音符。在播报音符的同时,根据 TableMusicNote数组中的值,从 TableNoteNum数组中找到该 音符所对应的1/4拍内半周期的个数,然后再从 TalbeMusicBeat数组中,找到该音符在简谱 中的拍数,两者相乘,即为定时器产生该音符所对应频率的时间长度。播报完了第一个音符,然后再播报第二个音符 直到最后一个音符,一首曲子就播放完了。2、程序实现(1)工程架构和主函数 程序的工程架构如图 5.10.4所示。除了主函数模块,至于键值获取模块和定时器模块。音乐播放放

21、在定时器模块中完成。曰匕 Target 1 a“已 User 0 i main.c H 臼 Hardware E-13 Micro Define.c s-国 IndependentKy.c+1-自 Timer.c 图5.10。4工程结构图 主函数如下:手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为

22、有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常#in clude#in elude MicroDefi ne.h#in elude Timer.h#in elude I ndepe nden tKey.h/*函数名称:mai n()*功能:主函数*入口参数:无*出口参数:无*说明:*/void mai n()uchar KeyValue=O;uchar Cn t1Ms=0;DelayM

23、s(200);TimerI ni t();/while(1)if(FlagSystem1Ms=1)/1ms FlagSystem1Ms=0;if(+C nt1Ms=10)/10ms Cn t1Ms=0;KeyValue=KeyGetValue();/if(KeyValue=0 x81)if(FlagMusicE nd=0)/TR1=1;/FlagMusicE nd=1;/程序解释:定时器初始化 时标信号到 时标信号到 获取按键值 上一次播放完毕,则启动新的播放 启动定时器 音乐播放中 手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和

24、分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常在主程序中检测按键按下,则启动定时器 1,并把音乐结束标志位置 1。(2)其它功能模块 键值处理模块(省

25、略)定时器模块 Timer.h:#ifndef _TIMER_H_#defi ne _TIMER_H_#in clude#i ncludeMicroDefi ne.h sbit Buzzer=P2A0;#defi ne MusicPlaySpeed 20/音乐播放速度宏定义/变量声明 extern bit FlagSystem1Ms;/1m 时标信号 extern bit FlagMusicE nd;/音乐播放结束标志位/定时器声明 extern void Timerl nit();/定时器初始化#en dif Timer.c:#in cludeTimer.h bit FlagSystem1M

26、s=0;/1m bit FlagMusicE nd=0;/13个音符的半周期长度 时标信号 音乐播放结束标志位 uint code TableNoteTime=1276,1136,1012,956,851,758,716,638,568,506,478,425,379;13个音符对应的1/4拍内半周期的个数 uint code TableNoteNum=78,88,99,105,117,132,140,157,176,198,209,235,264;/简谱中对应的音符 uchar code TableMusicNote=3,4,5,3,3,4,5,3,5,6,7,5,6,7,7,8,7,6,5

27、,3,7,8,7,6,5,3,4,0,3,4,0,3;/简谱中音符对应的拍数 uchar code TalbeMusicBeat=2,2,2,2,2,2,2,2,2,2,4,2,2,4,1,1,1,1,2,2,1,1,1,1,2,2,2,2,4,2,2,4;/*函数名称:Timerl nit()*功能:定时器初始化 手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备

28、电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常*入口参数:无*出口参数:无*说明:定时器0:产生1ms时标信号,方式2 定时器1:驱动蜂鸣器,方式1*/void Timerl ni t()TMOD=0 x12;TH0=TL0=56;TH仁TL1=0 xFF;ET0=ET1=1;EA=1;TR0=1;/只开定时器0,定时器

29、1的开启由按键决定 /*函数名称:Timer0Isr()*功能:定时器0中断服务函数*入口参数:无*出口参数:无*说明:*/void Timer0Isr()in terrupt 1 static uchar Cn t200us=0;if(+C nt200us=5)/产生 1ms 时标信号 Cn t200us=0;FlagSystem1Ms=1;/*函数名称:Timer1Isr()*功能:定时器1中断服务函数*入口参数:无*出口参数:无 手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种

30、类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常*说明:通过改变定时器的初装值,产生不同频率的蜂鸣器驱动信号 MusicPIaySpeed 是头文件中宏定义,决定音乐的播放速度,其值不能小于 10*/v

31、oid Timer1lsr()in terrupt 3 static uchar NoteC nt=O;/播放音符计数器 static uint HalfPeriodC nt=O;/半周期计数器 uint Timer1Temp=0;/定时器长度暂存值/根据当前播放音符,计算出对应的定时器初值 Timer1Temp=65536-TableNoteTimeTableMusicNoteNoteC nt;TH1=Timer1Temp/256;TL1=Timer1Temp%256;Buzzer=!Buzzer;/播放一个音符的时间到 if(+HalfPeriodCnt=(TableNoteNumTabl

32、eMusicNoteNoteCnt *TalbeMusicBeatNoteC nt)*MusicPlaySpeed/10)HalfPeriodC nt=0;/简谱中的音符全部播放完 if(+NoteC nt=32)NoteC nt=O;TR1=0;/FlagMusicE nd=0;/程序解释:程序中使用了两个定时器,和之前按键音一样,一个用来产生系统时标信号,另外一个 用于用于驱动蜂鸣器。按键启动定时器1,定时器1溢出后,从播报的第一音符起,取出该音符半周期时间长度,计算出定时器1的初值,让定时器1输出该音符对应的脉冲波。定时器1每溢出1次,半周期计数器(HalfPeriodent)力口 1,

33、音符播放的时间长度由半 周期计数器的值来决定。当半周期计数器的值=音符对应的1/4拍内半周期的个数*音符的拍 数时,该音符播放完毕,音符计数器(NoteCnt)加1,播放下一个音符。按照简谱中的顺序,一个接一个的播放音符,当播放完了“两只老虎”简谱中的所有的 定时器停止 音乐播放结束结束标志位清零 手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多

34、用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常音符,音符计数器(NoteCnt)=32,定时器1停止(TR1=0),同时把音乐播放结束标志位清 零。再次按下按键,又重新播放音乐。另外为了调节音乐的播放速度,音符播放结束判断语句中加了一个比例系数:MusicPlaySpeed/10,如下的黑体所示。if(+HalfPeriodC nt=(T

35、ableNoteNumTableMusicNoteNoteC nt *TalbeMusicBeatNoteCnt)*MusicPlaySpeed/10)MusicPlaySpeed是Timer.h中的宏定义,默认为10,比例系数为1,播放一个1/4拍的时 间为0.1秒。当把MusicPlaySpeed设定为20时,比例系数为 2,播放一个1/4拍的时间延长 了,为0.2秒。对于音乐播放器,大多数教科书给出的案例是用一个定时器产生脉冲波,脉冲波的长度 由主程序中的延时函数来完成,或者用一个定时器产生脉冲波,再用一个定时器来完成脉冲 波的长度计时。第1种方式的程序中存在大量延时函数,肯定不可取,程

36、序兼容性太差;第 2 种方式,使用了 2个定时器,虽然 MCU的效率得到了提高,但也浪费了宝贵的资源,因为 51 单片机一共就3个定时器,一个简单的小功能就占去了 2个定时器。本程序通过一个定时器就实现了音乐播放,几乎不占用 CPU效率高,占用资源少。手机的铃声时钟的音乐报时和按键提示音等本节的任务是通过单片机控制开发板上的蜂鸣器演奏音乐知识准备蜂鸣器的原理和分类蜂鸣器按结构分有压电式蜂鸣器和电磁式蜂鸣器两种类型压电蜂鸣器内部有压电陶瓷和金属片是利用的相互作用下周期性地振动发声频率在压电蜂鸣器结构简单耐用声音大多用于报警器等设备电磁蜂鸣器音色好多用于语音音乐等设备蜂鸣器按其是否带有振荡器又分为有源和无源两种类型有源蜂鸣器内部带有振荡器只需要在其供电要在其供电端上加上高低不断变化的电信号才可以驱动发出声音开发板上的蜂鸣器属于电磁式无源蜂鸣器开发板蜂鸣器驱动电路开发板蜂鸣器驱动电路如图所示开发板蜂鸣器驱动电路蜂鸣器的驱动和继电器相似需要几十的电流通常

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁