毕业设计(论文)-基于单片机的音乐盒研究与设计.doc_第1页
毕业设计(论文)-基于单片机的音乐盒研究与设计.doc_第2页
免费预览已结束,剩余53页可下载查看

下载本文档

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

文档简介

阳泉职业技术学院毕业设计说明书毕业生姓名:专业:电气自动化技术学号:指导教师:所属系(部):信息系二一二年四月阳泉职业技术学院毕业设计评阅书题目:基于单片机的音乐盒研究与设计 信息系电气自动化技术专业 姓名李宁 设计时间:2011 年3月7日 2011 年5月7日 评阅意见:成绩: 指导教师:(签字) 职务:201 年月日阳泉职业技术学院毕业设计答辩记录卡 信息 系电气自动化技术 专业 姓名李宁答 辩 内 容问 题 摘 要评 议 情 况 记录员: (签名)成 绩 评 定指导教师评定成绩答辩组评定成绩综合成绩注:评定成绩为100分制,指导教师为30%,答辩组为70%。 专业答辩组组长:(签名) 201 年月日iii摘 要随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以at89c51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。关键词:at89c51;音乐盒;单片机;稳压电源abstract along with the development of human society, people of vision, hearing things put forward higher request. small music box can bring good memories and improve peoples spiritual culture. traditional music box is heavy mechanical type, size, pronunciation and drab, cannot achieve batch production. this music box is the design of components single chip electronic music box, small volume, light weight, can play music, the function and the effect of exterior, colorful, easy to use, and has certain commercial value.key words:at89c51;music box; single chip micro-computer; voltage regulator power suppl目 录第一章 绪论11.1 课题意义11.2 主要研究工作1第二章 设计方案论证22.1 方案列举22.2 方案论证2第三章 音乐盒的发音原理43.1 播放音乐的原理43.2 音符频率的产生43.3节拍频率的产生63.4 歌曲的编码改写实例7第四章 硬件电路设计124.1 at89c51单片机124.1.1管脚说明124.2 时钟复位电路144.2.1 时钟电路144.2.2 复位电路154.3 按键输入电路164.3.1 按键概述164.3.2 矩阵键盘的设计174.3.3 键盘的抖动问题184.4 输出显示电路184.5 整体硬件电路204.6 原理说明204.7 选歌按键的设计21第五章 软件设计215.1 主程序的设计215.2子程序的设计235.3 设计源程序代码(见附录)24第六章 仿真及调试246.1 调试246.2 仿真256.3 程序调试中出现的问题及解决的办法27总结29参考文献30致谢31附录32附录一 部分源程序代码32附录二 元器件清单4647阳泉职业技术学院-毕业设计说明书第一章 绪论1.1 课题意义 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富。1.2 主要研究工作在本设计中,首先提出了发音盒的整体设计方案;然后对音乐盒所播放的音乐进行了程序设计;其次设计了音频驱动电路,以驱动播放扬声器;最后设计了直流稳压电源,用于为单片机和音频部分、显示部分提供稳定的+5v电压。第二章 设计方案论证 2.1 方案列举方案一:用四个按键控制音乐的播放。3个按键选择3首不同的音乐播放,另一个按键控制音乐的停止。按下播放键,用一点简单的控制之后,才开始播放音乐。比如,用定时器控制,亮灯倒计时10秒然后触发音乐播放。方案二:用4*4小键盘来实现音乐的选择播放,1a按键控制播放10首音乐,cf按键分别实现欢迎页面、上一首、下一首、停止播放。方案三:为了充分利用实验板的功能,进一步扩充音乐盒的功能。设计用七段显示数码管lcd显示播放时歌曲序号。设置三个键,一个按键控制开机、播放、暂停音乐,另外两个按键分别实现上一首、下一首。2.2 方案论证1) 在方案1中,共用了4个按键,其中3个按键控制播放3首音乐,另一个键控制音乐播放的停止。但是只能选择3首音乐,不能显示是哪首歌局限性太强。2) 在方案3中,共用了3个按键,其中一个键用于控制开机、播放、暂停,另两个键用于上一首与下一首切换。使用数码管作为显示输出。功能过于单一,显示效果不佳。考虑到设计要求和时间上的局限,本次课程设计使用了方案二。本次设计是一个基于at89c51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路、蜂鸣器以及显示电路组成。使用一个按键来控制开始,播放和暂停。利用两个按键分别切换上一曲和下一曲来演奏出不同的乐曲,共三首音乐,蜂鸣器发出某个音调,与之相对应的led亮起。本设计利用keil编程软件对音乐盒源程序进行编程并调试,配合proteus仿真软件对硬件进行仿真调试。音乐盒的系统结构以at89c51单片机位控制核心,加上矩阵按键、时钟复位电路、蜂鸣器、lcd模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如图2-1所示。单片机音乐播放时间显示播放音乐序号音乐播放扬声器时钟、复位电路选歌按键图2-1总体框图音乐盒的功能结构如图3-2所示。按键1负责播放/暂停歌曲。按键2,3负责切换播放歌曲,播放歌曲共3首,同时lcd显示相应的曲目,显示曲目标号共3种。开始按键1:播放/暂停按键2,3上一曲,下一曲图2-2音乐盒功能第三章 音乐盒的发音原理3.1 播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制p3.0引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期时间再对i/o反相,就可在i/o脚上得到此频率的脉冲。3.2 音符频率的产生音符及定时器初始值:例如:中音1(do)的音频=523hz,周期t=1/523s=1912定时器/计数器0的定时时间为:t/2=1912/2=956定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12mhz)装入t0计数器初值为65536-956=64580将64580装入t0寄存器中,启动t0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对p3.0引脚的输出值进行取反,就可得到中音do(523hz)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值th0,tl0以产生不同的频率。下表3-1是c调各音符频率与计数初值t的对照表: 表3-1 c调各音符频率与计数初值t的对照表音符频率(hz)/初值()音符频率(hz)/初值()低1do262/63627中1do 523/64580高1do 1042/65056低2re 294/63835中2re589/64687 高2re 1245/65134低3m 330/64021 中3m 661/64780高3m 1318/65157低4fa 350/64107中4fa700/64822 高4fa 1397/65178低5so 393/64264 中5so 786/64900高5so 1568/65217 低6la 441/64402中6la 882/64969 高6la 1760/65252低7si 495/64526 中7si 990/65031高7si 1967/65282音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如c调的低1do的thtl=65536-50000/262=63627,中音do的thtl=65536-500000/523=64580,高音do的thtl=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是c调的,那么出现低音的5so,直接将代码写为1;出现低音6la,直接写一个2的代码;出现低音7si,直接写一个3代码。表3-2 音符编码表音符音符编码音符音符编码不发音0低5so1 低6la2低7si3中1do4中2re5中3m6中4fa7中5so8中6la9中7sia 高1dob高2rec高3md高4fae高5sof高6lag3.3节拍频率的产生节拍的产生与编码:音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表3-3和表3-4所示。表3-3 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按1/8拍为一个延时时间的节拍编码与节拍对应的表节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍11/466/411/866/822/488/422/888/833/4a10/433/8a10/844/4c12/444/8c12/855/4f15/455/8表3-4 乐谱节拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125 ms4/462 ms3/4187 ms3/494 ms2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。3.4 歌曲的编码改写实例 据前几节的知识,我们不难知道给我们一首歌,只要我们查看对应的音调(节拍)及音符对应的编码表就可以把一首歌写成单片机可识别的数据了,下面我们以一首歌作实例编一下“歌谱”。歌曲的五线谱和简谱如图3-5所示。图3-5 歌曲五线谱与简谱以第一个音符“3”为例,它是中音3m,在音乐简谱中占1/2个节拍,根据上述的编码方法,将其编码为64h。这首歌编码后的代码为:db 64h,84h,92h,91h,81h,93h,61h,54h,62hdb 82h,92h,91h,81h,92h,64h,62h,82h,92h,91h,81h,93h,61hdb 54h,82h,62h,51h,61h,51h,41h,52h,24h,92h,54h,82h,64h,52hdb 42h,94h,82h,62h,51h,61h,51h,41h,52h,24hdb 00h具体的音乐编程如下所示:org 0000hljmp mainorg 0003hljmp waisevorg 000bhljmp t0sevorg 0030hmain: mov tmod, #01h setb ea setb ex0 setb it0 setb et0start: mov 30h,#00hl0: mov a,30h cjne r0,#0,l1 ajmp l0l1: cjne r0,#1,l2 mov dptr,#first ajmp codel2: cjne r0,#2,l3 mov dptr,#second ajmp codel3: cjne r0,#3 ,delay1 mov r0,#00h ajmp l0code: movc a,a+dptr mov r2,a cjne a,#00h,next1clr tr0sjmp startnext1: mov a,r2anl a,#0fhmov r5,amov a,r2swap aanl a,#0fhjnz singclr tr0sjmp d1sing: dec aclr crl amov 22h,amov dptr,#tablemovc a,a+dptrmov th0,amov 21h,amov a,22hadd a,#1movc a,a+dptrmov tl0,amov 20h,amov p1,asetb et0setb tr0d1: lcall delayclr tr0inc 30hsjmp l0t0sev: push acc push pswclr tr0mov tl0,20hmov th0,21hcpl p3.0pop pswpop accsetb tr0retidelay:mov r7,#03d2: mov r4,#250d3 : mov r3,#123d30: djnz r3,d30 djnz r4,d3 djnz r7,d2 djnz r5,delay retdelay1: mov r1,#20d4: mov r6,#248d40: djnz r6,d40 djnz r1,d4 retwaisev: inc r0 mov 30h,#00h retifirst: db 82h,01h,81h,94h,84h,0b4h,0a4h,04h ;第一首歌 db 82h,01h,81h,94h,84h,0c4h,0b4h,04h db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h db 0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h db 00hsecond: db 64h,84h,92h,91h,81h,93h,61h,54h ;第二首歌 db 62h,82h,92h,91h,81h,92h,64h,62h db 82h,92h,91h,81h,93h,61h,54h,82h db 62h,51h,61h,51h,41h,52h,24h,92h db 54h,82h,64h,52h,42h,94h,82h,62h db 51h,61h,51h,41h,52h,24h,db 00htable: db 0fbh,08h,0fbh,92h,0fch,0eh,0fch,4bh db 0fch,0afh,0fdh,0ch,0fdh,36h,0fdh,80h db 0fdh,0c3h,0feh,07h,0feh,30h,0feh,70h db 0feh,89h,0feh,0b0h,0feh,0d4h,0feh,0f5h第四章 硬件电路设计4.1 at89c51单片机89c51共有4个i/o口,其中p1口只能作为通用i/o口使用,p0 p2 p3等除了做通用i/o口外,p0口可用于外部扩展时的低8位地址线及数据使用,p2口除了用作为高8位地址线使用,p3口具有第二功能。4.1.1管脚说明vcc:供电电压。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。4.2 时钟复位电路at89c51的最小系统由时钟 复位电路构成。时钟和复位电路的接法具有多种性,在使用时在根据应用系统的要求进行合理的选择。单片机的最小系统就是尽可能的减少外部电路的条件下,使单片机工作的系统。4.2.1 时钟电路 根据at89c51单片机产生的时钟方式的不同,可将时钟电路分为内部时钟方式及外部时钟方式两种。 在xtal1和xtal2引脚之间外接石英晶体振荡器及两个谐振电容,就可构成内部时钟电路。如果单片机的时钟采用某一个外接时钟信号,则可用外部时钟信号。 本设计用的时钟电路由单片机xtal1和xtal2引脚外接石英晶体振荡器(12mhz)及起谐振电容c1 c2(均为30pf)组成。如图4-1所示 xtal1:外接晶振输入端 xtal2:外接晶振输出端4.2.2 复位电路复位是单片机的初始化操作,只要rst引脚处至少保持2个机器周期(24个振荡器的周期)的高电平就可实现复位。单片机复位电路有两种形式:上电复位和按钮复位。上电复位是利用电容充电来完成的。通常晶振为6mhz时,复位电路元件参数为22f 的电解电容和1 k 的电阻,若晶振为12mhz时,复位电路元件参数为10 f 电解电容和10 k的电阻。本设计采用的是12mhz晶振振荡器。如图4-1所示图4-1 时钟复位电路4.3 按键输入电路4.3.1 按键概述键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘分两大类:编码键盘和非编码键盘。编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。这种键盘易于使用,但硬件比较复杂。非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别、决定按键的读数等仅靠软件完成,故硬件较为简单,但占用cpu较多时间。有独立式按键结构、矩阵式按键结构。键盘系统设计一般的单片机键盘设计思路:首先,确定键盘编码方案采用编码键盘或非编码键盘。随后,确定键盘工作方式采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。本篇采用非编码键盘,采用中断查询方式。应用系统中,键盘扫描只是cpu的工作内容之一。cpu忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系中cpu任务的份量,来确定键盘的工作方式。键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用cpu的工作时间。键盘的工作方有查询方式(编程扫描,定时扫描方式)、中断扫描方式。键盘电路结构(1)独立式按键接口设计 独立式按键就是各按键相互独立,每个按键单独占用一根i/o口线,每根i/o口线的按键工作状态不会影响其他i/o口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。优点:电路配置灵活,软件结构简单。缺点:每个按键需占用一根i/o口线,在按键数量较多时,i/o口浪费大,电路结构显得复杂,因此此键盘是用于按键较少或操作速度较高的场合。(2)矩阵式键盘接口设计 矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上,节省i/o口。矩阵键盘工作原理:行线通过上拉电阻接到+5v上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。4.3.2 矩阵键盘的设计设计所用的键盘原理图如图4-2所示。图4-2 矩阵键盘原理图为了提高cpu的工作效率,采用中断查询方式。即无键按下时,cpu处理自己的工作,当有键按下时,产生中断请求,cpu转去执行键盘扫描子程序,并识别键号。中断扫描工作方式的一种键盘接口电路如上图所示。途中接有一个四输入端与门,其输入端分别与各列线相连,输出端接单片机外部中断输入。初始化时,使键盘列输出口全部置零,行全部置高电平作输入。但有键按下时,外部中断为低电平,向cpu发出中断申请,若cpu开放外部中断,则响应中断请求,进入中断服务程序。在中断服务程序中先保护现场,然后执行键盘确定。键盘的识别:键盘的确定功能,就是判断键盘中的那一个键按下,确定所在行列位置。通常采用逐行(或逐列)扫描查询识别。具体过程是:依次轮流是列线中的一列输出低电平,其它三位为高电平,再在相应的顺次读行输出口的电平状态,如某行为低电平,则该行与置为低电平的列线相交叉处的按键即为闭合的按键,对应的在单片机内部进行调用播放歌的序号。4.3.3 键盘的抖动问题键盘抖动产生:机械式开关的触点,在闭合向断开或者从断开的闭合进行切换时,在我们感觉不出来的极短时间内,其接点都会产生接通、断开的跳动。我们将这种开关切换过程中发生的触点跳动称为抖动。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为510ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令cpu误解为多次按键操作,从而引起误处理。数字控制中,机械式开关的闭合、断开状态作为输入信号,输入给微机时,开关的抖动,有时会造成由微机控制的各种设备产生误动作,在判断输入设备的开关状态是否变化(是否新的动作),并将这一变化数据存储起来时,如果发生了开关抖动,则会被认为是新的动作,就不能正确地储存动作的数据了。为了更可靠地输入开关的闭合、断开状态,清除抖动给微机造成输入不可靠的影响(去除抖动),可以使用nand电路(ttlsn7400)构成rs触发器,采用硬件的方法实现取出开关的抖动,将这一输入连到微机的输入口上,就可以将开关的断开,闭合状态,可靠地输入给微机了。但是本文为了减小制造硬件的压力,应用了软件消除抖动的存在。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。4.4 输出显示电路 在单片机应用系统中,通常要使用显示器作为输出设备显示系统的状态,常用的显示器有led数码显示器,点阵显示器,液晶显示器三种。 led数码显示器是发光二极管的缩写,led数码显示器是由若干段发光二极管构成的,当某写段的发光二极管导通时,显示对应的安符。led数码显示器控制简单,使用方便,在单片机应用非常普遍。 点阵显示器实际上就是led数码显示器,构成显示器的所有的led都依矩阵形式排列。点阵显示器主要用来制作电子显示屏。其优点是能够根据所需要的大小.形状.单色或彩色来编辑,利用单片机控制实现各种动态效果或图形显示。有两种扫描方式行扫描和列扫描。 液晶显示器(lcd)是一种利用液晶在电场作用下,其光学性质发生变化以显示图形的显示器,具有显示质量高.体积小.重量轻.功耗小等优点。它既可以显示字符,也可以显示点阵图形,在仪器仪表及办公设备中应用广泛。本设计采用的是16*2lcd,用p2.0p2.2作为lcd的rs r/w、e的控制信号;用p0.0p0.7作为lcd的d0d7的控制信号。由于p0口作为输出,应加上拉电阻。用p3.7口控制蜂鸣器。输出显示电路如图4-3所示。rs:数据/命令寄存器选择端。高电平表示选通数据寄存器,低电平表示选通命令寄存器。r/w:读/写选择端,高电平表示读操作,低电平表示写操作。e:使能端,平有效。d0d7:数据输入/输出端。vss:接地端。vdd:电源正极图4-3 输出显示电路4.5 整体硬件电路图4-3 音乐盒硬件电路原理图4.6 原理说明当键盘有键按下时,判断键值,启动计数器t0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器t1,显示乐曲播放的时间,并驱动lcd,显示歌曲号及播放时间。(1)硬件电路中用p1.0p1.7控制按键,其中p1.0p1.3扫描行,p1.4p1.7扫描列; (2)用p2.0p2.2作为lcd的rs、r/w、e的控制信号;(3) 用p0.0p0.7作为lcd的d0d7的控制信号; (4)用p3.7口控制蜂鸣器; (5)电路为12mhz晶振频率工作,起振电路中c1,c2均为30pf。 4.7 选歌按键的设计 键盘按键分布如下:0123456789abcdef按键功能说明:1a十首歌曲c下一首歌曲d上一首歌曲e暂停/播放f开机画面第5章 软件设计5.1 主程序的设计通过主程序对单片机的电路实行控制并结合按键功能实现播放,暂停,停止,上一曲,下一曲。音阶和节拍的配合实现歌曲(共三首歌)演奏,并利用数码管显示当前播放序号。按下开始按钮之后,程序初始化,再按下播放按键,程序开始判断按键是否按下,若按下就开始判断曲目标号,送相应表首地址给dptr,再调用音乐子程序,播放相应曲目,数码管会显示相应的曲号。按下“上一曲”或“下一曲”后会使音乐程序加一或减一,再送相应表首地址给dptr,这样可以实现任意曲目的切换。主程序流程图如下所示:图5-1 主程序流程图5.2 子程序的设计图5-2 音乐子程序流程图图5-3 延时子程序流程图5.3 设计源程序代码(见附录)第六章 仿真及调试6.1 调试(1)按照第2章设计的硬件电路在proteus软件内画好电路图。(2)打开单片机软件开发系统keil,选择at89c51单片机,在其中编写程序,运行生成一个hex文件。(3)电路检查无误后,双击at89c51单片机,打开编辑元件对话框(如图5-1所示),将已经在keil环境下调试好的程序hex文件加载到单片机上。图6-1 加载单片机程序6.2 仿真(1)点击运行按钮之后,电路上电,按下f键,lcd上得到开机画面,显示开机字符“welcom here”及当前作用键f,如图5-2所示:图6-2 开机画面(2)按下1-a中的某一按键,lcd显示当前作用按键(当前播放音乐的标号)并显示该音乐播放的时间,同时,蜂鸣器播放当前乐曲。lcd显示如图5-3所示(以按下5键为例):图6-3 按下5键时lcd的显示(3)按下c键,则lcd显示由当前乐曲跳转到下一首,蜂鸣器响起下一首乐曲。如图5-4所示:c键动作当前显示 c键动作后图6-4 c键动作效果图(3)按下d键,则lcd显示由当前乐曲跳转到上一首,蜂鸣器响起上一首乐曲。如图5-5所示:d键动作当前显示 d键动作后图6-5 c键动作效果图(4)按下e键,则蜂鸣器停止当前音乐的播放,而且lcd上播放的时间也停留在当前,再次按下e键后,音乐继续播放,播放时间继续计时。如图4-5所示:e键动作当前显示 e键动作后图6-6 e键动作效果图6.3 程序调试中出现的问题及解决的办法1 有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的ret返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2 程序中的跳转指令的运用很重要,为保险起见,都用ljmp,我们就遇到过跳转指令用错程序无法正常运行的现象。当用jnz指令时,跳转范围比较少,这时要用一个标号中转。3 编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4 编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5 程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。6 编程前要加流程图,这样会使思路清晰,如设计思路完全可以按着mp3的工作方式列写流程图。7 lcd计时正常显示的解决办法:a. 两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使cpu负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。b. 当音乐为全4拍起始时,此时音乐节奏与定时器t1中断频率错开,lcd显示和音乐播放都会好一些。c. 另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*ch,托因时间较长,当定时器t1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。d. 改进方案:若采用可以定时时间更长的单片机,可以避免其中的一些问题。总结经过整整三个月的努力,我的毕业设计终于完成了。在此期间,我对硬件电路进行了设计,并对音乐程序进行编写和调试,虽然遇到了很多的困难,但我能做到艰苦奋斗,攻克难关。通过这次的设计使我认识到自己对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多需要掌握的知识在等着我去学习。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化。在大学课堂的学习只是在给我们灌输专业知识,而我们应该把所学的用到现实生活中去,此次的音乐盒设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应社会激烈的竞争。参考文献1 李传军,单片机原理及应用(第一版)m.河南科学技术出版社,2006年.2 韩志军,沈晋源,王振波.单片机应用系统设计(第一版)m.机械工业出版社,2005年.3 胡文金.单片机应用技术实训教程(第一版)m.重庆大学出版社.2005年.4 李辉,张国春.电子电路问答(第二版)m2005年.5 康华光.电子技术基础数字部分(第四版)m.高等教育出版社.2000年.6 胡宴如.模拟电子技术(第一版)m.高等教育出版社2000年.7 张靖武,周领彬.单片机系统的proteus设计与仿真(第一版)m.电子工业出版社.2007.8 杨志忠.数字电子技术.高等教育出版社(第二版)m.2003年.9 何立民.单片机应用技术选编(1)m北京:北京航空航天大学出版社,1992.致谢本文从拟定题目到定稿,历时数月。在这次论文设计的过程当中,让我认识到了自己的不足之处。知识的学习与应用永远都是我学习的重点。俗话说的好:学无止境 学海无涯,学习永远是不会停止的。通过这次设计让我从中又认识到了电子产品更新换代的迅速,科技的发达以及人能力的无限。通过我们不断的学习与思考,没有什么东西是我们不能学到手的。而今论文完成打印之时,我思绪万千,心情久久不能平静。无论是在理论学习阶段,还是在论文的选题、资料查询、开题、研究和撰写的每一个环节,无不得到导师的悉心指导和帮助。借此机会我向指导师表示衷心的感谢!同时,我要感谢授课的各位老师,正是由于他们的传道、授业、解惑,让我学到了专业知识,并从他们身上学到了如何求知治学、如何为人处事。另外,感谢各位同学的帮助和勉励。同窗之谊和手足之情,我将终生难忘!我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有领导、老师、同学、和朋友。附 录附录一

温馨提示

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

最新文档

评论

0/150

提交评论