1本科生毕业设计基于单片机的可变色灯泡的设计院系电气机电工程学院专业电气工程及其自动化班级学号学生姓名联系方式指导教师职称年月独创性声明2本人郑重声明所呈交的毕业设计是本人在指导老师的指导下所取得的研究成果除了文中特别加以注释和致谢的地方外本设计中不包含任何其他人已经发表或撰写的研究成果与本研究成果相关的所有人所做出的任何贡献均已在设计中作出了明确的说明并表示了谢意签名年月日授权声明本人完全了解许昌学院有关保留使用本科生毕业设计的规定即有权保留并向国家有关部门或机构送交毕业设计的复印件和磁盘允许毕业设计被查阅和借阅本人授权许昌学院可以将毕业设计的全部或部分内容编入有关数据库进行检索可以采用影印缩印或扫描等复制手段保存汇编本设计本人设计中有原创性数据需要保密的部分为如没有请填写无学生签名年月日指导教师签名年月日基于单片机的可变色灯泡的设计摘要3本文介绍了一种由12个LED发光二极管组成的四个可变色灯泡的多功能发光形式的简易彩灯控制系统的软硬件设计过程方案以AT89C51单片机作为主控核心且以复位电路时钟电路按键电路中断电路以及彩灯显示电路组成利用软件编程烧录程序到单片机来实现对LED彩灯进行多样控制该控制电路能完成多种闪灯模式以及随意变换想要的闪烁方式和控制彩灯的闪烁频率等功能该系统具有电路结构简单易操作硬件少体积少成本低能耗低等优点有一定的实用价值关键词8051单片机LED彩灯控制系统闪烁方式DesignofcolorchanginglampbasedonSCM4AbstractThispaperintroducesthehardwareandsoftwaredesignprocessofasimplelanternconsistsof12lightemittingdiodeLEDconsistingoffourcolorlightmultifunctionallightingcontrolsystemprogramforAT89C51microcontrollerasthecontrolcoreandtheresetcircuitclockcircuitkeyboardcircuitinterruptcircuitdisplaycircuitandthelightstheuseofsoftwareprogrammingtheprogramtothemicrocontrollertoachieveavarietyofcontrolofLEDlightsFlashinglightsandthecontrolofthecontrolcircuitcancompleteavarietyofflashmodeandrandomtransformtotheflickerfrequencyfunctionThesystemhastheadvantagesofsimplecircuitstructureeasyoperationlesshardwaresmallvolumelowcostlowenergyconsumptionhasacertainpracticalvalueKeywords8051MCUflashingLEDlightscontrolsystem目录1绪论6511选题的意义612外界的研究713本文的主要内容72设计方案721设计要求822设计限定923按键部分924显示模块93硬件电路的设计1031单片机的选用1032仿真软件的选用1233单片机最小系统1334按键控制电路1535中断电路1636LED显示电路1637仿真部分总结184软件编程设计2041编程软件2042延时部分2043按键部分2044综合仿真21参考文献23附录源程序24致谢266绪论11选题的意义20世纪以后现身于世的单片机以其超高的性价比赢取了世人的青睐而后单片机在各个领域都如雨后春笋般的出现得到了广泛的应用开启了自动化时代的新篇章单片机具有运行速度快抗干扰能力强体积小性能可靠环境要求不高价格低廉等特点使用时无需更改内部构造只需为其搭配合适的外围电路就可以构成一套完整的针对性极强的单片机控制系统随着社会的发展进步人们对生活质量度而要求也越来越高彩灯越来越广泛的出现在了我们的生活里在过年过节举办派对广告宣传灯多种领域彩灯都很好的完成了营造氛围活跃气氛的职能彩灯虽然简单但一直是一个被改进技术以往的角落多年以来并没有多少改进市面上的彩灯多为一次性彩灯颜色单一变化方式单一一般的彩灯用了一次先发给换个新花样了就只能把旧的扔掉不环保又浪费钱财因此我考虑可以设计改进已有彩灯增加灯的变换方式并可以通过简单的改变来改变彩灯的变换方式可提前设定几种常用的变换方式通过按键来改变几种预先设定变换方式并且本设计还将引入光的三原色交融来进行灯的换色一灯多色本设计基于单片机能更好的实现现有彩灯的功能并达到以达到换色换方式但是不换硬件的目的12外界的研究本设计在国内外已经有实物上市出售研究成果显著但是仍然存在不足和缺陷需要改进和加强根据市场效果来看市场反应很好目前研究出来的彩灯已经可以实现彩灯自由变换的功能但仍需改进价格太贵是其最大的弊端我在进行选题的时候首先考虑的就是设计的实用性和经济性并且能够最大化的利用自己的知识解决生活中遇到的问题对于可变色灯泡这个选题首先它延续了人们对舒适生活的一贯要求让创新更好的融入到生活中去提供新设备提高人们的生活舒适度其次对于可变色灯泡的研究本设计更主张人性化经济化吸纳了很多类似产品的优点对于通过光的三原色的搭配切实降低了可变色灯泡的成本713本文的主要内容在本次设计中可变色灯泡包括按键模块led显示模块等要求本设计能够通过简单的改变实现彩灯的变化保证设计的合理实用性我首先需要解决的是对于硬件电路按键的顺序调整和反应模块的实现而后通过软件编程使软硬件相结合从而保证按键功能的更好的实现反应模块主要是依据单片机的特性来实现在本次设计中我采用proteus软件进行电路的仿真处理另外通过keil编写程序最后将两个软件结合使用以此实现本设计的仿真处理本篇文章包括四个章节分别是绪论包括设计的意义以及选题背景介绍设计方案对本设计的基本方案进行介绍和部分模块的设计硬件设计部分需要利用PROTEUS软件对于本设计的各个部分加以分析软件设计需要利用KEIL软件使单片机完成设计要求的功能设计方案根据本次设计的论文题目根据设计的要求首先绘出设计的单片机系统的整体控制原理框图如图21所示8图21系统总体设计框图设计首先考虑是基于单片机基础上进行控制将通过按键模块控制单片机然后利用单片机的原理对反应模块和显示模块进行控制操作本章节将对整个设计方案进行规划分析对各个模块进行设计预先对不同部分的功能做出预想和设计便于以后在硬件设计部分进行制作21设计要求本设计是一个可变色彩灯设计的要求是可以通过按键来改变彩灯的单个灯泡色彩以及才的呢过的变换方式当按动其中一个按键以后彩灯便会在此按键代表的方式下运行按动其他按键时原变换结束按动按键代表的运行方式开始执行以一种新的运行方式变换可变色灯泡需要包括按键部分显示部分等要求可以在不改变硬件只改变部分软件的情况下就能实现等跑的变色及变样变换本次仿真选取protues软件通过AT89C51单片机使用其定时功能和外部电路实现彩灯闪烁变色变样的功能922设计限定由于不同的人群对彩灯的需求不同为了保证可变色彩灯的实用性本设计提供几种模式以确保不同类型的人在不同模式的基础上做少量改变就可以基本实现想要的功能不同人需要的灯泡闪烁的间隔以及亮的时间也不同根据不同人群的需求可以提供几种预先设置的方案至于闪烁定时也可以根据不同人的需求来提供23按键部分按键部分需要能够控制单片机按下相应的按键就会有相应的动作设计奖采用6个按键开关按键可实现5个模式选择一个暂停按钮也可以根据不同人群的需要增加按键增加程序模块以达到增加模式的效果为了充分利用端口本设计不提供开关按钮每一个模式按键均可以当做开始按钮暂停开关可作为关闭按键按键模块设计图图22按键模块设计图按键控制方法和原理模式一模式二模式三模式四模式五分别以第一种第二种第三种第四种第五种模式运行彩灯系统开关暂停彩灯重新打开彩灯通过以上的设计使按键模块实现对单片机的操作当然这些操作按键是由软件输入单片机中通过软件的形式对单片机加以操作和控制每个按键的原理基本相同分别给输出口以不同的高低电平组合来实现各种模式24显示模块显示模块本设计对彩灯的实际运行做了模拟性仿真基于条件限制本设计采用了四个灯泡组成的简单的彩灯系统四个灯每个均由红蓝绿三个led灯组成以达到变色的目的由于本模拟设计对于彩灯的颜色没有特殊的要求光的三原色组合能够满足需求所10以每个灯泡由三个颜色的led灯构成即可即本模拟设计通过十二个led灯组成四个可变色彩灯的系统硬件电路的设计31单片机的选用1AT89C51单片机的简单介绍对于这次的设计我将选用AT89C51单片机该类型的芯片采用了ATMEL公司生产的高密度非易失性存储器技术具有MCS51系列单片机的所有功能片上还放置了闪存存储器单元和通用8核心处理器从而可以实现非常强功能大图31是单片机AT89C51的引脚图图31AT89C51双列直插式引脚图AT89C51各个引脚的作用VCC供电电压5VGND接地P0口P0口为一个8位漏级开路双向IO口每脚可吸收8TTL门电流当P1口的管脚第一次写1时被定义为高阻输入P0能够用于外部程序数据存储器它可以被定义为数据地址的第八位在FIASH编程时P0口作为原码输入口当FIASH进行校验时P0输出原码此时P0外部必须被拉高本系统中P0口接LED数码管的段选段P1口P1口是一个内部提供上拉电阻的8位双向IO口P1口缓冲器能接收输出4TTL11门电流P1口管脚写入1后被内部上拉为高可用作输入P1口被外部下拉为低电平时将输出电流这是由于内部上拉的缘故在FLASH编程和校验时P1口作为第八位地址接收P2口P2口为一个内部上拉电阻的8位双向IO口P2口缓冲器可接收输出4个TTL门电流当P2口被写1时其管脚被内部上拉电阻拉高且作为输入并因此作为输入时P2口的管脚被外部拉低将输出电流这是由于内部上拉的缘故P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时P2口输出地址的高八位在给出地址1时它利用内部上拉优势当对外部八位地址数据存储器进行读写时P2口输出其特殊功能寄存器的内容P2口在FLASH编程和校验时接收高八位地址信号和控制信号本系统中语音芯片ISD1420的地址端接P2口P3口P3口是8个带内部上拉电阻的双向IO口可接收输出4个TTL门电流当P3口写入1后它们被内部上拉为高电平并用作输入作为输入由于外部下拉为低电平P3口将输出电流这是由于上拉的缘故P3口也可作为AT89C51的一些特殊功能口如表25所示P3口同时为闪烁编程和编程校验接收一些控制信号表25P3口的第二功能口管脚备选功能信号名称P30RXD串行输入口P31TXD串行输出口P32INT0外部中断0P33INT1外部中断1P34T0记时器0外部输入P35T1记时器1外部输入P36WR外部数据存储器写选通P37RD外部数据存储器读选通RST复位输入当振荡器复位器件时要保持RST脚两个机器周期的高电平时间ALEPROG当访问外部存储器时地址锁存允许的输出电平用于锁存地址的地位字节在平时ALE端以不变的频率周期输出正脉冲信号此频率为振荡器频率的16因此它可用作对外部输出的脉冲或用于定时目的然而要注意的是每当用作外部数据存储器时12将跳过一个ALE脉冲如想禁止ALE的输出可在SFR8EH地址上置0此时ALE只有在执行MOVXMOVC指令是ALE才起作用另外该引脚被略微拉高如果微处理器在外部执行状态ALE禁止置位无效PSEN外部程序存储器的选通信号在由外部程序存储器取指期间每个机器周期两次PSEN有效在访问外部数据存储器时这两次有效的PSEN信号将不出现EAVPP当EA保持低电平时则在此期间外部程序存储器0000HFFFFH不管是否有内部程序存储器注意加密方式1时EA将内部锁定为RESET当EA端保持高电平时此间内部程序存储器在本设计中对ROM的读操作只在内部程序存储器中所以EA置应高电平XTAL1反向振荡放大器的输入及内部时钟工作电路的输入XTAL2来自反向振荡器的输出82AT89C51单片机的主要性能与MCS51产品指令系统兼容4k字节可重新擦写Flash闪速存储器1000次可擦写周期全静态操作0Hz24MHz1288字节内部RAM三级加密程序存储器32个可编程IO口线2个16位定时计数器6个中断源可编程串行UART通道低功耗空闲和掉电模32仿真软件的选用本次设计采用protues仿真软件该软件的ISIS是一款可以通过自己动手画电路图来对实物进行仿真的软件这个软件不仅支持各种型号的单片机元件库齐全而且使用非常方便仿真效果非常好是一款非常值得向大家推荐的能使用单片机进行实物仿真的软件proteus可以很好对单片机电路进行实物模拟实验模拟效果相较于其他的实物实验要好的多使用者在使用本软件的过程中可以根据自身需求随心所欲的来画电路图补充电路图以及修改电路图在适当的操作后可立即进行仿真以检查该电路的实际运行效果充分弥补了我们在实际应用时无法一次次的修改硬件电路的弊端采用软件修改硬件电路的方式更加方便快捷在使用软件绘制电路图的时候我们还可以根据自己的实际需求选择使用或者不使用软件提供的电路元器件也可以通过自己改变元器件的参数来得到不同13的实验数据实验结果若符合预期的要求便可进行下一步根据软件绘图来进行实物的制作这种方法的经济快捷使得其本身具有很大的实用价值33单片机最小系统单片机要工作起来就需要为其提供外部硬件电路最基本的外部电路扩单片机时钟电路复位电路等几部分而单片机的最小电路则只是由复位电路和时钟信号电路组成如图3214图32单片机最小系统图复位电路为了确定单片机的起始工作状态并且完成单片机的启动过程单片机的复位方式有手动复位和上电自动复位两种本设计采用后者上电自动复位时钟电路单品机最小系统中另一个模块叫做时钟电路时钟电路的存在是为了产生时钟频率由一个晶振和两个小电容组成由于AT89C51单片机的内部的一个振荡器由一个反向放大器构成当XTAL1和XTAL2分别作为振荡电路的输出和输入端时时钟可有内部和外部产生当在XTAL1和XTAL2的引脚上接定时元件内部振荡电路就会产生自激震荡单片机系统采用石英晶体和电容组成的并联谐振会路作为定时元件选择晶振频率为12MHz电容为30Pf电容的大小对系统频率起微调的作用1534按键控制电路本设计的按键控制电路由五个按键开关构成这五个按键开关分别接在AT89C51单片机的p10p14引脚上是为了实现一对一的控制彩灯的不同颜色变换及闪烁形式当按下key1时12个led发光二极管以第一种闪烁发光方式运行从而实现三个一组的灯泡不同颜色的变换和闪烁当按下按键key2的时候十二个led发光二极管以第二种方式闪烁从而实现四个灯泡不断变换颜色闪烁的第二种模式同理当按下开关可以3时十二个led二极管以第三种方式闪烁实现四个可变色灯泡的第三种按键控制电路如图33是由4个按键开关构成的他们分别接在单片机AT89C51的P10P13引脚上为了一对一方式控制16个LED彩灯的不同闪烁形式当按下开关key1时16个LED发光二极管闪烁第一种彩灯方式当按下开关key2时16个LED发光二极管闪烁第二种彩灯方式同理当按下开关key3时16个LED发光二极管闪烁第三种彩灯方式当按下开关key4时16个LED发光二极管闪烁第四种彩灯方式图33按键控制电路图1635中断电路中断电路的作用是无论彩灯正在以哪种方式运行按下中断按钮以后该过程一定终止十二支led不同色的发光二极管均处在熄灭状态停止当前工作当在按下一次中断按钮的时候彩灯继续第一次按下中断按钮前的方式从头开始工作为此我们通过单片机的p33引脚来接上中断按钮来实现对彩灯的中断控制中断控制按钮接法如图34如图34中断控制电路图36LED显示电路四个可变色灯泡由十二个发光二极管组成发光二极管LightEmittingDiode简称LEDled常被用作微型计算机与数字电路的输出装置是一种具有体积小耗电低等优点的能讲点能转化为光能的半导体器件Led的两端可以加上正向电压当由电流流过led时他便会发光将电能转化为光能并且led的亮度会随着通过它自身电流的大小而改变但是过大的电流也会烧毁led大的电流会使led的使用寿命缩短普通的led正向电流一般不会低于5mA同时也不会高于20mA本设计的led采用灌电流的方式即电流从电流源出发流经led而后进入单片机的IO口这是由于51单片机的IO口是17弱上拉的方式高电平时只能输出几十微安的电流但是其输出低电平时又可以输入几十微安的电流故而为了保证led的正常发光采取了这种管电流的方式为了避免流过led的电流过大从而烧坏led本设计在led和电源之间串联上了一个电阻以降低电流当p0口和p2口输出高电平时即p0p21led两端没有压降一次所有的led都是熄灭不亮的当p0口和p2口输出低电平时即p0p20led正向导通发光由于led两端串联的电阻起分压作用导致led两端电压约为17V而串联的限流电阻两端的电压约为33V通过查阅AT89C51单片机的技术手册我们发现单个IO口的输入电流最大值不能超过10mAp0口的输入电流总和最大值不能超过26mAp1口p2口p3口的输入电流总和最大值不能超过15mA所有IO口的输入电流总和最大值不得超过71mALed显示电路接法如图3518图35led显示电路图37仿真部分总结如图36所示本设计的主要控制部件为AT89C51单片机共四十个引脚本次设计选用p2口和p0口进行led变色灯泡的发光部分p1口进行主要控制按键模块的传送p3口用作中断按钮的传送此外还有重置电路和振荡电路部分本设计选用AT89C51单片机的p0口的六个引脚p00p05以及p2口德六个引脚p20p25作为显示数据的传送端口因为这个设计的四个可变色的灯泡均由三个三原色led灯组成所以只需要使用p0口和p2口的十二个引脚足够数据可以传输显示根据设计原理图本设计将数码管的引脚通过p0口和p2口的12个引脚p00p05p20p25接上那个led灯以后再接上限电电阻就可以实现显示模块的功能了本次可变色灯泡的设计选用p1口的5个引脚p10p14分别用作按键模块的第一种模式第二种模式第三种模式第四种模式第五种模式这五个按键的输入端口首先把这5个引脚通过按键与地相接这样如果按下相应的按钮那这个按键与单片相连的引脚就会变成低电平从而给单片机输入一个低电平的脉冲再根据单片机的内部软件功能分别实现每个按键的功能中断按钮接在p33上其原理与以上五个模式按键的原理相同再次不在重复说明19图36硬件设计原理图软件编程设计41编程软件本次设计选用keil为编程软件单片机的使用有两种设计一种为硬件电路设计一种为软件设计单片机的软件汇编分为手工汇编和机器汇编两种汇编方式随着单片机开发技术日新月异的不断发展进步设计人员对单片机的使用更是越来越熟练而普通的汇编语言夜早已由于更加高级的并且更加实用的语言的诞生而不复存在Keil软件是用来开发51系列的单片机的常用软件之一Keil可以进行c51的汇编语言PLM语言和C语言的程序设计而且它的界面十分友好并且人性化对于我们初次接触的使用者来说也是非常好学习的42延时部分在软件设计中会经常用到延时部分因此对延时程序进行统一编程以便以后进行程20序调用方便省时设计编写延时程序时需要定义延时头文件DELAYh编写时为了满足设计需要在此文件中定义了四个延时函数分别是1ms延时函数2s延时函数02s延时函数和5ms延时函数定义时必须将每个函数都起好名称区分清楚防止用错在函数调用时直接就可以调用函数名来使用43按键部分根据硬件要求本设计一共需要定义六个按键分别是第一个变换模式第二个变换模式第三个变换模式第四个变换模式第五个变换模式和一个中断模式为了满足设计需求每一个按键按下后都必须实现其目的并且通过led灯的变换显示出来根据原理绘制了图41的原理框图如下21图41按键设计原理图44综合仿真仿真部分总结在仿真之前首先需要将keil与protues进行联调然后在keil中用源程序的项目生成HEX文件后在protues中导入单片机即可在protues中进行仿真如图42所示利用仿真图左侧的按键部分分别按动由上到下的五个按钮按钮系统开始以各个模式运行四个可变色灯泡以不同的颜色来回变换跳跃闪烁按动最下方的按钮来实现中断的作用从而实现了本设计可变色灯泡的全部功能22图42仿真原理图23参考文献1曹天汉模拟电子技术北京师范大学出版社2005年8月2侯玉宝陈忠平李成群基于Proteus的51系列单片机设计与仿真电子工业出版社2008年9月3曹天汉钱卫星张雪娟单片机原理与接口技术第3版电子工业出版社2009年3月4张国华张弛吴冬芳等基于单片机的学习式倒计时器J煤炭技术201130547495李全利单片机原理与接口技术M高等教育出版社2006年12月6李忠国陈刚单片机应用技能实训人民邮电出版社2006年7刘丹Protues与Keil联合仿真在单片机教学中的应用J科教导刊2013231201218李生明杨红PROTUES软件在学习单片机中的应用J清远职业技术学院学报201003640429马刚李向仓用Proteus与Keil整合构建单片机虚拟仿真平台J现代电子技术2006292412913110伍冯洁谢斌基于Proteus与Keil的单片机实验教学改革J实验室研究与探索200928712512711唐前辉丁明亮ProteusISIS和Keil在单片机教学中的应用J重庆电力高等专科学校学报2006114464912胡敬朋王聪单片机项目教学研究及实践J电气电子教学学报2009315828424附录源程序voidtimer0voidinterrupt1using1TL00x00重置初值TH00xBETL00xE5keyP1switchkeycase0xFEstate1stateTemp1breakcase0xFDstate2stateTemp2breakcase0xFBstate3stateTemp3breakcase0xF7state4stateTemp4breakcase0xefstate5stateTemp5breakdefaultbreakvoidintinterrupt2using2ifflag0state6flag1elsestatestateTempflagamp025voidmainIT11IE0x86TMOD0x21TH00xBETL00xE5ES0禁止串口中断TR01开启定时器0开始定时while1switchstatecase1fun1breakcase2fun2breakcase3fun3breakcase4fun4breakcase5fun5breakcase6P00xFFP20xFFbreakdefaultbreak26致谢在毕业设计论文即将完成之际我想向曾经给予我帮助和支持的人表示衷心的感谢首先我要感谢我的指导老师XX老师她的谆谆教导给了我莫大的帮助使这次毕业设计成了我的一个很好的实践锻炼的机会通过这次设计我开阔了自己的视野学会了很多实际应用的知识其次我还要感谢大学四年来所有的老师他她们为我打下电气类专业知识的基础同时我还要感谢我所有同学正是因为有了你们的支持和鼓励我这次毕业设计才能顺利的完成最后我要感谢电气机电工程学院和我的母校许昌学院四年来对我的大力栽培四年的大学时光让我更好的成长今后我将继续努力为了自己的目标而奋斗