单片机音乐播放程序2010_第1页
单片机音乐播放程序2010_第2页
单片机音乐播放程序2010_第3页
单片机音乐播放程序2010_第4页
单片机音乐播放程序2010_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、单导线将P1.7与蜂鸣器相连指示灯控制连线:使用排线将A2区的J61接口与D1区的J52接口相连外部中断连线:使用导线将A2 区的/INT0与D1 区 J53 的KEY3口连接开关连线:用导线将SW1-SW与A2区的P1.0-P1.2顺序连接2、 软件详细设计:首先中断控制模块,这一部分是用于和外部中断/INT0联系实现K1键的总开关的功能。其次,设计中还包含了软件计时模块,此模块是为了实现对每个 音符的节拍控制。设计中还包括最主要的唱歌模块,实现唱歌及单曲循环功能。设计中 同时包含判断选择模块,实现不同歌曲的自由选择切换功能。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解

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

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

6、H1,若相等则顺序执行LJMP A1 ;调用A1H1:CJNE A,#02H,H2 ;若A与02不等则转移至H2,若相等则顺序执行LJMP A2 ;调用A2H2:CJNE A,#04H,K1 ;若A与04不等则转移至K1,若相等则顺序执行LJMP A3 ;调用A3EXT0:MOV TH0,R1 ;重装定时值MOV IE,#10000010BMOV DPTR,#TABLE1MOVC A,A+DPTR ;查表MOV R1, A;定时器高八位存入R1INC DPTR ;指针加一CLR A;清零MOVC A,A+DPTR ;查表MOV R0,A ;定时器低八位存入R0ORL A,R1 ;进行或运算JZ

7、 NEXT0 ;MOV A,R0 ;全零为休止符ANL A,R1 ;进行与运算CJNE A,#0FFH,NEXT ;全一表示乐曲结束LJMP A1 ;从头开始循环演奏NEXT:MOV TH0,R1 ;装入高位定时器MOV TL0,R0 ;装入低位定时器SETB TR0;启动定时器T0lJMP NEXT1 ;跳转至U NEXT1处NEXT0:CLR TR0;关闭定时器,停止发声NEXT1:CLR A ;清零INC DPTR ;指针加一MOVC A,A+DPTR ;查延时常数MOV R2,A;延时常数存入R2LOOP2:ACALL DELAY1 ;调用延时子程序DJNZ R2,LOOP2;控制延时

8、次数JNB P1.0,INT0SV;当P1.0为0时跳转至INTOSVINC DPTR ;指针加一lJMP LOOP1;跳转至LOOP处LOOP1:CLR A;清零允许T0中断存表首地址MOV TL0,R0 ;CPL P1.7 ;反相输出RETI ;中断子程序返回;子程序名:DELAY1;功能:延时187ms;调用:无;入口参数:无;出口参数:无;占用资源: R5,R6,R7DELAY1:M0V R7,#02 ;延时187ms子 程序D2:MOV R6,#187D3:M0V R5,#248DJNZ R5,$DJNZ R6,D3DJNZ R7,D2RET ;延时子程序返回TABLE1:;DB 0

9、FDH,80H,03H,0FDH,80H,01HDB 0FDH,0C6H,04H,0FDH,80H,04HDB 0FEH,2AH,04H,0FEH,02H,04HDB 00H,00H,04HDB 0FDH,80H,03H, 0FDH,80H,01HDB 0FDH,0C6H,04H, 0FDH,80H,04HDB 0FEH,5CH,04H,0FEH,2AH,04HDB 00H,00H,04HDB 0FDH,80H,03H, 0FDH,80H,01HDB 0FEH,0C0H,04H, 0FEH,84H,04HDB 0FEH,2AH,04H,0FEH,02H,04HDB 0FDH,0C6H,04HD

10、B 0FEH,98H,03H,0FEH,98H,01HDB 0FEH,84H,04H,0FEH,2AH,04HDB 0FEH,5CH,04H,0FEH,2AH,04HDB 00H,00H,04HDB 0FFH,0FFHINT0SV:编码表结束码MOV P1,#0FFH ;P1口置一MOV A,P1 ;将P1口送给累加器AANL A,#7H;与程序MOV R3,AMOV A,#0FH;将“K1”低八位给APUSH ACC;压入堆栈MOV A,#81H;将“K1”高八位给APUSH ACC;压入堆栈RETI ;中断程序返回A2:MOV TMOD,#00000001BMOV IE,#10000010

11、BMOV DPTR, #TABLE2LOOP3:CLR AMOVC A,A+DPTRMOV R1, AINC DPTRCLR AMOVC A,A+DPTRMOV R0,AORL A,R1JZ NEXT3MOV A,R0ANL A,R1CJNE A,#0FFH,NEXT2JMP A2NEXT2:MOV TH0,R1MOV TL0,R0SETB TR0JMP NEXT4NEXT3:CLR TR0NEXT4:CLR AINC DPTRMOVC A,A+DPTR ;MOV R2,A LOOP4:ACALL DELAY2DJNZ R2,LOOP4JNB P1.1,INT0SVINC DPTR lJMP

