毕业设计(论文)-基于AT89C51的路灯控制系统设计.doc_第1页
毕业设计(论文)-基于AT89C51的路灯控制系统设计.doc_第2页
毕业设计(论文)-基于AT89C51的路灯控制系统设计.doc_第3页
毕业设计(论文)-基于AT89C51的路灯控制系统设计.doc_第4页
毕业设计(论文)-基于AT89C51的路灯控制系统设计.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

路灯控制系统的设计目 录前 言2第一章 绪论31.1 课题的背景和意义31.1.1 单片机的发展41.1.2 单片机的应用412 课题开发的意义5第二章 路灯控制系统的总体设计6第三章 路灯控制系统的硬件设计83.1硬件设计的原则83.2 硬件电路设计的思路93.3时钟电路的设计103.4 复位电路的设计113.4.1 复位电路的可靠性设计113.4.2人工复位123.5 按键电路的设计123.6 显示电路的设计133.6.1显示方式选择133.6.2 LED的驱动和显示143.7路灯电路的设计15第四章 路灯控制器系统的软件设计1631 主程序的设计1632 计时程序的设计1733 中断程序的设计2034 按键程序设计21第五章 系统电路与软件的调试225.1 硬件电路的调试235.2 LCA51的使用245.3 程序的调试与综合调试255.4 程序的烧制26第六章 设计的心得26结 束 语27致 谢28附录一 硬件电路总体设计图29附录二 元器件清单31附录三 主程序清单32附录四 参考文献40前 言随着我国加入世贸(WTO),为了创造一个良好的投资环境,塑造一个美丽的国际化城市,更好的与国际接轨,全国各大城市的市政建设步伐都逐步加快,公路系统蓬勃发展,因此装扮美丽城市夜景的路灯照明工程得以迅猛发展。由于单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此在路灯照明工程中被广泛应用。近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入。单片机技术中的计时系统是单片机在的一个典型的应用。通过计时系统来对时间进行有效的控制。在路灯设计的定时系统中将得到更好的应用.2路灯控制系统在城市中的用途很广泛,本路灯控制器系统针对实际情况的需要进行优化设计的。在本设计中,输入是开关按钮,进行时间控制,显示是六个LED数码管和LED二极管,时间为正常24小时走时,可用按钮调节定时开关时间,达到控制的目的。二极管为模拟路灯的控制,让本设计更加的形象化。此设计中分了三路控制按钮和一路总控制按钮。该设计系统可以实现时间设置路灯的开关,对小时和分钟可以进行调整;启动后进入计时显示,计时用六位数码管显示;当一天时间过去后可以循环继续控制,用六个LED二极管进行模拟显示。第一章 绪论1.1 课题的背景和意义 照明工程迅猛发展,其路灯数量的增大,而且功耗和性能大不提高,因而对路灯定时器控制的要求比较精确. 目前,路灯开关灯控制方法多为“钟控”和“光控”。“钟控”不适应天气突变与季节变化等自然情况;“光控”容易受外部环境干扰,灵敏度低且可靠性较差,二者均不能实现控制开关灯的合理化、科学化。从而会出现:开灯早,关灯晚;或者开灯晚,关灯早的现象。前者会造成巨大的电能浪费,后者会损害城市形象、影响社会治安和交通安全,从而影响城市的投资环境。以上难点,将直接影响城市照明管理水平。而照明管理的高低又将直接影响到城市的市容、投资环境、交通安全和社会治安等,是构建良好的城市环境的重要组成部份,对城市的建设和发展有着重要的意义。总之,随着城市规模的不断扩大,现有的路灯管理的方式方法已远远不能满足城市路灯发展与管理的需要,必须依靠现代化的高科技管理手段。路灯管理工作需要一个以计算机为核心的、自动化的管理手段来替代传统的钟控,光控和普通的路灯监控系统。使整个城市照明监测,决策和管理工作建立在计算机信息网络平台之上。因此,建设现代化的“路灯监控管理系统”已迫在眉睫。 因而单片机在路灯系统中的应用应运而生,下面简略介绍一下单片机的发展过程及其应用。1.1.1 单片机的发展20世纪70年代为单片机发展的初级阶段。以Intel公司的MCS-48系列单片机为典型代表,在一块芯片内含有CPU、并行口、定时器、RAM和ROM存贮器,这是一种真正的单片机。这个阶段的单片机因受工艺和集成度的限制,品种少、CPU功能底、存贮器容量小、I/O部件种类和数量少,只能用在比较简单的场合,单片机的应用未引起足够的重视。 20世纪80年代为高性能单片机的发展阶段。以Intel公司的MCS-51、MCS-96系列单片机为典型代表。出现了不少8位或16位的单片机,这些单片机的CPU和指令系统功能加强了,尤其是具有一些单片机特有的功能,存贮器容量显著增加,外围I/O部件品种多,数量大,包含了A/D之类的特殊I/O部件。单片机应用得到了推广,单片机开始应用到各个领域。 20世纪90年代至今为单片机的高速发展阶段。世界上著名的半导体厂商都重视新型单片机的研制、生产和推广。单片机性能不断地完善,性能价格比显著提高,种类和型号快速增加,市场扩大、竞争激烈。单片机的应用已深入到国民经济的各个领域,由单片机控制的微电脑产品比比皆是。对单片机应用的技术人员来说,选择单片机的自由度大了,但也需要不断地学习和掌握新的应用技术。从性能和用途上看,单片机正朝着面向多层次用户的多品种多规格方向发展,哪一个领域前景广,就有这个领域的特殊单片机出现。既有特别高档的单片机,用于高级家用电器、掌上电脑、复杂的实时控制系统等领域,又有特别廉价、超小型、低功耗单片机,应用于智能玩具等消费类应用领域。31.1.2 单片机的应用 单片机是在一块芯片上集成了一台微型计算机所需的CPU、存储器、输入/输出部件和时钟电路等。因此,它具有体积小、使用灵活、成本低、易于产品化、抗干扰能力强、可在各种恶劣环境下可靠地工作等特点。特别是它应用面广,控制能力强,使它在工业控制、智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。7在计算机应用系统中,除通用外部设备(键盘、显示器、打印机)外,还有许多用于外部通信、数据采集、多路分配管理、驱动控制等接口。如果这些外部设备和接口全部由主机管理,势必造成主机负担过重、运行速度降低,并且不能提高对各种接口的管理水平。如果采用单片机专门对接口进行控制和管理,则主机和单片机就能并行工作,这不仅大大提高系统的运算速度,而且单片机还可对接口信息进行预处理,以减少主机和接口间的通信密度、提高接口控制管理的水平。如绘图仪控制器,磁带机、打印机的控制器等。目前国外的单片机应用已相当普及,国内虽然从1980年开始才着手开发应用,但至今也已拥有数十家专门生产单片机开发系统的工厂或公司,愈来愈多的科技工作者投身到单片机的开发和应用中,并且在程序控制、智能仪表等方面涌现出大量科技成果,可以预见,单片机在我国必将有着更为广阔的发展前景9。 12 课题开发的意义为了适应市场的发展需求,开发出价格低廉、功能更强的路灯控制器,我们将使用AT89C51和7407芯片,AT89C51它不但应用功能强大,而且使用方便、价格便宜可以最大限度的降低成本、增加计时模式和提高计时精确度。本文在内容上主要介绍单片机的内部结构、工作原理及用单片机制作路灯控制器的硬件和软件设计全过程。首先对系统结构进行分析,然后就各个模块的功能进行讲解,具体哪个模块实现什么功能。本文从单片机的背景与现状,路灯控制器的硬件软件结构与实现来叙述如何运用汇编语言实现系统设计。本路灯控制器的设计包含两部分:路灯控制器的硬件设计和软件设计。阅读完本文应对路灯控制器系统的设计全过程有一定的了解。第二章 路灯控制系统的总体设计我们在设计路灯系统控制器之前,先了解系统所要实现的各个功能情况。在设计的过程中,除了要让硬件电路简洁外,还要兼顾软件不能过于复杂。这样才能达到设计的实际要求,硬件支持软件,软件带动硬件。本电路设计的主要思路是:对路灯实现实时控制,并且可以进行单路控制和总控制。最基本的程序是时钟显示程序,之后的设定开灯和关灯时间并能对路灯进行实时控制以及对路灯的点控都是在基本程序上扩展而得到的。时钟显示程序中最关健是否对数码管进行动态扫描的子程序放在哪里,本课设中把动态扫描程序放在T0中断里,中断的时间是非2MS,也就是说每2MS扫描一次,扫描频率非常快,利用了人眼的视觉残留特性,使程序更加简洁.调时程序和对路灯的单路控制程序都是按键进行控制的.所以对对按键的控制显得尤为重要了.本课设主程序中一直在对所有的按键进行扫描,当按键一有动作,在第一时间就执行相应的程序,达到实时控制的目的.其中在按键扫描时要进行去抖动控制,这一功能在软件中进行实现.根据任务书上的要求进行综合分析,总设计方案分为以下几个步骤:1) 根据路灯控制系统的功能,选用合理元器件并画出总体原理图。 (见附录)2) 画出各个程序流程图的各模块。3) 根据流程图编写出各模块的程序。4) 完成主程序及实现模块调用。5) 硬件电路的焊接及调试。6)硬件软件的综合调试及程序烧制。根据上述步骤,设计总体方案的流程图可简化为如下:第三章 路灯控制系统的硬件设计3.1硬件设计的原则一般对于大型的硬件设计的主要思路如下:一个大型的单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,二是系统的配置,即按照系统功能要求配置外围设备,要设计合适的接口电路。 系统的扩展和配置应遵循以下原则: 1、尽可能选择典型电路,为硬件系统的标准化、模块化打下良好的基础。 2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求。3、硬件结构应结合程序设计方案一并考虑。考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构4、系统中的相关元器件要尽可能做到性能匹配。5、可靠性及抗干扰设计是硬件设计必不可少的一部分。 6、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,可通过增设驱动器来增强驱动能力,本设计采用7407芯片来驱动数码管的显示。 7、尽量减少外围。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性1。因而在选择器件上尽量的简洁。由于本次的毕业设计是一个单片机的小型系统,所以对于上述需要注意的事项在这次设计中并不需要面面具到,我总结了一下,在这次设计中需要注意的问题有: 1) 注意硬件方案和软件方案的结合.2) 注意电路的驱动能力.3) 电路的抗干扰性能.4) 对元器件的保护能力,要在电路中对电流敏感元器件进行限流控制.硬件设计是本次设计的基础,它的成功与否关系到本次毕业设计的成败。首先我们依然是对系统进行分析,分析它有些什么功能,用什么样的器件才能实现。根据任务书的要求,分析出需要的功能有:具备时钟功能、时间调节的调节、二极管(模拟路灯)的显示功能、定时开灯关灯的时间调整功能、按键发控制功能。基于以上功能要求,我们决定使用AT89C51芯片,显示器件选用数码管(6个),通过7407正向驱动,驱动数码管的显示。数码管采用动态显示。最终确定的结构框图为:单片机时钟电路复位电路按键输入驱动电路数码管显示二极管显示3.2 硬件电路设计的思路通过硬件电路的分析,当开机后,经过上电复位,时钟显示为12:00:00,这时可以调整时、分、秒按钮进行精确调整到当前时间,进行正常走时。开机后系统内部自定义开路灯时间为18:00:00,关路灯时间为6:00:00,如果不做调整的话,时间就是下午六点钟开灯,早晨6点钟关灯,但春、夏、秋、冬四季的昼夜并不相等,为了更好的节省资源(电力)。本设计中可以进行手动调整,根据四季的变化来调整开路灯和关路灯的时间,更有效的节省资源。本设计中另外的一大特点就是在夜晚11:30的时候,路灯会熄灭一半,这种设计也是为了节省资源,因为夜深人静的时候,并不需要太多的路灯照明整个路面,只需要点点灯光就行。然后到早晨六点钟或自己重新设定的时间的时候在关闭其它的路灯。本次设计中共用到了十个按钮,和六个发光二极管,用来控制路灯和调整时间。有两竖排按钮,第一排从上到下编号为、。第二排从上到下依次是、。为调整秒钟按钮,为调整分钟按钮,为调整小时按钮,为进入调整开灯的时间按钮,为进入调整关灯的时间按钮,为退出调整开灯和关灯的按钮,只有通过它才能有效的退出定义开灯和关灯的调整状态,为一路灯的控制开关,为二路灯的控制开关,为三路灯的控制开关,为总控制开关。3.3时钟电路的设计时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的。晶振的选择:6MHz的晶振,其机器周期是2us。12MHz的晶振,其机器周期是1us, 也就是说在执行同一条指令时用6MHz的晶振所用的时间是12MHz晶振的两倍。为了提高整个系统的性能我选择了12MHz的晶振。振荡方式的选择:内部振荡方式,MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。这样就构成了内部振荡方式外部振荡方式是把已有的时钟信号引入单片机内。这种方式适合用来使单片机的时钟与外部信号一致。在我的这个设计中没有也无需与外部时钟信号一致,所以我选择了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振我选择了12MHz,相对于6MHz的晶振,整个系统的运行速度更快了。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值我选择了30pF。内部振荡方式所得的时钟信号稳定性高。3.4 复位电路的设计3.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从一个随机的状态开始工作,系统就不能正常运转。上电复位电路3.4.2人工复位 除上电自动复位以外,常常需要人工复位,将一个按钮开关并联于上电自动复位电路,按一下开关就RST端出现一段时间的高电平,即使器件复位。如图所示上电和开关复位而我们在这次的毕业设计中运用的上电复位电路.即只要一接+5V 电压,系统就会自动的复位.出于可靠性和适时性的考虑,我选择了简单实用的上电复位电路上电后,由于电容充电,使RST持续一段高电平时间。从而实现上电复位操作。我选择的C=10uF。3.5 按键电路的设计在单片机系统中,通常有且仅有一键按下才视为按键有效。有效的确认方式通常又可以分为两类。第一类为按下-释放键方式,系统要求从按下倒释放键才算一次有效按键。另一类为连击方式,就是一次按键可以产生多次击键效果,其连击频率可自己设定,如3次/秒、4次/秒等。根据设计的需要,我选择了按下-释放方式,电路如下图9所示。电路为低电平有效输出方式,当按键按下时输出为低电平。图9 开关电路图在按下-释放键方式时,系统先判断是否有键按下,若不用硬件去抖,则同时进行软件去抖,确认有键按下,然后等待至该按键释放才算依次按键,注意释放键判断同样要进行去抖处理。3.6 显示电路的设计3.6.1显示方式选择LED数码显示器时常用的显示器之一,我用的是单片机并口设计的LED数码显示电路。LED有着显示亮度高、响应速度快的特点,最常用的是七段式LED显示器,又称数码管。七段式LED显示器内部由7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。从各发光段电极连接方式分有共阳极和共阴极两种。所谓共阳方式是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。显示方式的论证:方案一:静态显示方式,就是把共阴极或共阳极的公共端(位选端)连接在一起接地或接5V电源,形成位控端;每一位的段选线(adp)作为段控端。方案二:动态显示方式,是单片机应用系统中最常用的显示方式,把所有的显示器的同名段选端选线相互并接在一起,由同一个8位并行输出口控制;而各显示器的位选线则分别由不同输出口线控制端。这样各显示位不能同时显示不同的数字或字符。因此要选择扫描的方法,即从左到右(或从右到左)依次轮流使每位显示器显示数字或字符并保留一段时间(通常位1ms),由于LED的余辉特性以及人眼视觉的惰性,尽管各位显示器实际上使分时断续地显示,但只要适当选取扫描频率,给人眼的视察印象就会是在连续地显示,而察觉不到闪烁现象相对与静态显示动态显示方式虽然占用的CPU空间较多,但使用的硬件少,所占用的端口也较静态显示方式少,可以大大的节约系统的端口资源,所以根据我设计中没有扩展端口,端口资源比较紧张,因此我才用的是动态显示,能节约线路板空间,而且效果也不亚于静态显示3.6.2 LED的驱动和显示在电路设计的过程中,单片机的的P1.0-P1.7作为段选输出口,经上拉电阻加到数码管的A-G和DP上,P2.0-P2.5作为位选输出口,经7407正向驱动分别加到数码管的COM端。LED的驱动问题是显示设计中的一个非常重要的环节。如果驱动能力差,显示器高度就低;且驱动器长期在超负荷下运行很容易损坏。下面就简单介绍选择LED驱动器时应注意的问题。显示分为静态显示和动态显示两种方式,由于这两种方式有本质的不同,因此在选择LED驱动器时,一定要分清显示方式。如果是静态显示,则LED驱动器的选择较为简单,只要驱动器的驱动能力与显示器的工作电流相匹配即可,而且只需要考虑段的驱动,因为,共阳极接+5V,而共阴极接地,所以位的驱动无须考虑。动态显示则不同,由于一位数据的表示是由段和位选信号共同配合完成的,因此必须同时考虑段与位的驱动能力和位的驱动能力,而且段的驱动能力决定位的驱动能力。段的驱动能力是由驱动能力决定位的驱动能力。段的驱动能力是由显示器的亮度决定的,通过发光的二极管的电流较大,其亮度也就越多,对于静态显示器,当某位电量时,此位中点亮的段通过恒定的电流;而对于动态显示器,此电流却是以一定脉冲方式出现的,其峰值电流来考虑。我采用的是三个数码管集成在一起的管子,这种管子的好处是在接线的时候比较简单,三个COM端接位选接口,非常适合用于动态显示。我们所采用的是动态显示,虽然有闪烁感,占用的CPU空间较多,但使用的硬件少,能节约线路板空间。下图为数码显示的硬件电路设计:说明:8个上拉电阻是增加D0-D8的驱动能力的.使其更清楚的显示.7407也是增加驱动能力的.3.7路灯电路的设计 本设计中用的是六个发光二极管模拟三路路灯控制,每两个二极管用来代替一条街或一个干道的路灯,在加上键盘的点动控制,实现路灯的多路实时控制。原理图如下:其中电阻R9R14为限流电阻,用来保护二极管的。第四章 路灯控制器系统的软件设计31 主程序的设计本软件设计的程序设计包括判断各个按钮按下之后能够实现什么功能,判断开灯关灯的时间和手动控制路灯。其中,动态显示是在中断子程序中进行的,每一次中断的时间为2MS,每中断一次扫描一次,实现动态显示。正常走时的动态显示是在T0中断中进行动态扫描的,设置开灯关灯的时间是在T1中断中进行动态扫描的。主程序流程图为: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。这种自动重新加载工作方式非常适用于连续定时或计数应用。当为计数工作方式时,计数值的范围是:1256(28)当为定时工作方式时,定时时间计算公式为:(28-计数初值)x晶振周期x12或 (28-计数初值)x机器周期通过上述四种方式的比较,由于方式2为自动恢复初值的8位定时器,根据本倒计时软件设计的要求,所以我们就采用了T0定时器的方式2。2时间调整子程序流程图:本次设计中用到了T0和T1进行中断控制,T0和T1用的都是方式一。在中断子程序中放进了显示程序,中断时间为2MS,可以实现数码管的动态扫描且无闪烁感。33 中断程序的设计所谓中断,是指在计算机执行程序过程中,当出现某种情况,如发生停电和其他情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行,而转去执行相应的处理程序,待处理程序执行完毕后,再继续处理执行原来被中断的程序中断子程序能实现时钟自动走时功能,从而实现倒计时的运行,在程序设计的过程中有着重要的作用,其流程图为:34 按键程序设计按键硬件电路图设计如下图:在没有键按下去时一直为高电平,有按键按下时变为低电平。单片机以此为判断的依据。来表示每个不同的按钮按下能实现各种不同功能,如:调节定时开灯时间、定时关灯时间等。当单片机查到键盘闭合时就调用按键功能程序,实现相应的功能7。第五章 系统电路与软件的调试5.1 硬件电路的调试 电路焊接完成之后,就要进行硬件电路的调试。在做本次设计的过程中,遇到了一些故障并作了相应的排除:1、 AT89C51管脚的检测管脚很多而且很小,在焊接的过程中注意虚焊。2、数码管的检测 将电路接上电源,看数码管是否显示初始值240000,如果有问题,用万用表检测一下,看时电路问题还是器件的问题。然后再检测各数码管的显示是否完全正常。在我们以前所涉及到的数码管显示当中,我们都是用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十二个字。经查表显示后一切正常。7407是同相驱动器,在本次设计中,我们用其来驱动数码管显示,很长一段时间,数码管的显示位数和亮度都是正常的,但后来发现有两位数码管不显示了,因为其它的数码管能够正常显示,所以判定字型口(P0口)是正常的,遍一个小程序来看出现问题的P1.1、P1.3口能否正常工作,然后用万用表来看P1.1、P1.3口是否过5秒钟其电平就翻转一次,经测试,发现P1.1、P1.3口是正常工作的,因此判定肯定是在89C52和和显示电路之间出现问题了,也就是同相驱动器7407出现问题了,所以就查7407接到P1.1、P1.3口的地方,用万用表测试过后发现的确是这两个输出口出现问题了,换了新的7407过后,一切显示正常。3、按键功能的检测接上电源后,将万用表打到直流电压档,两表笔测量其电压,按了之后,如果有电压差,如果有,说明按键时好的,如果没有,就要检查电路和器件的好坏。4、调试最开始时先实现最基本的时钟显示功能,然后在一步一步的扩展后续的功能。在软件调试中有时不能够调好时也要检查相关的硬件,因为有时候总是不能把相应的功能调好时,可能是硬件上的不支持,在此也要多多注意了。所以在调试时要做到软硬件同时调整,为了共同的目的而调试。本次设计在调试中遇到的问题有:数码管上的数字不能很好的显示出现的是乱码,数码管上的最高位(小数点位)在程序中并没有让它显示,但也莫名其妙的显示了,最后经过反复的调试和检查发现在焊接时dip上的引线和其它的线有接触造成的,改好后问题就解决了。这个改好之后又发现还是有乱码,后来发现是在软件给非压缩BCD码定义缓冲区时多定义了两位而造成的。改过之后程序良好运行,没出现其它的问题了。5.2 LCA51的使用在本次调试中要用到LCA51软件,所以我就简略的介绍一下LCA51软件。LCA51软件是AEDK系列仿真机的调试软件。软件支持AEDK所有系列的51类仿真机,对于各种型号仿真机,软件功能上会稍有不同,比如最多可设置的断点数,支持的最高波特率等等,使用时请查阅相应的仿真机使用手册。LCA51软件是基于WINDOWS 95/98操作平台的多窗口编辑、调试软件。软件可使用两种界面方式,用户可以按个人习惯改变工作界面。软件采用多窗口和船坞化窗口相结合的标准调试界面方式,界面友好,使用方便。LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词。软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。用户可同时打开多个窗体编辑、调试、变量观察。用户可在线对源文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。二、调试主要方法和技巧通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。45.3 程序的调试与综合调试熟悉了LCA51软件,硬件调试好程序编好之后,接下来的工作是软件的调试。在这之前,我们已经调试好硬件部分,确保无故障后,我们用仿真机进行软件的调试。首先,我们建立用户源程序。通过计算机以及开发系统的编辑软件,把用汇编语言编辑的源程序存到计算机上。然后在仿真系统LCA51上进行源程序的编译,如发现有语法错误则应改至无误为止。一、对每个子程序进行调试1、对子程序进行汇编,检查有无错误语法。2、对子程序功能进行调试,在内存单元设置参数数值,通过运行子程序看CPU、RAM有关单元值是否与程序功能所得到的值相同,经过几次设置,并且设置的值要具有一定代表性,看它所反映的程序功能是否正确,来说明子程序是否有问题,对于子程序都是这样代表性,看它所反映的程序功能是否正确,来说明子程序是否有问题,对于子程序都有这样一个一个调试。如我们在调试除法子程序与BCD码转换子程序时,不断地给内存单元设置参数值,运行查结果,检查程序设计上是否有问题;后来发现是因为给内存单元赋初值时没有按照内存单元前后顺序,倒数有些存储单元没有得到应该赋的值。二、总的程序调试1、根据系统要求将事先调试好的子程序结合起来,以总的程序进行汇编,在汇编过程中发现一些错误,比如,将阿拉伯数字的;“零”写成字母“O”;子程序最后少“RET”;所有程序最后少了“END”;还有调试子程序指令(ACALL)时出现错误,原因是它所调试用范围比较短,不能满足被调用子程序所在范围,这时只要把ACALL换成LCALLL,就能被调用。1、 在调试总的程序时,主要是两个方面电脑连接仿真机;观察LED 数码管显示数据是否正常,按键能否控制显示。用仿真机将硬件和程序连接好,将程序进行编译,连接,最后调试。在这里我将我们在调试过程中遇到的问题做一下说明:硬件电路焊接好以后就进入了调试阶段,基于单片机系统的LED计时器的调试,主要集中在对LED显示部分的调试以及单片机的定时器和中断程序的调试上。先是调用显示程序,看六位数码管显示的结果。调试结果:单片机显示240000位;从而检测单片机的显示程序和硬件电路是正确的。5.4 程序的烧制所有的工作都完成之后,就可以完成程序的烧制,将仿真机一头接5V电压,一头接12V电压,黑线接地,并将AT89C51芯片插在仿真机接口上,在仿真软件中选固化项,这样,就把所有的程序都烧进芯片里去了。这样整个电路接上电源就能脱机进行工作了,我们也就完成了个毕业设计。第六章 设计的心得本系统设计特点:1电路采用动态显示方式,硬件电路比较简单,制作方便。2采用中断定时的方法,准确度高,相对于延时来说计时更加准确;3数据处理速度快,采用了12MHZ相对传统的6M晶振单片机运行速度明显更快;4电路采用动态显示方式,所以外围器件少,而且容易焊接。另外,本设计也存在着缺点,那就是计时的精度不够高。结 束 语 为期三个多月的毕业设计即将结束了,在这两个月里我和*、*两位同学一起完成了篮球比赛计时器系统。其中我主要任务是完成篮球比赛计时器的计时软件的设计。毕业设计作为综合性的设计,它不同于以前教学中的实验、课程设计等实践环节。以前的所做的一些设计主要是根据相关的课本及老师所给资料去完成的,有一定的参照性,所以相对而言比较简单,不能完全达到锻炼自己动手能力的目的。而毕业设计则是对我们大学四年所学知识的一个综合的训练及考核,是对所学知识的应用能力和大学所学理论知识对实践技能相结合的全面的检验。并对我们如何根据要做的课题对现有的资料进行理解和运用的能力的考核。因此,我们三人小组齐心合力,真正做到了理论联系实际,把以前所学的知识综合贯通进行实践,并在实践中不断学习和自我完善。从刚接到毕业设计课题:创新实验平台的开发以来,我们首先是查找一些相关的书籍及资料,然后是小组统筹分析设计,并根据实际情况拟定设计方案,从而达到优化方案。在研究设计电路时,虽然电路较复杂,但是我们优化了电路设计,这也省去了一部分时间,最难的是调试了,但在老师的帮助下,我们通力合作,在大家的努力下是本次设计达到了预定的要求。同时,通过这次毕业设计,我们在各个方面都有了很大的提高,特别是在理论和实践结合方面使我们受益匪浅,使我们大学里学习的理论知识在根本上得到一次最完整的实践和提高。也为我即将面临的工作奠定了很好的基础。同时,在本次毕业设计中深深认识到自己的各个方面的不足之处,蹦着提高动手能力以及检测四年所学知识的目的,我严格要求自己,每一环节都认真对待,定期向知道老师报告进展情况和请教不懂的地方,得以完成任务。在以后的工作中,我们必须进一步深化在实践中去丰富理论,完善知识结构。由于环境条件的影响,理论与实践还是有一定的差距,这也要求我们在实践中注意检验的积累。致 谢首先感谢我的指导老师*老师,在做毕业设计和论文的撰写过程中,他给予了悉心的指导和耐心教诲,在他的悉心指导下,我的毕业设计和毕业论文得以顺利完成。在我读书的四年中,电子信息工程学院的老师们对我的学习、生活给予了很大的帮助。在整个学习阶段中,老师严谨的治学态度和以身作则、勤奋塌实的工作作风使我受益菲浅,在此表示我深深的谢意。 同时我还要感谢实验室的所有的老师,在毕业设计的进展中,他们给了我很多的关心和帮助,为我们创造一个良好的研究学习环境。还要感谢和我一起做毕业设计的*、*两位同学,在一起的学习和探讨,给我留下了许多难忘的回忆。 在此,祝他们在未来的岁月里生活幸福!我将努力工作,用所学到的知识为社会服务,以出色的工作成绩来回报学校、老师和家人。附录一: 硬件电路总体设计图硬件电路总体设计图 硬件电路原理图附录二 元器件清单电阻: 100 六只(R9-R14) 330 八只 (R1-R8) 10K 十只(R15-R24)瓷片电容: 20F 两只 (C1、C2) 电解电容: 10F 一只 (C3)集成块: 二片 (AT89C52、SN7407N)按键: 十只 (S1、S2、S3、S4、S5、S6、S7、S8、S9、S10)数码显示管: 六只(LED1-LED6)发光二极管: 六只(D1-D6)石英晶振: 一只(12MHZ)导线若干附录三 主程序清单;*;* 89C51 7407 *;*;*;* 定义寄存器单元和位地址*;*SECOND EQU 30H;秒寄存器MINITE EQU 31H;分寄存器HOUR EQU 32H;时寄存器DISPBUF EQU 40H;连续六单元存放非压缩BCD码DISPBIT EQU 48H;第几位显示T2SCNTA EQU 49H;1秒钟计数器T2SCNTB EQU 4AHTEMP EQU 4BHKLEQU 53H;开灯分单元寄存器KHEQU54H;开灯时单元寄存器GLEQU 55H;关灯分单元寄存器GHEQU 56H;开灯时单元寄存器HOURK BIT P0.2;秒按纽MINITEK BIT P0.1;分按纽SECONDK BIT P0.0;时按纽KDENGBIT P0.3;开灯时间调节按纽GDENGBIT P0.4;关灯时间调节按纽K1BIT P0.5;调节时间结束按纽K2BIT P0.6;一路灯控制K3BITP2.7;二路灯控制K4BITP0.7;二路灯控制K5BIT P2.6 ;总控制;*;* 定义结束 *;*ORG 00H LJMP START ORG 0BH;T0中断入口 LJMP INT_T0 ORG 1BH;T1中断入口 LJMP INT_T1START: MOV SP,70H ;设置推栈 MOVP0,#0FFHMOV P3,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV SECOND,#00H;设置开机初始时间 MOV MINITE,#00H MOV HOUR,#12 MOV DISPBIT,#00H MOV T2SCNTA,#00H MOV T2SCNTB,#00H MOV TEMP,#00H LCALL DISP MOV TMOD,#11H;定时器T0,T1设置为方式一 MOV TH0,#248;设置T0计满一次为2MS MOV TL0,#48 MOV TH1,#248;设置T1计满一次为2MS MOV TL1,#48 MOV KL,#00H;设置路灯开始亮的初始时间 MOV KH,#12H MOV GL,#00H;设置开机关闭的初始时间 MOV GH,#6 SETB TR0;T0开中断,开始计数 SETB ET0 CLR TR1 CLR ET1;T1关中断,不计数 SETB EA;开中断WT: LCALL MM;调调整时间子程序JB KDENG ,NK4;判断设置开灯时间的按扭是否被按下LCALL DELY10MS;软件去抖动JB KDENG ,NK4CLR TR0;T0关中断,不计数clr ET0SETB TR1;T1开中断,开始计数SETB ET1MOV 50H,SECOND;保存正常计时的时分秒,返回时好恢复MOV 51H,MINITEMOV 52H,HOURMOV SECOND,#00H;加载开灯时间初始值MOV MINITE,KLMOV HOUR,KHLCALL DISP;调转换BCD码子程序L1:lcall NK1;掉时分调整子程序JB K1,L1;判断调整时间结束按扭是否被按下MOV KL,MINITE;保存调整时间值MOV KH,HOURMOV SECOND,50H;恢复时钟MOV MINITE,51HMOV HOUR,52Hlcall dispCLR TR1;T1关中断,不计数CLR ET1SETB TR0;T0开中断,开始计数SETB ET0NK4:JB GDENG ,NK5;判断设置关灯时间的按扭是否被按下LCALL DELY10MS;软件去抖动JB GDENG ,NK5CLR TR0;T0关中断,不计数clr ET0SETB TR1;T1开中断,开始计数SETB ET1MOV 50H,SECOND;保存正常计时的时分秒,返回时好恢复MOV 51H,MINITEMOV 52H,HOURMOV SECOND,#00H;加载关灯时间初始值MOV MINITE,GLMOV HOUR,GHLCALL DISP;调转换BCD码子程序L2:lcallNK1;掉时分调整子程序JB K1,L2;判断调整时间结束按扭是否被按下MOV GL,MINITE;保存调整时间值MOV GH,HOURMOV SECOND,50H;恢复时钟MOV MINITE,51HMOV HOUR,52Hlcall dispCLR TR1;T1关中断,不计数CLR ET1SETB TR0;T0开中断,开始计数SETB ET0NK5:mov a,second;判断是否到开灯时间cjne a,#0,c1MOV A,KLMOV B,MINITECJNE A,B,C1LCALL DELY10MSLCALL DELY10MSMOV A,KHMOV B,HOURCJNE A,B ,C1MOV P3,#0C0H;路灯全开MOV TEMP,#0FFHC1:mov a,second;判断是否到关灯时间cjne a,#0,c2MOV A,GLMOV B,MINITECJNE A,B,C2MOV A,GHMOV B,HOURCJNE A,B,C2MOV P3,#0FFH;路灯全关MOV TEMP,#00HC2:mov A,SECONDCJNE A,#0,C3MOV A,MINITECJNE A,#30,C3MOV A,HOURCJNE A,#23,C3MOV P3,#11110001BC3:JB K2,F1;一路灯控制LCALL DELY10MSLCALL DELY10MSJB K2,F1CPL P3.0CPL P3.3JNB K2,$F1:JB K3,F2;二路灯控制LCALL DELY10MSLCALL DELY10MSJB K3,F2CPL P3.1CPL P3.4JNB K3,$F2:JB K4,F3;三路灯控制LCALL DELY10MSLCALL DELY10MSJB K4,F3CPL P3.2CPL P3.5JNB K4,$F3:JB K5,F4;总路灯控制LCALL DELY10MSLCALL DELY10MSJB K5,F4CPL P3.0CPL P3.1CPL P3.2CPL P3.3CPL P3.4CPL P3.5JNB K5,$F4:LJMP WT;跳回起点重新开始;*;* 十毫秒定时子程序 *;*DELY10MS: MOV R6,#10;10MS延时程序D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET;*;* 定时结束 *;*;*;* 时间调整子程序*;* MM:JB SECONDK,NK1;判断秒按扭是否被按下 LCALL DELY10MS JB SECONDK,NK1 INC SECOND;按下的话秒单元加一 MOV A,SECOND CJNE A,#60,NS60;是否到六十秒 MOV SECOND,#00H;到六十秒单元清零NS60: LCALL DISP;调转换BCD码子程序 JNB SECONDK,$NK1: JB MINIT

温馨提示

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

最新文档

评论

0/150

提交评论