ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:125.87KB ,
资源ID:13351374      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13351374.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机的可控数字音乐盒设计课程设计Word文档格式.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机的可控数字音乐盒设计课程设计Word文档格式.docx

1、 不同的音调对应着不同的物理频率,而若要产生一定频率的声音,我们只需用一定频率的方波来驱动蜂鸣器即可。对于固定频率的产生方法,本系统中用定时器0设置为工作方式1(TMOD=0x01),对不同的音调依据频率装入对应的计数初值,定时器计数完时将输出端取反(编程中采用异或),进而产生对应的方波。具体计算如下: 如对于编码为1的低音SO,其频率为392HZ,我们实验中采用的为12M晶振,因此机器周期为1us,那么该音调对应的计数初值为:65536-1000000/(2*392)=65536-1276=64270解释:由于工作方式0中计数器的THO和TL0所有位均用于装载计数初值,因此最大计数值为256

2、*256=65536,周期为1xs,频率为392HZ,每定时一次对输出取反,因此计数初值应除以2。以下为所有音调标准频率及其在本设计中的的计数初值表计数初值表低音频率T参数中音高音Do2621908229523956115104657Do2771805217554903108110954Re2941701204587852102117551Re311160819362280497124548Mi330151518265975991131845Fa349143317269871686139743Fa370135116274067681148041So39212761537846387715683

3、8So415120514583160272166136La440113613688056868176034La464107812993253664186532Si4941012121988506611976303.节拍的确定 学习音乐时,每个音符都有对应的节拍,我们唱拍的时候通常叫做打拍子,用来区分音符之间所间隔的时间,因此音符的产生不仅要有频率,还要有节拍。我们知道一共有12中不同的节拍,每一拍的时间都是最短拍的整数倍,例如4/4拍是1/4拍的4倍,因此我们可以确定一个基准的延时时间,然后用它的倍数表示不同的节拍,用一个无符号整数来表示其倍数。具体代码如下void delay(uint p)

4、 uint j; uint k,l; for(l=0;l0;k-) for(j=0;j160;j+); 通过此程序,每一拍为107ms,可以实现要求,对于节拍没有固定的时间,也可以通过调节循环初值进行延时修改。4.音符的编码由计数初值表可以看到,如果采用将每一个音符的所对应的计数初值都直接编入音乐的码流中,每个码占两个字节,并且不易记忆,因此我们采用将不同音符的频率写入一个如下所示码表中,通过查表确定计数初值。uchar code yd=0xff,0xff,/占位0xFC,0x8E,/中央C调1-70xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD

5、,0xF3, 0xFE,0x2D,0xFE,0x47, /高八度1-7 0xFE,0x76,0xFE,0xA1,0xFE,0xC7, 0xFE,0xD9,0xFE,0xF9,0xFF,0x16;编码表如下简谱发音简谱码T值节拍码节拍数5低音SO1642601/4拍6低音LA2644002/4拍7低音TI3645243/4拍中音DO4645801拍中音RE646841又1/4拍中音MI647771又1/2拍中音FA6482082拍中音SO64898A2又1/2拍中音LA964968C3拍中音TI65030F3又3/4拍高音DOB65058高音RE65110高音MID65157高音FAE65178

6、高音SO65217对照乐谱编码时,可以查上表进行对应的编码四、硬件电路1.电路图 电路参数:芯片:AT89C51 C1:10uFC2:30pF C3:30pFR1:200 R2:1K晶振:12MHZ1、晶振回路:12MHZ晶振电路,其中C1和C2为微调电容2、复位电路:采用按键电平复位原理介绍:电路运行时,通过中断int0和int1向cpu发出中断申请,执行相应中断服务,通过调整各标志位实现相应的功能五软件设计1.主程序流程图(主程序为死循环,在此略去主循环部分,没有结束框)2、中断服务子程序流程图外部中断服务0:暂停与继续播放外部中断服务1:开始、停止、切歌子程序流程图流程图说明:由于外部中

7、断服务执行与否来取决于外部硬件,并且可能在执行主程序的任何一个时刻发生,因此在此单独列出两个中断服务子程序,执行完之后将自动跳回主程序中继续执行。3.具体代码见附录六仿真调试1.运行结果由运行时的电路变化可以看出LS1相连的端口电压不断变化,这是由于定时器产生了驱动电流驱动其发声,当按下与int1相连的按钮时开始唱歌,按与int0相连的按钮时唱歌暂停,再次按下时继续播放,并且无论歌曲是否暂停,如果当前播放不为最后一首音乐,当按下int1相连按钮时系统将播放下一首音乐,如果为最后一首则停止播放,系统恢复至初始化之后状态。2.程序调试中出现的问题及解决的办法:(a)编程时要注意,在程序开始时,要写

8、入各定时器中断的入口地址。(b)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。(c)程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。(d)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。 LCD计时正常显示的解决办法:(a)两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。但还有问题。(b)当

9、音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。(c)另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,托因时间长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。七体会一分耕耘,一分收获。只有亲自用实践来验证这句话,在能得其要领。经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。在实验的开始几天,基本上没有收获,不知何从下手,不知所措。为了看得更远,不妨站在前人的肩膀上,我在整体思路模糊的情况下,在网上大量招资粮,各种与电子时钟相关的文章,我阅读了不少。随着涉猎的点滴积累,我对电子时钟的设计方案已经慢慢酝酿而成。有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时只是一句程序的修改或诞生,但那种收获的感觉很暖人心。在课程设计的过程中:遇到的最大的问题就是硬件问题,在自己课程设计的过程中遇到的很多情况下或是导线损坏或是实验箱上的I/O口不能正确的输出。在这一方面,我们所能做的是,每天开始做实验时就要检查所用的导线没有问题

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1