单片机音乐播放程序2010

上传人:简****9 文档编号:108946907 上传时间:2019-10-25 格式:DOC 页数:11 大小:60.50KB
返回 下载 相关 举报
单片机音乐播放程序2010_第1页
第1页 / 共11页
单片机音乐播放程序2010_第2页
第2页 / 共11页
单片机音乐播放程序2010_第3页
第3页 / 共11页
单片机音乐播放程序2010_第4页
第4页 / 共11页
单片机音乐播放程序2010_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《单片机音乐播放程序2010》由会员分享,可在线阅读,更多相关《单片机音乐播放程序2010(11页珍藏版)》请在金锄头文库上搜索。

1、编号:13 河北工业大学计算机硬件技术基础(MCS-51)2008年秋季综合性、开放性实验报告学院 土木工程学院 班级 道桥082 姓名 刘大维 尹少奇 学号 801444 081456成绩 _ _一、题目:音乐播放程序二、问题的提出 通过平时生活对mp3的了解,利用单片机的蜂鸣器等对mp3的唱歌播放,循环和选择的功能进行模拟。三、总体设计1、分析问题的功能 通过设定SW键实现歌曲的选择,通过KEY键实现中断,其中KEY键为模拟mp3的总开关。KEY键触发后,再利用3个SW开关的不同组合值即“100”“010”“001”来实现歌曲的选择,在不改变其值时实现歌曲的单曲循环。通过LED1-3灯的亮

2、灭来显示某首歌是否处于被选中状态。通过LED8的亮灭及闪亮程度表现所选歌曲的节拍。2、系统总体结构设计1)硬件设计:根据问题确定使用8051单片机的P1和P3口、蜂鸣器,八个LED灯显示以及一个外部中断等。 2)软件设计:我们的软件设计中包含了中断控制模块,软件计时模块,唱歌模块,判断选择模块。四、详细设计:1、硬件详细设计:1)画出电路图如下:P1.0 P3.0P1.1 P3.1P1.2 /INT0 P1.3 P1.4P1.5P1.6P1.7KEY1排 线8个 LED灯SW1SW2SW3蜂鸣器2)进行硬件资源分配(包括I/O口地址、所用各存储单元的用途)。ORG 8000H硬件入口地址 OR

3、G 8003H中断主程序入口 ORG 800BH定时器T0中断入口ORG 8100H 主程序起始地址蜂鸣器连线:用单导线将P1.7与蜂鸣器相连指示灯控制连线:使用排线将A2区的J61接口与D1区的J52接口相连外部中断连线:使用导线将A2区的/INT0与D1区J53的KEY3口连接开关连线:用导线将SW1-SW3与A2区的P1.0-P1.2顺序连接2、软件详细设计:首先中断控制模块,这一部分是用于和外部中断/INT0联系实现K1键的总开关的功能。其次,设计中还包含了软件计时模块,此模块是为了实现对每个音符的节拍控制。设计中还包括最主要的唱歌模块,实现唱歌及单曲循环功能。设计中同时包含判断选择模

4、块,实现不同歌曲的自由选择切换功能 。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)在编制歌曲方面,我们从对歌曲的音调及节拍的了解入手,利用了老师所提供的资源了解到每个音调的频率,由此计算得出每个音符所对应的十六进制数值,所用公式65536-1000000/(2*f) 其中f即为所需要的音调的频率值。2)实现查表唱歌的过程,我们参考了从图书馆借来的书籍然后编制出自己的查表唱歌程序。3)实现三首歌曲的自由切换,这是我们在做开放性试验时遇到的最大的困难,最后利用转移指令和二级跳转实现了此功能。五、程序清单 SPK EQU P1.7 ;定义蜂鸣器地址ORG 8000H

5、;主程序起始地址LJMP MAIN ;跳转至主程序 ORG 8003H ;中断主程序入口 LJMP INT0SV ;跳转至中断服务程序ORG 800BH ;定时器T0中断入口LJMP EXT0 ;跳转至T0中断子程序 ORG 8100H ;主程序起始地址MAIN:MOV SP,#60H ;设置堆栈初值 SETB EA ;CPU开中断 SETB IT0 ;令/INT0为边沿触发 SETB EX0 ;开/INT0中断SETB PX0 ;设置中断优先级CLR TR0 ;关闭定时器T0,此时不发音 SJMP $K1: CLR TR0 ;关闭定时器T0,此时不发音 MOV A,R3 ;将R3值给A累加器

6、 CJNE A,#1H,H1 ;若A与01不等则转移至H1,若相等则顺序执行 LJMP A1 ;调用A1 H1:CJNE A,#02H,H2 ;若A与02不等则转移至H2,若相等则顺序执行 LJMP A2 ;调用A2 H2:CJNE A,#04H,K1 ;若A与04不等则转移至K1,若相等则顺序执行LJMP A3 ;调用A3A1:MOV TMOD,#00000001B ;设置T0方式1 MOV IE,#10000010B ;允许T0中断 MOV DPTR,#TABLE1 ;存表首地址LOOP1:CLR A ;清零 MOVC A,A+DPTR ;查表 MOV R1, A ;定时器高八位存入R1

