单片机音乐播放系统.doc

单片机音乐播放系统设计

收藏

压缩包内文档预览:(预览前20页/共30页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:512482    类型:共享资源    大小:253.23KB    格式:RAR    上传时间:2015-11-11 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
毕业设计
资源描述:
单片机音乐播放系统设计,毕业设计
内容简介:
摘 要 利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。 利用单片机控制音乐播放也多不胜举 .音乐芯片也相当之多 ,而利用单片机存储音乐 ,控制播放最为广泛 。 它有功能多价格优外围电路简单的特点 ,备受音乐爱好者及音乐芯片制造商的青昧 。 本章中 , 用 89S51 单电机及少数外围电路控制 MUSIC 播放 ,产生十首不同的歌曲 。 对于单电机产生音乐 ,关键是控制频率的输出 。 我们知道 , 不同的声音对应不同的频率 ,产生有规律的频率输出就可以得到相应规律的声音 。 音乐中 ,有 8 个基本音符 : do re mi fa so la xi do, 八个不同的音符对应着不同的频率 。只要我们对照音符输出相对应的频率 , 就可以产生美妙的音乐了 。 .本章中采用了 T0 中断的方法产生不同频率 ,采用 INT0 产生中断进行歌曲选播,复位键进行重新开始,也可以通过选择键来选择。 关键词 单片机,中断,编程,音乐, 音调 , 节拍 nts 目 录 1 方案比较与选择 1.1 设计思想 1.2 方案比较 2 电路 仿真 与 分析 2.1 电路仿真 2.2 电路分析 3 电路板焊接、调试 3.1 电路板焊接 3.2 电路板调 试 4 讨论及进一步研究建议 5 课程设计心得 6 单片机音乐播放器源程序 Abstract 参考文献 nts 1方案比较与选择 1.1 设计思想 将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符, 选择需要的声响时间,即可完成一个音符的播放。 该音符唱完后, 接着取出下一个音符的相关参数,如此直到播放完毕最后一个音符。中间可根据需要将音符和音符之间插入时间延时,以产生需要的节拍,用 01H 或 02H、 03H等等,具体根据歌曲 的实际需要设置。 根据需要也可循环不停地播放整个乐曲。利用 INTO 在中断中是属于最高优先级的特点,外部端口 P3.2 接中断 0 即可完成中断造成的歌曲选择 下一首的播放。 另外,对于乐曲中的休止符,一般将其音调参数设为 FFH, FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为 00H 来表示 。声音输出接一个三极管,利用通断放大声音。 原理图如图 1.1.1 nts 图 1.1.1 本次实验主要是音调与节拍两个要素,知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过 单片机的定时器定时中断,将单片机上对应蜂鸣器的 I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。 那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高 A 为例: A的频率 f = 440 Hz,其对应的周期为: T = 1/ f = 1/440 =2272 s 由上图可知 ,单片机上对应蜂鸣器的 I/O口来回取反的时间应为: t = T/2 = 2272/2 = 1136 s 这个时间 t也就是单片机上定 时器应有的中断触发时间。一般情况下,单片机奏nts乐时,其定时器为工作方式 1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为 f0,则定时器的予置初值由下式来确定: t = 12 *( TALL THL) / f0 式中 TALL = 216 = 65536,THL 为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH = THL / 256 = ( TALL t* f0/12) / 256 TL = THL % 256 = ( TALL t* f0/12) %256 将 t=1136 s 代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高 A在单片机晶振频率 f0=12Mhz,定时器在工作方式 1下的定时器高低计数器的予置初值为 : TH440Hz = (65536 1136 * 12/12) /256 = FBH TL440Hz = (65536 1136 * 12/12)%256 = 90H 根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 1.2 方案比较 1.2.1 方案一 一首音乐是许多不同的音阶组成的,而 每个音阶对应着不同的频率,利用不同的频率的组合,即可构成所想要的音乐,对于单片机来产生不同的频率非常方便,可以利用单片机的定时 /计数器 T0 或者 T1 来产生这样方波频率信号,因此,只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机 12MHZ 晶振为例,例出高中低音符与单片机计数 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 nts低 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 表 1.2.1.1 另外, 音乐的音拍,一个节拍为单位( C 调 ),节拍与对应应延时的秒数关系如下表 曲调值 DELAY 曲调值 DELAY 调 4/4 125ms 调 4/4 62ms 调 3/4 187ms 调 3/4 94ms 调 2/4 250ms 调 2/4 125ms 表 1.2.1.2 不同的音乐不同的调,在单片机内调用不同的方波频率来 显示声调,可以达到效果。 ORG 00h JMP MAIN ntsORG 000BH JMP INTT0 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H SETB ET0 SETB EA SETB TR0 START0: SETB P0.0 MOV 30H,#00H NEXT: MOV A,30H MOV DPTR,#TABLE MOVC A,A+DPTR MOV R2,A JZ ENDD ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP D1 SING: DEC A MOV 22H,A RL A nts MOV DPTR,#TABELl MOVC A,A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL0,A MOV 20H,A SETB TR0 D1: CALL DELAY INC 30H JMP NEXT ENDD: CLR TR0 JMP START0 INTT0: PUSH PSW PUSH ACC MOV TL0,20H MOV TH0,21H CPL P0.0 POP ACC POP PSW RETI DELAY: MOV R7,#02 DELAY0: nts MOV R4,#187 DELAY1: MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 DJNZ R5,DELAY RET TABLE: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H TABELl: DW 64260,64400,64524,64580,64684,64777,64820,64898 DW 64968,65030,65058,65110,65157,65178,65217 end 1.2.2 方案二 我们知道,声音的频谱范围约在几十到几千赫兹,若能利 用程序来控制单处机某个口线的 “ 高 ” 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制 “ 高 ”“ 低 ” 电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生 200HZ 的音频信号,按图 1 接入喇叭(也可将喇叭直接接在 P1 口线上), 实验程序为: ;本程序演奏的是民歌 “ 八月桂花遍地开 ” , C 调,节奏为 94 拍 / 分。 nts; 标题 八月桂花香 发声程序 汇编部分 ORG 00H JMP START ORG 0BH 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 MUSIC1: NOP CLR A ; A清零 MOVC A,A+DPTR ;查表取代码 JZ END0 ;是 00H,则结束 CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下执行 JMP MUSIC3 MUSIC5: NOP MOV R6,A ; R6=18H 音符的频率 INC DPTR ; DPTR 加一 ntsMOV A,#0 MOVC A,A+DPTR ; 取节拍代码送 R7 MOV R7,A ; R7=30H 音符发音的时间 SETB TR0 ;启动计数 MUSIC2: NOP CPL P2.0 ; P2.0是音乐输出引脚 MOV A,R6 MOV R3,A ; R3=R6=18H CALL DEL MOV A,R7 CJNE A,20H,MUSIC2 ;中断计数器 (20H)=R7 否 ? ;不等 ,则继续循环 MOV 20H,#00H ;等于 ,则取下一代码 INC DPTR JMP MUSIC1 MUSIC3: NOP ;休止 100毫秒 CLR TR0 MOV R2,#0DH ;R2=13 MUSIC4: NOP MOV R3,#0FFH ;R3=255 CALL DEL DJNZ R2,MUSIC4 INC DPTR JMP MUSIC1 END0: NOP ntsMOV R2,#0FFH ;歌曲 结束 ,延时 1秒后继续 MUSIC6: MOV R3,#00H CALL DEL DJNZ R2,MUSIC6 JMP MUSIC0 DEL: NOP DEL3: MOV R4,#02H DEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H, 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H, 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H, 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H, 30H, 1CH, 10H, 18H DB 20H, 15H, 20H , 1CH, 20H, 20H, 20H, 26H DB 40H, 20H, 20H , 2BH, 20H, 26H, 20H, 20H DB 20H, 30H, 80H , 0FFH, 20H, 20H, 1CH, 10H DB 18H, 10H, 20H , 20H, 26H, 20H, 2BH, 20H DB 30H, 20H, 2BH , 40H, 20H, 20H, 1CH, 10H DB 18H, 10H, 20H, 20H, 26H, 20H, 2BH, 20H DB 30H, 20H, 2BH , 40H, 20H, 30H, 1CH, 10H ntsDB 18H, 20H, 15H , 20H, 1CH, 20H, 20H, 20H DB 26H, 40H, 20H , 20H, 2BH, 20H, 26H, 20H DB 20H, 20H, 30H , 80H, 20H, 30H, 1CH, 10H DB 20H, 10H, 1CH , 10H, 20H, 20H, 26H, 20H DB 2BH, 20H, 30H , 20H, 2BH, 40H, 20H, 15H DB 1FH, 05H, 20H , 10H, 1CH, 10H, 20H, 20H DB 26H, 20H, 2BH , 20H, 30H, 20H, 2BH, 40H DB 20H, 30H, 1CH , 10H, 18H, 20H, 15H, 20H DB 1CH, 20H, 20H , 20H, 26H, 40H, 20H, 20H DB 2BH, 20H, 26H , 20H, 20H, 20H, 30H, 30H DB 20H, 30H, 1CH, 10H, 18H, 40H, 1CH, 20H DB 20H, 20H, 26H, 40H, 13H, 60H, 18H, 20H DB 15H, 40H, 13H , 40H, 18H, 80H, 00H end 其中子程序 DEL 为延时子程序,当 R3 为 1 时,延时时间约为 20us , R3 中存放延时常数,对 200HZ 音频,其周期为 1/200 秒,即 5ms 。这样,当 P1.0 的 高 电 平 或 低 电 平 的 持 续 时 间 为 2.5ms ,即 R3 的 时 间 常 数 取 2500/20=125(7DH) 时,就能发出 200HZ 的音调。 表 1.2.2.1 乐曲中,每一音符对应着确定的频率,表 1.2.2.1 给出 C 调时各音符频率及其相应的时间常数。根据表 1 所提供的常数,将其 16 进制代码送入 R3 ,可以奏出音符。要准确奏出一首曲子,还必须准确地控制乐曲节奏,即一音符的持续时间。 音符的节拍我们可以用定时器 T0 来控制,送入不同的初值,就可以产nts生不同的定时时间。便如某歌曲的节奏为每分钟 94 拍,即一拍为 0.64 秒。其它节拍与时间的对应关系见表 2 。 节拍 常数 节拍 常数 节拍 常数 节拍 常数 1/4 10H 1 1/4 50H 2 1/4 90H 3 1/4 0D0H 2/4 20H 1 2/4 60H 2 2/4 0A0H 3 2/4 0E0H 3/4 30H 1 3/4 70H 2 3/4 0B0H 3 3/4 0F0H 1 40H 2 80H 3 0C0H 1/8 05H 表 1.2.2.2 但是 ,由于 T0 的最大定时时间只能为 131 毫秒,因此不可能直接用改变 T0 的时间初值来实现不同节拍。我们 可以用 T0 来产生 10 毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。表 2 中也给出了各种节拍所对应的时间常数。例如对 1/4 拍音符,定时时间为 0.16 秒,相应的时间常数为 16 (即 10H );对 3 拍音符,定时时间为 1.92 秒,相应时间长数为 192 (即 C0H )。 我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。 此外,结束符和体止 符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H ,则表示曲子终了;若查表结果为 FFH ,则产生相应的停顿效果。 为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。 程序框图如图 1.2.2.3 所示。 nts 图 1.2.2.3 在两个方案当中,由于方案一较好地运用了模块查找的方法,程序简单易懂, 没有用到方案二当中的 实现起来容易。方案二由于赋值不是很精确,声音频率有些变化。 综合比较,我们选择方案一。 2.电路仿真与分析 本次试验我们采用了两个软 件,用 proteus9.2 和 keil750A两个软件和程序下载机进行仿真。 仿真 仿真原理图(简化画法):图 1.2.2.4 nts 图 1.2.2.4 先在 proteus中绘制好电路图,然后在 keil750A 编写好程序,编译通过无错后生成一个 .hex文件,在 proteus软件中,打开 .hex文件,将程序调进单片机 89s52中,进行仿真。仿真成功后喇叭发出悦耳的音乐声,说明仿真成功。成功之后再通过下载机将程序下载到硬件单片机 89s51 芯片上。 分析 由于没接三极管进 行信号放大,故音乐输出的声音非常小。故我们加进三极管进行放大。图 1.2.2.5 nts 图 1.2.2.5 中断选取歌曲播放时,仿真软件没有出现歌曲跳放,当实物播放时可能由于按键的抖动,有时歌曲会不按预先设计的顺序播放,间隔播放。但我们此次已经采用了中断作为入口,无法再用软件进行查询利用延时去除抖动。故我们利用硬件的功能,在电源两端加入并联电容 。图 1.2.2.6 图 1.2.2.6 3电路板焊接、调试 本次实 验由于电路简单,线路不多,我们使用面包板。 3.1 焊接 在焊接之前,画好正确的电路图是非常重要的。焊接当中要注意石英晶振焊接时间不要太长时间,以免烧坏。单片机不用到的引脚可以不用焊接上去,既可以节约资源有可以美观。由于之前已经以及平时有焊接经验,所以焊接,所以焊接过程并没有出现什么问题。只要遵照正常的步骤以及要求,如不要虚焊,走线平滑,焊点圆滑等,基本都能做到正确完成,并且美观。 3.2 调试 这个设计受外界环境的影响比较小,所以只要电路仿真成果以及焊接正确,基本实现并不很难。 我们在此次设计当中运用模电 知识,通过三极管后再接小喇叭,声音立刻变nts大了。由于一开始我们使用蜂鸣器,声音的柔和度非常差,歌曲播放当中经常出现严重的声音失真。因此,我们换了柔和度好的小喇叭,经过调试后声音极大的得到改进,声度和柔和度都达到了非常好的理想状态。 在电源两端并上电容后,歌曲选播有了好转,部分去除按键所引起的低频分量。 4. 讨论及进一步研究建议 本次设计的创新点就是能够播放十首或以上不同的歌曲,且能够自由选择。同时电路比较简单,所用器件相对较少。 这个设计能够实现实验的要求,能够播放出音乐,但还可以再改进。比如说,音乐谱可 以从 15个提高到 36个,从而使音乐听起来更加丰富。 本设计如果时间充裕,还可以增加显示正在播放第几首歌曲的功能,只要程序进行修改并且接上相应的端口就可实现功能。 5.课程设计心得 本次 试验我们选择了相对简单的音乐系统设计,因为与考试一起进行中。在网上关于这个设计的资料也很多,甚至有现有程序,电路图。但是经过我们的比较与讨论,我们把电路简化到最简单,选择了简单易实现且播放音乐失真较小的程序。同时我们还提出更高要求,就是使系统能够实现播放十首不同歌曲,并且能够选择播放下一首歌曲。 由于宿舍里已有一些焊接的装备 且有自制烧制程序的仪器,所以我们自己先买了器件,在宿舍自行焊接调试,从而在过程中及时发现问题并解决,免去了去实验室焊接调试的时间,大大提供了效率。 制作过程中出现了各种各样的问题,比如说程序输入错误,连线错误或者焊接错误等,但是经过我们细心研究,还是逐一的排除了。 在本次设计过程中,我们受益匪浅。最重要的一点是让我们明白了团队精神的重要性。合理分工,团结合作,互相讨论,每一个成员在这次设计过程中都是不可缺少的。设计过程中,虽然困难重重,也曾在设计初期想过放弃,但是我们最后还是选择坚持,相信凭着我们的努力一定 能够设计出来的,正是拼这这股信nts念才让我们坚持到最后。在这个过程中,有时由于组员意见不统一,但最终都能够在和谐的基础上到达统一。各个项目设计中,有过坎坷时的烦闷,有过成功时的喜悦,最难得的是我们三个组员的相互鼓励与支持,结果虽然不能完全达到目的,但是我们都在这个过程中学到很多的东西,不仅仅是知识上的,而且在团队的合作上。结果并不太重要,过程更能体现这次设计的目的。 最后,非常感谢学院提供给我们这次设计的机会。希望学院多组织这样的课程,让我们在学习理论知识的基础上,加强我们的创造力与动手能力,更加牢固得掌握学习 的知识,甚至课堂上没学到的知识,真正做到学以致用。 6单片机音乐播放器源程序 N EQU 10 ORG 00h JMP MAIN ORG 0003H JMP INTT0 ORG 000BH JMP INTT1 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H ;设计定时器模式 1 MOV 30H,#01H ;初始歌曲第一曲 SETB EX0 SETB IT0 SETB ET0 SETB EA MOV DPTR,#TABLE1 ;第一首歌曲表头地址送 DPTR nts MOV 32H,DPH ;DPTR 高八位地址送寄存器 32H MOV 33H,DPL ;DPTR 低八位地址送寄存器 33H START0: SETB P1.0 MOV 31H,#00H ;歌曲首地址初始化为 0 NEXT: MOV A,31H MOV DPH,32H ;将歌曲高八位送 DPH MOV DPL,33H ;将歌曲低八位送 DPL MOVC A,A+DPTR ;查表取歌谱代码 MOV R2,A ;歌谱代码送寄存器 R2 JZ ENDD ;A 为全 0,歌曲结束跳转 ENDD 重新开始 ANL A,#0FH ;取低四位,即歌曲延时送回 A MOV R5,A ;歌曲声响送 R5 寄存 MOV A,R2 SWAP A ANL A,#0FH ;取高八位,即歌曲声调送回 A JNZ SING ;A 高四位不为全 0 跳转 SING CLR TR0 ;A 高四位为全 0 时,不输出声调仅为声调与声调之间 ; 的延时用,清启动位无声输出 JMP D2 ;跳转 D2 延时(较短,用于两个音符之间的延时) SING: DEC A ;A 值减一,左移两位相当于乘二取对应的声调表的第一个字节 MOV 22H,A ; RL A ; MOV DPTR,#TABELS ;将声调表首址送 DPTR nts MOVC A,A+DPTR ;与 A 相加送 A 后成为对应声调 MOV TH0,A ;A 送定时器高八位 MOV 21H,A ;再送 21H 先寄存起来 MOV A,22H ;将对应声调送 A 左移加一取声调表地址的下一个字节 RL A ; INC A ; MOVC A,A+DPTR ;将声调表对应声调的第二个字节送 A MOV TL0,A ;将 A 内容送定时器 T0 低八位 MOV 20H,A ;A 内容继续送寄存器 20H 保存 SETB TR0 ;启动定时器 T0 开始工作 D1: CALL DELAY ;调用延时子程序 INC 31H ;31H 加一即为下一个声调、声响的继续 JMP NEXT ;跳转 NEXT,重新执行下一个音符的声调和声响时间 D2: CALL DELAY3 ;调用延时子程序,用于音符发响的时间 INC 31H ;31H 加一即为下一个声调、声响的继续 JMP NEXT ;跳转 NEXT,重新执行下 一个音符的声调和声响时间 ENDD: CLR TR0 ;关闭定时器 JMP START0 ;歌曲重新开始 INTT0: ;歌曲选择播放中断,由 INT0 中断入口提供 CLR EA ;为防止按键再次抖动,清中断总控制位 PUSH ACC ;入栈保护现场 PUSH PSW ; PUSH DPH ; PUSH DPL ; nts MOV DPTR,#TABLE ;将几首歌曲的首地址送 DPTR MOV A,30H ;将现播放的第几首歌曲值送 A CJNE A,#N,L1 ;比较 A 与总歌曲数,不相等跳转 L1,继续下一首歌曲的播放;如果等于最大歌曲数则向下执行 MOV 30H,#00H ;将歌曲首清 0,开始第一首的执行 MOV DPTR,#TABLE1 ;将第一首歌曲表地址送 DPTR MOV 32H,DPH ;将第一首歌曲表地址高八位送 32H 寄存 MOV 33H,DPL ;将第一首歌曲表地址低八位送 33H 寄存 SJMP L2 ;如果是第一首歌曲将跳转 L2 执行 L1: INC 30H ;歌曲首的数值加一,即为下一首歌曲 MOV A,30H ;送 A 减一左移一位,取下一首歌曲所在表的第几个字节送 A DEC A ; RL A ; MOV 40H,A ;先将下一首歌曲表地址首址第一个字节送40H 寄存 MOVC A,A+DPTR ;查表取出第几首歌曲的第一个真正字节 MOV 32H,A ;将 A 送 32H 寄存 INC 40H ;加一即为现第二个字节 MOV A,40H ;送 A MOVC A,A+DPTR ;查表取出第几首歌曲的第二个真正字 节 MOV 33H,A ;将表的第二个字节送 33H 寄存 L2: MOV 31H,#00H ;31H 清 0 POP DPL ;恢复现场 POP DPH ; POP PSW ; POP ACC ; nts SETB EA ;开中断允许总控制 RETI INTT1: ;利用定时器 T0 中断产生方波频率输出 PUSH PSW ;保护现场 PUSH ACC ; MOV TL0,20H ;中断进来后将声调的保存值再次送定时器T0 MOV TH0,21H ; CPL P1.0 ;取反形成方波输出 POP ACC ;恢复现场 POP PSW ; RETI DELAY: ;延时子程序(长,用于声调和声调之间的延时) MOV R7,#02 DELAY0: MOV R4,#187 DELAY1: MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 DJNZ R5,DELAY RET DELAY3: ;延时子程序(短,用于一个声调的发声时间) MOV R7,#01 DELAY4: MOV R4,#50 DELAY5: MOV R3,#50 nts DJNZ R3,$ DJNZ R4,DELAY5 DJNZ R7,DELAY4 DJNZ R5,DELAY3 RET TABLE: DW TABLE1,TABLE2,TABLE3,TABLE4,TABLE5,TABLE6,TABLE7,TABLE8 DW TABLE9, TABLE10 TABLE1: ;同桌的你 DB 81H,01H,81H,01H,81H,01H,81H,61H,71H,84H,0A4H DB 91H,01H,91H,01H,91H,01H,91H,71H,91H,88H DB 81H,01H,81H,01H,81H,01H,81H,0A1H,91H,81H,75H DB 71H,01H,71H,01H,71H,01H,71H,61H,51H,45H DB 0B1H,01H,0B1H,01H,0B1H,01H,0B1H,81H,91H,0B4H,01H,0B1H,0D4H DB 0C1H,01H,0C1H,01H,0C1H,01H,0C1H,0B1H,0A1H,98H DB 0A1H,01H,0A1H,01H,0A1H,01H,0A1H,01H,0A1H,0B1H,0C4H,84H DB 0A1H,01H,0A1H,0B1H,0C1H,0B1H,0A1H,0B8H,00H TABLE2: ;祝你生日快乐 DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H TABLE3: ;你知道我在等你吗? DB 81H,01H,82H,01H,81H,71H,61H,71H,88H nts DB 62H,01H,61H,01H,61H,0D2H,0C2H,0B8H DB 92H,0D2H,0E2H,94H,0D2H,0E2H,92H,0B1H,0C8H DB 81H,01H,82H,01H,81H,71H,61H,71H,88H DB 62H,01H,61H,01H,61H,0D2H,0C2H,0B8H DB 92H,0D2H,0E2H,94H,01H,91H,0D2H,0E2H,92H,0B1H,0C8H DB 82H,0D1H,01H,0D1H,01H,0D1H,0E1H,0D2H,81H,0D4H DB 82H,0C1H,0B1H,01H,0B1H,0A1H,92H,61H,94H DB 92H,0D1H,01H,0D1H,01H,0D1H,01H,0D1H,01H,0D2H,01H,0D1H,01H,0D3H,0E2H,92H,0B2H,0C8H DB 82H,0D1H,01H,0D1H,01H,0D1H,0E1H,0D2H,81H,0D4H DB 82H,0C1H,0B1H,01H,0B1H,0A1H,92H,61H,94H DB 92H,0D1H,01H,0D1H,01H,0D1H,01H,0D1H,01H,0D2H,01H,0D1H,01H,0D3H,0E2H,92H,0B2H,0D2H,0C1H,01H,0C8H,00H TABLE4: ;沉默是金 DB 62H,82H,01H,82H,91H,84H,62H,52H,62H,01H,62H,01H,62H,51H,44H DB 92H,0B2H,01H,0B3H,0C1H,0B4H,91H,81H,62H,88H DB 92H,0B2H,01H,0B2H,0C1H,0B4H,91H,81H,62H,82H,01H,82H,01H,82H,91H,64H DB 82H,62H,54H,62H,54H,61H,52H,61H,88H DB 62H,82H,01H,82H,91H,84H,62H,52H,62H,01H,62H,01H,62H,51H,44H DB 92H,0B2H,01H,0B3H,0C1H,0B4H,91H,81H,62H,88H DB 92H,0B2H,01H,0B2H,0C1H,0B4H,91H,81H,62H,82H,01H,82H,01H,82H,91H,64H DB 82H,62H,54H,92H,84H,62H,52H,48H DB nts0B4H,01H,0B3H,0C1H,0D3H,01H,0D1H,0C2H,0B2H,92H,0B2H,01H,0B2H,91H,88H DB 92H,0B2H,01H,0B2H,0C1H,0B4H,91H,82H,61H,88H DB 96H,0B2H,01H,0B2H,0C2H,0B4H,81H,91H,82H,01H,82H,91H,65H DB 85H,62H,56H,62H,54H,61H,52H,61H,58H,00H TABLE5: ;一生有你 DB 11H,01H,11H,42H,51H,01H,51H,61H,01H,64H DB 11H,01H,11H,42H,51H,01H,51H,61H,54H DB 11H,01H,11H,42H,51H,01H,51H,61H,01H,64H DB 41H,61H,54H,51H,41H,01H,42H,01H,42H,54H DB 11H,01H,11H,42H,51H,01H,51H,61H,01H,64H DB 11H,01H,11H,42H,51H,01H,51H,61H,54H DB 11H,01H,11H,42H,51H,01H,51H,61H,01H,64H DB 41H,61H,54H,01H,51H,41H,01H,41H,54H DB 41H,11H,41H,52H,01H,51H,01H,51H,01H,51H,81H,51H,41H,01H,41H,61H,01H,64H DB 21H,11H,21H,41H,31H,01H,31H,21H,31H,41H,01H,41H,01H,41H,51H,01H,54H DB 61H,01H,61H,01H,61H,01H,61H,51H,01H,51H,01H,51H,81H,91H,01H,91H,01H,91H,81H,64H DB 71H,01H,71H,01H,71H,91H,01H,91H,81H,01H,81H,01H,81H,41H,01H,41H,01H,41H,51H,44H,00H TABLE6: ;小薇 DB 01H,82H,92H,0D4H,0C1H,0D1H,0C1H,0B2H,91H,0B4H DB 91H,0D1H,92H,0C4H,01H,0B2H,01H,0B2H,92H,0C8H DB 82H,92H,0D8H,0F1H,0C2H,0B1H,0C2H,0B4H DB 92H,0D2H,0C4H,01H,0C1H,0B1H,01H,0B1H,92H,0B4H nts DB 0B2H,0A2H,94H,01H,91H,81H,91H,81H,61H,01H,61H,0B2H,98H,01H DB 91H,0B2H,0D1H,0C4H,01H,0C2H,92H,0C2H,92H,88H DB 82H,92H,0D2H,01H,0D2H,0C1H,0B1H,01H,0F1H,0D4H,01H DB 91H,0B1H,0D1H,0C4H,01H,0C1H,01H,0C1H,01H,0C2H,92H,0B8H,00H TABLE7: ;迷乡 DB 0B1H,0C1H,0B1H,0C1H,0D1H,01H,0D1H,01H,0D2H DB 0D1H,0C1H,0B1H,91H,0B1H,01H,0B1H,01H,0B2H,01H DB 0B1H,91H,81H,91H,0C1H,01H,0C1H,01H,0C2H DB 0C1H,0B1H,91H,81H,01H,81H,91H,81H,01H DB 0B1H,0C1H,0B1H,0C1H,0D1H,01H,0D1H,01H,0D2H DB 0D1H,0C1H,0B1H,91H,0B1H,01H,0B1H,01H,0B2H,01H DB 0B1H,91H,81H,91H,0C1H,01H,0C1H,01H,0C2H DB 0C1H,0B1H,91H,0C1H,01H,0C1H,0D1H,0C4H,01H DB 0B1H,01H,0B1H,01H,0B1H,0C1H,0B2H,01H,0B1H,91H,0C1H,01H,0C8H DB 0B1H,01H,0B1H,01H,0B1H,0C1H,0B2H,01H,0B1H,91H,81H,01H,81H,0B8H DB 0B1H,01H,0B1H,01H,0B1H,0C1H,0B2H,01H,0B1H,91H,0C1H,01H,0C8H DB 0B1H,01H,0B1H,01H,0B1H,0C1H,0B2H,01H,0B1H,91H,81H,01H,81H,0B8H DB 01H,0B1H,01H,0B1H,01H,0B1H,0C2H,0B2H,61H,81H,01H,81H,01H,81H DB 01H,91H,0B1H,01H,0B1H,01H,0B2H,01H,0B1H,0C1H,01H,0C1H,0D1H,01H,0D2H DB 01H,0B1H,01H,0B1H,01H,0B1H,0C2H,0B2H,61H,81H,01H,81H,01H,81H nts DB 01H,91H,0B1H,01H,0B1H,01H,0B1H,01H,0B2H,01H,0B1H,0C1H,01H,0C1H,01H,0C2H DB 0B1H,0C1H,0B1H,0C1H,0D1H,01H,0D1H,01H,0D2H DB 0D1H,0C1H,0B1H,91H,
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:单片机音乐播放系统设计
链接地址:https://www.renrendoc.com/p-512482.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!