路灯控制系统设计_第1页
路灯控制系统设计_第2页
路灯控制系统设计_第3页
路灯控制系统设计_第4页
路灯控制系统设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

前 言随着城市规模的不断扩大,现有的路灯管理的方式方法已远远不能满足城市路灯发展与管理的需要,必须依靠现代化的高科技管理手段。路灯管理工作需要一个以计算机为核心的、自动化的管理手段来替代普通的路灯监控系统。使整个城市照明监测,决策和管理工作建立在计算机信息网络平台之上。因而单片机在路灯系统中的应用应运而生。由于单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此在路灯照明工程中被广泛应用。单片机技术中的计时系统是单片机在的一个典型的应用。通过计时系统来对时间进行有效的控制。在路灯设计的定时系统中将得到更好的应用.2路灯控制系统在城市中的用途很广泛,本路灯控制器系统针对实际情况的需要进行优化设计的。在本设计中,输入是开关按钮,进行时间控制,显示是六个数码管和LED二极管,时间为正常24小时走时,可用按钮调节定时开关时间,达到控制的目的。该设计系统可以实现时间设置路灯的开关,对小时和分钟可以进行调整;启动后进入计时显示,计时用六位数码管显示;当一天时间过去后可以循环继续控制,用四个LED二极管进行模拟显示。第一章 总体设计我们在设计路灯系统控制器之前,先了解系统所要实现的各个功能情况。在设计的过程中,除了要让硬件电路简洁外,还要兼顾软件不能过于复杂。这样才能达到设计的实际要求,硬件支持软件,软件带动硬件。本电路设计的主要思路是:对路灯实现实时控制,最基本的程序是时钟显示程序,之后的设定开灯和关灯时间并能对路灯进行实时控制都是在基本程序上扩展而得到的。时钟显示程序中最关健是否对数码管进行动态扫描的子程序放在哪里,本课设中把动态扫描程序放在T0中断里,中断的时间是非1MS,也就是说每1MS扫描一次,扫描频率非常快,利用了人眼的视觉残留特性,使程序更加简洁.调时程序和对路灯的单路控制程序都是按键进行控制的.所以对对按键的控制显得尤为重要了.本课设主程序中一直在对所有的按键进行扫描,当按键一有动作,在第一时间就执行相应的程序,达到实时控制的目的.根据任务书上的要求进行综合分析,总设计方案分为以下几个步骤:1) 根据路灯控制系统的功能,选用合理元器件并画出总体原理图。 (见附录)2) 画出各个程序流程图的各模块。3) 根据流程图编写出各模块的程序。4) 完成主程序及实现模块调用。5) 硬件电路的焊接及调试。6) 硬件软件的综合调试及程序烧制。7) 制作PCB版根据上述步骤,设计总体方案的流程图可简化为如下:图1-1总体设计方案流程图第二章 硬件设计2.1 硬件设计原则一般对于大型的硬件设计的主要思路如下:一个大型的单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,二是系统的配置,即按照系统功能要求配置外围设备,要设计合适的接口电路。系统的扩展和配置应遵循以下原则:1、尽可能选择典型电路,为硬件系统的标准化、模块化打下良好的基础。2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求。3、硬件结构应结合程序设计方案一并考虑。考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。4、系统中的相关元器件要尽可能做到性能匹配。5、可靠性及抗干扰设计是硬件设计必不可少的一部分。6、尽量减少外围。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性1。因而在选择器件上尽量的简洁。由于本次的毕业设计是一个单片机的小型系统,所以对于上述需要注意的事项在这次设计中并不需要面面具到,我总结了一下,在这次设计中需要注意的问题有: 1)注意硬件方案和软件方案的结合.2)电路的抗干扰性能.3)对元器件的保护能力,要在电路中对电流敏感元器件进行限流控制.硬件设计是本次设计的基础,它的成功与否关系到本次毕业设计的成败。首先我们依然是对系统进行分析,分析它有些什么功能,用什么样的器件才能实现。根据任务书的要求,分析出需要的功能有:具备时钟功能、时间调节的调节、二极管(模拟路灯)的显示功能、定时开灯关灯的时间调整功能、按键控制功能。基于以上功能要求,我们决定使用AT89C51芯片,显示器件选用数码管(4个),通过电阻驱动,驱动数码管的显示。数码管采用动态显示。最终确定的结构框图为:单片机时钟电路复位电路按键输入驱动电路数码管显示二极管显示图2-1结构框图2.2 硬件设计思路通过硬件电路的分析,当开机后,经过上电复位,时钟显示为17:59:50,这时可以调整时、分、秒按钮进行精确调整到当前时间,进行正常走时。开机后系统内部自定义开路灯时间为18:00:00,关路灯时间为6:00:00,如果不做调整的话,时间就是下午六点钟开灯,早晨6点钟关灯,但春、夏、秋、冬四季的昼夜并不相等,为了更好的节省资源(电力)。本设计中可以进行手动调整,根据四季的变化来调整开路灯和关路灯的时间,更有效的节省资源。本设计中另外的一大特点就是在夜晚12:00的时候,路灯会熄灭一半,这种设计也是为了节省资源,因为夜深人静的时候,并不需要太多的路灯照明整个路面,只需要点点灯光就行。然后到早晨六点钟或自己重新设定的时间的时候在关闭其它的路灯。本次设计中共用到了五个按钮,和四个发光二极管,用来控制路灯和调整时间。按钮上到下编号为、。为进入调整开灯、关灯的时间按钮,和为退出调整开灯和关灯的按钮,只有通过它才能有效的退出定义开灯和关灯的调整状态,为调整加一小时的按钮,为调整减一小时的按钮,为调加一分钟的按钮,为调整减一分钟的按钮。发光二极管从上至下的标号是、。、为路灯的左边一排。、为路灯的右边一排。2.3 时钟电路时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的。晶振的选择:6MHz的晶振,其机器周期是2us。12MHz的晶振,其机器周期是1us, 也就是说在执行同一条指令时用6MHz的晶振所用的时间是12MHz晶振的两倍。为了提高整个系统的性能我选择了12MHz的晶振。振荡方式的选择:内部振荡方式,MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件,这样就构成了内部振荡方式。外部振荡方式是把已有的时钟信号引入单片机内。这种方式适合用来使单片机的时钟与外部信号一致。在我的这个设计中没有也无需与外部时钟信号一致,所以我选择了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振我选择了12MHz,相对于6MHz的晶振,整个系统的运行速度更快了。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值我选择了30pF。内部振荡方式所得的时钟信号稳定性高。2.4 复位电路2.4.1可靠性计算机在启动运行是都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,它是施密特触发输入,当振荡器起振后,该引脚上出现2个机器周期(即24个时钟周期)以上的高电平。使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、/PSEN、P0、P1、P2、P3口都输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。复位以后内部寄存器的初始状态为(SP=07,P0、P1、P2、P3为0FFH外,其它寄存器都为0。对于NMOS型单片机,在RST复位端接一个电容至VccHE 一个电阻至Vss,就能实现上电自动复位,对于CMOS单片机只要接一个电容至Vcc即可。如图,在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效地复位。RST端在加电时应保持的高电平时间包括Vcc的上升时间和振荡器起振时间,Vcc上升时间若为10ms,振荡器起振时间和频率有关。10MHz时间约为1ms,1MHz时约为10ms,所以一般为了可靠地复位,RST在上电时应保持20ms以上的高电平。图2.5中,RC时间常数越大,上电时RST端保持高电平的时间越长。振荡频率为12MHZ时,典型值为C=10uF,R=8.2k。若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。图2-2上电复位电路2.4.2 人工复位除上电自动复位以外,常常需要人工复位,将一个按钮开关并联于上电自动复位电路,按一下开关就RST端出现一段时间的高电平,即使器件复位。如图所示图2-3上电和开关复位而在这次的毕业设计中运用的上电复位电路.即只要一接+5V 电压,系统就会自动的复位.出于可靠性和适时性的考虑,我选择了简单实用的上电复位电路上电后,由于电容充电,使RST持续一段高电平时间。从而实现上电复位操作。我选择的C=10uF,R=1k。2.5 按键电路在单片机系统中,通常有且仅有一键按下才视为按键有效。有效的确认方式通常又可以分为两类。第一类为按下-释放键方式,系统要求从按下倒释放键才算一次有效按键。另一类为连击方式,就是一次按键可以产生多次击键效果,其连击频率可自己设定,如3次/秒、4次/秒等。根据设计的需要,我选择了按下-释放方式,电路如下图9所示。电路为低电平有效输出方式,当按键按下时输出为低电平。图2-4开关电路图在按下-释放键方式时,系统先判断是否有键按下,若不用硬件去抖,则同时进行软件去抖,确认有键按下,然后等待至该按键释放才算依次按键,注意释放键判断同样要进行去抖处理。2.6 显示电路2.6.1 显示方式选择LED数码显示器时常用的显示器之一,我用的是单片机并口设计的LED数码显示电路。LED有着显示亮度高、响应速度快的特点,最常用的是七段式LED显示器,又称数码管。七段式LED显示器内部由7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。从各发光段电极连接方式分有共阳极和共阴极两种。所谓共阳方式是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。显示方式的论证:方案一:静态显示方式,就是把共阴极或共阳极的公共端(位选端)连接在一起接地或接5V电源,形成位控端;每一位的段选线(adp)作为段控端。方案二:动态显示方式,是单片机应用系统中最常用的显示方式,把所有的显示器的同名段选端选线相互并接在一起,由同一个8位并行输出口控制;而各显示器的位选线则分别由不同输出口线控制端。这样各显示位不能同时显示不同的数字或字符。因此要选择扫描的方法,即从左到右(或从右到左)依次轮流使每位显示器显示数字或字符并保留一段时间(通常位1ms),由于LED的余辉特性以及人眼视觉的惰性,尽管各位显示器实际上使分时断续地显示,但只要适当选取扫描频率,给人眼的视察印象就会是在连续地显示,而察觉不到闪烁现象。相对与静态显示动态显示方式虽然占用的CPU空间较多,但使用的硬件少,所占用的端口也较静态显示方式少,可以大大的节约系统的端口资源,所以根据我设计中没有扩展端口,端口资源比较紧张,因此我才用的是动态显示,能节约线路板空间,而且效果也不亚于静态显示。2.6.2 LED的驱动和显示在电路设计的过程中,单片机的的P0.0-P0.7作为段选输出口,经上拉电阻加到数码管的A-G和DP上,P2.0-P2.5作为位选输出口,经电阻驱动分别加到数码管的COM端。LED的驱动问题是显示设计中的一个非常重要的环节。如果驱动能力差,显示器高度就低;且驱动器长期在超负荷下运行很容易损坏。下面就简单介绍选择LED驱动器时应注意的问题。显示分为静态显示和动态显示两种方式,由于这两种方式有本质的不同,因此在选择LED驱动器时,一定要分清显示方式。如果是静态显示,则LED驱动器的选择较为简单,只要驱动器的驱动能力与显示器的工作电流相匹配即可,而且只需要考虑段的驱动,因为,共阳极接+5V,而共阴极接地,所以位的驱动无须考虑。动态显示则不同,由于一位数据的表示是由段和位选信号共同配合完成的,因此必须同时考虑段与位的驱动能力和位的驱动能力,而且段的驱动能力决定位的驱动能力。段的驱动能力是由驱动能力决定位的驱动能力。段的驱动能力是由显示器的亮度决定的,通过发光的二极管的电流较大,其亮度也就越多,对于静态显示器,当某位电量时,此位中点亮的段通过恒定的电流;而对于动态显示器,此电流却是以一定脉冲方式出现的,其峰值电流来考虑。我采用的是三个数码管集成在一起的管子,这种管子的好处是在接线的时候比较简单,三个COM端接位选接口,非常适合用于动态显示。我们所采用的是动态显示,虽然有闪烁感,占用的CPU空间较多,但使用的硬件少,能节约线路板空间。下图为数码显示的硬件电路设计:图2-5数码显示的硬件电路说明:8个上拉电阻是增加D0-D8的驱动能力的。使其更清楚的显示。六个电阻也是增加驱动能力的。2.7 路灯电路本设计中用的是四个发光二极管模拟两路路灯控制,每两个二极管用来代替一条街或一个干道的路灯,在加上键盘的点动控制,实现路灯的多路实时控制。原理图如下:图2-6路灯电路2.8 PCB板PCB中文称为印制电路板。所谓印制电路板是指:在绝缘基板上,有选择地加工安装孔、连接导线和装配焊接电子元器件的焊盘,以实现元器件间的电气连接的组装板。硬制电路板的优点:(1)印制电路板PCB优点之一是可以实现电路中各个元器件间的电气连接,代替复杂的布线,减少了传统方式下的接线工作量,简化了电子产品的装配、焊接、调试工作。(2)印制电路板PCB优点二是缩小了整机体积,降低了产品成本,提高了电子设备的质量和可靠性。(3)印制电路板PCB优点三是具有良好的一致性,它可以采用标准化设计,有利于装备生产的自动化和焊接的机械化,提高了生产率。(4)印制电路板PCB优点四装备的部件有好的机械性能和电气性能,使电子设备实现单元组合化,使整块经过装配调试的印制电路板作为一个备件,便于整机产品的互换与维修。正是由于以上PCB优点,所以这次我做成了PCB版。硬制电路板的制作过程:一般PCB基本设计流程如下:前期准备-PCB结构设计-PCB布局-布线-布线优化和丝印-网络和DRC检查和结构检查-制版。第一:前期准备。这包括准备元件库和原理图。在进行PCB设计之前,首先要准备好原理图SCH的元件库和PCB的元件库。 第二:PCB结构设计。这一步根据已经确定的电路板尺寸和各项机械定位,在PCB 设计环境下绘制PCB板面,并按定位要求放置所需的接插件、按键/开关、螺丝孔、装配孔等等。并充分考虑和确定布线区域和非布线区域。第三:PCB布局。布局说白了就是在板子上放器件。这时如果前面讲到的准备工作都做好的话,就可以在原理图上生成网络表(Design-Create Netlist),之后在PCB图上导入网络表(Design-Load Nets)。然后就可以对器件布局了。在放置元器件时,一定要考虑元器件的实际尺寸大小,元器件之间的相对位置,以保证电路板的电气性能和生产安装的可行性和便利性以及整齐美观。第四:布线。布线是整个PCB设计中最重要的工序。这将直接影响着PCB板的性能好坏。在PCB的设计过程中首先是布通,这时PCB设计时的最基本的要求。其次布线要整齐划一,不能纵横交错毫无章法。在做这次设计布线时主要按以下原则进行:一般情况下,首先应对电源线和地线进行布线,以保证电路板的电气性能。在条件允许的范围内,尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的关系是:地线电源线信号线。振荡器外壳接地,时钟线要尽量短,且不能引得到处都是。尽可能采用45的折线布线,不可使用90折线,以减小高频信号的辐射。任何信号线都不要形成环路,如不可避免,环路应尽量小;信号线的过孔要尽量少。关键的线尽量短而粗,并在两边加上保护地。原理图布线完成后,应对布线进行优化;同时,经初步网络检查和DRC检查无误后,对未布线区域进行地线填充,用大面积铜层作地线用,在印制板上把没被用上的地方都与地相连接作为地线用。PCB布线工艺要求线线与线之间和线与焊盘之间的距离大于等于0.33mm(13mil),线间距不小于0.254mm(10mil)。这次设计中信号线宽为0.5mm,电源线宽与地线宽0.8mm。焊盘(PAD)焊盘(PAD)与过渡孔(VIA)的基本要求是:盘的直径比孔的直径要大于0.6mm;实际应用中,应根据实际元件的尺寸来定,有条件时,可适当加大焊盘尺寸;PCB板上设计的元件安装孔径应比元件管脚的实际尺寸大0.20.4mm左右。过孔(VIA)一般为1.27mm/0.7mm(50mil/28mil);当布线密度较高时,过孔尺寸可适当减小,但不宜过小,可考虑采用1.0mm/0.6mm40mil/24mil)。焊盘和过孔的实际尺寸要根据各个元器件的实际情况再综合PCB布线工艺要求来确定。第五:布线优化和丝印。优化布线的时间是初次布线的时间的两倍。对于丝印,要注意不能被器件挡住或被过孔和焊盘去掉。第六:网络和DRC检查和结构检查。首先,在确定电路原理图设计无误的前提下,将所生成的PCB网络文件与原理图网络文件进行物理连接关系的网络检查(NETCHECK),并根据输出文件结果及时对设计进行修正,以保证布线连接关系的正确性;网络检查正确通过后,对PCB设计进行DRC检查,并根据输出文件结果及时对设计进行修正,以保证PCB布线的电气性能。最后需进一步对PCB的机械安装结构进行检查和确认。第七:制版。这一过程在厂里完成。经过以上步骤最后晚成的版子为:图2-7硬制电路版第三章 软件设计31 主程序本软件设计的程序设计包括判断各个按钮按下之后能够实现什么功能,判断开灯关灯的时间。其中,动态显示是在中断子程序中进行的,每一次中断的时间为1MS,每中断一次扫描一次,实现动态显示。正常走时的动态显示是在T0中断中进行动态扫描的,设置开灯关灯的时间是在T1中断中进行动态扫描的。主程序流程图为:图3-1主程序流程图32 计时程序计时程序的设计主要用到定时器的知识。下面我简述一下定时器的一些基础知识。MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。它们既可用作定时器方式,又可用作计数器方式。(1)定时器/计数器结构定时器/计数器的基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器)拼装而成。在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号)。故其频率为晶振频率的1/12。如果晶振频率为12MHZ,则定时器每接收一个输入脉冲的时间为1us。定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能寄存器(TMOD和TCON)的内容来决定。用指令改变TMOD或TCON的内容后,则在下一条指令的第一个机器周期的S1P1时起作用。(2)定时器/计数器的工作方式MCS-51片内的定时器/计数器可以通过对特殊功能寄存器TMOD中的控制位C/的设置来选择定时器方式或计数器方式;通过对M1M0两位的设置来选择四种工作方式,由于我采用了T0,所以就以T0来加以说明。1、 方式0 当M1M0设置为00时,定时器选定为方式0工作。在这种方式下,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位组成一个13位计数器。 当GATE=0时,只要TCON中的TR0为1,TL0及TH0组成的13位计数器就开始计数;当GATE=1时,此时仅TR0=1仍不能使计数器计数,还需要引脚为1才能使计数器工作。由此可知,当GATE=1和TR0=1时,TH0+TL0是否计数取决于引脚的信号,当由0变1时,开始计数;当由1变0时,停止计数,这样就可以用来测量在端出现的脉冲宽度。 当13位计数器从0或设定的初值,加1到全“1”以后,再加1就产生溢出。这时,置TCON的TF0位为1,同时把计数器变为全“0”。2、 方式1 方式1和方式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器。3、 方式2 方式2把TL0配置成一个可以自动恢复初值(初始常数自动重新装入)的8位计数器,TH0作为常数缓冲器, TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中。 方式2常用于定时控制。例如希望每隔250s产生一个定时控制脉冲,则可以采用12MHz的振荡器,把TH0预置为6,并使C/=0就能实现。方式2不用作串行口波特率发生器。4、 方式3 方式3对定时器T0和定时器T1是不相同的。若T1设置为方式3,则停止工作(其效果与TR1=0相同)。所以方式3只适用于T0。方式0和方式1的最大特点是计数溢出后,计数器全为0,因此循环定时或计数应用时就存在重新设置计数初值的问题,这不但影响定时精度,而且也给程序设计带来不便。方式2就是针对此问题而设置的,它具有自动重新加载功能,因此也可以说方式2是自动重新加载工作方式。在这种工作方式下,把16位计数器分为两部分,即以TL0作计数器,以TH0作预置寄存器,初始化时把计数初值分别装入TL0和TH0中。当计数溢出后,由预置寄存器以硬件方法自动加载。初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在TH0中的计数初值自动加载装入TL0中,然后TL0重新计数,如此重复不止,这不但省去了用户程序中的重装指令,而且有利于提高定时精度。但这种方式下计数值有限,最大只能到256。这种自动重新加载工作方式非常适用于连续定时或计数应用。当为计数工作方式时,计数值的范围是:1-256(28)当为定时工作方式时,定时时间计算公式为:(28-计数初值)x晶振周期x12或 (28-计数初值)x机器周期通过上述四种方式的比较,根据本计时软件设计的要求,所以我们就采用了T0定时器的方式1。2时间调整子程序流程图:图3-2时间调整子程序流程图本次设计中用到了T0和T1进行中断控制,T0和T1用的都是方式一。在中断子程序中放进了显示程序,中断时间为1MS,可以实现数码管的动态扫描且无闪烁感。33 中断程序所谓中断,是指在计算机执行程序过程中,当出现某种情况,如发生停电和其他情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行,而转去执行相应的处理程序,待处理程序执行完毕后,再继续处理执行原来被中断的程序。中断子程序能实现时钟自动走时功能,从而实现计时的运行,在程序设计的过程中有着重要的作用,其流程图为:图3-3中断程序流程图34 按键程序按键硬件电路图设计如下图:在没有键按下去时一直为高电平,有按键按下时变为低电平。单片机以此为判断的依据。来表示每个不同的按钮按下能实现各种不同功能,如:调节定时开灯时间、定时关灯时间等。当单片机查到键盘闭合时就调用按键功能程序,实现相应的功能7。图3-4按键硬件电路图第四章 系统电路与软件调试4.1 硬件调试电路焊接完成之后,就要进行硬件电路的调试。在做本次设计的过程中,遇到了一些故障并作了相应的排除:1、AT89C51管脚的检测管脚很多而且很小,在焊接的过程中注意虚焊。2、数码管的检测将电路接上电源,看数码管是否显示初始值,如果有问题,用万用表检测一下,看时电路问题还是器件的问题,然后再检测各数码管的显示是否完全正常。在我们以前所涉及到的数码管显示当中,我们都是用a、b、c、d、e、f、g、dip和P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7相对应的顺序,是以此来写字型码。在一开始的时候,我们也是这样用的,但是发现其显示总是乱码,经过测试后发现我们买的数码管的引脚和89C52的输出口并不是这样对应的,并且测试后发现其对应方式为按照b、a、f、g、e、d、c、dip的顺序分别和P0口P0.7、P0.6、P0.5、P0.4、P0.3、P0.2、P0.1、P0.0口相对应,改正后写出字型码为0EEH、82H、0DCH、0D6H、0B2H、76H、7EH、0C2H、0FEH、0F6H、00H、0F8H分别对应的是0、1、2、3、4、5、6、7、8、9、熄灭、P十二个字。经查表显示后一切正常。3、按键功能的检测接上电源后,将万用表打到直流电压档,两表笔测量其电压,按了之后,如果有电压差,说明按键是好的,如果没有,就要检查电路和器件的好坏。4、调试最开始时先实现最基本的时钟显示功能,然后在一步一步的扩展后续的功能。在软件调试中有时不能够调好时也要检查相关的硬件,因为有时候总是不能把相应的功能调好时,可能是硬件上的不支持,在此也要多多注意了。所以在调试时要做到软硬件同时调整,为了共同的目的而调试。本次设计在调试中遇到的问题有:数码管上的数字不能很好的显示出现的是乱码,数码管上的最高位(小数点位)在程序中并没有让它显示,但也莫名其妙的显示了,最后经过反复的调试和检查发现在焊接时dip上的引线和其它的线有接触造成的,改好后问题就解决了。这个改好之后又发现还是有乱码,后来发现是在软件给非压缩BCD码定义缓冲区时多定义了两位而造成的。改过之后程序良好运行,没出现其它的问题了。4.2 软件调试硬件调试好程序编好之后,接下来的工作是软件的调试。在这之前,已经调试好硬件部分,确保无故障后,我用仿真机进行软件的调试。首先,建立用户源程序。通过计算机以及开发系统的编辑软件,把用C语言编辑的源程序存到计算机上。然后在仿真系统KeilC51上进行源程序的编译,如发现有语法错误则应改至无误为止。一、对每个子程序进行调试1、对子程序进行编译,检查有无错误语法。2、对子程序功能进行调试,在内存单元设置参数数值,通过运行子程序看CPU、RAM有关单元值是否与程序功能所得到的值相同,经过几次设置,并且设置的值要具有一定代表性,看它所反映的程序功能是否正确,来说明子程序是否有问题,对于子程序都有这样一个一个调试。如我们在调试除法子程序与BCD码转换子程序时,不断地给内存单元设置参数值,运行检查结果,检查程序设计上是否有问题;后来发现是因为给内存单元赋初值时没有按照内存单元前后顺序,导致有些存储单元没有得到应该赋的值。二、总的程序调试1、根据系统要求将事先调试好的子程序结合起来,以总的程序进行汇编,在汇编过程中发现一些错误,比如,将阿拉伯数字的;“零”写成字母“O”;子程序最后少“return”。还有调试子程序指令时出现错误,原因是它所调试用范围比较短,不能满足被调用子程序所在范围,调用就会出错。在调试总的程序时,主要是两个方面电脑连接仿真机;观察数码管显示数据是否正常,按键能否控制显示。4.3 综合调试用仿真机将硬件和程序连接好,将程序进行编译,连接,最后调试。在这里我将我们在调试过程中遇到的问题做一下说明:硬件电路焊接好以后就进入了调试阶段,基于单片机系统的LED计时器的调试,主要集中在对LED显示部分的调试以及单片机的定时器和中断程序的调试上。先是调用显示程序,看六位数码管显示的结果。调试结果:单片机显示共6位;从而检测单片机的显示程序和硬件电路是正确的。4.4 程序固化所有的工作都完成之后,就可以完成程序的烧制,将仿真机一头接5V电压,一头接12V电压,黑线接地,并将AT89C51芯片插在仿真机接口上,在仿真软件中选固化项,这样,就把所有的程序都烧进芯片里去了。这样整个电路接上电源就能脱机进行工作了,我们也就完成了个毕业设计。第五章 总结与分析为期三个多月的毕业设计即将结束了,我完成了路灯控制系统的设计。本系统设计特点:1电路采用动态显示方式,硬件电路比较简单,制作方便。2采用中断定时的方法,准确度高,相对于延时来说计时更加准确。3数据处理速度快,采用了12MHZ相对传统的6M晶振单片机运行速度明显更快。另外,本设计也存在着缺点,那就是驱动能力不强。从刚接到毕业设计课题:我首先是查找一些相关的书籍及资料,并根据实际情况拟定设计方案,从而达到优化方案。在研究设计电路时,最难的是调试了,但在老师和同学的帮助下使得本次设计达到了预定的要求。同时,通过这次毕业设计,在各个方面都有了很大的提高,特别是在理论和实践结合方面使我受益匪浅,使我大学里学习的理论知识在根本上得到一次最完整的实践和提高。也为我即将面临的工作奠定了很好的基础。在本次毕业设计中深深认识到自己的各个方面的不足之处,蹦着提高动手能力以及检测四年所学知识的目的,我严格要求自己,每一环节都认真对待,定期向知道老师报告进展情况和请教不懂的地方,得以完成任务。在以后的工作中,我必须进一步深化在实践中去丰富理论,完善知识结构。由于环境条件的影响,理论与实践还是有一定的差距,这也要求我们在实践中注意检验的积累。致 谢首先感谢我的指导老师吴老师,在做毕业设计和论文的撰写过程中,他给予了悉心的指导和耐心教诲,在他的悉心指导下,我的毕业设计和毕业论文得以顺利完成。在我读书的四年中,电气信息工程学院的老师们对我的学习、生活给予了很大的帮助。在整个学习阶段中,老师严谨的治学态度和以身作则、勤奋塌实的工作作风使我受益匪浅,在此表示我深深的谢意。同时我还要感谢实验室的所有的老师,在毕业设计的进展中,他们给了我很多的关心和帮助,为我们创造一个良好的研究学习环境。我将努力工作,用所学到的知识为社会服务,以出色的工作成绩来回报学校、老师和家人。参考文献1 马忠梅.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2001. 2 陈小忠.单片机接口技术实用子程序M.北京:人民邮电大学出版社,2005. 3 杨将新.单片机程序设计及应用从基础到实践M.北京:电子工业出版社,2006.4 戴佳等.51单片机C语言应用程序设计M.北京:电子工业出版社,2003. 5 李广弟.单片机基础M.北京:北航出版社,20106 ATIF M R,GALASIU A D.Energy performance of daylightlinked automatic lighting contrd systems in large atrium spaces:report on two field-monitored case studiesJ.Elsevier Energy and Buildings,2003,35:441-461. 7 LCS M R,LHY M R. Study of an energy-saving equipment of street light based on MCUJ. ENERGY CONSERVATION, 2007,26: 120-367.8 吴永桥,金康进,施光林.基于AT89C52的日光灯照明节电控制系统J.微型机与应用,2004,23(8):36-38.9 杜军,邱瑞学.PL2101在路灯控制系统中的应用J.国外电子技术. 2003.(9).10 魏秋菊,张华. 一种改进的51单片机大容量数据存储器的系统扩展J. 科技资讯 , 2006,(01) . 11 熊涛,丁辛芳,陈德英.一种新颖的照明控制电路J.传感器技术,1999,18 (5):50-53.12 肖丽仙. 基于单片机的网络化路灯控制系统设计J. 国外电子测量技术 , 2006,(02) 13 高志宏,李锋博.现代照明系统节能探讨J.中国照明电器,2007(7):8-10. 14 陈九江,吴桐,王术,等.教室照明系统的智能控制J.黑龙江大学自然科学学报,2006,23(3):314-316.15 王海伦,叶冬芬.单片机控制的照明智能控制系统J.电气时代,2005(1):121-122.附录一: 硬件电路总体设计图硬件电路原理图附录二 元器件清单电阻: 1K 十二只(R1-R12)排阻: 1K 一只瓷片电容: 20F 两只 (C1、C2) 电解电容: 10F 一只 (C3)集成块: AT89C52按键: 五只 (S1、S2、S3、S4、S5)数码显示管: 六只(LED1-LED6)发光二极管: 4只(D1-D4)石英晶振: 一只(12MHZ)硬制电路版 一块附录三 主程序清单#include / 作为功能切换键按一下为设置现在时间,再按一下为设置开灯时间,再按一下为设置关灯时间,再按一下显示当前时间sbit function = P10; sbit hour_add = P11;sbit hour_sub = P12;sbit minute_add= P13;sbit minute_sub= P14;sbit lamp1 = P30;sbit lamp2 = P31;sbit lamp3 = P32;sbit lamp4 = P33;bit EN_COCLK = 1;bit BEGIN = 0;unsigned char cnt;unsigned char hour;unsigned char minute;unsigned char second;unsigned char half_second;unsigned int ms50;struct time unsigned char hour;unsigned char minute;unsigned char second; ds2;unsigned char code tab = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ CA/unsigned char code choose_bit = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code choose_bit = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;unsigned char idata disdata7;unsigned char idata dissetup7;unsigned char turnon4=0x01,0x02,0x04,0x08;unsigned char key_min_hour = 0;/ 分或秒闪烁unsigned char disp_type = 0;/ 记录时间组unsigned char rn; / 按定时开关键次数/*延时1毫秒*/void delay1ms(unsigned int i) unsigned int a,b; for(a=0;ai;a+) for(b=0;b120;b+);/*显示时钟*/void disp_clock(void)unsigned char display;unsigned char i;disdata0 = hour/10;disdata1 = hour%10;disdata2 = minute/10;disdata3 = minute%10;disdata4 = second/10; disdata5 = second%10;for(i=0; i6; i+) P0 = 0xff;display = tabdisdatai;if(half_second&(i=3)display &= 0x7f;P2 = choose_biti;P0 = display;delay1ms(1);P0 = 0xff;/ 关灯/*显示设置时间值*/void disp_init(void)unsigned char display;unsigned char i;dissetup0 = dsdisp_type-1.hour/10;dissetup1 = dsdisp_type-1.hour%10;dissetup2 = dsdisp_type-1.minute/10;dissetup3 = dsdisp_type-1.minute%10;dissetup4 = dsdisp_type-1.second/10; dissetup5 = dsdisp_type-1.second%10;for(i=0;i=24)hour = 0; break; case 1: if(+ds0.hour=24) ds0.hour = 0; break; case

温馨提示

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

评论

0/150

提交评论