版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.z.基于89c52单片机音乐播放的设计**师*学院物理与电气工程学院TOC\o"1-2"\h\z\u1、设计任务和要求12、总体设计13、硬件设计23.1硬件电路23.2原理说明24、软件设计25、仿真、安装和调试56、收获与体会6附件1:元件清单6附件2:总仿真电路图7附件3:音乐程序8-.z.音乐盒设计1、设计任务和要求(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲。(2直接当前播放的歌曲。(3)可通过功能键选择播放上一首、下一首和暂停播放歌曲。2、总体设计(1)要产生音频脉冲,只要算出*一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲(2)利用8052的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。记数脉冲值与频率的关系公式如下:N=Fi/2/FrN:记数值Fi:内部计时一次为1微秒.故其频率为1MHZFr;要产生的频率(3):起记数值的求法如下:T=65536-N=65536-Fi/2/Fr例如:设K=65536,F=1000000=Fi=1MHZ,求低音D0〔523HZ〕,高音的D0〔1046HZ〕的记数值。T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr低音D0的T=65536-500000/262=63627中音D0的T=65536-500000/523=64580高音D0的T=65536-500000/1047=650593、硬件设计3.1硬件电路本设计中用到89C52单片机,扬声器、键盘、连接线。1.最小系统⑴单片机:本次设计使用单片机芯片AT89C52AT89C52的工作特性:•内含8KB的FLASH存储器檫写次数1000次;•256*8bit内部RAM;•具有32根可编程I/O线;•具有3个16位编程定时器•AT89C52共有6个中断向量:两个外中断〔INT0和INT1〕,3个定时器中断〔定时器0、1、2〕和串行口中断•具有1个全双工的可编程串行通信接口;•具有可编程3级程序锁定位;•AT89C52的工作电源为5〔1±0.2〕V且典型值为5V;•AT89C52最高工作频率为24MHZ;•AT89C52的编程频率为3~24MHZ,编程启动电流和启动电压分别为1mA、5或12V。3.2原理说明当键盘有键按下时,判断键值,启动计数器T1,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T0,显示歌曲号。〔1〕 硬件电路中用、分别接k1、k2作为上、下一曲的功能键〔2〕 用P0控制七段码a,b,c,d,e,f。〔3〕用P1.2口控制喇叭。〔4〕 电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。4、软件设计本程序可以实现课程设计的根本要求,并可以通过按键播放三首歌曲,程序流程图如下:总体框图:主程序框图:子程序框图:5、仿真、安装和调试按照上面设计的电路在proteus软件内画图,翻开单片机软件开发系统Keil,选择89C52单片机,在其中编写程序,运行生成一个后缀名为he*的文件,然后将该文件下载到proteus中的AT89C52单片机中进展仿真,观察实验现象。仿真能实现播放音乐,按键选择曲目,暂停,播放功能。仿真成功后,安装好实验板,然后将音乐程序下载到电路板内,观察结果。能实现播放音乐,按键换曲等功能。程序调试中出现的问题及解决的方法:〔1〕有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规*导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。〔2〕程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转*围比拟少,这时要用一个标号中转。〔3〕编程时要注意,在程序开场时,要写入各定时器中断的入口地址。〔4〕编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。〔5〕编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。〔6〕LCD计时正常显示的解决方法:a.两个定时器同时工作,存在中断时序问题,刚开场时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决方法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。但还有问题。b.当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。c.另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,假设改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。改良方案:假设采用可以定时时间更长的单片机,可以防止所有问题。6、收获与体会(1)上学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。(2)在一个好的气氛里才能踏下心来做东西,在这一段时间里,寝室成员都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。我们也是这么做的,这一点在这次的课程设计中十分重要。(3)通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。附件1:元件清单名称数量〔个〕型号备注电阻6排阻R*8(1个)10k(3个),500(3个)数码管17SEG-DIGITAL开关4BUTTON单片机1AT89C52扬声器1SPEAKER电源25V电容330pf(2个),10uf(1个)晶振1CRYSTAL附件2:总仿真电路图附件3:音乐程序shuzhiEQU3fh ;选曲目的地址 songEQUp1.2;扬声器播放 playEQUp3.0;播放停顿键 addoneEQUp3.1 ;曲目加一键 suboneEQUp3.2 ;曲目减一键 dulEQUP1;段选 welEQUP2;位选 ORG0000H LJMPSTART ORG000BH ;定时器0溢出中断入口地址 AJMPcont ORG0013H ;外部中断一入口地址 AJMPpause ;指向外部中断程序ORG0100HSTART:MOVSP,#50H MOVTH0,#0DBH ;定时器赋初值 MOVTL0,#0FFH MOVTMOD,#01H;设定T1工作于方式2 MOVIE,#86H ;开中断 MOVTCON,#00H MOVR0,#00H MOVshuzhi,#00H(是否顺序播放音乐)MAIN:JNBplay,first ;判断P3.0键是否按下 SJMPMAINfirst:ACALLdel20 JNBplay,first MOVshuzhi,#00H MOVdul,#06H;共阴数码管显示1 MOVwel,#80H MOVDPTR,#dat1;dat1首地址赋给DPTRACALLmusic0 ACALLne*t RETne*t:INCshuzhi MOVA,shuzhi CJNEA,#01,LOOP3 ;A是否=1,不等就跳转到LOOP3MOVDPTR,#dat2 ;表2首地址送DPTR MOVdul,#5BH ;显示数值2 MOVwel,#80H ACALLmusic0 INCALOOP3:CJNEA,#02,LOOP4 ;A是否=2,不等就跳转到LOOP4 MOVDPTR,#dat3 ;表3首地址送DPTR MOVdul,#4FH ;显示数值3 MOVwel,#80H ACALLmusic0 INCALOOP4:CJNEA,#03,ne*t ACALLfirst RET〔按键播放上一首音乐〕last:DECshuzhi MOV a,shuzhi CJNE a,#02,last1 MOV dptr,#dat3 MOV dul,#4Fh MOV wel,#80h ACALL music0last1: cjne a,#01,last2 MOV dptr,#dat2 MOV dul,#5Bh MOV wel,#80h ACALL music0last2: cjne a,#00,last MOV dptr,#dat1 MOV dul,#06h MOV wel,#80h ACALL music0 RET music0: MOV 20h,#00h ;中断计数单元清0music1: clr a MOVC a,a+dptr ;查表取音阶常数 JZ end0 ;累加器判0看是否是完毕符 CJNE a,#0ffh,music5 ;是休止符" LJMP music3 ;产生100ms停顿music5: NOPkey: JNB play,k0 ;判断P3.0键是否按下 JNB addone,k1 ;判断P3.2键是否按下 JNB subone,k2 ;判断P3.1键是否按下 MOV r6,a ;音阶常数送R6 INC dptr ;DPTR+1 MOV a,#0 MOVC a,a+dptr ;取常数送R7 MOV r7,a SETB tr0 ;启动定时器T0music2: nop CJNE r0,#0,$ CPL song ;输出电平取反 MOV a,r6 MOV r3,a ;音阶常数送R3 LCALL del20 MOV a,r7 ;节拍常数送A CJNE a,20h,music2 ;节拍时间到否 MOV 20h,#00h ;为取下一音阶作准备 INC DPTR LJMP music1music3: NOP ;休止100ms CLR tr0 ;关闭定时器 MOV r2,#14hmusic4: NOP MOV r3,#250 ;R3=250 LCALL del20 DJNZ r2,music4 INC dptr ;为取下一音阶作准备 LJMP music1end0: MOV r2,#200 ;歌曲完毕后,延时1s后继续music6: MOV r3,#250 LCALL del20 DJNZ r2,music6〔按键选择〕k1: ACALL del20 ;调用延时子程序 JNB addone,k1 ;判断P3.2键是否释放 ACALL ne*tk2: ACALL del20 JNB subone,k2 ;判断P3.1键是否释放 ACALL lastk0: ACALL del20 JNB play,k0;判断3.0键是否释放 LJMP start RETdel20: MOV r4,#05h;延时子程序del4: NOP DJNZ r4,del4 DJNZ r3,del20 RETcont: INC 20h ;计数单元+1 MOV th0,#0dbh ;重新10ms定时初值 MOV tl0,#0ffh RETI ;跳出中断〔停顿播放〕pause: ACALL del20 JNB p3.0,pause ;判断P3.0键是否有释放 MOV a,r0 ;把R0的值给A CPL a ;A值取反 MOV r0,a RETIdat1:db3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffhdb3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffhdb26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,30h,20h,33h,10h,33h,10hdb3bh,60h,40h,20h,4ch,80h,0ffhdb3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffhdb3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffhdb26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,2bh,20h,30h,20hdb33h,20h,3bh,20h,3bh,20h,40h,2bh,3bh,80h,0ffhdb19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffhdb20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffhdb19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffhdb20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffhdb2bh,20h,2bh,40h,3bh,20h,2bh,20h,2bh,40h,2bh,20h,0ffhdb26h,20h,2bh,20h,2bh,20h,30h,20h,2bh,80h,0ffhdb2bh,20h,2bh,40h,3bh,20h,30h,20h,30h,40h,2bh,20h,0ffhdb33h,20h,3bh,20h,3bh,20h,40h,20h,3bh,80h,0ffh,0ffhdat2:db18h,30h,1ch,10h,20h,40h,1ch,10hdb18h,10h,20h,10h,1ch,10h,18h,40hdb1ch,20h,20h,20h,1ch,20h,18h,20hdb20h,80h,0ffh,20h,30h,1ch,10h,18hdb20h,15h,20h,1ch,20h,20h,20h,26hdb40h,20h,20h,2bh,20h,26h,20h,20hdb20h,30h,80h,0ffh,20h,20h,1ch,10hdb18h,10h,20h,20h,26h,20h,2bh,20hdb30h,20h,2bh,40h,20h,20h,1ch,10hdb18h,10h,20h,20h,26h,20h,2bh,20hdb30h,20h,2bh,40h,20h,30h,1ch,10hdb18h,20h,15h,20h,1ch,20h,20h,20hdb26h,40h,20h,20h,2bh,20h,26h,20hdb20h,20h,30h,80h,20h,30h,1ch,10hdb20h,10h,1ch,10h,20h,20h,26h,20hdb2bh,20h,30h,20h,2bh,40h,20h,15hdb1fh,05h,20h,10h,1ch,10h,20h,20hdb26h,20h,2bh,20h,30h,20h,2bh,40h db20h,30h,1ch,10h,18h,20h,15h,20hdb1ch,20h,20h,20h,26h,40h,20h,20hdb2bh,20h,26h,20h,20h,20h,30h,30hdb20h,30h,1ch,10h,18h,40h,1ch,20hdb20h,20h,26h,40h,13h,60h,18h,20hdb15h,40h,13h,40h,18h,80h,00hdat3:db26h,20h,20h,20h,20h,20h,26h,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年吐鲁番辅警协警招聘考试真题含答案详解(满分必刷)
- 2024年嘉义县辅警招聘考试题库附答案详解(轻巧夺冠)
- 2023年黑龙江辅警招聘考试题库附答案详解(综合卷)
- 2024年六盘水辅警招聘考试真题附答案详解(b卷)
- 2023年阿拉善盟辅警招聘考试题库附答案详解(典型题)
- 2024年安康辅警招聘考试真题附答案详解(精练)
- 2023年石家庄辅警招聘考试真题及答案详解(考点梳理)
- 2024年固原辅警协警招聘考试备考题库含答案详解(培优)
- 2023年鞍山辅警协警招聘考试备考题库含答案详解(轻巧夺冠)
- 2023年茂名辅警招聘考试题库及答案详解(基础+提升)
- 2025年腾讯校招综合素质测评试题及答案
- 2025贵州盐业(集团)黔西南有限责任公司招聘15人笔试考试备考试题及答案解析
- 初中物理欧姆定律(教学课件)2025-2026学年初中物理人教版(2024)九年级全一册
- 2025河南郑州热力集团有限公司招聘60人笔试考试备考试题及答案解析
- 2025广西钦州市公安局面向社会公开招聘警务辅助人员74人笔试考试参考试题及答案解析
- 中外著名空难及飞机失事逃生指南教学课件演示模板
- 2024年人力资源管理师考试真题及解析
- 煤矿招工笔试试题及答案
- 医院新员工信息安全培训课件
- 特种作业考试点优化建设与实施策略
- 护理职业生涯规划大赛成长赛道
评论
0/150
提交评论