7、INC DPTR ;指针加一 CLR A ;清零 MOVC A,A+DPTR ;查表 MOV R0,A ;定时器低八位存入R0 ORL A,R1 ;进行或运算 JZ NEXT0 ;全零为休止符 MOV A,R0 ; ANL A,R1 ;进行与运算 CJNE A,#0FFH,NEXT ;全一表示乐曲结束 LJMP A1 ;从头开始循环演奏NEXT:MOV TH0,R1 ;装入高位定时器 MOV TL0,R0 ;装入低位定时器SETB TR0 ;启动定时器T0 lJMP NEXT1 ;跳转到NEXT1处NEXT0:CLR TR0;关闭定时器,停止发声NEXT1:CLR A ;清零 INC DPTR

8、 ;指针加一 MOVC A,A+DPTR ;查延时常数 MOV R2,A;延时常数存入R2LOOP2:ACALL DELAY1 ;调用延时子程序 DJNZ R2,LOOP2;控制延时次数 JNB P1.0,INT0SV;当P1.0为0时跳转至INTOSV INC DPTR ;指针加一 lJMP LOOP1 ;跳转至LOOP1处EXT0:MOV TH0,R1 ;重装定时值 MOV TL0,R0 ; CPL P1.7 ;反相输出 RETI ;中断子程序返回;子程序名:DELAY1;功能:延时187ms ;调用:无;入口参数:无;出口参数:无;占用资源: R5,R6,R7DELAY1:MOV R7,

9、#02 ;延时187ms子程序D2:MOV R6,#187D3:MOV R5,#248 DJNZ R5,$ DJNZ R6,D3 DJNZ R7,D2 RET ;延时子程序返回TABLE1: ;编码表 DB 0FDH,80H,03H,0FDH,80H,01H DB 0FDH,0C6H,04H,0FDH,80H,04H DB 0FEH,2AH,04H,0FEH,02H,04H DB 00H,00H,04H DB 0FDH,80H,03H, 0FDH,80H,01H DB 0FDH,0C6H,04H, 0FDH,80H,04H DB 0FEH,5CH,04H,0FEH,2AH,04H DB 00H

10、,00H,04H DB 0FDH,80H,03H, 0FDH,80H,01H DB 0FEH,0C0H,04H, 0FEH,84H,04H DB 0FEH,2AH,04H,0FEH,02H,04H DB 0FDH,0C6H,04H DB 0FEH,98H,03H,0FEH,98H,01H DB 0FEH,84H,04H,0FEH,2AH,04H DB 0FEH,5CH,04H,0FEH,2AH,04H DB 00H,00H,04H DB 0FFH,0FFH ;结束码INT0SV: MOV P1,#0FFH;P1口置一 MOV A,P1 ;将P1口送给累加器A ANL A,#7H;与程序 MOV

11、 R3,A MOV A,#0FH;将“K1”低八位给A PUSH ACC ;压入堆栈 MOV A,#81H ;将“K1”高八位给APUSH ACC ;压入堆栈RETI ;中断程序返回A2:MOV TMOD,#00000001B MOV IE,#10000010B MOV DPTR, #TABLE2LOOP3:CLR A MOVC A,A+DPTR MOV R1, A INC DPTR CLR A MOVC A,A+DPTR MOV R0,A ORL A,R1 JZ NEXT3 MOV A,R0 ANL A,R1 CJNE A,#0FFH,NEXT2 JMP A2NEXT2:MOV TH0,R1

12、 MOV TL0,R0 SETB TR0 JMP NEXT4NEXT3:CLR TR0NEXT4:CLR A INC DPTR MOVC A,A+DPTR ;同上 MOV R2,ALOOP4:ACALL DELAY2 DJNZ R2,LOOP4 JNB P1.1,INT0SV INC DPTR lJMP LOOP3DELAY2:MOV R7,#25D4:MOV R6,#250D5:MOV R5,#20 DJNZ R5,$ DJNZ R6,D5 DJNZ R7,D4 RETTABLE2:DB 0FCH,4AH,02H, 0FCH,0AEH,02H DB 0FDH,08H,02H, 0FCH,4AH,02H DB 0FCH,4AH,02H, 0FCH,0AEH,02H DB 0FDH,08H,02H, 0FCH,4AH,02H DB 0FDH,08H,02H, 0FDH,30H,02H DB 0FDH,80H,04H DB 0FDH,08H,03H, 0FDH,30H,02H DB 0FDH,80H,04H DB 0FDH,80H,01H, 0FDH,0C6H,01H

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号