基于单片机的音乐播放器设计 毕业设计.doc
2012届毕业设计(论文)论文题目:基于单片机的音乐播放器设计 系 别: 机电系专 业: 应用电子技术班 级: 09应电32学生姓名: 方荣祥学 号: 090103223指导老师: 曹双兰 提交时间: 2012年1月摘 要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本设计是以单片机AT89C51为核心数据处理器件,由LCD液晶显示屏LM016L显示歌曲的曲号、播放时间、开机画面及键号,开机画面为交替显示WELCOMHERE和作者姓名,采用4*4行形式键盘实现曲号的选择,其中1A号按键用来选择曲号,C键控制下一曲,D键控制上一曲,E键控制播放/暂停,F键为开机画面显示,元件以低消耗、高能、耐用、精确、易于操作等为优先考虑因素。采用键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。AT89C51单片机的内存小,就用了一个74LS373锁存器和27512外部扩展芯片对该单片机进行了内存的扩充,增大了它的存储空间,让他可以存储足够多的歌曲。本论文详细介绍了其硬件结构和设计方法,整个设计简单实用,功能完整。关键词: 音乐播放 单片机 液晶显示目录前言5第一章 系统的方案论证与分析6第二章 硬件设计9 2.1 电路组成及工作原理92.1.1电路组成92.1.2 电路工作原理9 2.2 AT89C51的简介9 2.2.1 AT89C51功能概述9 2.2.2 AT89C51的管脚图10 2.2.3 AT89C51单片机的引脚介绍10 2.3晶振电路11 2.4扬声器电路11 2.5显示电路12 2.6更换歌曲电路13 2.7复位电路13 2.8程序存储外部扩展电路14 2.9 液晶显示原理及分类15 2.9.1 液晶显示原理15 2.9.2 液晶显示器的分类15 2.9.3 液晶显示器各种图形的显示原理及LCD1602简介15第三章 软件系统设计18 3.1软件流程设计18 3.2 性能分析20第四章 音乐播放器的仿真及分析21 4.1 Keil uVision 2软件简介21 4.2 Keil的调试22 4.3 Proteus仿真图及过程22结论24参考文献25谢辞26附录一 PROTEL原理图27附录二 PROTEL仿真图28附录三 程序清单29前 言 电子音乐是现代音乐的一种形式,是一种与古典截然不同的音乐形式。而今,越来越多钟情于电子音乐的音乐家们相信,通过电流产生的声音打破音乐的结构及人们习惯的听觉经验,人与人之间的情感是可以沟通的。电子音乐是一种科技的见证。也就是说,借助电子音乐,技术可以见证音乐,音乐可以见证技术。电子音乐是对传统音乐的延承和背叛,它紧密地依偎着这个“科技与信息”的时代。音乐电声的一个重要内容就是电子音乐。电子琴的出现,开辟了音乐的一个新天地。但是自从电子合成器问世以来,电子音乐就又进入了一个更高的阶段。 目前,由于电子音乐的普及,电子合成器(合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。可以事先制作伴奏音乐或背景音乐,而不需要乐队,或者部分代替乐队。由于音乐合成器制作和修改方便,成本低,音乐丰满,所以市场需求量很大,因此,世界许多国家的厂商都不断地在发展并推出新的型号,每年都要更新换代。当前的发展趋势是不断的采用先进技术,例如有的合成器有“跟随”功能,即经预置,每一个音后可以跟随一个二度或三度音,“重叠”功能,轻奏或重奏时可以发不同音调或音色;另外,合成器还向轻便、使用操作方便等方向发展。熟练的运用89C51单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,按下单键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏中,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律,可以扩充其功能如下:(1)可以显示歌曲的名称;(2)可以设置睡眠关机时间;(3)可以设置歌曲的播放模式,单曲循环还是顺序播放;(4)可以存储多首歌曲。第一章 系统的方案论证与分析方案一利用AT89C51、74LS373锁存器和27512外部扩展组成的音乐播放器(1)硬件设计 AT89C51单片机复位电路存储器扩展电路图2-1方案一框架图扬声电路数码管晶振电路更换歌曲电路(2)软件设计程序中根据音选取的是C调三个8度内的音符,共24个音阶。每个音符对应频率由定时器T0产生。为了程序调用方便,每个音符都对应一个编码,占用一个字节。在程序中以查表的方式加载计数初值。当值为00H时表示空拍,与节拍码配合完成节拍发音。节拍码也占一个字节,每个音符的时间长度等于基本时间乘以节拍码的值,由定时器产生。当节拍码值为01H时,表示当前乐曲结束,为00H时,表示全部乐曲结束。为了编码简单,一般节拍码高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可并且在按开始按钮后,可以播放歌曲。在播放程序中设置三个变量,分别用于用于存放时、分、秒,每次定时中断发生时,对基准时间计数,当达到一秒时,把秒加一,达到一分时,将分加一同时调用数码管显示子程序,将时分秒分别拆分为个位、十位进行显示。利用外部中断1、2实现上一曲、下一曲以及暂停功能,设置一个计数变量,检测到上一曲或下一曲按下时,分别对计数变量加一或减一,检测到暂停被按下时,等待按键再一次按下后,继续播放,方案中歌曲的循环模式为列表循环。方案二(1)硬件设计电路以AT89C51为主控制器,74LS373和27512进行外部程序存储器的扩展,采用利用4X4组成的16个按钮矩阵键盘来实现对播放的控制,其中包括下一曲、上一曲、暂停按钮(分别为C、D、E键),当按下1A其中的一个时,跳到相应的曲谱进行演奏,显示电路采用六个共阴极数码管进行显示,晶振采用12MHz,音乐信号由P30口输出,经喇叭发声而播放歌曲,如图2-2所示。图2-2方案二框架图晶振电路4*4矩阵键盘扬声器电路复位电路数码管存储器扩展电路AT89C51单片机(2)软件设计程序中音选取的是C调三个8度内的音符,共24个音阶。每个音符对应频率由定时器T0产生。为了程序调用方便,演奏时时每个音符都对应一个编码,占用一个字节。在程序中以查表的方式加载计数初值,为了编码简单,一般节拍高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可,为了及时响应键盘操作,程序的编写以键盘扫描为主线编写(即主程序循环扫描按键,在按键模块中调用其他功能模块),按键每按下一次,按键扫描模块计算出键值,并储存键值,根据键值跳转至响应的标号执行程序,播放相应的歌曲,歌曲循环模式为单曲循环,其他功能的实现与方案一类同。方案三(1)硬件设计电路以AT89C51为主控制器,采用利用4X4组成的16个按钮矩阵键盘来上实现对播放的控制,其中C、D、E分别为功能键上一曲、下一曲以及暂停。F键为开机画面显示,1A号按键中每按一个键,跳到相应的曲谱进行演奏,显示电路采用液晶显示器LM016L进行显示,晶振采用12MHz,音乐信号由P30口输出,经喇叭发声而播放歌曲,如图2-3所示。AT89C51单片机晶振电路4*4矩阵键盘扬声器电路图2-3方案三框架图复位电路液晶显示屏存储器扩展电路(2)软件设计程序中音选取的是C调一个8度内的音符,共7个音阶。根据十二平均律,(即将八度定义为1200音分,其中全因音符占200音分,半音占100音分,共十二个半音)每个音符对应频率由定时器T0产生。为了程序调用方便,将十二个半音的定时器初值放于表中,演奏时无需计算定时器初值,在程序中以查表的方式加载计数初值,每个音符都对应一个编码,占用一个字节。由于人耳的分辨力有限,为了编程简单,曲谱中的节拍码用延时来代替,每个音符发音30MS。由于采用的是矩阵式键盘,为了及时响应按键,程序的编写以键盘扫描为主线编写(即主程序循环扫描按键,在按键模块中调用其他功能模块)。按键每按下一次,按键扫描模块计算出键值,并储存键值,跳转至响应的标号执行程序,并调用液晶显示子程序,将键值在液晶显示器制定位置显示,如果检测到F键被按下,调用液晶显示模块,显英文字符欢迎,以及作者信息,本程序中,由于音符的长度是固定的30MS,T1用于更新剩余时间。剩余时间的显示同上。方案比较从以上三种方案,方案一采用的是独立式按键,按键太少,不能实现歌曲的快速选择,几乎没有拓展功能的可能,而方案二虽然采用的是矩阵式键盘,无论从扩展功能上将还是快速选择都优于方案一,但数码管显示不稳定,编程以及困难,占用CPU时序太多,方案三显然不存在方案一、方案二的缺点,使用了液晶显示屏,编程简单,显示稳定,占用CPU时序少,并且可以实现许多方案一、方案二无法实现的功能,无论是矩阵式键盘,还是液晶显示器,都有许多可扩展的功能,并且在播放音乐时简单实用,在使用上及其功能的实现上都优于前两种方案。更重要的是液晶显示器是当今电子设计的主流,通过这次设计,我能够学习到许多东西。通过方案对比,最终选择方案三,音乐发生器电路原理图见附录所示。第二章 硬件设计2.1 电路组成及工作原理2.1.1 电路组成音乐发生器的电路设计方框图如上图方案三所示,电路原理图见附录1所示,主要由单片机控制系统、行列式键盘、液晶显示屏、内存外部扩充电路、复位电路等组成。单片机AT89C51是本系统的核心,它主要负责控制各个部分协调工作。在其外围接上:复位电路、液晶显示屏、按钮及扬声器。元件为:晶振X1、电容、电阻、扬声器、4*4行列式键盘、74LS373锁存器、27512外部程序存储器扩展、LM016L液晶显示屏。硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列,用,P2.0P2.2作为LCD的RS,R/W,E的控制信号。用P0.0P0.7作为LCD的D0D7的控制信号。用P3.7口控制蜂鸣器,电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。将P0口作为74LS373锁存器的输入以及27C512的数据输入口,锁存器输出至27C512的低八位地址口,将P2口作为27C512高八位地址口,27C512的控制信号OE/VPP接至单片机的PSEN,实现片外ROM的读写控制。2.1.2 电路工作原理本音乐发生器是用单片机来设计制作完成,其功能的实现主要通过软件编程来完成, AT89C51单片机片内带有4KB和外部程序存储器扩展的256K的内存,并且允许在系统内改写或用编程器编程。该音乐发生器的效率较高,其误差主要由晶振自身的误差所造成。存储歌曲是采用的外部扩展,4*4行列式键盘来实现的,按键将单片机I/0 口的电平拉低,单片机检测到I/O口电平为0时,判断并存储键值。并自动跳转至相应曲号的标号处执行代码。显示采用的是液晶显示屏LM016L,显示稳定清晰,并且能显示多个信息,当片内4K的程序存储器存满后,自动跳转到片外256K程序存储器继续存储。2.2 AT89C51的简介2.2.1 AT89C51功能概述自从1971年微型计算机问世以来,随着大规模集成电路技术的进一步发展,导致微型计算机正向两个主要方向发展:一是高速度、高性能、大容量的高档微型机及其系列化向大、中型计算机的挑战;另一个是稳定可靠、小而廉、能适应各种控制领域需要的单片机。MCS51系列是Intel公司在1980年推出的高档8位单片机,具有性能价格比高、品种多、兼容性强、开发用的仿真机较完善等优点,所以在国际上和国内的占有率相当高。它拥有8位微处理器和控制器,内含一个一位布尔运算处理器,可直接对数据的位进行操作和运算,特别适用于逻辑控制。内部含有4KB的程序ROM并且在外部扩展了256K的存储空间,2个16位的计数/定时器。本次采用的是AT89C51单片机,其电路如3-1所示,它的中断功能比较强,有5个中断源,即外部中断2个,定时器中断2个,串行中断1个,有2个中断优先级。中断控制电路主要包括用于中断控制的四个寄存器:定时器控制寄存器TCON,串行口控制寄存器SCON,中断允许控制寄存器IE,中断优先级控制寄存器IP等。内部时钟振荡器,全双工方式的串行接口(UART),两极中断优先权的6个中断源/5个中断矢量的中断逻辑。哈佛结构的存储器组织,支持高达64K为单周期指令,支持六种寻址方式。最高时钟振荡频率可达12MHZ,大部分指令执行时间为1µs,乘、除指令为4µs。a)b)图2-2 AT89C51芯片引脚图2.2.2 AT89C51的管脚图MCS-51系列单片机采用40引脚双列直插式封装(DIP),其引脚排列和逻辑符号如图2-2所示,4个并行口共有32根引脚,可分别作地址线、数据线和I/O线;2根电源线;2根时钟振荡电路引脚和4根控制线。2.2.3 AT89C51 单片机的引脚介绍AT89C51单片机是高性能单片机,因为受引脚数目的限制,所以有许多引脚具有第二功能,各引脚功能说明如下:(1)输入/输出口线A 口8位双向口线B 口8位双向口线C 口8位双向口线D 口8位双向口线(2)ALE地址锁存控制信号在系统扩展时,ALE用于控制把口输出的底8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是以六分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。(3)外部程序存储器读选通信号在读外部ROM时有效(低电平),以实现外部ROM单元的读操作。(4)访问程序存储器控制信号当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。(5)RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。(6)XTAL1和XTAL2外接晶体引线端当使用芯片内部时钟时,这两个引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。(7)电源、地线GNDVCC、GND。VCC一般接+5V电源,GND接地。2.3 晶振电路MCS-51片内有一个高增益的反相放大器,其输入端为引脚XTAL1和输出端为引脚为XTAL2,用于外接石英晶体振荡器和微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图2-3所示。电容C1和C2对频率有微调作用,电容一般取20pF左右。晶体振荡频率范围是12Mz12MHz,一般情况下,选用振荡频率为12MHz的石英晶体。振荡脉冲信号经过内部时钟发生器进行二分频之后,才成为单片机的时钟信号。图 2-3晶振电路2.4 扬声器电路本设计是采用蜂鸣器用来发出声音,由于在实际应用中,单片机输出的标准高电平为5伏,输出功率很有限,所以本设计中,理论联系实际,用一个PNP型三极管驱动蜂鸣器,由于三极管具有放大作用,在实际应用中,输出功率将会提高很多。 图 2-4 扬声器电路 2.5 显示电路本设计显示是采用液晶显示器LM016L进行显示, LM016L的功能、显示原理以及使用方法将会在后文中介绍,P0口是一个地址/数据复用的双向I/O口,当使用P0口访问外部存储器和数据存储器时,P0口内部已有上拉电阻,当P0口作程序检验,输出指令字节时,必须外接上拉电阻。LM016L的控制信号RS、RW、E分别接到单片机的P2.0、P2.1、P2.2。本设计中主要用LM016L显示开机画面、作者信息、播放剩余时间、歌曲号/键号。电路如图2-5所示图2-5 显示电路2.6 更换歌曲电路采用4*4行列式键盘来实现选择歌曲播放,以及对歌曲号做基本的操作,即上一曲、下一曲以及暂停/播放。在本设计中1-A号按键用于选择歌曲的曲号播放,C、D、E分别为下一曲、上一曲、播放/暂停按钮,此外F键用于开机画面显示,0号按键在本设计中未使用,留作扩展功能使用。用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。电路如图2-6所示。图 2-6 选择及更换歌曲电路 2.7 复位电路AT89C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个施密特触发器用来抑制噪声,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。本设计是采用上电自动复位,上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用12MHZ时C取20PF。图 2-7 复位电路2.8 程序存储器外部扩展电路本设计是采用了一个74LS373锁存器和一个27512程序存储器外部扩展组成,其主要的功能就是为了在外部扩展单片机内存,使它有足够的空间存放系统中的程序,而达到使它实现所要得到的功能和应用的领域,其图如图2-8所示图 2-8 存储器扩展电路2.9 液晶显示原理及分类2.9.1液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。2.9.2液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。2.9.3液晶显示器各种图形的显示原理:(1) 线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。(2) 字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。(3) 汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字。2.9.3 LCD1602简介LM016L 与LCD1602原理是一样的,只不过PROTEUS中016没显示调1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm(1) 引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表4-1所示:表4-1:引脚接口说明表引脚名称omingcheng符号引脚说明引脚名称引脚说明VSS电源地D2D2数据VDD电源正极D3D3数据VL液晶显示偏压D4D4数据RSRS数据/命令选择D5D5数据R/W读/写选择D6D6数据E使能信号D7D7数据D0D0数据LED+BLA背光源正极D1D1数据LED-BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。(2) 1602LCD的指令说明及时序1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。第三章 软件系统设计3.1 软件流程设计本设计采用了自定下下的设计流程,即在编制一个程序时,先考虑程序的总体结构而忽略一些细节问题,然后逐步的一步一步的细化,直至用程序语言完全描述每一个细节为止。主要程序流程有:主程序、判断有无按键子程序、键盘扫描子程序、显示键号/歌曲号子程序、开机画面子程序、按键值播放歌曲子程序、播放时间初始化子程序、液晶显示屏写指令子程序、液晶显示屏写数据、字符串显示子程序播放时间显示子程序、播放歌曲子程序、播放时间更新子程序。程序中使用了两个定时中断,定时中断0用于产生整个音程的频率,以便驱动扬声器。定时器T1用于刷新播放时间,当发生一秒定时中断时,将秒加一,达到60秒时,将分加一,达到60分时,将时加一。程序设置了溢出处理,即当时间为23:59:59时,自动将时间更新为00:00:00。程序的总体流程是当P1由按键按下时,读键盘,并储存键值,若为F键则通过查表的方式,调用字符串显示子程序显示开机画面,同时用查表的方式求出键号的ASCII值,并调用显示键号/曲号自称序,将键号显示出来。若为1-A,程序根据储存的键号,将相应歌曲的表头地址赋给DPTR,取出曲谱,判断是否为休止符,通过查表的方式将表中的定时器初值装入定时器T0,在定时中断0里面,重装初值,将输出口取反,完成发声。本设计中,每发一个调,调用一个30MS的延时,一次当做曲谱的节拍码。在此过程中若有功能键按下,将当前歌曲的表头地址加513/减513或等待。于此同时调用播放时间初始化子程序,显示00:00:00,装定时器T1的初值,准备更新播放时间。程序流程图如图4-1所示:单曲唱完?否是是是否是全部唱完?结束否是是开机画面无否否否开始液晶初始化内存初始化有无按键?判断键值并存储取键值ASCII码显示有F键?1-A键?键?播放时间初始化按键值存储相应曲谱首地址取乐谱进行演奏有无功能键?装T1初值刷新播放时间暂停?再一次按下?等待是否是有无下1曲曲?乐谱首地址加513上1曲否乐谱首地址减513图4-1 系统程序流程图3.2性能分析在本设计中,一共设置了7首MID乐曲,分别是第一首精忠报国、第二首月亮代表我的心、第三首看我七十二变、第四首同一首歌、第五首大海、第六首两只蝴蝶、第七首<<世上只有妈妈好>>.在本设计中由于对音乐知识欠缺,曲谱为网络下载。采用LCD显示,稳定清晰,可靠性高,为了及时响应按键,在每段子程序里面都调用了按键判断子程序,并且主程序是以按键扫描为主线编写的,系统的灵敏度高。除此之外,在按键扫描子程序中还带有延时再判断,软件去抖动功能,大大提高了系统的抗干扰性。采用定时中断更新播放时间,增强了系统的准确性,鉴于于作者水平有限,播放歌曲程序为了简单实用,节拍码被设置为固定的30ms,演奏也只是在一个八度里面完成,系统适应性有待提高。第四章 音乐播放器的仿真及分析4.1 Keil uVision 2软件简介Keil C51是美国K eil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。4.2 Keil的调试软件图4-2-1调试页面如下图4.2.1所示调试无错误 如下图4.2.2所示。图4-2-2调试完成后生成HEX文件4.3 Proteus仿真及过程在Proteus软件中,打开此设计电路图后,先点击调试,后执行,则电路通电。此时液晶屏亮起,此时点击“F”按键,则液晶显示开机话面“WELCOM HERE”和”F”等。如图4.3.1图4-3-1按下“1A“号按键扬声器就会发出对应的歌曲,液晶则显示你所播放的歌曲号和歌曲播放时间。如图本设计中,每发一个调,调用一个30MS的延时,一次当做曲谱的节拍码。在此过程中若有功能键按下,将当前歌曲的表头地址加513/减513或等待。于此同时调用播放时间初始化子程序,显示00:00:00,装定时器T1的初值,准备更新播放时间.而“C” 、“D”两个键分别为”上一曲“和“下一曲”,E键表示暂停/播放。图如下: 而扬声器发出的歌曲如下图所示输出信号的颜色蓝色可以看出:分析本设计是以单片机AT89C51为核心数据处理器件,其储存歌曲容量可以达到10首,采用LCD显示,稳定清晰,可靠性高,为了及时响应按键,在每段子程序里面都调用了按键判断子程序,并且主程序是以按键扫描为主线编写的,系统的灵敏度高。除此之外,在按键扫描子程序中还带有延时再判断,软件去抖动功能,大大提高了系统的抗干扰性。本设计中有2个按键没用到,其可以作为扩展功能,可以作为单曲循环/顺序播放,歌曲的名称等功能。仿真过程基本顺利,本身水平有限。结 论本设计报告主要研究了用单片机实现的音乐发生器的设计方法。系统介绍了该路的硬件构成和软件工作过程,系统以AT89C51为核心,主要采用中断控制系统,结合所学的单片机的知识,实现系统的功能要求。设计中很好的使软、硬件相结合,基本上达到了设计的要求。通过这次毕业设计,对于这次的音乐播放器的研究,我对自己的见解就是音乐表达人与人的感情,我的成果是能够放出比较和谐、圆润的声音出来。经过几个月的奋战我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。对于我的主张是我们要对传统音乐进行继承与发展,同时我们也要通的创新,体现科技信息的时代精神。在研究当中很多元器件根本不知道有什么功效,在仿真仪器中是什么代码。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。我遇到了不少问题,花费了很多的时间。这让我重新反思我们的学习,深刻领悟到我们这个专业动手实践的重要性。理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。知识是永无止境的,在今后的工作中,我会理论联系实际,不停的去学习,不停的去感悟,以弥补我先天的不足以及后天的差距在毕业设计过程中,很多自己认为万无一失的软件代码或者硬件电路,在调试的过程中都不会是风平浪净的,此次毕业设计经历了从概念到成品的漫长过程,在此过程中我学习了许多以前没有掌握而又是电子类毕业生必须掌握的知识,比如proteus从设计的第一天起,我就被proteus的强大功能所折服,学会了proteus,就相当于拥有一个电子设计开发平台。基本上我的音乐播放器研究达到老师所给的要求,能够显示歌曲曲号,发出比较和谐的声音。参考文献1 陈大钦主编模拟电子技术基础(第二版)M 高等教育出版社 2 阎石主编数字电子技术基础(第五版)M 高等教育出版社 3 谭浩强主编 MCS-51单片机应用教程M 清华大学出版社 4 周复三主编 音乐基础理论教程M 山东大学出版社5 李军主编 单片机高级实例开发指南M 北京航空航天大学出版社 6 欧伟明主编 单片机原理与应用系统设计M 电子工业出版社 7 江世明主编 基于proteus的单片机应用技术M 电子工业出版社谢 辞本设计是在曹老师精心指导下完成的,从选题、方案论证、绘制电路原理图、软件编写、调试仿真,直到起稿、排版,每一个环节,我都遇到了我无法独立解决的问题,在此期间,曹老师宁愿牺牲自己的业余时间,也要帮我解决问题,他丰富的专业知识和和蔼的态度让我敬畏。在临近毕业之际,我还要借此机会向在这三年中给予我诸多教诲和帮助的各位老师表示由衷的感谢,感谢他们三年来的辛勤栽培。不积跬步无以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在设计中得以体现,顺利完成毕业论文。在此,衷心的感谢曹老师对我毕业论文的指导和修改!同时,向所有关心和帮助过我的老师、同学和朋友表示由衷的谢意!衷心感谢在百忙之中评阅论文和参加答辩的各位老师。现在即将挥别我的学校、老师、同学,还有我三年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿,努力奋斗,希望每天快乐,健康生活。祝每个同学有一个好的未来,祝老师们健康快乐。附录1:Proteus原理图附录2:Proteus仿真图附录3:程序清单 RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*ORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BHLJMP T1INT ORG 1000HMAIN;-;液晶初始化MOV SP,#70H