首页 51单片机汇编语言教程:28课音乐程序设计

51单片机汇编语言教程:28课音乐程序设计

举报
开通vip

51单片机汇编语言教程:28课音乐程序设计 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ 51单片机汇编语言教程:第28课-音乐程序设计 (基于 HJ-1G、HJ-3G 实验板) 利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的 基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千...

51单片机汇编语言教程:28课音乐程序设计
51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ 51单片机汇编语言教程:第28课-音乐程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (基于 HJ-1G、HJ-3G 实验板) 利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的 基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的 “高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频 率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而 改变音调。 例如,要产生200HZ 的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在 P1 口线上),实验程序为: 其中子程序 DEL 为延时子程序,当 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能奏出音符。仅这还不够,要准确奏出一首曲子,必须准确地控制 乐曲节奏,即一音符的持续时间。 音符的节拍我们能用定时器 T0来控制,送入不一样的初值,就能产生不一样的定时时间。 便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其它节拍与时间的对应关系见表2。 但时,由于 T0的最大定时时间只能为131毫秒,因此不可能直接用改变 T0的时间初值来实现 不一样节拍。我们能用 T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别 中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间常数。例如 对1/4拍音符,定时时间为0.16秒,对应的时间常数为16(即10H);对3拍音符,定时时间为 1.92秒,对应时间长数为192(即 C0H)。 我们将每一音符的时间常数和其对应的节拍常数作为一组,按次序将乐曲中的所有常数排列 成一个表,然后由查表程序依次取出,产生音符并控制节奏,就能实现演奏效果。此外,结 束符和体止符能分别用代码00H 和 FFH 来表示,若查表结果为00H,则表示曲子终了;若查 表结果为 FFH,则产生对应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相 同音符)音插入一个时间单位的频率略有不一样的音符。 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ 下面给出程序序清单,可直接在 TD-III 型学习机上演奏,对其它不一样型号的学习机,只 需对应地改变一下地址即可。本程序演奏的是民歌“八月桂花遍地开”,C 调,节奏为94拍 /分。读者也能自行找出一首歌,按表1和表2给定的常数,将乐曲翻译成码表输入机器,而 程序不变。本实验办法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事, 和着机器的演奏学唱一首歌曲,其趣味无穷。 程序清单(略,请参看源程序的说明)。 程序框图如图2所示。 <单片机音乐程序的设计图> 本课由单片机教程网提供,有问题指出. 硬件连接说明: 随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找 个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在 P1。0上,后面部分找 根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。。。。 音乐程序汇编代码代码1 -------------Voice.asm-------------------------- ORG 0000H 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M 晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送 DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5: NOP MOV R6,A INC DPTR MOV A,B MOVC A,@A+DPTR ;取节拍代码送 R7 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ MOV R7,A SETB TR0 ;启动计数 MUSIC2: NOP CPL P1.0 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环 MOV 20H,#00H ;等于,则取下一代码 INC DPTR ; INC B LJMP MUSIC1 MUSIC3: NOP CLR TR0 ;休止100毫秒 MOV R2,#0DH MUSIC4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0: NOP MOV R2,#64H ;歌曲结束,延时1秒后继续 MUSIC6: 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ MOV R3,#00H LCALL DEL DJNZ R2,MUSIC6 LJMP MUSIC0 DEL: NOP DEL3: MOV R4,#02H DEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h db 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,20h 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,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,00H 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ END 音乐程序汇编代码代码2 -------------Voice1.asm-------------------------- ;标题 '八月桂花香'发声程序 ;摘要 详见'无线电'92年3期 ;作者 周振安 ORG 0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M 晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送 DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ MUSIC5: NOP MOV R6,A INC DPTR MOV A,B MOVC A,@A+DPTR ;取节拍代码送 R7 MOV R7,A SETB TR0 ;启动计数 MUSIC2: NOP CPL P1.0 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环 MOV 20H,#00H ;等于,则取下一代码 INC DPTR ; INC B LJMP MUSIC1 MUSIC3: NOP CLR TR0 ;休止100毫秒 MOV R2,#0DH MUSIC4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ INC DPTR LJMP MUSIC1 END0: NOP MOV R2,#64H ;歌曲结束,延时1秒后继续 MUSIC6: MOV R3,#00H LCALL DEL DJNZ R2,MUSIC6 LJMP MUSIC0 DEL: NOP DEL3: MOV R4,#02H DEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H DB 2BH, 20H, 26H , 20H DB 20H, 20H, 30H , 80H DB 20H, 30H, 1CH , 10H DB 20H, 10H, 1CH , 10H DB 20H, 20H, 26H , 20H DB 2BH, 20H, 30H , 20H DB 2BH, 40H, 20H , 15H DB 1FH, 05H, 20H , 10H DB 1CH, 10H, 20H , 20H DB 26H, 20H, 2BH , 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H 51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28课) 推荐使用慧净 51实验板。推荐 51学习网WWW.HLMCU.COM 淘宝网:http://shop37031453.taobao.com/ DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H DB 2BH, 20H, 26H , 20H DB 20H, 20H, 30H, 30H DB 20H, 30H, 1CH, 10H DB 18H, 40H, 1CH, 20H DB 20H, 20H, 26H, 40H DB 13H, 60H, 18H , 20H DB 15H, 40H, 13H , 40H DB 18H, 80H, 00H end 51 实验板推荐(点击下面的图片可以进入下载资料链接) HJ-1G HJ-3G
本文档为【51单片机汇编语言教程:28课音乐程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_874869
暂无简介~
格式:pdf
大小:657KB
软件:PDF阅读器
页数:10
分类:互联网
上传时间:2010-11-24
浏览量:54