欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    基于51单片机的路灯控制系统.docx

    • 资源ID:656476       资源大小:271.01KB        全文页数:28页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机的路灯控制系统.docx

    摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那末靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式不少。本系统采用STC-51系列单片机T89C51来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的Pl口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过双位数码管),浮现交通意外的情况下,必须使东西南北方向上的显示灯都为红灯,以便交通警察及时处理。本系统实用性强、操作简单、扩展功能强。关键词:单片机交通灯电路原理图Proteus仿真图AT89c51C程序目录第一章设计任务-3-第二章设计目的-4-第三章设计思路-4-第四章STC-51芯片简介-5-第五章基础知识-8-(一)管脚说明-8-(二)定时器/计数器,9-(三)定时器/计数器的概念-10-1.89C51单片机内有两个可编程的定时器/计数器TO、Tl-10-2 .定时器/计数器的相关寄存器-10-(四)定时器/计数器的4种工作方式-11-1.方式0-11-3 .方式1-11-4 .方式2-11-5 .方式3-12-(五)定时器/计数器的编程-12-1 .定时器/计数器的初始化-12-2 .定时器/计数器初值的计算-12-第六章主程序设计-13-(一)系统程序流程图如图6-1所示-13-(二)设计流程图如图6-2所示-13-(三)程序的执行表达表如表6-3所示-14-第七章PrOteUS仿真图及各单元电路-15-3 .程序正常仿真中如图72所示-15-4 .时钟震荡电路-15-5 .复位电路-16-6 .紧急情况-16-附录一:C程序源代码-18-附录二:原理图-26-附录三:元件清单表-27-附录四:主要参考文献-27-第一章设计任务交通灯的硬件和软件设计,本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭并且都有5秒的准备时间。然后转状态一东西绿灯通车,南北为红灯。过段时间转状态二,东西黄灯闪几次转红灯,延时几秒,南北仍为红灯。再转状态三南北绿灯通车,东西红灯。过段时间转状态四南北绿灯闪几次转黄灯,延时几秒,东西仍为红灯。最后循环至状态一。交通信号灯摹拟控制系统设计利用单片机的定时器定时,控制十字路口红绿灯交替点亮和熄灭,并且用LED数码管显示时间,但由于时间及水平的不足,在此实验中不显示。用十二个发光二极管代替交通灯进行实验设计。这次设计是单片机应用技术(C语言版)课程的综合训练,我们通过理论学习,课题选择,资料查阅,软、硬件设计,系统调试等环节,巩固所学的知识及提高应用水平.在此我们要学会从提出问题,观察与分析问题,到最终解决问题科学方法.提高自己的思维能力和动手能力,在设计中获得一些实操经验,更是要培养我们的工作作风和工作态度。为今后的毕业设计、及从事单片机控制系统的设计与维护奠定坚实的基础。这次课题设计的意义在于通过具体的控制系统的设计,掌握单片机控制系统设计的普通方法和处理问题的思路,特殊是一些常用的技术手段。使我们能在实践教学环境中积累设计经验,开辟思维空间,全面提高个人的综合能力第二章设计目的课程设计是本专业集中实践环节的主要内容之一。训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。学生通过所做课题,熟悉单片机应用系统开辟研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。例如组成系统、编程、调试、绘图等。使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。通过本课程设计,主要达到以下目的:1 .使学生增进对单片机的感性认识,加深对单片机理论方面的理解。2 .使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。3 .使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础第三章设计思路交通灯的变化规律按照常规我们假设一个十字路口为东西(主干道)南北(支干道)走向。初始状态为状态1:东西(主干道)方向红灯,南北(支干道)方向红灯。经过过一段时间(5S)转换状态2:东西(主干道)方向转为绿灯,南北(支干道)方向红灯。并延时一段时间(25S)。再转换到状态3:东西(主干道)方向黄灯闪烁,南北(支干道)方向红灯。过一段时间(5S)转换到状态4:东西(主干道)方向红灯,南北(支干道)方向绿灯。并延时一段时间(25S)转换到状态5:东西(主干道)红灯,南北(支干道)黄灯闪烁,并延时一段时间(5S)后回到状态2。在这些状态下,都有时钟倒数计时。第四草STC-51芯片简介STC-51单片机内部结构如图4-1所示,8051是STC-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或者代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM惟独128个,可存放读写的数据,运算的中间结果或者用户定义的字型表。805!内部给构图4-1程序存储器(RoM):8051共有4096个8位掩膜RoM,用于存放用户程序,原始数据或者表格。定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或者计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P0、PhP2或者P3),用于对外部数据的传输。全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051内置最高频率达12MHZ的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(HarVard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(PrinCeton)结构。INTEL的STC-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。STC-51的引脚说明:STC-51系列单片机中的80318051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:STC-51的引脚说明:STC-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图4-2是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:'X1ALtd.X.£ ±±±±XIAL?Pl OWiaxoo PC .I ADI M22 MyAtI、 MJ4,D1P0.U PC .6X0$ PO 727HOfM PZIfA9 PJ RAIQ P2A11 P2 4/A12 P2S/A13 P2C/A14 F27M5P3t>>- I TDP32#iP3fP34/D"SEP36vJFPl,田图4-2Pin9:RESET/V号位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上浮现24不时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0"。RESET由高电平下降为低电平后,系统即从OOOOH地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。8051的复位方式可以是自动复位,也可以是手动复位,见下图4o此外,RESET八,还是一复用脚,V掉电此间,此脚可接上备用电源,以保证单片机内部RAM向数据不丢失。Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当做一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。如果单片机是EPROM,在编程此间,将用于输入编程脉冲。Pi1129:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将浮现在PO和P2口上,外部程序存储器则把指令数据放到PO口上,由CPU读入并执行。Pin31:EA/V程序存储器的内外部选通线,8051和8751单片机,内置有4kB的PP程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的803LEA端必须接地。在编程时,EA/V脚还需加之21V的编程电压。第五章基础知识(一)管脚说明VOC:供电电压。OT:接地。PO11:PO口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当PO口的管脚第一次写1时,被定义为高阻输入。PO能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,PO口作为原码输入口,当FIASH进行校验时,PO输出原码,此时PO外部必须被拉高。Pl口:Pl口是一个内部提供上拉电阻的8位双向I/O口,Pl口缓冲器能接收输出4TTL门电流。Pl口管脚写入1后,被内部上拉为高,可用作输入,Pl口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,Pl口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个HL门电流,当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/INTO(外部中断0)P3.3/INTl(外部中断1)P3.4TO(记时器0外部输入)P3.5Tl(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6o因此它可用作对外部输出的脉冲或者用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置Oo此时,ALE惟独在执行MOVX,MOVC指令是ALE才起作用。此外,该引脚被稍微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每一个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不浮现。/WVIP:当须保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTALl:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。8951是片内无程序存储器的供应状态芯片.因此,其最小应用系统必须在片外扩展EPRoM.外接程序存储器的地址线A8-A15由P2口提供;A0-A7由PO口通过地址锁存器提供.地址锁存器的锁存信号为ALE.指令数据由PO口读入.程序存储器(二)定时器/计数器定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。(三)定时器/计数器的概念1.89C51单片机内有两个可编程的定时器/计数器TOXTl当定时器/计数器用作“定时器”时,每经过1个机器周期(12个时钟周期),计数器加L当定时器/计数器用作“计数器”时,计数器在对应的外部输入管脚(TO为P3.4引脚,Tl为P3.5引脚)上每发生一次1到0的跳变时加1。使用“计数器”功能时,外部输入每一个机器周期被采样一次。当某一周期管脚状态采样为高电平而下一周期采样为低电平时,计数器加I0由于检测下降沿跳变需要两个机器周期(24个时钟周期)的时间,所以技术频率最大值只能为时钟周期的124o计数器对外部输入信号的占空比并无限制,但为了保证给定的电平信号在其改变之前至少被采样一次,外部输入信号必须至少保持一个完整的机器周期。2.定时器/计数器的相关寄存器与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定时器/计数器控制寄存器(TCON)。TCON已经在2.5节受控输出实例中介绍过,因此,在本例中主要介绍TMOD寄存器。定时器/计数器工作方式寄存器(TMOD),字节地址89H,不可进行位寻址。定时器/计数器工作方式寄存器(TMOD)的8位分为两组,高4位控制Tl,低4位控制TO。TMOD每一位的功能如下。GATE:门控位。GATE=O,仅由运行控制位TRX(X=O,1)=1来启动定时器/计数器运行;GATE=I,由运行控制位TRX(X=0,1)=1和外部中断引脚上的高电平共同来启动定时器/计数器运行。C/T:定时器模式和计数器模式选择位。CT=O,为定时器模式;CT=1,为计数器模式。Ml、M0:工作方式选择位。MhMO的4中编码对应4种工作方式,对应关系见表5-1所示。(四)定时器/计数器的4种工作方式定时器/计数器的4种工作方式下的逻辑结构如表5-1所示。MlM2工作方式00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,为初值自动重装的8位定时器/计数器11方式3,仅TO有效,将TO分为两个8位定时器/计数器表5-11 .方式O定时器/计数器的工作方式O称为13位定时器/计数器的。它由TLX的低5位和TLX的8位构成13位的计数器,此时TLX的高3位未使用。改工作方式是为了和48系列单片机兼容而设计的一种工作方式,普通情况不使用方式O进行定时/计数。方式O的控制方式与方式1彻底相同,下面重点介绍方式1的控制方式。2 .方式1定时器/计数器的工作方式1称为16位定时器/计数器。它由TLX和TIlX构成,TLX计数溢出向THX进位,THX计数溢出置位TCON中溢出标志位TFXoGATE位的状态定时器/计数器运行控制取决于TRX一个条件还是TRX和INTX引脚这两个条件。当GATE=O时,则只要TRX被置为1,定时器/计数器即被允许计数(定时器/计数器的计数控制仅由TRX的状态确定,TRX刁计数,TRXR住手计数)。当GATE=I时,定时器/计数器是否计数由INTX输入的电平和TRX的状态共同确定:当TRX=I,且INTX=I时,才允许定时器/计数器计数(定时器/计数器的计数控制由TRX和INTX两个条件控制)。3 .方式2定时器/计数器的工作方式0和方式1再计数溢出后,计数器的值为0,需要通过程序重新装入计数初值。定时器/计数器的工作方式1称为初值自动重装的8位定时器/计数器。在该工作方式下,TLX作为计数器,当TLX计数溢出时,在置1溢出标志TFX的同时,还自动的将THX中的常数送至TLX,使TLX从该常数开始重新计数。这种工作方式可以省去用户软件中重装常数的程序,简化定时常数的计算方法(确定计数初值),可以相当精确地确定定时时间。4 .方式3工作方式3仅对定时器/计数器O有效,在该工作方式之下,定时器/计数器的O被拆成2个独立的定时器/计数器:TL0、TFloTLO使用TO的状态控制C/T、GATETRO.INTO,而THO被固定位一个8位定时器(不能作外部计数方式),并使用定时器/计数器1的状态控制位TRh和TFl,同时占用定时器Tl的中断源。此时,定时器/计数器1可设定为方式0、方式1和方式2,作为串行口的波特率发生器。(五)定时器/计数器的编程1 .定时器/计数器的初始化定时器/计数器的初始化编程包括以下几个部份。根据要求给定时器/计数器方式寄存器(TMOD)送一个方式控制字,以设定定时器/计数器的工作方式。根据需要给TH和TL寄存器送初值,以确定需要的定时时偶尔计数的初值。根据需要给中断允许寄存器(IE)送中断控制字,以开放相应的中断和设定中断优先级。给TCON寄存器送命令字以启动或者禁止定时/计数器的运行。2 .定时器/计数器初值的计算计数器初值:设计算器的模值位M,所需的计数值为C,计数初值设定为TC,则TC4FC(M等于2的13次方,16次方,8次方)。定时器初值:设定时器的模值为M,需要的定时时间为T,定时器的初值设定为TC,则T(MbTt(M等于2的13次方,16次方,8次方)。第六章主程序设计(一)系统程序流程图如图6-1所示图6-1(二)设计流程图如图6-2所示图6-2由国地质太学(式汉)机械口电子信.学院学十学位论工(三)程序的执行表达表如表63所示状态持续时间/S东西(主干道)南北(支干道)红黄绿红黄绿15S亮灭灭亮灭灭225S灭灭亮亮灭灭35S灭闪亮灭亮灭灭425S亮灭灭灭灭亮55S亮灭灭灭闪亮灭6循环状态二表6-3第七章ProteUS仿真图及各单元电路1 .程序正常仿真中如图7-2所示“三斋工3图7-12 .时钟震荡电路时钟震荡电路为单片机提供基本时钟,在MCS-51系列单片机内部有一个高增益反相放大器,其输入引脚为XTALl,其输出端引脚为XTAL2o只要在XTALl和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激励振荡器如图7-2所示3 .复位电路无论是在单片机刚开始接上电源时,还是在断电后或者发生故障后都要复位。单片机复位是使CPU和系统中的其他功能部件都能恢复到一个确定的初始状态,并从这个状态开始工作,例如复位后Pe=OOoH,使单片机从程序存储器的第一个单元取指令执行。单片机复位的条件是:必须使RST(第9引脚)加之两个机器周期以上的高电平。复位电路如图7-3所示:图7-34 .紧急情况外部中断0显示子程序P(3.0口),当浮现突发交通状况时,必须使东西南北方向都为红灯以便于交警处理。所以在设计中设置了外部中断0的显示子程序,当INTO接地时就触发了外部中断0,就执行紧急情况的子程序LED_ON()o第八章总结此次课程设计历时一个月,在此期间查阅了出课本以外的不少资料,固然了也包括对课本的全面复习,是我对这两年多以来所学的知识有了一个系统的连贯、全面的复习。不少以前不太了解的知识都得到了进一步的理解和认知。通过这次长达一个月的电子产品课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统锻炼的机会。使我在单片机的基本原理、单片机应用系统开辟过程,单片机控制过程以及在常用编程设计思路技巧(特殊是汇编语言)的掌握方面和Proteus程序仿真都向前迈了一大步,这件为我的成长注入更大的活力,坚定了我步入社会的信心。由于本人的水平有限,设计中难免会有一些不合理的部份,系统的稳定性还有待提高。最后,对在这个专周匡助我的所有同学和各位指导老师再次表示衷心的感谢!附录一:C程序源代码* 第一个状态:主干道、支干道均亮红灯5S* 第二个状态:主干道亮绿灯30S、支干道亮红灯* 第三个状态:主干道黄灯闪3秒转亮红灯、支干道亮红灯3S* 第四个状态:主干道亮红灯、支干道亮绿灯25S* 第五个状态:主干道亮红灯、支干道黄灯闪3次转亮红灯3S* 返回到第二个状态*11.0952M晶振*/#includereg51.h>头文件#include<intrins.h>头文件#definecharunsignedChar宏定义#defineintunsignedint宏定义sbitsbitsbitsbitsbitsbitRED_ZHU=P0;YELLOW_ZHU=P1;GREEN_ZHU=P2;RED_ZHI=P3;YELLOW_ZHI=P4;GREEN_ZHI=P5;i11taa,bai,shi,ge,bb;定义变量/*数码管显示0-9*/intcodetable-0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*子函数声明*/voiddelay(intz);voiddelay(intz);/voidinit(inta);voidvoidvoidvoidvoidvoidvoiddisplay(intshi,intge);xtimer();initl();init2();init3();init4();init5();voidxintl();voidxint();voidLED_0N();voidLEDj)FF();主函数voidmain()(PO=OXFF;Pl=OxFF;P2=0xFF;EA=1;打开外部中断EXo=1;允许外部中断0中断IT0=0;/INTO为沿触发方式initl();while(l)(init2();第2个状态init3();第3个状态init4();第4个状态init5();第5个状态)voidinitl()第一个状态:主干道、支干道均亮红灯5S(inttemp;temp=6;变量赋初值TMOD=OXo1;定时器0工作于方式1TH0=0x4c;TLO=OXO0;定时器赋初值EA=I;开外部中断ETO=1;开定时中断TRO=I;开定时器0While(I)(RED_ZHU=O;第一个状态主干道、支干道均亮红灯5SRED_ZHI=0;GREEN_ZHU=1;GREEN_ZHI=1;YELLoW_ZHU=I;YELL0W_ZHI=I;if(aa=10)定时2O*5OMS=1Saa=0;定时完成一次后清0temp;变量自增/delay(10);if(temp>250)定时100Stemp=6;变量清0break;shi=temp%10010;显示十位ge=temp%10;显示个位)display(ge,shi);voidinit2()第二个状态:主干道亮绿灯30S、支干道亮红灯inttemp;temp=31;变量赋初值TMoD=OXO1;定时器0工作于方式1TH0=0x4c;TL(M)XO0;定时器赋初值EA=I;开外部中断ETO=1;开定时中断TRO=I;开定时器0while(1)RED_ZHU=1;RED_ZHI=0;GREEN_ZHU=O;GREEN_ZHI=1;YELLO忆ZHU=1;第二个状态:主干道亮绿灯30S、支干道亮红灯YELLOW,ZHI=1;if(aa=20)定时20*5OMS=IS(aa=0;定时完成一次后清0temp;变量自增if(temp=4)定时100S(temp=30;变量清0break;)$111=1311%100/10;显示十位ge=temp%10;显示个位)display(ge,shi);voidinit3()第三个状态:主干道黄灯闪3次转亮红灯、支干道亮红灯3S(inttemp;temp=4;变量赋初值TMoD=OXO1;定时器0工作于方式1TH0=0x4c;TLO=OXO0;定时器赋初值EA=1;开外部中断ETO=I;开定时中断TRO=I;开定时器0while(l)(RED_ZHI=O;GREEN.ZHU=1;/YELLOW_ZHU="YELLOW_ZHU;if(aa=20)定时20*5OMS=ISaa=0;定时完成一次后清0temp;变量自增YELLOW_ZHU="YELLOW_ZHU;if(temp>200)定时100S(temp=4;变量清0break;shi=temp%10010;显示十位ge=temp%10;显示个位)display(ge,shi);)voidinit4()第四个状态:主干道亮红灯、支干道亮绿灯25S(inttemp;temp=26;变量赋初值TMoD=OXO1;定时器0工作于方式1THO=OX4c;TLo=OXO0;定时器赋初值EA=I;开外部中断ETO=I;开定时中断TRO=I;开定时器0while(l)(RED_ZHU=O;RED_ZHI=1;YELLO也ZHU=1;第一个状态主干道、支干道均亮红灯5SGREEN_ZHI=O;if(aa=20)定时2O*5OMS=1S(aa=0;定时完成一次后清0temp;变量自增if(temp=4)定时IooS(temp=25;变量清0break;)shi=temp%100/10;显示十位ge=temp%lO;显示个位)display(ge,shi);voidinit5()第五个状态:主干道亮红灯、支干道黄灯闪3次转亮红灯(inttemp;temp=4;变量赋初值TMoD=OXO1;定时器0工作于方式1THo=OX4c;TLo=OXO0;定时器赋初值EA=1;开外部中断ETO=1;开定时中断TRO=I;开定时器0while(l)(RED_ZHI=1;RED_ZHU=0;GREEN.ZHU=1;GREEN_ZHI=1;/YELLOW_ZHI="YELLOW_ZHI;if(aa=20)定时20*5OMS=IS(aa=0;定时完成一次后清0temp;变量自增YELLOkZHIiYELLOW_ZHI;if(temp>200)定时100S(temp=4;变量清0break;)shi=temp%100/10;显示十位ge=temp%10;显示个位display(ge,shi);/*显示子函数*/voiddisplay(intshi,intge)PO=Oxfd;P2=tableshi;显示十位delay(5);PO=Oxfe;P2=tablege;显示个位delay(5);)voidxint()interrupt0外部中断0,这里用2是INTO的优先级为0(1.ED_ON();voidLED_0N()外部中断0显示子程序(RED_ZHI=O;RED.ZHU=O;GREEN_ZHI=1;GREEN,ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;delay(2);return;)*定时中断子函数*/voidXtimerO()interrupt1(TH0=0x4c;TLO=OxOO;aa+;)/*延时子函数*/voiddelay(intz)(inti,j;for(i=0;i<z;i+)for(j=0;j<110;j+);)0.5s延时函数晶振:11.0592MHzvoiddelay(unsignedcharj)(unsignedchark;unsignedinti;for(;j>0;j)(for(i=1250;i>0;i)(for(k=180;k>0;k一);)附录二:原理图附录三:元件清单表元器件名称参数数量元器件名称参数数量单片机at89c511弹性按钮1电阻200欧8电阻10千欧1晶体振荡器11.0952M1瓷片电容30p2电解电容22u1发光二极管12七段数码管1附录四:主要参考文献1 .王静霞单片机应用技术(C语言版)电子工业出版社2 .丁亚涛C语言程序设计(第二版)高等教育出版社3 .张毅坤单片微型计算机原理及应用,西安电子科技大学出版社1998设计(论文)评语:指导教师:年月日设计(论文)成绩:指导教师:答辩评语:答辩委员会:年月日答辩成绩:答辩委员会:总评成绩:系(部)主任:备注:

    注意事项

    本文(基于51单片机的路灯控制系统.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开