- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编写基于单片机的宽音域高音准音乐程序
编写基于单片机的宽音域高音准音乐程序
(南京农业大学 电气工程系)
摘要 介绍了一种利用定时中断为单片机编写高音准的音乐程序的方法,并给出实例程序清单。
关键词 单片机,中断,编程,音乐,音级,音程
采用适当的误差补偿,利用单片机定时中断的方法能在宽音域范围产生准确稳定的音频信号。本文以MCS-51单片机为例介绍单片机的音乐程序的编写,给出的程序,只须修改乐曲内容就可得到读者自己的程序。
1 音乐的基本知识
在音乐中使用的各个固定频率的音叫音级[1]。常用符号C、D、E、F、G、A、B、c、d、e、……a1、b1、c2、d2……表示,它们对应于钢琴上的白键。两音之间音高的距离叫音程。在上述音级中,E与F、B与C之间音高的距离仅为其它相邻音级之间距离的一半,称它们之间的音程为半音音程,而称其它相邻各音之间的距离为全音音程。在这些全音音程之间又加入新的半音音级,用符号﹟C、﹟D、﹟F、﹟G、﹟A、﹟c、﹟d、﹟f、……表示,对应于钢琴上的黑键。
国际上目前采用以a1 =440Hz作为标准国际音高,由此推算出各音级的频率见表1。
音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。
2 编程思路
要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。此信号从P1.7脚输出。
定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。本例中单片机晶振频率为6MHz。
每个音符使用两个字节。低位字节(偶地址)代表音级,00H表示不发音(休止符),01H~30H依次表示的音级为c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3 ,详见表1。高位字节(奇地址)代表音符的时值(拍数),00H~0FH依次表示拍数为1/8拍(0.10s)~8拍(6.40s),见表2。乐曲的结束标志是两个字节:00H,0FH。
定时器T1工作在定时方式1,定时时间为0.10s左右,作为音符节拍的最小时间单位,即1/8拍,该时间要求不必很准确,该时间越短,音乐播放节奏就越快。时间取0.10s时,定时常数取为3CB0H。即TH1=3CH,TL1=0B0H。其它的音符节拍都是1/8拍的整数倍,借助软件计数,允许中断的次数就是倍数。例如,要得到1拍的延时,只要中断8次即可。
要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。
主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0;根据定时器T1应中断的次数,启动定时器T1。数据表读完后,根据所设置的循环演奏次数决定是否结束程序。音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给寄存器R3、R2。音长子程序的任务是取出字节中的音长部分,分析确定定时器T1应中断的次数,次数送寄存器R4中,同时启动定时器T1,直到完成所需拍数。
定时器T0的中断服务程序任务是取反P1.7输出产生方波,重新为TH0,TL0送初值。
定时器T1的中断服务程序任务是:判断节拍数完成否,关闭定时器T0、T1中断。
当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址寄存器DPTR内容,即数据表的表头指针。
例如,C=1时音节: 6 - 用音符(包含音级和音长)字节表示就为:11H,02H,14H,01H,16H,01H,19H,02H,16H,02H,16H,08H,16H,0AH,00H,04H。其中11H,02H中的11H表示音3(mi),02H表示节拍为半拍,即。其余类推。
3 播放方法:
P1.7输出的音频信号不能直接驱动普通喇叭,可驱动高阻抗耳机发声或者有源音箱发音。也可自制音频放大电路驱动喇叭发音。
表1 各音的频率、定时初值、字节字符
音级/1=C 频率(Hz) 定时初值 字节字符 音级/1=C 频率(Hz) 定时初值 字节字符 c / 1 130.81 F88E 01H c2 / 523.25 FE27 19H ﹟c 138.59 F8F9 02H ﹟c2 554.37 FE42 1AH d / 2 146.83 F95E 03H d2 /
您可能关注的文档
- 毕业设计(论文)-变频恒压供水毕业设计论文-论变频器在小区恒压供水中的应用-.doc
- 毕业设计(论文)-基于ARM的图像采集无线传输系统的设计(修改稿)-.docx
- 毕业设计(论文)-基于BS模式下的毕业设计系统的设计与实现.doc
- 毕业设计(论文)-基于ABET的高校教学质量管理保障体系的建设与实践.doc
- 毕业设计(论文)-基于HEVC的视频后处理初步研究.docx
- 毕业设计(论文)-基于UML的系统分析与设计.doc
- 毕业设计(论文)-基于RFID的家庭智能门禁管理系统设计与实现.doc
- 毕业设计(论文)-基于PROTEUS的温度控制电路设计与仿真-.doc
- 毕业设计(论文)-基于Web的模板式业务审批系统.doc
- 毕业设计(论文)-基于信息系统的食品供应链安全管理.doc
最近下载
- DMX512灯光调光控制程序.doc VIP
- 四种不同类型土壤保水剂保水性能的比较-生态学杂志.PDF VIP
- 2019年中央机关公开遴选和选调公务员笔试真题〔B卷完好版解析〕_党政公选考试公共科目题库_公共科目真题_模拟试题.docx VIP
- 北京市东城区汇文中学2023-2024学年七年级上学期月考数学试题(无答案).docx VIP
- 《有效复习》班队活动教案.doc VIP
- 四年级阅读理解专项训练可打印.docx VIP
- 法医考试题目及答案.doc VIP
- 《水泥胶砂保水率测定方法》GB_T 45002-2024.pdf
- USON介绍分析.ppt VIP
- 新学期小学英语开学第一课主题班会PPT课件.pptx VIP
文档评论(0)