单片机课程设计夏雨晴.doc_第1页
单片机课程设计夏雨晴.doc_第2页
单片机课程设计夏雨晴.doc_第3页
单片机课程设计夏雨晴.doc_第4页
单片机课程设计夏雨晴.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计课程设计说明书 名称 基于单片机的音乐盒设计 目录引言2设计任务2三、音频发生知识23.1 基本知识23.2 节拍33.3 编码3音乐盒原理分析44.1 硬件电路44.1.1 硬件电路原理图44.1.2 原理说明44.2 软件设计5五、程序及程序调试55.1 程序55.2 程序调试13六、结论与心得13七、致谢14九、附录157.1 参考文献157.2 电路板15一、 引言该课程是应用MCS-51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用汇编语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。这种控制电路结构简单,可靠性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。二、 设计任务(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。三、音频发生知识3.1 基本知识1.要生产音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间.利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲.2. 利用8051的内部定时器使用其工作在计数器模式MODE1下,改变计数值THO及TLO以产生不同频率的方法.3. 例如频率为523Hz,其周期T1/5231912us,因此只要令计数器计时956us/1us956,在每次计数956次时将I/O反相,就可得到中音DO (523Hz).计数脉冲值与频率的关系公式如下:NFi2Fr N: 计算值; Fi: 内部计时一次为1us, 故其频率为1MHz;4. 其计数值的求法如下:T65536-N65536-Fi2Fr例如: 设K65536, F1000000Fi1MHz, 求低音DO(261Hz).中音DO (523Hz). 高音的DO (1046Hz)的计算值.T65536-N65536-Fi2Fr65536-10000002Fr65536-500000/Fr低音DO的 T65536-500000/26263627中音DO的 T65536-500000/52364580高音DO的 T65536-500000/1047650593.2 节拍1相关知识每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推.所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定.3.3 编码建立音乐的步骤:1. 先把乐谱的音符找出,然后由表63建立T值表的顺序.2. 把T值勤表建立在TABLE1,构成发音符的计数值放在TABLE.3. 简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的TABLE处.四、 音乐盒原理分析4.1 硬件电路4.1.1 硬件电路原理图本设计中用到89C51单片机,喇叭,七段显示数码管LED。(硬件电路原理图如图1所示)图1 音乐盒原理图4.1.2 原理说明当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示歌曲号。.硬件电路中用、(外部中断0、1输入端P3.2 P3.3)分别接S1、S2作为上、下一曲的功能键。硬件电路中用T1(外部定时/计数器输入端P3.5)分别接S3作为暂停的功能键。.用P0.0-P0.7控制七段码a,b,c,d,e,f,g。.用P2.0口控制喇叭。.电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。4.2 软件设计本程序可以实现课程设计的基本要求,并可以通过按键播放六首歌曲,程序流程图如下:五、程序及程序调试5.1 程序OUT BIT P1.7 MOV A,R5N EQU 2 MOVC A,A+DPTROUT_NUM EQU P1 MOV R0,A ORG 0000HINC R5 AJMP MAIN INC R0 ORG 0003HMOV A,R5 AJMP LAST_SONG MOVC A,A+DPTR ORG 000BH MOV R0,A AJMP F_T0 INC R0 ORG 0013H INC R5q4: AJMP NEXT_SONG MOV A,R5 ORG 001BH MOVC A,A+DPTR AJMP START_PAUSE MOV R0,A ORG 0030HINC R0MAIN: MOV SP,#60H INC R5 MOV DPTR,#TABLE INC R6 MOV R0,#30H CJNE R6,#N+1,SET_TAB MOV TMOD, #61H MOV R5,#00H MOV TH1,#0FFH MOV R6,#1 MOV TL1,#0FFH SET_TAB: MOV A,R5 SETB ET1 MOVC A,A+DPTR SETB ET0 MOV R0,A CLR PT0 INC R5 SETB PT1 INC R0 SETB IT0 SETB PX0 SWAP A SETB IT1 ANL A,#0FH SETB PX1 JNZ SING SETB EX1 CLR TR0 SETB EX0 SJMP SING1 SETB EA SING: DEC A SETB TR1 MOV R3,A SETB OUT RL A CLR F0 MOV DPH,R0 MOV 22H,#01H INC R0 MOV DPTR,#OUT_TAB MOV DPL,R0 MOV A,22H INC R0 MOVC A,A+DPTR MOVC A,A+DPTR MOV OUT_NUM,A MOV 21H,A MOV R7,#00H MOV TH0,A START0:MOV R4,#00H MOV A,R3 MOV R0,#30H RL A MOV A,R7 INC A ADD A,R0 MOVC A,A+DPTR MOV R0,A MOV 20H,A MOV DPH,R0 MOV TL0,A INC R0 SETB TR0 MOV DPL,R0 SING1:LCALL DELAY INC R0 JB F0,FOR MOV A,R4 AJMP NEXT INC R4 FOR: CLR TR0 MOVC A,A+DPTR JB F0,$ MOV 26H,A AJMP NEXTNEXT: MOV R0,#30H END0: CLR TR0 MOV A,R7 MOV A,22H ADD A,R0 CJNE A,#N,WW MOV R0,A MOV 22H,#01H MOV DPH,R0 MOV R7,#00H INC R0 MOV OUT_NUM,#11111001B MOV DPL,R0 AJMP WWW INC R0 WW: MOV A,R7 MOV A,R4 ADD A,#4 INC R4 MOV R7,A MOVC A,A+DPTR INC 22H JZ END0 CLR EA PUSH DPH PUSH DPL MOV R1,A MOV A,22H ANL A,#0FH MOV DPTR,#OUT_TAB MOV R2,A MOVC A,A+DPTR MOV OUT_NUM,A POP DPL POP DPL POP DPH POP DPH POP ACCWWW: SETB EA SETB EA AJMP START0 RETI F_T0: MOV TH0,21H LAST_SONG: PUSH ACC MOV TL0,20H PUSH DPH CPL OUT PUSH DPL RETICLR EA NEXT_SONG: PUSH ACC MOV A,22H PUSH DPHCJNE A,#1,QQ PUSH DPLMOV 22H,#N CLR EA MOV B,#4 MOV A,22H MOV A,#N-1 CJNE A,#N,Q MUL AB MOV R7,#00H MOV R7,A MOV 22H,#01H AJMP BACK2 AJMP BACK QQ: DEC 22HQ: INC 22H MOV A,R7 MOV A,R7 SUBB A,#4 ADD A,#4 MOV R7,A MOV R7,A BACK2: MOV R4,#00HBACK: MOV R4,#00H MOV A,22H MOV A,22H MOV DPTR,#OUT_TAB MOV DPTR,#OUT_TAB MOVC A,A+DPTR MOVC A,A+DPTRMOV OUT_NUM,A MOV OUT_NUM,A MOV B,R0 MOV B,R0 MOV R4,#00H MOV R4,#00H MOV R0,#30H MOV R0,#30H MOV A,R7 MOV A,R7 ADD A,R0 ADD A,R0 MOV R0,A MOV R0,A MOV DPH,R0 MOV DPH,R0 INC R0 INC R0 MOV DPL,R0 MOV DPL,R0 INC R0 INC R0 MOV A,R4 MOV A,R4 INC R4 INC R4 MOVC A,A+DPTR MOVC A,A+DPTRMOV 26H,A MOV 26H,A DEC R4 DEC R4MOV R0,B MOV R0,B POP DPL POP DPH DELAY: MOV 27H,26H POP ACC D2: MOV 28H,#125 SETB EA D3: MOV 29H,#248 RETI DJNZ 29H,$ START_PAUSE:CPL F0 DJNZ 28H,D3 JB F0,RETURNDJNZ 27H,D2 SETB TR0 DJNZ R2,DELAY RETURN: RETI RET OUT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH ;共阳TABLE: DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5TABLE1:DW 64580,64684,64777,64820,64898,64968,65030 DW 63628,63835,64021,64103,64260,64400,64524SONG1: DB 04H ;1=C 2/4 军港之夜DB 32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24HDB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32HDB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24HDB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32HDB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14HDB 00HTABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777 DW 64820,64898,64968,65030,65058,65110,65157,65178SONG2: DB 02H;1=C 4/4 死了都要爱DB 04H,94HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8HDB 0C8H,0C8H,08H,08H,78H,28H,38H,34H,24HDB 24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24HDB 24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不准DB 58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08HDB 84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H;*DB 0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C4H,0D4H,0C4H,0C8H,04H,94HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H;*DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8HDB 0C8H,0C8H,0C8H,08HDB 00HTABLE3: DW 64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862 END145.2 程序调试程序调试中出现的问题及解决的办法:(1)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。(2)程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。(3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。(4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。(5)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。六、结论与心得1.此次设计过程中,我们查了一些相关资料,使得我们更深层的了解了单片机芯片的工作原理以及软件、硬件如何联系起来实现我们的要求。经过我们共同努力之下,不仅完成本次设计的具体相关要求,也熟练掌握了AT89C51芯片的具体功能和注意事项。此外,设计中所涉及到的元器件还有:三极管、电阻、瓷片电容等,我们通过查了相关元器件的作用及其工作原理,并对其进行验算,从而进一步地减少实验误差。在我们的不懈努力下加上老师的些许指导,最终还是发现了问题的原因,并解决问题。2.

温馨提示

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

评论

0/150

提交评论