- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计
课程设计题目: 数字音乐盒
课程设计组: 计算机科学与技术(网络方向)专业
0601班 第1组
课程设计组成员:吉彩霞(2006100102)
李 磊(2006100116)
肖海燕(2006100126)
王 臻(2006100138)
2009年11月
数字音乐盒
摘要:本文是应用AT89S51单片机原理和控制理论设计音乐的硬件电路,并利用进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数发音设备演奏出悦耳动听的音乐。性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。对单片机和音乐爱好者有一定的借鉴价值。
软件实现
音乐产生的方法:
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表4.1所示:
表4.1 高中低音符与单片机计数T0相关的计数值
音符 频率(HZ) 简谱码(T值) ? 音符 频率(HZ) 简谱码(T值) 低1 DO 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 ? # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 如表4.2所示:音乐的音拍,一个节拍为单位(C调)
表4.2 音乐的音拍
曲调值 DELAY ? 曲调值 DELAY 调4/4 125ms ? 调4/4 62ms 调3/4 187ms ? 调3/4 94ms 调2/4 250ms ? 调2/4 125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。发音部分代码在程序中实现,靠单片机的一个管脚输出,考虑到声音可能不够大所以我们加入了功放电路,利用LM386来对声音信号进行放大。音频输出信号由ADU OUT引出,信号可经功放电路LM386输出到扬声器或耳机。电路如图4-1所示。
图1-6放音电路
流程图如图1-7所示:
图1-7流程图
测试结果
1.使用说明:
键盘如下:
K1 K2 K3 K4 按键功能说明如下:
K1:开始,显示HELLO欢迎画面
K2:结束,停止播放,并且LED左右来回移动
K3:下一首歌曲(共有6首歌曲)
K4:上一首歌曲
2.程序调试中出现的问题及解决的办法:
有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的。
编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
LCD计时正常显示的解决办法:
您可能关注的文档
- 参考例_毕业设计开题报告.doc
- 户外全彩LED显示屏设计方案范本.doc
- 基于单片机实训板的数字电压表设计.doc
- 单片机音乐播放器程序设计.doc
- 数字直流电压表的设计.doc
- 国网公司企业文化.doc
- 0Ombeek2010届高三政治时政热点试题汇编专题五、节能减排,低碳经济文库.doc
- AT89S51设计数字电压表.doc
- 智力竞赛抢答器电路设计.doc
- 基于单片机控制的音乐播放器的毕业设计.doc
- 2024年0号柴油居间代理合同管理细则.docx
- 2024年2吨不锈钢电子地磅秤带打印功能市场推广合作合同.docx
- 2024[电子商务]运营总监任职协议.docx
- 2024安全施工管理协议——安全施工质量监督与验收服务.docx
- 2024grc构件安装工程特种作业许可与监管合同.docx
- 2024{合同知识}指导下的标的研发合作,合同主体知识产权保护协议-@-2.docx
- 2024SET支付安全解决方案与量子加密技术合作协议.docx
- 2024年GRC构件生产安装及装配式建筑合同.docx
- 2024年ODM订单合同范本:时尚饰品ODM设计与生产协议.docx
- 2024安全生产环境保护技术改造工程合同.docx
文档评论(0)