12、LOOP3DELAY2:MOV R7,#25D4:MOV R6,#250D5:MOV R5,#20DJNZ R5,$DJNZ R6,D5DJNZ R7,D4RETTABLE2:DB 0FCH,4AH,02H, 0FCH,0AEH,02HDB 0FDH,08H,02H, 0FCH,4AH,02HDB 0FCH,4AH,02H, 0FCH,0AEH,02HDB 0FDH,08H,02H, 0FCH,4AH,02HDB 0FDH,08H,02H, 0FDH,30H,02HDB 0FDH,80H,04HDB 0FDH,08H,03H, 0FDH,30H,02HDB 0FDH,80H,04HDB 0FD

13、H,80H,01H, 0FDH,0C6H,01HDB 0FDH,80H,01H, 0FDH,30H,01HDB 0FDH,08H,02H, 0FCH,4AH,02HDB 0FDH,80H,01H, 0FDH,0C6H,01HDB 0FDH,80H,01H, 0FDH,30H,01HDB 0FDH,08H,02H, 0FCH,4AH,02HDB 0FDH,08H,02H, 0FBH,00H,02HDB 0FCH,4AH,04HDB 0FDH,08H,02H, 0FBH,00H,02HDB 0FCH,4AH,04HDB 0FFH,0FFH同上WANG:LJMP INT0SV ;二级跳转A3:MOV

14、 TMOD,#00000001BMOV IE,#10000010BMOV DPTR, #TABLE3LOOP5:CLR AMOVC A,A+DPTRMOV R1, AINC DPTRCLR AMOVC A,A+DPTRMOV R0,AORL A,R1JZ NEXT6MOV A,R0ANL A,R1CJNE A,#0FFH,NEXT5lJMP A3NEXT5:MOV TH0,R1MOV TL0,R0SETB TR0JMP NEXT7NEXT6:CLR TR0NEXT7:CLR AINC DPTRMOVC A,A+DPTRMOV R2,ALOOP6:ACALL DELAY3DJNZ R2,LOOP

15、6JNB P1.2,WANG ;同上INC DPTRlJMP LOOP5DELAY3:MOV R7,#25D6:MOV R6,#250D7:MOV R5,#20DJNZ R5,$DJNZ R6,D7DJNZ R7,D6RETTABLE3 :DB 0FCH,4AH,02H, 0FCH,4AH,02HDB 0FDH,80H,02H, 0FDH,80H,02HDB 0FDH,0C6H,02H, 0FDH,0C6H,02HDB 0FDH,80H,02H, 00H,00H,02HDB 0FDH,30H,02H, 0FDH,30H,02HDB 0FDH,08H,02H, 0FDH,08H,02HDB 0F

16、CH,0AEH,02H, 0FCH,0AEH,02HDB 0FCH,4AH,02H, 00H,00H,02HDB 0FDH,80H,02H, 0FDH,80H,02HDB 0FDH,30H,02H, 0FDH,30H,02HDB 0FDH,08H,02H, 0FDH,08H,02HDB 0FCH,0AEH,02H, 00H,00H,02HDB 0FDH,80H,02H, 0FDH,80H,02HDB 0FDH,30H,02H, 0FDH,30H,02HDB 0FDH,08H,02H, 0FDH,08H,02HDB 0FCH,0AEH,02H, 00H,00H,02HDB 0FFH,0FFHEN

17、D ;程序结束六、调试程序的方法1)硬件调试方法检查各硬件完好,按所设计电路图连线,选择所设开关及K键运行调试2)软件调试方法 采用分块、分任务进行调试的方法。先调出基本程序,在保证可以唱歌的基础上,加上SW开关的选择功能,接着加上外部中断0,使K键成为mp3的总控制开关,另外加上LED8的显示功能。对各个功能的调试过程中,使用了单步调试与设置断点调试相结合的调试,进行连续调试。在调试过程中,如果运行不正常,可以考虑各自程序运行时是否破 坏现场,缓冲单元是否发生冲突,标志位的建立和清除在设计上是否有错误,设备 是否正常等。七、 程序功能通过设定SW键实现歌曲的选择, 通过KEY键实现中断, 其

18、中KEY键为模拟mp3的总开关。KEY键触发后,当SW1-SW为100时所唱歌曲为祝你生日快乐,当SW1-SW3为010时所唱歌曲为两只老虎当SW1-SW为001时所唱歌曲为一闪一闪亮晶晶。 若SW1-SW值不变,贝U执行单曲循环播放,当SW1-SW值发生改变时则所选歌曲变化, 实现mp3选择播放功能。通过LED1-3灯的亮灭来显示某首歌是否处于被选中状态,灯灭即为该歌曲处于 选中状态。通过LED8的亮灭及闪亮程度表现所选歌曲的节拍。八、 对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。本实验由我们合作完成,其中没有明确的硬件软件分工,均为合作完成,因此是我 们两个人都对所做的开放性试验有很深的了解。在这次试验中,我们充分发扬了团结合 作的精神,一一解决所遇到的困难。虽然时间很仓促,知识储备也不够充分,但还是成 了令我们自己感到较满意的实验结果。2、对课题提出更完善的方案。 在实验中我们也发现了自己程序的不足, 例如查找中断返回地址时需要每次步进来 查看所需指针,还有我们的实验中没有实现暂停,上一曲,下一曲等功能,这让我们两 个人都觉得有一些些遗憾。九、收获及心得体会1、通过本次课程设计,我们提高了自己很多方面的能力。首先提高的是对新知识 的自学能力,我们在编歌的过程中, 遇到了很大的困难,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论