基于AT89S52单片机的多模式带音乐跑马灯设计() 学位论文

上传人:无*** 文档编号:146911551 上传时间:2022-09-01 格式:DOC 页数:44 大小:556.52KB
返回 下载 相关 举报
基于AT89S52单片机的多模式带音乐跑马灯设计() 学位论文_第1页
第1页 / 共44页
基于AT89S52单片机的多模式带音乐跑马灯设计() 学位论文_第2页
第2页 / 共44页
基于AT89S52单片机的多模式带音乐跑马灯设计() 学位论文_第3页
第3页 / 共44页
点击查看更多>>
资源描述
密级: 公开 科学技术学院NANCHANG UNIVERSITY COLLEGE OFSCIENCE AND TECHNOLOGY学 士 学 位 论 文THESIS OF BACHELOR(2011 2012 年)题 目 基于AT89S52单片机的多模式带音乐跑马灯设计 学 科 部: 专 业: 班 级: 学 号: 学生姓名: 指导教师: 起讫日期: 2目 录摘 要IABSTRACT.II第一章 绪论11.1 设计方案背景11.2 本设计研究意义11.3 本设计研究内容与要求11.4 系统总体设计2第二章 硬件设计32.1 单片机选型32.2 电源模块42.2.1 方案设计与论证42.2.2 LM317应用42.2.3 硬件电路图52.3 单片机最小系统62.3.1 方案设计与论证62.3.2 复位电路设计72.3.3 晶振电路设计82.4 按键电路模块82.4.1 方案设计与论证82.4.2 按键简介92.4.3 硬件电路图92.5 LED数码显示模块92.5.1 方案设计与论证92.5.3 硬件电路图122.6 音乐模块122.6.1 方案设计与论证122.6.2 蜂鸣器应用12第三章 系统软件实现143.1 系统流程图143.2 仿真图17第四章 总结与展望18参考文献19致谢20附录1:电气原理图21附录2:设计主程序22基于AT89S52单片机的多模式带音乐跑马灯设计专业:自动化 学号:7021308072 学生姓名:王法杰 指导教师:陈艳摘 要:本设计专门设计一种非常炫目的效果信息提示方案,使人们能过迅速的注意到重要信息。设计从简单、省钱的理念出发,满足市场的需求,适用于我们的日常生活中。在日常生活中跑马灯应用非常广泛,随处可见,并且提供的信息越来越丰富。本设计是基于MCS51系列单片机所设计的,用AT89S52芯片控制跑马灯,整个系统有10种跑马灯模式可以选择,通过程序移位处理控制P0和P1口实现10种模式;K1是选择模式键,并将相应的模式在LED七段数码管中显示出来,对每种模式定义一个数字0-9,用程序实现模式选择及数码显示相应的模式字;K2可以对跑马灯的速度进行加速, K3可以对跑马灯的速度进行减速, 采用软件延时实现控制流水速度;K4可以对音乐切换,通过定时器来产生音调和节拍,再通过三极管放大P2.6口的电平信号来驱动蜂鸣器,产生音乐的音频;整个系统可以实现对跑马灯模式的多层控制,可以进行加减速,音乐歌曲切换。关键词:MCS51、跑马灯、加减速、七段数码管Based on the AT89S52MCU mode with music marquee designAbstract:The design of special design of a very dazzling effect information prompt solution, so that people can live a prompt attention to important information. Design from simple, economical philosophy, meet the needs of the market, applied to our daily life. In the daily life of the marquee application is very wide, can be seen everywhere and provide information more and more rich. So it is necessary to study the marquee.The design is based on the MCS51series single-chip design, using AT89S52chip to control the marquee, the whole system has 10marquee mode can be selected, through the process of shift process control P0 and P1 port to achieve10 kinds of mode; K1 is the choice of the mode button, and the corresponding mode in LED seven digital tube display, for each model defines a number of 0-9, the procedures to achieve the mode selection and digital display modes corresponding to the word; K2of marquee speed is accelerated, K3 can be on the marquee speed reducer, using software delay flow control speed; through the timer to generate rhythm and tone, and then through the P2.5 port to drive the buzzer, produce music audio; the whole system can be achieved on the marquee mode multilayer control, can also be used for acceleration and deceleration.Key words: MCS51, marquee, acceleration and deceleration, seven digital tubeIII第一章 绪论1.1 设计方案背景跑马灯又叫走马灯、串马灯。由毛竹编织成马头,马尾,系在身上糊上颜色鲜艳的纸,如今已由丝绸取代。在过去,跑马灯一般在春节等喜庆的日子里才表演,由二十来位1114岁小孩组成,边跳边唱,根据节奏快慢形成不同阵势,有喜庆、丁财两旺、五谷丰登的寓意。现在也用来指在电脑上通过编程实现的一种效果,通常指有时需要用一矩形条显示少量用户特别关心的信息,这条信息串首尾相连,向一个方向循环滚动。当今世界经济社会的大发展,高新技术的不断开发。人们渴望通过简便、省钱方式得到更多、更重要的信息。那么我们也在探讨以什么样的信息形式,供给本来就生活在五彩缤纷的世界的人们;什么样的信息能过第一时间吸引人的眼球,而来监控一些比较重要的信息,或在竞争激烈的商品交易中提高商品知名度。本设计专门设计一种非常炫目的效果信息提示方案,使人们能过迅速的注意到重要信息。设计从简单、省钱的理念出发,满足市场的需求,适用于我们的日常生活中。在日常生活中跑马灯用的非常广泛,随处可见并且提供的信息越来越丰富。这就有必要我们来探讨一种比较合理的方案来满足人们不断变化的要求。1.2 本设计研究意义跑马灯的应用十分广泛,主要以它的制作简便、价格低廉、信息醒目而得到人们的亲睐。例如:跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息,实际应用中也常通过“跑马灯”来监视是否死机。证券业中常用“跑马灯”来显示不断变化的股票行情。也可应用于各种建筑物,大楼,酒吧,KTV,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示。1.3 本设计研究内容与要求 这次课题研究我们主要以MCS51系列单片机作为主控芯片,通过单片机的控制。能实现以下功能:1、有16个发光二极管做跑马灯,其中跑马灯有10种灯亮模式;2、有专门的按键用以切换跑马灯的模式,并且对于任何一种跑马灯模式都可以对亮灯速度进行控制;3、每一种跑马灯模式用LED数码管显示;4、当跑马灯处于一种模式时,伴随音乐响起,有3首音乐,并可以对其进行切换。1.4 系统总体设计系统总体设计中,我们采用如下图所示,以AT89S52单片机为主控芯片控制系统中各个模块。系统由220V交流电接入,通过220V变5V的交流变压器,得到5V的交流电,然后通过二极管全桥整流、容滤波、二极管稳压,在通过LM317芯片得到稳定的5V电,给系统供电。系统上电时单片机最小系统开始工作:单片机复位,各个寄存器赋初值,程序开始执行。单片机控制P0和P1口实现按原定的LED显示模式开始流水工作,同时将模式字通过单片机送往P3口,转化为数码管段号送给7段共阳数码管显示模式字。与此同时启动定时器给P26口写电平信号,在通过三极管放大信号,驱动蜂鸣器产生音乐,音乐的节拍和音调都是通过定时器不同的定时时间来产生。在通过键盘电路,P20、P21、P24、P25口键接地,按下后把低电平送入单片机,单片机采集到低电平启动中断,接着转而处理相应的加减速、模式切换、音乐歌曲切换的程序执行。在单片机为主控芯片下向各个模块发送信息,控制LED显示、蜂鸣器、数码管显示。键盘电路向单片机发送信息在反过来控制各个模块。MCU(AT89S52)LED显示阵列 & 蜂鸣器晶振&复位电路电源电路7段共阳数码管键盘图1 系统总体框图第二章 硬件设计2.1 单片机选型 目前单片机种类很多,如何选择性价比最低、开发容易、开发周期最短的产品,是工程师考虑的主要问题之一。目前我国销售的主流MCU产品有8051、PIC、MCP430、STC、AVR等系列的单片机,先购单片机总体上主要从两方面考虑,其一是目标系统需要哪些资源,其二是根据成本的控制选择价格最低的产品,即所谓的“性价比最高”原则。资源方面考虑的重要指标有速度、位数、电压、功耗、存储容量、系统扩展与驱动能力、抗干扰能力,是否嵌入ADC、DAC等其他的特殊要素。另外软件开发的简易性也是重要考虑的因素。例如MCS-51系列作为传统的8位单片机,现在仍在广泛的应用就是因为它具有非常方便的开发工具、集成环境和软件资源。成本方面主要看选择哪家厂商的产品。实际上同一类产品有很多兼容系列,不同的厂家价格有很大差别。更重要的是要选择供货服务好,能提供良好技术支持,信誉高的代理经销商。AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。具有超强的抗干扰能力,每个I/O口对VCC和GND均进行了二极管保护,因此输入电压范围宽,布片电源抖动。芯片内置高抗静电(ESD保护)电路,可轻松抗过2000V的快速脉冲干扰,同时对单片机的电压、时钟、复位电路都进行了特殊处理,避免引人干扰。还有一些优势在于低成本、低功耗、灵活性、易用性、ROM比较大、稳定性强、处理能力强、片围设备使用,这提高了数据处理速度,简化了电路设计。它的优势在于普及广、开发设备及资料丰富,是入门者较好的选择之一。因此我们这次课题设计,综上所述我们选择的AT89S52单片机。图2 主控芯片2.2 电源模块2.2.1 方案设计与论证电子产品的快速发展给我们的生活带来了很多的便捷,但是大多数电子产品都无法直接利用220V的市电作为能源。电子产品的能源一般来自两个方面:一,使用可以输出直流电压的电池。由于普通干电池的使用周期很短,出于对经济的考虑,大多数人选择锂离子或镍氢充电电池。而充电电池都需要充电器。二,使用电源适配器。使用适配器将220V交流转化为合适的直流。本文提出了电源适配器方案,输出为5V直流,有一定的负载能力。方案为集成稳压器搭配少量元件组成。变压整流滤波LM317稳压AC220VDC5V图3 电源设计流程首先是对220V的高压进行变压,变压器的具体的匝比要根据下级的电路来确定。变压之后的电流仍然为交流,在通过整流电路后,变为脉冲直流。滤波电路可以消除脉冲,但是输出的直流电压仍不稳定。最后,通过LM317稳压电路,使得电压的稳定性大大提高,整个过程如上图。2.2.2 LM317应用LM317作为输出电压可变的集成三端稳压块,是一种使用方便、应用广泛的集成稳压块。317系列稳压块的型号很多:例如LM317HVH、W317L等。电子爱好者经常用317稳压块制作输出电压可变的稳压电源。稳压电源的输出电压可用下式计算,Vo1.25(1R2/R1)。仅仅从公式本身看,R1、R2的电阻值可以随意设定。然而作为稳压电源的输出电压计算公式,R1和R2的阻值是不能随意设定的。1,2脚之间为1.25V电压基准。为保证稳压器的输出性能,R1应小于240欧姆。改变R2阻值即可调整稳压电压值。D1,D2用于保护LM317。首先317稳压块的输出电压变化范围是Vo1.25V37V(高输出电压的317稳压块如LM317HVA、LM317HVK等,其输出电压变化范围是Vo1.25V45V),所以R2/R1的比值范围只能是028.6。它的使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好。LM117/LM317 内置有过载保护、安全区保护等多种保护电路。其次是317稳压块都有一个最小稳定工作电流,有的资料称为最小输出电流,也有的资料称为最小泄放电流。最小稳定工作电流的值一般为1.5mA。由于317稳压块的生产厂家不同、型号不同,其最小稳定工作电流也不相同,但一般不大于5mA。当317稳压块的输出电流小于其最小稳定工作电流时,317稳压块就不能正常工作。当317稳压块的输出电流大于其最小稳定工作电流时,317稳压块就可以输出稳定的直流电压。如果用317稳压块制作稳压电源时(如图所示),没有注意317稳压块的最小稳定工作电流,那么你制作的稳压电源可能会出现下述不正常现象:稳压电源输出的有载电压和空载电压差别较大。通常 LM117/LM317 不需要外接电容,除非输入滤波电容到 LM117/LM317 输入端的连线超过 6 英寸(约 15 厘米)。使用输出电容能改变瞬态响应。调整端使用滤波电容能得到比标准三端稳压器高的多的纹波抑制比。输入至少要比输出高2V,否则不能调压。输入电要最高不能超过40V吧。输出电流不超过1A。 输入12V的话,输出最高就是10V左右。 由于它内部还是线性稳压,因此功耗比较大。当输入输入电压差比较大且输出电流也比较大时,注意317的功耗不要过大。一般加散热片后功耗也不超过20W。因此压差大时建议分档调压。2.2.3 硬件电路图 图4 变压整流电路图5 滤波稳压电路2.3 单片机最小系统2.3.1 方案设计与论证单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、电源电路。在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。2.3.2 复位电路设计 无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。单片机的复位形式:上电复位、按键复位。上电复位电路中,利用电容充电来实现复位。在电源接通瞬间,RST引脚上的电位是高电平(Vcc),电源接通后对电容进行快速充电,随着充电的进行,RST引脚上的电位也会逐渐下降为低电平。只要保证RST引脚上高电平出现的时间大于两个机器周期,便可以实现正常复位。按键复位电路中,当按键没有按下时,电路同上电复位电路。如在单片机运行过程中,按下RESET键,已经充好电的电容会快速通过200电阻的回路放电,从而使得RST引脚上的电位快速变为高电平,此高电平会维持到按键释放,从而满足单片机复位的条件实现按键复位。 图6 系统复位电路2.3.3 晶振电路设计单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。内部时钟方式的原理电路如图2-8所示。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为024MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用2030pF的瓷片电容。外部时钟方式则是在单片机XTAL1引脚上外接一个稳定的时钟信号源,它一般适用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。可以很快的计算出执行一条指令所需要的时间。例如:若单片机使用12MHz的晶振频率,则振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us,执行一条单周期指令只需要1us,执行一条双周期指令则需要2us。图7 系统晶振电路2.4 按键电路模块2.4.1 方案设计与论证按键电路主要向主控芯片单片机发射动作信息来控制整个系统。主要实现K1是选择模式键,K2可以对跑马灯的速度进行加速,K3可以对跑马灯的速度进行减速。整个系统可以实现对跑马灯模式的多层控制,可以进行加减速。模式选择、减速、加速分别接P21、P24、P25口,再通过按键接地。当按键按下时向单片机发送低电平信号,当单片机采集到低电平信号时,启动中断进而转向处理相应的中断处理程序,实现预期的功能。基于本设计要求选择的按键是不带锁存的,向单片机发开关信号,即低电平信号。2.4.2 按键简介轻触开关如图:图8 轻触按钮说明图轻触按键,价钱低廉、使用方便、市场上随处可见与单片机接口容易。当用手按下后,按键两端接通,电平信息传递到另一边,从而来传递动作信号。人按下按键,动作持续的时间能被单片机采集到,所以轻触按键可以满足本设计的要求。2.4.3 硬件电路图图9 键盘电路2.5 LED数码显示模块2.5.1 方案设计与论证 本设计要求实现亮灯模式的数码显示,对每种流水模式定义一位数字。选取共阳极数码管,它有7段每段都有一个引脚,通过单片机的I/O口向其写低电平并用电阻限流就可以点亮相应的段,通过0-9十进制编出相应的数码显示数字编码。LED灯选取由PN结的单向导通发光二极管,16个LED灯接单片机的16个I/O口,对其相应的I/O口写低电平并采用限流电阻限流就可以直接点亮LED灯。只要把相应的流水模式编码写到I/O就能实现相应的亮灯模式,本设计P3口接数码驱动电力。2.5.2 LED、数码管应用共阳极数码显示管:发光二极管显示管简称LED,具有结构简单、价格低廉、使用方便、耗电少、与单片机接口容易等特点,在单片机应用系统使用非常普遍。一位共阳数码管结构如图所示:图10 一位共阳数码管LED数码显示器由七段条形的发光二极管组成“ 8 ”字形显示字段,用一只圆形的发光二极管做小数点。LED数码显示器中,通常将各段发光二极管的阴极或阳极连在一起做公共端,这样可以使驱动电路简单。共阳极数码管是指发光二极管的阳极都与正极接在一起,引脚接输出端,故低电平有效,其原理图如图所示:图11 阳极数码管原理图要使LED数码管显示数字,只要点亮相应字段的发光二极管即可。如要显示“1”,点亮b、c段;要显示“0”,点亮a、b、c、d、e、f段。从图2-5中不难看出,对于共阳极数码管,点亮字段则用低电平“0”来表示,所以低电平有效。这样我们就可以把要显示的数字与一串二进制代码对应起来,即对LED数码显示器实现编码。由于这种编码是与显示器结构相对应的,因此分为共阴显示码和共阳显示码两种。 不考虑小数点的编码只有七位,常称为七段显示码;如果对小数点也进行编码,则称为八段显示码。常用字符的八段显示码如图所示:表1 常用字符的八段显示码发光二极管:它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,所以具有单向导电性。常用的发光二极管是发红光、绿光或黄光的二极管。它广泛应用于各种电子电路、家电、仪表等设备中、作电源指示或电平指示。发光二极管如图2-8所示:图12 发光二极管2.5.3 硬件电路图图13数码显示电路图14 LED显示电路2.6 音乐模块2.6.1 方案设计与论证音乐的产生,采用5V的蜂鸣器,直接对P26口写高电平然后通过三极管放大电信号就能驱动蜂鸣器。然后通过定时器定时,时间到给P26口写瞬间高电平信号,蜂鸣器发出声音。不同的计数初值产生不同的定时时间来实现不同的音调与节拍。在LED灯流水时伴随着音乐的播放,并且K4可以对歌曲进行切换。2.6.2 蜂鸣器应用1.音符频率的产生音符及定时器初始值:例如:中音1(do)的音频=523hz,周期T=1/523s=1912us定时器/计数器0的定时时间为:T/2=1912/2=956us定时器956us的计数值=定时时间/机器周期(12mhz晶振)=956us/1us=956装入T0计数器初始值为65536-956=64580(0xFC44)将0xFC44装入T0寄存器中(TH0装高八位即TH0=0XFC;TL0装低八位即TL=44),启动T0工作后,每技术956次将产生溢出中断,进入中断服务,每次对P1.0引脚的输出取反,就可得到中音do(523hz)的音符频率。依此产生其他的不同音符,以下给出四个八度的28个频率数据。频率-半周期数据表 高八位 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, /低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,/1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, /高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF; /超高音 1234567频率-半周期数据表 低八位 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, /低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, /1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, /高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16 /超高音 12345672.节拍的产生音乐中的节拍用延时时间产生。例如:1拍=0.4s,1/2=0.2s,以此类推。只要求出1/2拍的延时时间,其余节拍是他的倍数就行了。 得到音符并加上起对应的节拍就可得到音调。以此将音调连起来就可获得曲子。2.6.3 硬件电路图图15 蜂鸣器电路第三章 系统软件实现3.1 系统流程图单片机控制P0和P1口实现按原定的LED显示模式开始流水工作,同时将模式字通过单片机送往P3口,转化为数码管段号送给7段共阳数码管显示模式字。与此同时启动定时器给P26口写电平信号,在通过三极管放大信号,驱动蜂鸣器产生音乐,音乐的节拍和音调都是通过定时器不同的定时时间来产生。在通过键盘电路,P20、P21、P24、P25口键接地,按下后把低电平送入单片机,单片机采集到低电平启动中断,接着转而处理相应的加减速、模式切换、音乐歌曲切换的程序执行。在单片机为主控芯片下向各个模块发送信息,控制LED显示、蜂鸣器、数码管显示。键盘电路向单片机发送信息在反过来控制各个模块。本设计要求LED有10种流水模式,数码管实时显示流水模式字。通过按键K1模式选择键可以来选择各种模式,数码管显示相应的模式字。当没有K1按下时,此时流水模式按当时模式流水,流水模式不循环。在流水的同时实现音乐不间断的播放,有三首歌曲分别是挥着翅膀的女孩、同一首歌、两只蝴蝶。K4键可以实现歌曲的切换,实现循环播放,没有K4实现单曲播放。K2、K3实现LED流水模式的速度切换。本设计有30种速度可以选择 。主程序中默认执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是K1,就执行下一个跑马;如果是K2,就执行跑马加速;如果是K3,就执行跑马减速;K4就执行音乐切换。采用置标志位的方法。即在主程序中设定三个标志位,一个跑马模式标志位,一个跑马速度标志位,一个歌曲选择标志位。不断的对这三个标志进行查询:如果是跑马模式标志为状态0,就执行右向跑马;如果是状态1,就执行左向跑马灯,依次类推。跑马速度标志默认值为10,对应延时值为200ms。而在中断服务程序中,只需要进行如下工作:去抖动,键盘识别,改变标志位。图16 主程序流程图17 主程序流程3.2 仿真图图18 设计仿真图上图是本设计的理论仿真图。本设计要求LED有10种流水模式,数码管实时显示流水模式字。通过按键K1模式选择键可以来选择各种模式,数码管显示相应的模式字。当没有K1按下时,此时流水模式按当时模式流水,流水模式不循环。在流水的同时实现音乐不间断的播放,有三首歌曲分别是挥着翅膀的女孩、同一首歌、两只蝴蝶。K4键可以实现歌曲的切换,实现循环播放,没有K4实现单曲播放。K2、K3实现LED流水模式的速度切换。K2实现加速,K3实现减速。本设计有30种速度可以选择 。第四章 总结与展望本设计以AT89S52单片机为主控芯片,由电源电路、单片机最小系统、按键电路、数码显示电路、LED显示电路、蜂鸣器电路组成。系统由220V交流电接入,通过220V变5V的交流变压器,得到5V的交流电,然后通过二极管全桥整流、容滤波、二极管稳压,在通过LM317芯片得到稳定的5V电,给系统供电。系统上电时单片机最小系统开始工作:单片机复位,各个寄存器赋初值,程序开始执行。单片机控制P0和P1口实现按原定的LED显示模式开始流水工作,同时将模式字通过单片机送往P3口,转化为数码管段号送给7段共阳数码管显示模式字。与此同时启动定时器给P26口写电平信号,在通过三极管放大信号,驱动蜂鸣器产生音乐,音乐的节拍和音调都是通过定时器不同的定时时间来产生。在通过键盘电路,P20、P21、P24、P25口键接地,按下后把低电平送入单片机,单片机采集到低电平启动中断,接着转而处理相应的加减速、模式切换、音乐歌曲切换的程序执行。在单片机为主控芯片下向各个模块发送信息,控制LED显示、蜂鸣器、数码管显示。键盘电路向单片机发送信息在反过来控制各个模块。本设计LED显示效果不是很炫目,如果改换为LCD显示可能更加炫耀,而且提供的信息更加丰富。按键的设计还是不太理想,能设计成远程监控能加满足人们的需求,大大提高方便性。数码显示电路也可以换成LED彩灯的变换显示那样效果能更能吸引大众的目光。音乐播放模块的音质很差,把它换成专门的音乐芯片可以很好的提高音质、音色。电源模块可能提供的电压不是很稳定,设计可以采用专用的电源,提供的电压相对比较稳定。本设计的仿真效果不是很理想,反映不是很迅速。在程序的优化上要多下功夫,使程序更加简单、执行更加迅速。参考文献(Reference)1 李朝青.单片机原理与接口技术M.北京航空航天大学出版社,2002.72 楼然苗,李光飞.单片机课程设计指导M.北京航空航天大学出版社,2001.103 蔡朝洋.单片机控制实习与专题制作M.北京航空航天大学出版社,2004.34 谢维等.单片机原理与应用及C51程序设计M.清华大学出版社,2007.25 楼然苗,李光飞.51系列单片机设计实例(第2版)M.北京航空航天大学出版社 2006.26 林军.单片微型计算机原理及接口技术实验指导与实训M.中国水利水电出版社 2004.10致谢在论文即将完成之际,本人在此向所有关心我和帮助我的老师、同学们及朋友致以最真诚的感谢!这篇文章得以完成离不开他们给予我的支持和帮助。另外,在此我要特别感谢我的指导老师陈艳,陈老师从一开始论文的选题、构思、资料收集到最后定稿的每个环节都给予了我耐心的指导和热情的帮助,尤其是在我遇到困难时他给我精心点拨,热忱鼓励,使得我最终得以完成毕业设计,对此我表示衷心的感谢。在短暂的几个月相处的时间里,老师渊博的知识、一丝不苟的作风和严谨求实的态度给我留下了深刻的印象,这将使得我终身受益,谨此再次向老师表示衷心的感谢和崇高的敬意!最后,感谢南昌大学科技学院四年来对我的培养,在母校四年的学习生活当中我收获颇丰,终生受用,我谨以热诚之心感恩伟大的母校!所有的这些,都激励我在将来的工作岗位上勤奋实干,积极进取,用优异的成绩来回报大家对我的关心和帮助。附录1:电气原理图附录2:设计主程序 #include #include SoundPlay.h/音乐播放文件头名unsigned char RunMode; sbit P20=P20;sbit P21=P21; sbit P24=P24; sbit P25=P25;/*System Fuction*void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j120;j+);unsigned char code LEDDisplayCode = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,/07 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF;void Display(unsigned char Value)P3 = LEDDisplayCodeValue;void LEDFlash(unsigned char Count)unsigned char i;bit Flag;for(i = 0; i8)&0x00FF);void InitialCPU(void)RunMode = 0x00;Timer0Count = 0;SystemSpeedIndex = 9;P1 = 0x00;P0 = 0x00;P2 = 0xFF;P3 = 0x00;Delay1ms(500);P1 = 0xFF;P0 = 0xFF;P2 = 0xFF;P3 = 0xFF;SetSpeed(SystemSpeedIndex);Display(RunMode);/Mode 0unsigned int LEDIndex = 0;bit LEDDirection = 1,LEDFlag = 1;void Mode_0(void)LEDShow(0x0001LEDIndex);LEDIndex = (LEDIndex+1)%16;/Mode 2void Mode_2(void)if(LEDDirection) LEDShow(0x0001LEDIndex);if(LEDIndex=15) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 3void Mode_3(void)if(LEDDirection) LEDShow(0x0001LEDIndex);if(LEDIndex=15) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 4void Mode_4(void)if(LEDDirection) if(LEDFlag) LEDShow(0xFFFELEDIndex);else if(LEDFlag) LEDShow(0x7FFFLEDIndex); else LEDShow(0xFFFELEDIndex);if(LEDIndex=15) LEDDirection = !LEDDirection; if(LEDDirection) LEDFlag = !LEDFlag; LEDIndex = (LEDIndex+1)%16;/Mode 5void Mode_5(void)if(LEDDirection) LEDShow(0x000FLEDIndex);if(LEDIndex=15) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 6void Mode_6(void)if(LEDDirection) LEDShow(0x000FLEDIndex);if(LEDIndex=15) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%16;/Mode 7void Mode_7(void)if(LEDDirection) LEDShow(0x003FLEDIndex);if(LEDIndex=9) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%10;/Mode 8void Mode_8(void)LEDShow(+LEDIndex); void Timer0EventRun(void)if(RunMode=0x00) Mode_0(); else if(RunMode =0x01) Mode_1();else if(RunMode =0x02) Mode_2();else if(RunMode =0x03) Mode_3();else if(RunMode =0x04) Mode_4();else if(RunMode =0x05) Mode_5();else if(RunMode =0x06) Mode_6();else if(RunMode =0x07) Mode_7();else if(RunMode =0x08) Mode_8();void Timer2(void) interrupt 5 using 3TF2 = 0; /中断标志清除( Timer2 必须软件清标志!)if(+Timer0Count=SystemSpeed) Timer0Count = 0; Timer0EventRun(); unsigned char MusicIndex = 0;unsigned char MUSICNUMBER=3;void KeyDispose(unsigned char Key)if(Key&0x01) LEDDirection = 1; LEDIndex = 0; LEDFlag = 1; RunMode = (RunMode+1)%10; Display(RunMode); if(RunMode0) -SystemSpeedIndex; SetSpeed(SystemSpeedIndex); else LEDFlash(6); if(Key&0x04) if(RunMode=0x09) MusicIndex =(MusicIndex+1)%MUSICNUMBER; else if(SystemSpeedIndex28) +SystemSpeedIndex; SetSpeed(SystemSpeedIndex); else LEDFlash(6); /*Music*/挥着翅膀的女孩unsigned char code Music_Girl= 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!