单片机课程设计报告(利用蜂鸣器播放音乐)_第1页
单片机课程设计报告(利用蜂鸣器播放音乐)_第2页
单片机课程设计报告(利用蜂鸣器播放音乐)_第3页
单片机课程设计报告(利用蜂鸣器播放音乐)_第4页
单片机课程设计报告(利用蜂鸣器播放音乐)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩课程设计:电子设计标题名称:音乐水灯姓氏:戴金超学习编号:08123454上课级别:信12-3课完成时间:2014年10月23日1设计的任务设计内容:51单单片机焊接设计目标:使用单片机蜂鸣器和二极管,根据音乐播放和音乐节奏规律发光二极管。然后通过节目调节音乐节奏的速度。2设计过程2.1基本结构1.STC89C52RCStc589c52rc微控制器、stc589c52rc微控制器是旧式8051微控制器、12时钟/机器周期、工作电压:5.5v至3.3v (5v微控制器)/3.8v至2.0v (3v微控制器),工作(STC89C52RC针脚图)STC89C52RC微控制器操作模式:(1)典型功耗0.1A可以通过外部中断唤醒,在中断返回后继续执行原始过程(2)闲置模式:正常耗电量2mA(3)正常操作模式:正常功耗4Ma至7mA(4)唤醒水表、煤气表和其他电池电源系统和便携式设备蜂鸣器及其工作原理:根据其结构,蜂鸣器主要分为压电蜂鸣器和电子蜂鸣器两种类型。电磁蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片和外壳组成。打开电源,振荡器产生的音频信号电流通过电磁线圈产生磁场,振动膜片通过电磁线圈和磁铁的相互作用周期性地振动发出声音。这个实验使用电磁蜂鸣器。蜂鸣器分为两种类型,活动和手动,具体取决于是否有信号源。有源蜂鸣器只要在电源部添加额定直流电压,就能产生内部振动器发出声音的固定频率信号。被动蜂鸣器和扬声器一样,可以理解,为了驱动声音,电源末端需要突然变化的电信号。这个实验使用了主动蜂鸣器。(蜂鸣器和微控制器连接电路图)2.2软件设计过程1.蜂鸣器发声原理这个实验使用的是主动蜂鸣器,所以只要用0清洁针孔P1 4,蜂鸣器就能发出声音。P1 4位置,蜂鸣器停止声音。将0设置为1的方法只能使蜂鸣器发出声音或停止声音,要使蜂鸣器发出声音,必须控制蜂鸣器发出的声音的音频和节拍。(音乐基础音调:不同音高的音乐声音用c,d,e,f,g,a,b表示,这七个字母是音乐的音名,通常是DO,RE,MI,FA,SO,LA,SI,也就是被称为速报的1,2,c、d、e、f、g、a、b组的距离除以12等分,分别称为半音。两个音之间的距离是“半音”,如果有两个,就称为“全音”。对于键盘乐器(如钢琴),cd、de、fg、ga、ab是黑色键之间的距离,它们之间的距离是全音。E-F,B-C两个音调之间没有黑色键间距,它们之间的距离是半音。一般来说,唱1,2,3,4,5,6,7的音是自然音,那个音在左上角加上()b()的音是自然音。升标,表示从原始基础上升半音,原基础下降半音的称为下行之间。例如,高音DO的频率(1046Hz)是中音DO的频率(523Hz)的两倍,中音DO的频率(523Hz)是低音DO频率(266 Hz)同样,高音RE的频率(1175Hz)是中音RE的频率(587Hz)的两倍,中音RE的频率(587Hz)是低音频率(294 Hz)的两倍。节拍:节拍是给音乐赋予旋律(固定的节奏),并能调节每个声音的快速完成度。“节拍”,即Beat只是边听音乐边为自己鼓掌,或像跺脚一样打节拍。如果1位实际为0.5s,则1/4位为0.125s。关于一拍,没有严格的规定。像人的心跳一样,大多数人的心跳是每分钟72次。有些人快一点,有些人慢一点,听就好了。色调持续时间的实时值,通常用比特数表示。卫生纸表示暂停发音。),以获取详细信息1)语音频率控制要生成音频脉冲,请计算音频的周期(1/频率),然后将此周期除以2,即1/2周期时间。使用计时器计时此反周期时间后,反转输出脉冲的I/O,然后重复计时此反周期时间,反转I/O,此频率的脉冲就会出现在I/O脚上。使用STC89C52RC的内部计时器在计数器模式MODE1下工作,更改TH0和TL0值以生成不同的频率。此外,终结符和停止符可以分别用代码00H和FFH表示,检查表结果0x00表示曲子结束;如果检查表结果为0xff,则将发生相应的停止效果。以标准节距a为例,a的频率为440Hz,周期T=1/440=2272us。负载时间=分离时间=半周期t=2272us/2=1136us,P3使用4端口的比特操作,可以连续反向转换标准音调a的音频脉冲。端口传导时间和断开连接时的时间通过计时器实现。具体方法是将单芯片计时器的中断触发时间设置为反周期t,以反向顺序在每个反周期端口上输出相应音高的连续频率。将静振速率设置为F0,将停止触发时间(反周期)设置为t,将计时器在模式1下运行时,计数器的初始值设置为THL,高8位设置为THL,低8位设置为TL。时钟周期为1/f0,计时器一次累计一个机器周期,一个机器周期包含12个时钟周期。也就是说,一次添加一个计时器所需的时间为12/f0。计时器在模式1中向计时添加16位、最大计数2 16-1 (65535)和再次1 (65536)溢出触发器中断。基于上述分析,可以获得以下关系:音频对应计时器初始值的高8位th=Thl/(2 8)=(65536-t * f/12)/256;音频匹配计时器初始值的低8位TL=Thl %(2 8)=(65536-t * f/12)% 6;附件:octave 12刻度计时器初始值表(仅限自然音)低音音名频率Hz晶振12MHz中音谱号频率Hz晶振12MHz高音音名频率Hz晶振12MHzDo2620xF885Do5230xFC43Do10460xFE21Re2940xF95ARe5870xFCADRe11750xFE56美3300xFA13美6590xFD0A美13180xFE85Fa3490xFA68Fa6980xFD34Fa13970xFE9ASo3920xFB04So7840xFD82So15680xFEC1拉4400xFB90拉8800xFDC8拉17600xFEE4Si4940xFC0CSi9880xFE06Si19760xFF032)控制声乐节拍每个音符的位可以通过延迟特定的时间来实现,根据特定的实现,需要主函数用于根据不同的音符调用不同延迟的默认嵌入延迟程序。如果16分音时间是默认延迟时间,则只调用延迟程序一次,8分音值调用延迟程序两次,依此类推。*快速光谱编码每个注释以unsigned char字符类型显示,短光谱以unsigned char字符数组显示。字符的前四位表示音频,可能表示0-f的共16个音。这个实验使用了中音区和高音区。中音do-si分别编码为1-7,高音do-si分别编码为8-E,暂停编码为0。字符的最后四位表示位,位表示16分音单位(在本程序中为165毫秒),一拍即4分音符表示4个16分音、4分音、其他播放时间等。使用0xff作为曲谱的结束标志。程序从数组中删除一个数,然后分离高4位以获得音调,并向计时器0赋值以获得音调;然后分离这个数字的低4个字符,得到比特。在这个实验中,音乐播放使用配置文件,如下所示:编码为:Uchar code sb=/定义指定配置文件0x54、0x32、0x52、0x88、0x64、0x84、0x58、0x54、0x12、0x22、0x34、0x22、0x12、0x28,0x00,0x00,0x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18,0x00,0x00,0x64、0x84、0x88、0x74、0x62、0x72、0x88、0x62、0x72、0x82、0x62、0x62、0x 62、0x52、0x32,0x12,0x28,0x00,0x00,0x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18,0x00,0x00,0x54、0x32、0x52、0x88、0x64、0x84、0x58、0x54、0x12、0x22、0x34、0x22、0x12、0x28,0x00,0x00,0x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18,0x00,0x002.3计划流程图和说明(主流程图)程序代码:#include#define uchar unsigned char#define uint unsigned intuint a=0;/全局变量控制速度转换sbit FM=P1 4;/蜂鸣器控制端口sbit int 0=P3 2;sbit int 1=P3 3;Uchar timeh,timel/用于容纳计时器的高8位和低8位Uchar code sb=/定义指定配置文件0x54、0x32、0x52、0x88、0x64、0x84、0x58、0x54、0x12、0x22、0x34、0x22、0x12、0x28、0x 280x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18、0x 180x64、0x84、0x88、0x74、0x62、0x72、0x88、0x62、0x72、0x82、0x62、0x62、0x 62、0x52、0x32、0x 320x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18、0x 180x54、0x32、0x52、0x88、0x64、0x84、0x58、0x54、0x12、0x22、0x34、0x22、0x12、0x28、0x 280x54、0x32、0x52、0x86、0x72、0x64、0x84、0x58、0x54、0x22、0x32、0x46、0xf2、0x18、0x 18/12M晶体计时器初始值表,上、下8位分离Uchar code Chu =0xff,0xff,/占位符0xFC,0x43,/中央c调1-70xFC、0xad、0xFd、0x0a、0xFD、0x34、0xFD、0x82、0xFD、0xc8、0xFE、0x06、0xFe,0x21,/高音0xFe、0x56、0xFe、0x85、0xFe、0x9a、0xFe、0xc1、0xFe、0xe4、0xFf、0x03、0xFc、0x0c/0xF8,0x18,/高度8度1-7Void timer0()中断1 /计时器0中断服务程序TH0=timeh/将timeh指定给计时器的前8位TL0=timel/将timel指定给计时器的低8位Fm= fm/计时器直到那时为止Void delay(uint z)/延迟165毫秒,即16分音 uint y;for(z);z0;Z-)for(y=19000-a;y0;y-);/近似时间void delay 1(uint z)/1毫秒延迟 uint y;for(z);z0;Z-)for(y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论