 
         
         
         
         
        
            已阅读5页,还剩6页未读,            继续免费阅读
        
        
                版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
            编号:13 河北工业大学计算机硬件技术基础(MCS-51)2008年秋季综合性、开放性实验报告学院 土木工程学院 班级 道桥082 姓名 刘大维 尹少奇 学号 801444 081456成绩 _ _一、题目:音乐播放程序二、问题的提出 通过平时生活对mp3的了解,利用单片机的蜂鸣器等对mp3的唱歌播放,循环和选择的功能进行模拟。三、总体设计1、分析问题的功能 通过设定SW键实现歌曲的选择,通过KEY键实现中断,其中KEY键为模拟mp3的总开关。KEY键触发后,再利用3个SW开关的不同组合值即“100”“010”“001”来实现歌曲的选择,在不改变其值时实现歌曲的单曲循环。通过LED1-3灯的亮灭来显示某首歌是否处于被选中状态。通过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硬件入口地址 ORG 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键的总开关的功能。其次,设计中还包含了软件计时模块,此模块是为了实现对每个音符的节拍控制。设计中还包括最主要的唱歌模块,实现唱歌及单曲循环功能。设计中同时包含判断选择模块,实现不同歌曲的自由选择切换功能 。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)在编制歌曲方面,我们从对歌曲的音调及节拍的了解入手,利用了老师所提供的资源了解到每个音调的频率,由此计算得出每个音符所对应的十六进制数值,所用公式65536-1000000/(2*f) 其中f即为所需要的音调的频率值。2)实现查表唱歌的过程,我们参考了从图书馆借来的书籍然后编制出自己的查表唱歌程序。3)实现三首歌曲的自由切换,这是我们在做开放性试验时遇到的最大的困难,最后利用转移指令和二级跳转实现了此功能。五、程序清单 SPK EQU P1.7 ;定义蜂鸣器地址ORG 8000H;主程序起始地址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累加器 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 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 ;指针加一 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,#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,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 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 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 DB 0FDH,80H,01H, 0FDH,30H,01H DB 0FDH,08H,02H, 0FCH,4AH,02H DB 0FDH,80H,01H, 0FDH,0C6H,01H DB 0FDH,80H,01H, 0FDH,30H,01H DB 0FDH,08H,02H, 0FCH,4AH,02H DB 0FDH,08H,02H, 0FBH,00H,02H DB 0FCH,4AH,04H DB 0FDH,08H,02H, 0FBH,00H,02H DB 0FCH,4AH,04H DB 0FFH,0FFHWANG:LJMP INT0SV ;二级跳转A3:MOV TMOD,#00000001B MOV IE,#10000010B MOV DPTR, #TABLE3LOOP5:CLR A MOVC A,A+DPTR MOV R1, A INC DPTR CLR A MOVC A,A+DPTR MOV R0,A ORL A,R1 JZ NEXT6 MOV A,R0 ANL A,R1 CJNE A,#0FFH,NEXT5 lJMP A3NEXT5:MOV TH0,R1 MOV TL0,R0 SETB TR0 JMP NEXT7NEXT6:CLR TR0NEXT7:CLR A INC DPTR MOVC A,A+DPTR MOV R2,ALOOP6:ACALL DELAY3 DJNZ R2,LOOP6 JNB P1.2,WANG ;同上 INC DPTR lJMP LOOP5DELAY3:MOV R7,#25D6:MOV R6,#250D7:MOV R5,#20 DJNZ R5,$ DJNZ R6,D7 DJNZ R7,D6 RET TABLE3 :DB 0FCH,4AH,02H, 0FCH,4AH,02H DB 0FDH,80H,02H, 0FDH,80H,02H DB 0FDH,0C6H,02H, 0FDH,0C6H,02H DB 0FDH,80H,02H, 00H,00H,02H DB 0FDH,30H,02H, 0FDH,30H,02H DB 0FDH,08H,02H, 0FDH,08H,02H DB 0FCH,0AEH,02H, 0FCH,0AEH,02H DB 0FCH,4AH,02H, 00H,00H,02H DB 0FDH,80H,02H, 0FDH,80H,02H DB 0FDH,30H,02H, 0FDH,30H,02H DB 0FDH,08H,02H, 0FDH,08H,02H DB 0FCH,0AEH,02H, 00H,00H,02H DB 0FDH,80H,02H, 0FDH,80H,02H DB 0FDH,30H,02H, 0FDH,30H,02H DB 0FDH,08H,02H, 0FDH,08H,02H DB 0FCH,0AEH,02H, 00H,00H,02H DB 0FFH,0FFH END ;程序结束六、调试程序的方法1)硬件调试方法 检查各硬件完好,按所设计电路图连线,选择所设开关及K键运行调试2)软件调试方法 采用分块、分任务进行调试的方法。先调出基本程序,在保证可以唱歌的基础上,加上SW开关的选择功能,接着加上外部中断0,使K键成为mp3的总控制开关,另外加上LED8的显示功能。对各个功能的调试过程中,使用了单步调试与设置断点调试相结合的调试 ,进行连续调试。在调试过程中,如果运行不正常,可以考虑各自程序运行时是否破坏现场,缓冲单元是否发生冲突,标志位的建立和清除在设计上是否有错误,设备是否正常等。七、程序功能通过设定SW键实现歌曲的选择,通过KEY键实现中断,其中KEY键为模拟mp3的总开关。KEY键触发后,当SW1-SW3为100时所唱歌曲为祝你生日快乐,当SW1-SW3为010时所唱歌曲为两只老虎当SW1-SW3为001时所唱歌曲为一闪一闪亮晶晶。若SW1-SW3值不变,则执行单曲循环播放,当SW1-SW3值发生改变时则所选歌曲变化,实现mp3选择播放功能。通过LED1-3灯的亮灭来显示某首歌是否处于被选中状态,灯灭即为该歌曲处于选中状态。通过LED8的亮灭及闪亮程度表现所选歌曲的节拍。八、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。本实验由我们合作完成,其中没有明确的硬件软件分工,均为合作完成,因此是我们两个人都对所做的开放性试验有很深的了解。在这次试验中,我们充分发扬了团结合作的精神,一一解决所遇到的困难。虽然时间很仓促,知识储备也不够充分,但还是成了令我们自己感到较满意的实验结果。2、对课题提出更完善的方案。在实验中我们也发现了自己程序的不足,例如查找中断返回地址时需要每次步进来查看所需指针,还有我们的实验中没有实现暂停,上一曲,下一曲等功能,这让我们两个人都觉得有一些些遗憾。九、收获及心得体会1、通过本次课程设计,我们提高了自己很多方面的能力。首先提高的是对新知识的        
    温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考试心理调节及粗心克服技巧
- 工地三防施工方案怎么写
- 纸盒包装抽纸施工方案
- 建筑节能组团布局方案设计
- 医美咨询室布置方案模板
- 银川抛釉砖修复施工方案
- 河边建筑调色方案设计图
- 人工浆砌石护坡施工方案
- 心理咨询及心理疏导方案
- 西藏配电站设计施工方案
- 《建设项目水土保持》课件
- 中国工会十八大精神知识问答学习题库
- 《陈太丘与友期行》对比阅读4篇
- CSQS(中国造船质量标准)英文版
- 医院院感知识培训以及培训试题(含答案)
- 2023年4月自考02202传感器与检测技术及答案含评分标准
- 低血糖症-课件
- 社区工作者案例分析
- 脑梗死的诊疗规范
- YY 0594-2006外科纱布敷料通用要求
- 个人学习-1 .华美企业文化培训
 
            
评论
0/150
提交评论