基于AT89C51单片机的音乐盒设计毕业论文.doc
本科学生毕业论文(设计) 题目 基于AT89C51单片机的音乐盒设计 系别 电子信息系 专业 电子信息工程 学生姓名 学号 指导教师 职称 助教 论文字数 8800 完成日期 2010 年 12 月 29 日论文题目 基于AT89C51的单片机的音乐盒的设计 作者:、系别:电子信息系摘 要:为了实现单片机控制音乐播放,此次课程设计做出了尝试,即电子音乐盒的设计。本设计采用了扬声器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。现选用AT89C51单片机。用PROTEUS单片机仿真软件仿真。利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。通过单片机P1口控制,实现功能键盘控制;功能键盘采用按键开关,通过单片机P2口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3口控制,实现歌曲播放;主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有液晶屏显示当前播放歌曲的序号,扬声器播放出音乐。关键词: AT89C51单片机;方波; 音调 英文题目 The design of musicbox base on AT89C51 作者:Ni Fangsheng、系别:Department Of Electronic InformationAbstract:In order to achieve single-chip microcomputer to control music player, I made the project to try, that is, the design of electronic music box. I used to achieve audible speaker songs to play, to maintain the same basic tone,smooth playback of songs. Single-chip AT89C51 is optional. with simulation software PROTEUS single-chip simulation.The use of I / O I have a certain frequency square wave to drive the speaker, the issue of different tones, which play music. through the P1 port single-chip control functions; functions using the keyboard button switches, single-chip P2 through population control, to achieve the change the order of songs to play and pause functions; buzz P3 is controlled by MCU port control, the realization of music playback.The main process is to achieve by pressing function keys on the first one and the next, and suspension of play, while the LCD the serial number of the currently playing song, the music player speaker.Key words:AT89C51 microcontroller; square; tone目 录摘要···································································Abstract······························································1 绪论························································51.1历史背景··················································51.2目的意义··················································51.3主要问题··················································51.4技术要求··················································52 设计方案简述···············································52.1设计功能要求··············································52.2总体设计原理··············································52.3总体设计框图··············································63详细设计····················································63.1芯片的选择与介绍··········································63.2扬声器部分················································73.3显示部分··················································73.4流程图····················································74仿真及调试··················································74.1调试······················································74.2仿真······················································85设计结果与分析··············································96总结························································9参考文献·····················································9附录一 元器件清单············································10附录二 电路图················································10附录三 程序代码··············································11基于AT89C51单片机的音乐盒设计摘 要:为了实现单片机控制音乐播放,此次课程设计做出了尝试,即电子音乐盒的设计。本设计采用了扬声器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。现选用AT89C51单片机。用PROTEUS单片机仿真软件仿真。利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。通过单片机P1口控制,实现功能键盘控制;功能键盘采用按键开关,通过单片机P2口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3口控制,实现歌曲播放;主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有液晶屏显示当前播放歌曲的序号,扬声器播放出音乐。关键词:AT89C51单片机;方波; 音调The design of musicbox base on AT89C51Abstract:In order to achieve single-chip microcomputer to control music player, I made the project to try, that is, the design of electronic music box. I used to achieve audible speaker songs to play, to maintain the same basic tone,smooth playback of songs. Single-chip AT89C51 is optional. with simulation software PROTEUS single-chip simulation.The use of I / O I have a certain frequency square wave to drive the speaker, the issue of different tones, which play music. through the P1 port single-chip control functions; functions using the keyboard button switches, single-chip P2 through population control, to achieve the change the order of songs to play and pause functions; buzz P3 is controlled by MCU port control, the realization of music playback.The main process is to achieve by pressing function keys on the first one and the next, and suspension of play, while the LCD the serial number of the currently playing song, the music player speaker.Key words:AT89C51 microcontroller; square; tone一 绪论1.1历史背景音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟”。机械音乐盒的发展史,可追溯至14世纪初期,所发明挂在教堂钟楼上的排钟,这种用发条装置来演奏的乐器,能发出清脆如水晶般的乐声,一度风靡荷兰,比利时和法国北部。1811年以来,瑞士曾经是这项技艺的中心,它和瑞士钟表工业一样,两者相辅相成,一段时间名领风骚,称霸全球。音乐盒300多年的产品发展,同时也是人类文明300多年发 展的历史鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发展现状,它也成了时代的一面镜子。现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。 1.2 目的意义为了更好地熟悉和掌握单片机的基本功能和编程,我们以AT89C51为基础设计电子音乐盒。AT89C51单片机电子音乐盒集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者所用。同时,电子音乐盒的设计具有很重要的现实意义。我们根据学习和实践的需要,进行了电子音乐盒功能设计。我们在制作电子音乐盒的过程中会学习到很多的东西,能够最大限度的了解我们自制的这一个单片机电子音乐盒,这样以后调试程序的时候便得心应手,效率要提高很多。1.3 主要问题制定音乐盒控制系统需要完成功能,并根据此来制定设计方案;根据设计方案来进行硬件电路图的设计和软件模块的开发;通过仿真调用后再来反复修改程序,最终达到预期功能。1.4 技术指标1. 系统要有一定稳定性,不易受外界干扰的影响。2. 系统采用外部或内部+5V供电。3. 实现音乐盒播放音乐的控制。4. LCD来显示歌曲序号的功能。5.通过按键选择增加上一首、下一首、暂停/播放功能。二 设计方案简述2.1 设计功能要求1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒) 2采用LCD显示信息 3开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称) 4可通过功能键选择乐曲,暂停,播放。 5选作内容:显示乐曲播放时间或剩余时间2.2 总体设计原理通过单片机的定时器产生一定长度的方波,方波脉冲驱动扬声器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。如中音D0,频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时1912/2=956,在每计数956次时将I/O口反相,就可得到中音D0(523HZ)。 当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,在LCD显示歌曲号。通过单片机P1口控制,实现功能键盘的功能;功能键盘采用按键开关,通过单片机P2口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3口控制,实现歌曲播放。通过按下功能键实现上一首和下一首及暂停播放,同时有LCD显示当前播放歌曲的序号,扬声器播放出音乐。2.3 总体设计框图单片机接+5V电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,控制音乐盒的上一首和下一首曲目,再由I/O接口输出控制扬声器发声,LCD显示。另外,复位电路在于营造一个程序运行的初始状态,在程序出错时,重新启动单片机工作。复位电路 AT89C51扬声器LCD显示功能键电源晶振部分编程设置好定时时间,通过编程器写入AT89C51单片机系统。由AT89C51单片机的定时器每秒钟通过P0.0-P0.7口控制LCD显示,复位信号由按钮输入,每按下一次,系统恢复原设定状态。三 详细设计3.1芯片的选择和介绍AT89C51有以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级终端结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节点工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2扬声器部分扬声器是一种把电信号转换成声音信号的电声器件。确切地说,扬声器的工作实际上是把一定范围内的音频电功率讯号通过换能方式转变为失真小并具有足够声压级的可听声音。我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。3.3 显示部分本设计方案采用液晶显示屏1602作为显示器。选用单片机的P0口作为液晶数据输入口,P2.1、P2.2分别接液晶的数据和时钟引脚。用液晶作为显示器,极大地简化了硬件电路,同时增强了系统的显示能力。3.4流程图主程序开始初始化变量及LCD接口初始化计数器T0,定时器T1LCD显示英文欢迎字符等待按键歌曲号及播放时间显示在LCD上依据按键码播放对应歌曲YN四 仿真及调试4.1调试(1)按照设计的硬件电路在PROTUSE上画好电路图(2)电路检查无误后,双击AT89C51单片机,打开编辑元件对话框如下图所示,将调试好的程序HEX文件加载到单片机上4.2 仿真(1)点击运行按钮后,按下F键,LCD上得到开机画面“WELCOME HERE”的字样,如下左图所示 (2)按下1-A中的某一键,即播放该歌曲,LCD显示当前歌曲序列号,如上右图为播放第二首歌曲的画面(3)按下C键即终止当前播放,进入下一首歌曲的播放C键动作 (4)按下D键,蜂鸣器演奏上一首歌曲,LCD也显示上一首歌曲序列号D键动作 (5)E键为暂停/播放键E建动作 五 设计结果及分析本文描述了电子音乐盒的硬件和软件制作方案,总体符合预期要求,能够成功实现按1-A按键能演奏不同的乐曲的基本功能,并添加了通过按键控制上一首,下一首,暂停/播放的功能。在播放乐曲的过程中,还增加了显示歌曲演奏时间的功能。另外,采用了液晶显示技术,简化了硬件电路,还能显示英文的开机画面等。当然,此设计还存在很多不足有待改进的地方1 可以添加一个彩灯按照乐曲频率闪烁功能,增添趣味。2 可以添加键盘输入乐曲功能,把电子琴和音乐盒结合起来。总体来说本次课程设计基本完成,但还有部分可以完善。六 总结音乐盒设计是一项趣味性很强的设计,能激发我的浓厚兴趣。同时要求我从程序编程,调试,软件仿真和绘制开始,到硬件的焊接和调试,再到修改程序,在这期间我了解到了单片机开发的大致流程。通过这次毕业设计,也让我学习到了很多新的东西,这些都让我受益匪浅。单片机的定时器功能,LCD显示,功能键盘的设计,这些内容都颇为丰富。有以前学习过的旧知识,也有很多未曾注意到得新知识,这些都曾使我的设计出错,通过自己的努力,老师指导和同学的帮助,终于克服了一个一个的困难,把硬件实物顺利做好,把软件调试顺利完成。最后,衷心感谢这次对我的毕业设计提供无私帮助的所有老师和同学!参考文献1 阎石. 数字电子技术基础. 北京: 高等教育出版社, 19982 李叶紫. MCS-51单片机应用教程. 北京: 清华大学出版社,2002 3 楼然苗. 51系列单片机设计实例. 北京: 北京航空航天大学出版社,1999 4 黄菊生. 单片机原理与接口技术. 北京:国防工业出版社 2007.095 杨西明、朱骐主. 单片机编程与应用入门. 北京:机械工业出版社 2004.06附录1 元器件清单名称总数量型号备注电阻21K(1),10K(1)电容330pf(2),10uf(1)液晶显示器11602A16脚单片机1AT89C51晶振112MHz扬声器1三极管12N3906PNP键盘14X4附录2 电路图音乐盒硬件电路图附录3 源程序XN: LJMP KEYK1: LCALL MODD LCALL MODD LCALL KS JNZ K2 LJMP KEYK2: MOV R2,#0FEH MOV R4, #00HK3: MOV A,R2 MOV P1,A MOV A,P1 JB ACC.4,L1 MOV A,#00H LJMP LKL1: JB ACC.5,L2 MOV A,#04H LJMP LKL2: JB ACC.6,L3 MOV A,#08H LJMP LKL3: JB ACC.7,NEXT1 MOV A,#0CHLK: ADD A,R4 PUSH ACCK4: LCALL DELAY1 LCALL KS JNZ K4 MOVR3,#07H CLR A MOV R0,#30H MOV R1,#31HMM1: MOV A,R1 MOV R0,A INC R0 INC R1 DJNZ R3,MM1 POP ACC MOV R0,A RETRS BIT P2.0RW BIT P2.1E BIT P2.2L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63HORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BHLJMP T1INTORG 1000HMAIN: MOV SP,#70HMOV P0,#01HCALL ENABLEMOV P0,#38HLCALL ENABLEMOV P0,#0FHLCALL ENABLEMOV P0,#06HLCALL ENABLELCALL INITIL KEY1: LCALL KEY LCALL MODD LIMP KEY1KEY: NOP NOP LCALL KS JNZK1 LCALL KAIJI LCALL SOPMOV A,37HMOV DPTR,#TABLE3 MOVC A,A+DPTRCALL WRITE2 RETKAIJI:MOV A,37HCJNE A,#0FH,DFFMOV P0,#80H CALL ENABLEMOV DPTR,#TABLE1;CALL WRITE1DFF:RETSOP:MOV A,37HCJNE A,#01H,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2LCALL MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 LCALL MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 LCALL MAIN0 A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE40MOV 53H,#LOW TABLE40 LCALL INITILE2 LCALL MAIN0A44:CJNE A,#05H,A55NEXT1: INC R4 MOV A,R2 JNB ACC.3,N2 LJMP N1N2: LJMP KEYN1: Rl A MOV R2,A LJMP K3KS: MOV A,#0F0H MOV P1,A NOP NOP MOV A,P1 CPL A ANL A,#0F0H RETDELAY1: SETB RS0Dl: MOV R5,#0ahDL2: MOV R6,#63DL3: NOP NOP DJNZ R6,DL3 DJNZ R5,DL2 CLR RS0 RETINITIL: MOV R3,#08H MOV R0,#30HM1: MOV R0,#00H INC R0 DJNZ R3,M1 RETMODD: MOV P0,#8EH CALL ENABLEMOV A,HOUMOV B,#10DIV ABADD A,#30H ; MOV P0,#0C8H CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0DH CALL ENABLECALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0CDH CALL ENABLECALL WRITE2MOV A,SECMOV B,#10DIV ABLCALL MODD MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 LCALL INITILE2 LCALL MAIN0A55: CJNE A,#06H,A66 LCALL MODD MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 LCALL INITILE2 LCALL MAIN0 A66: CJNE A,#07H,A77 LCALL MODD MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 LCALL INITILE2 LCALL MAIN0 A77: CJNE A,#08H,A88 LCALL MODD MOV 52H,#HIGH TABLE80 MOV 53H,#LOW TABLE80 LCALL INITILE2 LCALL MAIN0A88: CJNE A,#09H,A99 LCALL MODD MOV 52H,#HIGH TABLE90 MOV 53H,#LOW TABLE90 LCALL INITILE2 LCALL MAIN0 A99: CJNE A,#0AH,AAA LCALL MODD MOV 52H,#HIGH TABLE100 MOV 53H,#LOW TABLE100 LCALL INITILE2 LCALL MAIN0 AAA: RET INITILE2: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00HD1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0f8HDB 80H,90H,88H,83H,0C6H,0A1H,86H,8EHTAB1:DB 89H,86H,0C7H,0C7H,0C0HTAB2:DB 0C6H,88H,0C0HTABLE1: DB 'WELCOM HERE',0FEHTABLE2: DB 'DFF WB ',0FEHTABLE4: DB 'CAU',0FEHTABLE3: DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38h,39H,41H,42H DB 43H,44H,45H,46HMAIN0:MOV TMOD,#11HMOV IE,#8AH ;MOV TH1, #3CH ;MOV TL1, #0B0H LCALL KSJNZ TTM12 MOV 40H,#00HNEXT20:MOV A,40HMOV DPH,52HMOV DPL,53HMOVCA,A+DPTRMOV R2,AJZ STOPANL A,#0FHADD A,#30H MOV P0,#0CEH CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH CALL ENABLE CALL WRITE2 MOV P0,#0C0H CALL ENABLE MOV DPTR,#TABLE2 CALL WRITE1 RETENABLE:CLR RS CLR RW CLR E LCALL DELAY SETB ERETWRITE1:MOV R1,#00HA1:MOV A,R1 MOVC A,A+DPTR CALL WRITE2 INC R1 CJNE A,#0FEH,A1 RETWRITE2:MOV P0,A SETB RS CLR RW CLR E CALL DELAY SETB E RETDELAY: MOV R4,#05SETB TR1LJMP NEXT20TTM13:CJNEA,#0CH,TTM14MOV A,52HINC AMOV 52H,AMOV A,53HINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14:CJNEA,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,ATTM2:RETTT0: PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETIT1INT: MOV TH1, #3CHMOV TL1, #0B0HDJNZ L50MS,X4MOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1SING: DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1: LCALL DELAY30INC 40HLCALL KSJNZ STO