课程设计八音盒.doc
目录摘要2关键词2第一章 基于单片机控制八音盒的设计31.1 八音盒设计功能描述31.2 八音盒设计分析31.3 单片机的设计任务和要求3第二章 单片机的组成及特点42.1 单片机的组成42.2 单片机的特点42.3 单片机的分类52.4 单片机的应用分类5第三章 八音盒的设计要求与发音原理53.1 单片机八音盒的设计基本要求53.2 八音盒的设计发音原理63.3 关于AT89C51的性能介绍83.4 AT89C51的管脚介绍9第四章 硬件设计114.1 Proteus功能及其特点114.2 硬件电路设计114.3 简单八音盒的设计124.4 LCD 数码显示器简介结构16第五章 软件设计175.1 软件流程图175.2 歌曲的编码改写实例17第六章 软、硬件系统联合调试186.1 调试186.2 仿真196.3 程序调试中出现的问题及解决的办法21第七章 PCB设计及电路制作217.1 PCB制作流程217.2 绘制PCB图注意事项25总结25致谢词26参考文献:27附录27摘要传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁 钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是, 机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素, 容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时 为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。 基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧, 音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简 单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控 制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进 行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计 彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富单片机音乐播放时间显示播放音乐序号音乐播放扬声器时钟、复位电路选歌按键为了实现单片机控制音乐播放,此次毕业设计做出了尝试,即电子音乐盒的设计。本设计采用了扬声器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲,现选用AT89S51单片机。主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,扬声器播放出音乐。此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动扬声器,发出不同的音调,从而演奏乐曲。关键词单片机、八音盒、AT89C51、proteus、keil。第一章 基于单片机八音盒的设计1.1 八音盒设计功能描述八音盒可以经常发出宜人的音乐旋律,能给生活增加不少的乐趣。用51系列单片机设计一个音乐盒。功能如下:1) 利用I/O口产生一定频率的方波,驱动扬声器,发出不同的音调,从而演奏乐曲。2) 用字符型LCD显示当前播放的歌曲序号。3) 开机时有英文欢迎提示字符。4) 可通过功能键选择乐曲,暂停,播放。5) 显示乐曲播放时间或剩余时间(至少30秒)。1.2 八音盒设计分析本次设计利用89C51单片机结合内部定时器及LCD显示器,设计一个简易的电子八音盒,按下单键可以演奏预先设置的歌曲旋律。使用了文字型LCD(16×2)显示目前演奏的歌曲编号,由键盘(4*4)来选择演奏歌曲;具有16个按键操作来选择演奏哪一首歌曲;演奏时可以按键暂停。内置自动定时器,若没有按键,则自动演奏歌曲。利用单片机定时器来产生固定频率的方波信号推动压电喇叭,发出旋律。音阶频率及定时器初值加载的关系及设计原理及方法,及按键扫描。在歌曲旋律设计方面采直觉式输入法,由程序中直接输入方便快速设计歌曲。1.3 单片机设计任务和要求为了实现单片机控制音乐播放,采用电子音乐盒的设计。本设计采用了扬声器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲,现选用AT89S51单片机。主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,扬声器播放出音乐。此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动扬声器,发出不同的音调,从而演奏乐曲。2.1 单片机的组成单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算。单片机是通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU 通过它们将地址输出到存储器或I/O 接口;数据总线的作用是在CPU与存储器或I/O 接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU 的应答信号线等。2.2 单片机的特点由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。单片机主要发展如下特点:(1)有优异的性能价格比。(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。(3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O 口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。(4)低功耗、低电压,便于生产便携式产品。(5)外部总线增加了IC(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。(6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。2.3 单片机的分类单片机作为计算机发展的一个重要领域,应用一个较科学的分类方法。根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及控制型/家电型。1. 通用型/专用型这是按单片机适用范围来区分的。例如,80C51 是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC 接口等功能的温度测量控制电路。2. 总线型/非总线型这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。3. 控制型/家电型这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。显然,上述分类并不是惟一的和严格的。例如,80C51 类单片机既是通用型又是总线型,还可以作工控用。2.4 单片机的应用分类由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面:(1) 单片机在智能仪表中的应用单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。(2)单片机在机电一体化中的应用机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。(3) 单片机在实时控制中的应用单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。第三章 八音盒的设计要求与发音原理3.1 单片机八音盒的设计基本要求1. 基本要求是设计一个八音盒,并且编写相应的软件,完成八音盒的任务,该控制任务应完成下列功能:() 使用LCD显示目前演奏的歌曲编号;() 用按键操作来选择演奏哪一首歌曲(建几首歌曲旋律,按下单键便可以演奏歌曲);() 演奏时可以按键暂停。2.设计所需器件清单:名 称数量(个)型号/参数备 注单片机1AT89C51液晶屏1LM016按键开关16BUTTON普通电阻210K(1个),1K(1个)排阻1RESPACK-810K电容330pf(2个),10uf(1个)晶振112MHz三极管1PNP扬声器1SPEAKER3.2 八音盒的设计发音原理 1. 八音盒的发音原理 播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解 对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度 的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。2. 音符频率的产生(1)音符及定时器初始值:例如:中音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以产生不同的频率。下表2-1是C调各音符频率与计数初值T的对照表: 表2-1 C调各音符频率与计数初值T的对照表音符频率(Hz)/初值()音符频率(Hz)/初值()低1DO262/63627中1DO 523/64580高1DO1042/65056低2RE 294/63835中2RE589/64687高2RE 1245/65134低3M330/64021中3M 661/64780高3M1318/65157低4FA 350/64107中4FA700/64822高4FA 1397/65178低5SO393/64264中5SO 786/64900高5SO1568/65217低6LA 441/64402中6LA882/64969高6LA 1760/65252低7SI495/64526中7SI 990/65031高7SI1967/65282(2)音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-/523=64580,高音DO的THTL=65536-/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。表2-2 音符编码表音符音符编码音符音符编码不发音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG3. 节拍频率的产生节拍的产生与编码:音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。 表2-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 表2-4 乐谱节拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125 ms4/462 ms3/4187 ms3/494 ms2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。3.3 关于AT89C51的性能介绍 AT89C51是一种带K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。 它可以提供以下的功能标准:() K的字节闪烁存储器;() 128字节随机存取数据存储器;() 32个I/O口;() 2个16位定时/计数器;() 1个5向量两级中断结构;() 1个串行通信口;() 片内振荡器和时钟电路。另外AT89C51还可以警醒OHZ的惊涛逻辑操作,并支持两种软件的节点模式。3.4 AT89C51的管脚介绍 AT89C51的管脚图 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口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FIASH编程和校验时,P1口作为第八位地址接入。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用与外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FIASH变成和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下;拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INTO(外部中断0)P3.3 /INT1(外部中断1)P3.4 TO(记时器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保持低电平时,则在此期间外部程序存储器(000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间。此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。第四章 硬件设计4.1 Proteus功能及其特点1 .Proteus介绍(1)实现了单片机仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 2.使用Proteus绘制智能原理图的流程开始新建设计文档选取元器件连线放置元器件设置参数检查电路4.2 硬件电路设计1.初步设计 此设计由AT89C51单片机,电阻,扬声器和放大电路构成的简单电路(如图)。按下播放键,扬声器会发出一种曲调。4.3 简单八音盒的设计 由一首曲调的进一步改善,设计出具有播放动听音乐歌曲的八音盒。1.设计框图晶振电路复位电路AT89C51扬声器2.晶振与复位电路 晶振电路为系统提供基本的时钟频率信号,它结合单片机内部电路产生所需的时钟频率。复位电路由单片机XTAL1、 XTAL2引脚外接晶振(12MHz)及起振电容C1、C2(均为30pf)组成。当复位按钮按下时,内存和相关的寄存器,计数器,计时器所具有状态表示的器件全部被复位,回到初始状态。(如下图所示)3.整体电路4. 总体设计框图LCD显示电路 AT89C51键盘输入 扬声器复位电路本设计中用到了AT89C51单片机,4*4键盘,扬声器,16*2 LCD等硬件电路常用元器件。4.2按键输入电路按键输入电路由4*4矩阵键盘组成, P1口作为输入控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。4.3输出显示电路用P2.0P2.2作为LCD的RS、R/W、E的控制信号;用P0.0P0.7作为LCD的D0D7的控制信号。由于P0口作为输出,应加上拉电阻。用P3.7口控制扬声器。 5.整体硬件电路图 音乐盒硬件电路原理图 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。 7.键盘设计与原理(1)键盘是由若干个按键组成的开关矩阵,它是最简单的单片机应用系统的输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通信。本设计采用4*4的键盘结构,如图 键盘结构图 键盘的行线X0X3通过电阻接+5V,当键盘上没有键闭合时,所有的行线和列线都断开,行线都是高电平。当键盘上某一个键闭合时,该键所对应的行线和列线都被短路。例如6号键被按下时,行线X1和列线Y2被短路,此时X1的电平由Y2的电位决定。如果把行线接到单片机的输入口,列线接到单片机的输出口,则在单片机的控制下,先使列线Y0为低电平“0”,其余三根列线Y1、Y2、Y3都为高电平“1”,读行线状态。如果X0、X1、X2、X3都为高电平,则Y0这一列上没有键闭合。如果读出的行线不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态,如果Y0这一列上没有键闭合,使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列上是否有键闭合。这种逐行逐列的检查键盘的状态过程称为对键盘的一次扫描。 (2)键盘按键分布如下:012 3 45 6 7 89ABCDE F (3) 按键功能说明:1A十首歌曲C下一首歌曲D上一首歌曲E暂停F开机画面4.4 LCD 数码显示器简介结构 1. LCD 数码显示器结构液晶显示器又叫LCD数码显示器,液晶显示器的主要材料是液态晶体(简称液晶),它是一种有机材料,在特定的温度范围内,既具有液体的流动性,又具有某些光学特性,其透明度和颜色随电场、磁场、光及温度等外界条件的变化而变化。因此,在逻辑电路的输出信号作用下,可显示出某一确定的数字。液晶显示器是一种被动式显示器件,液晶本身不会发光,而是借助自然光和外来光显示数宇。外部光线愈强,它的显示效果愈好。而且不会像LED数码显示器那样会被强光所淹没。由于液晶显示器所需的功耗很小,因此它可由集成电路译码器直接驱动。2. 文字型LCDLCD是一种通常5*7点阵图形来显示字符的液晶显示,能显示的每个字符都有一个代码,代码对应字符的点阵图形数据由字符发生器产生。通过驱动电路后在LCD显示出字符。引脚功能如下:引脚号符号状态功能1Vs电源地2Ddd正5V逻辑电源3Vo液晶驱动电源4RS输入寄存器选择:1数据0指令5R/W输入读写操作选择6E输入使能信号7至14DBo-DB7三态数据总线*15E1输入MDLS40466上两行使能信号*16E2输入MDLS40466下两行使能信号定时器T1工作在方式1,采用十六计数第五章 软件设计5.1软件流程图本程序可以实现课程设计的基本要求,并可以通过按键播放四首歌曲,当没有按键时程序将自动循环播放歌曲,程序流程图如下:开始设置音节起始位置设置节拍间距读取相应歌曲的音阶,音符显示当前播放歌曲序号初始化外中断按键选歌播放/暂停键控制音乐的播放5.2歌曲的编码改写实例据前几节的知识,我们不难知道给我们一首歌,只要我们查看对应的音调(节拍)及音符对应的编码表就可以把一首歌写成单片机可识别的数据了,下面我们以一首歌作实例编一下“歌谱”。歌曲的五线谱和简谱如图7所示。图7 歌曲五线谱与简谱以第一个音符“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第六章 软、硬件系统联合调试6.1 调试(1)按照第2章设计的硬件电路在proteus软件内画好电路图。(2)打开单片机软件开发系统keil,选择AT89C51单片机,在其中编写程序,运行生成一个hex文件。(3)电路检查无误后,双击AT89C51单片机,打开编辑元件对话框(如图5-1所示),将已经在keil环境下调试好的程序hex文件加载到单片机上。图5-1 加载单片机程序6.2 仿真(1)点击运行按钮之后,电路上电,按下F键,LCD上得到开机画面,显示开机字符“WELCOM HERE”及当前作用键F,如图5-2所示:图5-2 开机画面(2)按下1-A中的某一按键,LCD显示当前作用按键(当前播放音乐的标号)并显示该音乐播放的时间,同时,蜂鸣器播放当前乐曲。LCD显示如图5-3所示(以按下5键为例):图5-3 按下5键时LCD的显示(3)按下C键,则LCD显示由当前乐曲跳转到下一首,蜂鸣器响起下一首乐曲。如图5-4所示:C键动作当前显示 C键动作后图5-4 C键动作效果图(4)按下D键,则LCD显示由当前乐曲跳转到上一首,蜂鸣器响起上一首乐曲。如图5-5所示:D键动作当前显示 D键动作后图5-5 C键动作效果图(5)按下E键,则蜂鸣器停止当前音乐的播放,而且LCD上播放的时间也停留在当前,再次按下E键后,音乐继续播放,播放时间继续计时。如图4-5所示:E键动作当前显示 E键动作后图5-6 E键动作效果图6.3 程序调试中出现的问题及解决的办法1) 有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2) 程序中的跳转指令的运用很重要,为保险起见,都用LJMP,编译时就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。3) 编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4) 编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5) 编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。第七章 PCB设计及电路制作7.1 PCB制作流程1、统计电路原理图中使用的元件在ISIS7中执行菜单命令“Tools”“Bill of Materials”“2 ASCII Output”,生成元件清单:Bill Of Materials=Design: C:Documents and SettingsAdministrator桌面新建文件夹基于AT89S52单片机数字音乐盒的设计数字音乐盒.DSNDoc. no.: <NONE>Revision: <NONE>Author: <NONE>Created: 09/02/14Modified: 10/12/19QTY PART-REFS VALUE CODE - - - - Resistors-2 R1,R2 1k W0R27 1 R3 100 W0R27 1 R4 10k Capacitors-3 C1-C3 1nF Integrated Circuits-1 U1 AT89C51 Transistors-1 Q1 2N5088 Miscellaneous-16 K1-K16 1 LCD1 LM016L 1 LS1 SPEAKER 1 RN1 RX8 1 X1 CRYSTAL 2、 将网络表导入到PCB在ISIS7中,分别右击K1K16,在菜单中选择“Edit Component”,在弹出的对话框中将“Other Properties”栏清空,如图所示。在ISIS7中执行菜单命令“Tools”“Netlist to ARES”,系统自动打开ARES软件。由于在ISIS7中有些元件没有指定封装形式,因此会弹出如图所示的对话框。在此对话框中,键入相应的封装形式,对于按钮K1K16的封装形式为“SW-PUSH1”。如果元件没有PCB封装需要进行封装,在ISIS7中右键需要封装的元件“Packaging Tool”,弹出如图对话框。在此对话框中点击“Add”进行添加元件封装,如图所示。点击“Assign Package(s)”“Save Package(s)”进行元件封装。3、 放置元件指定元件封装形式后,进入ARES7工作界面,如图所示。该界面右边的工作区是空的,而用户要使用元