基于单片机的多控制、多闪烁方式的LED霓彩灯设计(程序仿真+电路图+任务书+说明书)_第1页
基于单片机的多控制、多闪烁方式的LED霓彩灯设计(程序仿真+电路图+任务书+说明书)_第2页
基于单片机的多控制、多闪烁方式的LED霓彩灯设计(程序仿真+电路图+任务书+说明书)_第3页
基于单片机的多控制、多闪烁方式的LED霓彩灯设计(程序仿真+电路图+任务书+说明书)_第4页
基于单片机的多控制、多闪烁方式的LED霓彩灯设计(程序仿真+电路图+任务书+说明书)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

摘要本设计主要是通过对基于单片机的多控制、多闪烁方式的LED霓彩灯设计的电路进行模仿设计,达到多控制、多闪烁方式的LED霓彩灯固有的基本功能,故叫基于单片机的多控制、多闪烁方式的LED霓彩灯设计。利用定时器可发出不同频率的脉冲,不同频率的脉冲经控制后,就会控制LED灯的明灭。其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,本设计中,LED灯就是根据这个原理来完成它的明和灭。本次设计提出了用AT89C51单片机为核心控制元件。设计一个基于单片机的多控制、多闪烁方式的LED霓彩灯设计。本方案以AT89C51单片机作为主控核心,与LED显示电路图、按键控制电路图、复位电路、晶振电路图等模块组成核心主控制模块在主控模块上设有9个按键。根据使用者的操作随意变换想要的闪烁方式。关键词AT89C51单片机;按键;LED发光二极管;晶体振荡器目录摘要.2第1章绪论.3第2章仿真平台及程序开发语言.42.1AT89C51单片机简介.42.2KeiluVision2集成开发环境.92.3Proteus7Professional平台.92.4汇编语言介绍.10第3章总体设计.123.1概述.123.2八种闪烁方式.123.3程序框图.20第4章硬件电路设计.214.1电路总图概述.214.2按键控制电路.224.3LED发光二极管电路.234.4晶振电路.234.5复位电路.24第5章软件编程设计.255.1概述.255.2程序方法使用.25第6章结语.26致谢.27参考文献.28附录1:系统程序及说明.29附录2:系统原理图.36第1章绪论当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。单片机的出现是随着大规模集成电路的出现而出现的。大规模集成电路迅速发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(singlechipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果。本设计的基于单片机的多控制、多闪烁方式的LED灯系统实际上就是一个带有八个发光二极管的单片机最小应用系统。从应用电子开发系统的角度上看,它是一款由LED发光二极管电路、按键控制电路、晶震电路、复位电路和必要的软件组成的单个单片机系统。从硬件结构上看,它是一个由发光二极管、12MHZ晶振、电阻、电容、开关按键、5V直流电源等硬件组成和必要的软件组成的单个单片机系统。单片机应用系统可以分为:(1)最小应用系统。是指能维持单片机运行的最简单配置的系统。这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用。(2)最小功耗应用系统。是指为了保证正常运行,系统的功耗最小。(3)典型应用系统。是指单片机要完成工业测控功能所必须的硬件结构系统。第2章仿真平台及程序开发语言2.1AT89C51单片机简介主要硬件厂商介绍本设计的中枢硬件控制器是AT89C51单片机。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含有4Kbytes的可反复擦写只读程序存储器和128bytes的随机存取数据存储器。元器件采用AEMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统。内置通用8位中央处理器和FLASH存储单元。功能强大的AT89C51单片机可为我们提供许多高性价比的应用场合,可灵活应用于各种控制领域。在CMOS器件生产领域中,ATMEL的先进设计水平、优秀的生产工艺及封装技术一直处于世界的领先地位,这些技术用于单片机生产使单片机也具有优秀的品质、在结构、性能和功能等方面都有明显的优势。ATMELl公司的单片机是目前世界上一种独具特色而性能卓越的单片机。它在计算机外部设备、通讯设备、自动化工业控制、宇航设备、仪器仪表和各消费类产品中都有着广泛的应用前景。因此,本设计的基于单片机的多控制、多闪烁方式的LED灯系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机系统。按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89C51单片机时无须外扩存储器。如图2-1所示:图2-1AT89C51单片机1.主要特性:与MCS-51兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.引脚功能说明: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.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器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:来自反向振荡器的输出。3.振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4.芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.2KeiluVision2集成开发环境一、项目管理工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。uVision2包含一个器件数据库(devicedatabase),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extradatapointer)或者加速器(mathaccelerator)的特性。uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。二、集成功能1.集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来优化用户变数存储器。2.文件寻找功能:在特定文件中执行全局文件搜索。3.工具菜单:允许在V2集成开发环境下启动用户功能。4.可配置SVCS接口:提供对版本控制系统的入口。5.PCLINT接口:对应用程序代码进行深层语法分析。6.Infineon的EasyCase接口:集成块集代码产生。7.Infineon的DAVE功能:协助用户的CPU和外部程序。DAVE工程可被直接输入uVision2。2.3Proteus7Professional平台1、Proteus软件简介Proteus软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达30多个元件库。Proteus软件提供多种现实存在的虚拟仪器仪表。此外,Proteus还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。提供SchematicDrawing、SPICE仿真与PCB设计功能,同时可以仿真单片机和周边设备,可以仿真51系列、AVR、PIC等常用的MCU,并提供周边设备的仿真,例如373、led、示波器等。Proteus提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件,编译方面支持Keil和MPLAB等编译器。一台计算机、一套电子仿真软件,在加上一本虚拟实验教程,就可相当于一个设备先进的实验室。以虚代实、以软代硬,就建立一个完善的虚拟实验室。在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。2、基本操作步骤A打开PROTEUS操作界面。B选择“P”,从元件库中提取需要的元器件(选中双击),选择完点OK。C在编辑区画电路图,修改元件参数。D进行电路仿真。E保存文件。2.4汇编语言介绍汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为汇编。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。大多数情况下Linux程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在Linux操作系统中也可以用完全用C语言来实现,再加上GCC这一优秀的编译器目前已经能够对最终生成的代码进行很好的优化,的确有足够的理由让我们可以暂时将汇编语言抛在一边了。但实现情况是Linux程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简单:精简、高效和libc无关性。假设要移植Linux到某一特定的嵌入式硬件环境下,首先必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了。第3章总体设计3.1概述本设计是基于单片机AT89C51的多控制、多闪烁方式的LED灯系统它的核心功能是以单片机AT89C51控制8个发光二极管8种闪烁方式的变换。硬件电路如图1、1所示,八个发光二极管L1L8分别接在单片机的P0.0P0.7接口上,当输出“0”时,发光二极管点亮。当输出“1”时,发光二极管熄灭。我们可以运用输出端口指令MOVP0,A或MOVP0,DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据也将不同。当按下K1-K8任意一个开关时,系统都会按照预定的闪烁方式闪烁。当需要从一种方式切换到另一种方式时,只需要在两次按开关之间按一下复位开关即可。3.2八种闪烁方式在本设计中,LED灯会受单片机的控制,按照预定的8中闪烁方式闪烁。八种闪烁方式分别为:1、当按下开关1时,LED灯从D8向D1移动,每隔0.5S移动一次,当移动到D1时,全灭。然后LED灯从D1向D8移动,每隔0.5S移动一次,重复循环。如表3-1所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D101111111D8亮10111111D7亮11011111D6亮11101111D5亮11110111D4亮11111011D3亮11111101D2亮11111110D1亮11111111全灭11111110D1亮11111101D2亮11111011D3亮11110111D4亮11101111D5亮11011111D6亮10111111D7亮01111111D8亮表3-1第一种显示方式2、当按下开关2时,LED灯从D8向D1依次点亮。每隔0.5S点亮一个LED灯,当移动到D1时,全亮。然后从D1-D8逐个熄灭,间隔时间仍是0.5S,直至全部熄灭,如此重复循环。如表3-2所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D111111111全灭01111111-00111111-00011111-00001111-00000111-00000011-00000001-00000000全亮00000001-00000011-00000111-00001111-00011111-00111111-01111111-11111111全灭表3-2第二种显示方式3、当按下开关3时,LED灯从两边向中间移动,逐次点亮,直至全亮。然后从中间向两边逐次熄灭,直至全灭。间隔时间为0.5S。重复循环。如表3-3所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D111111111全灭01111110-00111100-00011000-00000000全亮00011000-00111100-01111110-11111111全灭表3-3第三种显示方式4、当按下开关4时,LED灯在全亮和全灭状态下交替闪烁,间隔时间为0.5S,重复循环。如表3-4所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D111111111全灭00000000全亮表3-4第四种显示方式5、当按下开关5时,LED灯间隔交替明灭。间隔时间为0.5S,重复循环。如表3-5所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D101010101-10101010-表3-5第五种显示方式6、当按下开关6时,会依次出现闪烁一下三次的情况:1)、最左最右灯亮,中间2灯灭。最左最右灯灭,中间2灯亮。其余灯均灭。2)、最左最右灯亮,中间A灯灭。最左最右灯灭,中间A灯亮。其余灯均灭。3)、最左最右灯亮,中间B灯灭。最左最右灯灭,中间B灯亮。其余灯均灭。LED灯间隔闪烁时间为0.5S,重复循环。如表3-6所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D101111110-11100111-01111110-11101111-01111110-11110111-表3-6第六种显示方式7、当按下开关7时,最左最右灯间隔闪烁。其余灯自D2-D7依次衔接闪烁点亮。闪烁间隔时间为0.5S,重复循环。如表3-7所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D101111110-11111101-01111110-11101001-01111110-11110001-01111110-11100001-01111110-11000001-01111110-10000001-表3-7第七种显示方式8、当按下开关8时LED灯,最左最右灯间隔闪烁。其余灯自D2-D7依次逐个闪烁点亮。间隔时间为0.5S,重复循环。如表3-8所示:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D8D7D6D5D4D3D2D101111110-11111101-01111110-11101011-01111110-11110111-01111110-11101111-01111110-11011111-01111110-10111111-表3-8第八种显示方式3.3程序框图开始延时程序判断开关是否按下显示闪烁方式继续判断是否循环图3-9霓彩灯硬件原理图从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“霓彩”效果了。第4章硬件电路设计4.1电路总图概述按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图4-1所示。图4-1电路设计总图实现电路如图4-1。该图18、19脚为时钟脉冲输入引脚,晶体振荡器采用12MHZ,电容为33PF,9脚为复位引脚,只要高电平超过两个周期即可产生复位。8个LED个指示灯接在P2口,每个LED支路接了一个220欧姆的限流电阻。限流电阻具体计算公式=(5-LED导通电压)/LED额定电流。如果LED要加亮,就减小限流电阻的值,但是不能超过LED的最大承受电流值。反之,则增加限流电阻的值。基于单片机AT89C51的多控制、多闪烁方式的LED灯系统是由按键控制电路、晶震电路、LED发光二极管电路、复位电路和必要的软件组成的单个单片机系统,下面我将对各个子电路的硬件构成及功能进行说明和介绍。4.2按键控制电路按键控制电路(如图4-2所示)是由8个按键开关构成的。他们分别接在单片机AT89C51的P1接口上,为了一对一的控制LED灯的闪烁方式。当按下开关L1时,多控制、多闪烁方式的LED灯系统闪烁第一种闪烁方式。当按下开关L2时,多控制、多闪烁方式的LED灯系统闪烁第二种闪烁方式图4-2按键控制电路图4.3LED发光二极管电路LED发光二极管电路(如图4-3所示)实际上是由8个发光二极管和8个220欧姆的电阻构成的电路。发光二极管D1、D2、D3、D4、D5、D6、D7、D8与电阻R1、R2、R3、R4、R5、R6、R7、R8对应串联,然后接在与之相对应的P0口上。LED发光二极管电路实现的功能就是显示需要显示的LED灯闪烁效果。图4-3LED显示电路图4.4晶振电路晶振电路(如图4-4所示)是由两个33PF的电容、一个12M的晶体震荡器组成。他们接在接口XTAL1、XTAL2上。晶振电路的功能是为了给系统提供一个稳定的时间脉冲信号。图4-4晶振电路图4.5复位电路复位电路(如图4-5所示)是由一个按键开关、2个阻值为330欧姆的电阻、一个22uF的电容组成。按照以下的连接方法,接在RST接口。它的功能是对整个系统进行复位。当按下开关按键时,系统复位到初始状态。图4-5复位电路图第5章软件编程设计5.1概述单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的LED灯系统循环点亮的现象,我们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的明灭。软件编程是多控制、多闪烁方式的LED灯系统中的一个重要的组成部分,是本设计的重点和难点。下面,我将详细的阐述多控制、多闪烁方式的LED灯系统是如何实现8个LED灯的循环点亮,来介绍实现流水灯控制的软件编程方法。5.2程序方法使用在控制LED灯明灭的方法中,循环移位法、位控法、查表法都能实现LED灯的控制.虽然最易理解但是方法比较笨。循环移位法是利用循环移位指令,采用循环程序结构进行编程。而查表法简单明了,在使用是只需调用表就可以,要修改时,直接改表就可以,不用在牵涉主程序修改。所以在本系统的程序编写中,大力的用到了查表法。特此说明。当上述程序之一编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到AT89C51单片机中,最后连接好电路通电,我们就看到LED1LED8的闪烁效果了。本文所给程序实现的功能比较简单,旨在抛砖引玉,用户可以自己在此基础上扩展更复杂的流水灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。第6章结语毕业设计已经接近尾声了。在这段时间里我收获了很多,得到的更多。不但让自己在遇到问题时主动去找问题的症结所在。发现问题、解决问题。在做这个设计之前,我信心十足,并且开玩笑说不拿下这个势不罢休。直到开始做时,才知道“前途是光明的,道路是曲折的”这句话的真正含义。做毕业设计的过程中,遇到了大大小小的困难不及其数,我和老师之间也很多次出现过意见和分歧。但最终都以为了很好完成设计这一共同的目标而消除了那些前进的障碍。一开始,我什么都不懂,懵懂糊涂代替了我的思绪。唯一清醒地是指导老师。在老师细心的引导下,我渐入佳境。逐渐掌握了战场的主动权。从被动学习到主动查找资料,这一个小小的转变便是质的飞跃。当项目接近尾声时,老师刻意的讲解使得我不安起来。这也许是老师悉心教导的表现,但作为学生的我来说,深刻地认识到,自己太急功近利了,我太不成熟、不够稳重。这将是以后我以后人身前进的又一绊脚石。值得庆幸的是,至少现在我知道了自己有不稳种的一面。值得高兴的是,我最后如愿以偿,拿下了这个毕业设计的所有内容。虽然有部分地方不如预料中的那么完美。但是这些不完美的成果都是老师和我辛勤汗水和拼命工作的结晶。不得不说这是一个奇迹。在未来的时间里,我将继续我的人生旅程。也许这只是我人生中的一抹亮丽,但这抹亮丽将是最耀眼的,将是永久唯一的!致谢本文是在张万良老师的关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!感谢张万良老师在课题研究初期给予的帮助,在张老师的帮助下课题才得以很好的展开,有了一个很好的开端!感谢黄建新老师在单片机学习中的指导,因为他的认真,才得以高效率的学习了汇编语言!感谢学校给了我这次毕业设计的机会,使我得到了很好的锻炼,在此我也向学校的各位老师表示最真诚的感谢!参考文献1徐煜明,韩雁.单片机原理及接口技术M.北京:电子工业出版社,2005.12万光毅,严义,邢春香.单片机实验与实践教程M.北京:北京航空航天大学出版社,2006.43陈正义.单片机控制实习M.北京:人民邮电出版社,2006.74/changjianguo89/blog/item/a00830cb60ef5ff553664f74.html.Proteus简介5百度(网络)./view/49.htm.汇编语言简介附录1:系统程序及说明ORG30H;单片机上电后从30H地址开始执行LOOP:MOVA,#0FFHMOVP0,A;将A的值送到P0口ACALLDELAY;延时程序JNBP1.0,One;判断开关P1.0是否按下,按下就跳到OneJNBP1.1,Two;判断开关P1.1是否按下,按下就跳到TwoJNBP1.2,Three;判断开关P1.2是否按下,按下就跳到ThreeJNBP1.3,Four;判断开关P1.3是否按下,按下就跳到FourJNBP1.4,Five;判断开关P1.4是否按下,按下就跳到FiveJNBP1.5,Six;判断开关P1.5是否按下,按下就跳到SixJNBP1.6,Seven;判断开关P1.6是否按下,按下就跳到SevenJNBP1.7,Eight;判断开关P1.7是否按下,按下就跳到EightAJMPLOOP;跳转到主程序存放地址处One:MOVR1,#18;将#18赋值给R1MOVDPTR,#TAB1;第1种闪烁方式表首地址送DPTRLOOP1:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP1;R1自减1,直到为0AJMPOne;跳转闪烁方式OneTwo:MOVR1,#16;将#16赋值给R1MOVDPTR,#TAB2;第2种闪烁方式表首地址送DPTRLOOP2:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP2;R1自减1,直到为0AJMPTwo;重复闪烁方式TwoThree:MOVR1,#8;将#8赋值给R1MOVDPTR,#TAB3;第3种闪烁方式表首地址送DPTRLOOP3:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP3;R1自减1,直到为0AJMPThree;重复闪烁方式ThreeFour:MOVR1,#2;将#2赋值给R1MOVDPTR,#TAB4;第4种闪烁方式表首地址送DPTRLOOP4:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP4;R1自减1,直到为0AJMPFour;重复闪烁方式FourFive:MOVR1,#2;将#2赋值给R1MOVDPTR,#TAB5;第5种闪烁方式表首地址送DPTRLOOP5:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP5;R1自减1,直到为0AJMPFive;重复闪烁方式FiveSix:MOVR1,#6;将#6赋值给R1MOVDPTR,#TAB6;第6种闪烁方式表首地址送DPTRLOOP6:CLRA;累加器清零MOVCA,A+DPTR;取数据表中的值MOVP0,A;将数据送到P0口ACALLDELAY;调用延时子程序INCDPTR;取数据表指针指向下一数据DJNZR1,LOOP6;R1

温馨提示

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

评论

0/150

提交评论