版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机音乐程序设计利用单片机 (或单板机) 奏乐大概是无线电爱好者感兴趣的问题之一。 本文从单片机的基本 发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹, 若能利用程序来控制单处机某个口线的 “高 电平或低电平, 则在该口线上就能产生一定频率的矩形波, 接上喇叭就能发出一定频率的声 音,若再利用延时程序控制 “高 ”低“”电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生 200HZ 的音频信号,按图 1 接入喇叭(若属临时实验,也可将喇叭直接接在 P1 口线上),实验程序为:其中子程序 DEL 为延
2、时子程序,当 R3 为 1时,延时时间约为 20us,R3 中存放延时常数, 对200HZ音频,其周期为1/200秒,即5ms。这样,当P1.4的高电平或低电平的持续时间 为2.5ms,即卩R3的时间常数取 2500/20=125(7DH)时,就能发出200HZ的音调。将上述程序 键入学习机,并持续修改 R3 的常数能感到音调的变化。乐曲中,每一音符对应着确定的频 率,表 1 给出 C 调时各音符频率及其对应的时间常数。读者能根据表 1 所供给的常数,将 其16进制代码送入 R3,反复练习体会。根据表 1能奏出音符。仅这还不够,要准确奏出一 首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。
3、音符的节拍我们能用定时器T0来控制,送入不一样的初值,就能产生不一样的定时时间。便如某歌曲的节奏为每分钟 94拍,即一拍为 0.64秒。其它节拍与时间的对应关系见表2。但时,由于T0的最大定时时间只能为 131毫秒,因此不可能直接用改变T0的时间初值来实现不一样节拍。我们能用 T0 来产生 10毫秒的时间基准,然后设置一个中断计数器,通 过判别中断计数器的值来控制节拍时间的长短。 表 2中也给出了各种节拍所对应的时间常数。 例如对1/4拍音符,定时时间为 0.16秒,对应的时间常数为 16 (即10H);对3拍音符, 定时时间为 1.92 秒,对应时间长数为 192(即 C0H)。 我们将每一
4、音符的时间常数和其对应的节拍常数作为一组, 按次序将乐曲中的所有常数排列 成一个表,然后由查表程序依次取出,产生音符并控制节奏,就能实现演奏效果。此外,结 束符和体止符能分别用代码00H和FFH来表示,若查表结果为 00H,则表示曲子终了;若查表结果为FFH,则产生对应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两 个相同音符)音插入一个时间单位的频率略有不一样的音符。下面给出程序序清单,可直接在 TD-III 型学习机上演奏,对其它不一样型号的学习机,只 需对应地改变一下地址即可。本程序演奏的是民歌 “八月桂花遍地开 ”, C 调,节奏为 94拍/ 分。读者也能自行找出一首歌, 按表
5、1 和表 2 给定的常数,将乐曲翻译成码表输入机器,而 程序不变。本实验办法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事, 和着机器的演奏学唱一首歌曲,其趣味无穷。程序清单(略,请参看源程序的说明)。程序框图如图2所示。<单片机音乐程序的设计图 >本课由单片机教程网 提供,有问题指出硬件连接说明:随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P1。0上,后面部分找根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。音乐程序汇编代码代码 1 Voice.asmOR
6、G 0000HLJMP STARTORG 000BHINC 20H;中断服务,中断计数器加1MOV TH0,#0D8HMOV TLO,#OEFH ;12M晶振,形成 10毫秒中断RETISTART:MOV SP,#50HMOV TH0,#0D8HMOV TL0,#0EFHMOV TMOD,#01HMOV IE,#82H MUSIC0:NOPMOVDPTR,#DAT ; 表头地址送 DPTRMOV20H,#00H;中断计数器清 0MOV B,#00H ;表序号清 0 MUSIC1:NOPCLR AMOVC A,A+DPTR;查表取代码JZ END0 ;是 00H, 则结束CJNE A,#0FFH
7、,MUSIC5LJMP MUSIC3 MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,A+DPTR;取节拍代码送 R7MOV R7,ASETB TR0;启动计数MUSIC2:NOPCPL P1.0MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器 (20H)=R7 否 ? ;不等 ,则继续循环MOV 20H,#00H;等于 ,则取下一代码INC DPTR ; INC BLJMP MUSIC1MUSIC3:NOPCLR TR0 ;休止 100 毫秒MOV R2,#0DHMUSIC4:NOPMOV R3
8、,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64H ;歌曲结束 ,延时 1 秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NOPDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT:db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20hdb 30h,20h,39h,10h,30h,10h,30h
9、,80h,26h,20h,20h,20h,20h,20h,1ch,20hdb 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20hdb 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20
10、h db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h db 18h,20h,18h,20h,26h,20h,20h
11、,20h,20h,60h,26h,10h,2bh,20h,30h,20h db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h db 20h,10h,2bh,10h,26h,30h,30h,80h,00HEND音乐程序汇编代码代码 2 Voice1.asm;标题 '八月桂花香 '发声程序;摘要 详见 '无线电 '92 年 3 期;作者 周振安ORG 0
12、000HLJMPSTARTORG000BHINC20H ;中断服务 ,中断计数器加1MOVTH0,#0D8HMOVTL0,#0EFH;12M 晶振,形成10 毫秒中断RETISTART:MOVSP,#50HMOVTH0,#0D8HMOVTL0,#0EFHMOVTMOD,#01HMOVIE,#82HMUSIC0:NOPMOVDPTR,#DAT; 表头地址送 DPTRMOV20H,#00H;中断计数器清0MOVB,#00H;表序号清 0MUSIC1:NOPCLRAMOVCA,A+DPTR;查表取代码JZ END0 ;是 00H, 则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3M
13、USIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,A+DPTR;取节拍代码送 R7MOV R7,ASETB TR0;启动计数MUSIC2:NOPCPL P1.0MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器 (20H)=R7 否 ?;不等 ,则继续循环MOV 20H,#00H;等于 ,则取下一代码INC DPTR; INC BLJMP MUSIC1MUSIC3:NOPCLR TR0 ;休止 100 毫秒MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2
14、,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64H ;歌曲结束 ,延时 1 秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NOPDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT:DB18H,30H,1CH,10HDB20H,40H,1CH,10HDB18H,10H,20H,10HDB1CH,10H,18H,40HDB1CH,20H,20H,20HDB1CH,20H,18H,20HDB20H,80H,0FFH,2
15、0HDB30H,1CH,10H ,18HDB20H,15H,20H ,1CHDB20H,20H,20H ,26HDB40H,20H ,20H ,2BHDB20H,26H,20H ,20HDB20H,30H ,80H ,0FFHDB20H,20H,1CH ,10HDB18H,10H,20H ,20HDB26H,20H ,2BH ,20HDB30H,20H ,2BH ,40HDB20H,20H ,1CH, 10HDB18H,10H,20H,20HDB26H,20H ,2BH,20HDB30H,20H,2BH ,40HDB20H,30H,1CH ,10HDB18H,20H ,15H ,20HDB1CH,20H ,20H20HDB26H,40H,20H ,20HDB2BH,20H,26H ,20HDB20H,20H,30H ,80HDB20H,30H,1CH ,10HDB20H,10H,1CH ,10HDB20H,20H,26H ,20HDB2BH,20H,30H20HDB2BH,40H,20H, 15HDB1FH,05H,20H, 10HDB1CH,10H,20H ,20H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保费已经缴纳何时下合同
- 2025-2026学年收集大班教案
- 2025-2026学年色彩理论教案
- 2025-2026学年软件的下载教学设计
- 2025-2026学年读蒲公英有感教案
- 质量鉴定评估
- 2023二年级数学下册 二 游览北京-万以内数的认识信息窗5 估计教学设计 青岛版六三制
- 赶圩归来啊哩哩教学设计小学音乐六年级上册人音版(主编:曹理)
- 文学常识(二)教学设计中职基础课-基础模块 下册-高教版-(语文)-50
- 事务所审计业务制度
- 2026年及未来5年中国耐火粘土行业发展运行现状及投资战略规划报告
- T∕CIECCPA 125-2026 温室气体 产品碳足迹量化方法与要求 燃气-蒸汽联合循环发电产品
- 2024版2026春新教科版科学三年级下册教学课件:第一单元 辨别方向 单元小结复习
- 物业管理公司员工招聘条件及流程
- 2025年上海大专自主招生免笔试及答案
- 汽车制造焊接工艺技术规范
- 2025年黑龙江生态工程职业学院单招职业倾向性测试模拟测试卷附答案解析
- 融媒体应聘考试题及答案
- (新版)上海安全员C3考试(重点)题库300题(含答案)
- 老年2型糖尿病合并认知障碍照护方案
- 中医门诊病历书写规范模板
评论
0/150
提交评论