基于单片机交通控制灯的设计与实现含有程序样本_第1页
基于单片机交通控制灯的设计与实现含有程序样本_第2页
基于单片机交通控制灯的设计与实现含有程序样本_第3页
基于单片机交通控制灯的设计与实现含有程序样本_第4页
基于单片机交通控制灯的设计与实现含有程序样本_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文(设计)题目单片机交通控制灯设计与实现院系电子信息学院单片机交通控制灯设计与实现电力系统及其自动化专业【摘要】交通红绿灯是建设在各个要塞路口系统,用于指挥人和车安全有序通过十字路口,是保证道路畅通重要手段;随着我经济迅速发展,物流业迅速发展,车流量不断增长;导致交通堵塞成为人们畅通出行重要问题。因而开发出智能、可靠、便宜控制系统成为当前重要问题。随着科技迅速发展,单片测控地位不断加深。依照当前需求,提出以单片机为控制核心红绿灯系统。单片机交通灯控制系统重要由STC89C51单片机、LED红绿灯批示、8段数码管倒计时、紧急状况按键解决模块构成。本系统除了基本交通灯功能外,还具备通行时间手动设立、可倒计时显示、夜间模式、发生紧急事件车辆绿色通道等有关功能。通过电路仿真证明该系统可以简朴、经济、有效地疏导交通,提高交通路口通行能力。【核心词】单片机交通红绿灯LED定期计数数码管

MicrocontrollerDesignAndImplementationOfTrafficControlLights【Abstract】trafficlightsbuildingfortressjunctionsystemforcommandandthecarsafeandorderlythroughthecrossroadsisanimportantmeanstoensurethattheroadsarewider;Withtherapideconomicdevelopmentofthelogisticsindustryrapiddevelopment,thetrafficvolumeisincreasing;causetrafficjams,smoothtravel.Thereforedevelopedasmart,reliable,low-costcontrolsystembecomethemainproblem.Withtherapiddevelopmentofscienceandtechnology,measurementandcontrolofthemonolithicstatuscontinuestodeepen.Accordingtothecurrentdemand,amicrocontrollerasthecorecontroltrafficlightssystem.ThethemicrocontrollertrafficlightcontrolsystemmainlybytheSTC89C51microcontroller,LEDtrafficlightindicator,LEDcountdown,anemergencybuttonprocessingmodule.Inadditiontobasictrafficlights,thesystemalsohastheaccesstimemanuallysetthecountdowndisplay,nightmode,theoccurrenceofthegreenchanneloftheemergencyvehiclesandotherrelatedfunctions.Simulationresultsshowthatthesystemcanbesimple,economic,effectivelyeasetrafficcongestion,improvetrafficjunctioncapacity.【KeyWords】single-chiptrafficlightsLEDTimercounterDigitaltube

目录TOC\o"1-3"\h\u188691绪论 1268571.1交通灯历史背景 1294891.1.1交通灯定义 17351.1.2交通灯发展历史 1219411.2研究交通灯意义 2284781.3研究内容 2259752系统方案与论证 339682.1设计任务 3111902.2系统总体设计方案 517482.2.1系统控制模块 5107932.2.2系统显示模块 557072.2.3系统按键模块 6130402.2.4显示驱动模块 6203722.2.5系统电源模块 684163原理简介 6313653.1STC89C51单片机简介 6315913.1.1STC89C51单片机引脚功能 7112663.1.2控制引脚 8108433.1.3输入/输出引脚 8166423.2单片机最小系统 9167493.2.1时钟电路 9181053.2.2.复位电路 10266563.2.3显示原理 10248913.374HC245简介 11190484系统硬件设计 1330934.1系统总构成 1380374.2系统总电路 14114255系统软件设计 15324695.1主函数流程图 15276955.2子函数程序流程图 15172005.2.1外部中断 15164335.2.2定期器中断 16259976调试 18309906.1软件调试 18270706.2硬件调试 1813385参照文献 1925671附录 2013595程序 2012578系统实物图 3032442道谢 311绪论1.1交通灯历史背景1.1.1交通灯定义交通信号批示灯普通由红灯、黄灯、绿灯构成;红灯表达禁止通行;绿灯表达容许通行、黄灯表达警示含义。根据其形式、用途不同分为机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向批示信号灯、闪光警告信号灯、道路与铁路交叉道口信号灯等。1.1.2交通灯发展历史 十九世纪中叶,当时涉及英国在内某些欧洲国家已经普及了马车,但却并没有指引行人与马车通行信号批示设备,因而无论是在山间小路还是市中心繁华大道上,马车轧人事故经常浮现,这不但对行人安全导致了危害,更会经常导致交通混乱、拥堵现象。1868年12月10日,历史上第一盏交通信号灯浮现,在这盏灯下必要要站立一名手持长杆警察,通过皮带拉拽提灯进行颜色转换,日后还在这盏信号灯中间加装了红、绿两色灯罩,前面有红、绿两块玻璃交替进行遮挡,白天不点亮煤气灯,仅以红、绿灯罩切换引导人们迈进或停止,夜晚则将煤气灯点燃,照亮红、绿两色灯罩。1869年1月2日,仅仅诞生23天第一盏交通信号灯便突然爆炸损毁了,但这个仅有23天生命信号灯却点燃了整个欧洲乃至整个世界开发交通信号灯激情,不久之后,各式各样交通信号灯便如雨后春笋般浮现了。在“后煤气信号灯”时代,有些欧洲国家开始在道路上设立执勤警察以及可翻转标记。19,美国盐湖城一名叫做LesterWire警员创造了第一盏电动交通信号灯。198月5日,美国交通信号灯公司在LesterWire创造交通信号灯基本上进行了改进,并在顶部安装了一种蜂鸣器。19,美国盐湖城街道上初次浮现了互有关联交通信号系统,由一种岗亭内警员统一控制颜色转换。19,美国密歇根州底特律一位名叫WilliamPotts警官在当时交通信号灯基本上再次进行了改进,研制出了一种四周三灯多功能交通信号灯,这种信号灯共分为四周,每面均竖立排列三盏灯,当时它排列形式与功能已经与咱们当前所熟知信号灯大同小异,红灯与绿灯表达停止与通过,黄灯则表达“谨慎”。1922年3月,GarrettMorgan创造了一种完全独立手摇式交通信号系统。1936年,在澳大利亚墨尔本道路上浮现了一种名为Marshalite交通信号批示系统。1963年,加拿大多伦多市街道上第一次浮现了一套用计算机芯片控制完整交通信号系统。上世纪90年代,美国某些地区开始引进带有计时器交通信号灯。可以说,在近百年发展中,道路交通信号控制系统经历了无感应控制到有感应控制、手动控制到自动控制再到智能控制、单点控制(点控)到干线控制(线控)再到区域控制和网络控制(面控)过程,当前正浮现基于物联网智能交通控制系统[1]。1.2研究交通灯意义1月1日,国内开始实行最新《机动车驾驶証申领和使用规定》,关于部门对于新规定解释中明确提到:“抢黄灯属于违背道路交通信号灯通行行为,将对驾驶人处20元以上200元如下罚款,并记6分。”新规定一经出台便触动了机动车驾驶员们神经,许多司机在路口正好遇到黄灯时往往不知所措,以往为司机们“提示儿”黄灯如今成了人见人畏“违章陷阱”。由于不少司机纷纷“中招”,新规定也因而引起了许多争议,直到公安部近日称将暂时不对闯黄灯行为做出惩罚之后,这次由黄灯引起风波才算逐渐平息。当前,大量交通信号灯电路正向着数字化、小功率化、多样化、多值化方向发展。随着社会经济发展,人们生活水平不断提高,都市交通问题越来越引起人们关注。人们越来越期待更加以便、畅通出行环境;人、车、路三者关系协调,已成为交通管理部门需要解决重要问题之一。1.3研究内容本系统采用STC89C51单片机为控制核心,来设计交通灯控制器,进行交通灯路口管理。它用简朴硬件电路模仿交通灯信号灯交替变换,实现红绿灯循环点亮。用LED数码管作为倒计时批示,通行批示灯采用发光二极管,LED显示动态扫描,以节约端口,特殊紧急车辆通行采用实时中断完毕。实时控制当前交通灯时间使LED显示屏进行倒计时工作并与状态灯保持同步;设计紧急绿色通道,禁止所有路口通行。使紧急车辆如120、119等车辆安全迅速通行;针对新交通规则,设计黄灯闪烁时,加蜂鸣器起到提示路人和司机采用安全办法,在保持交通安全同步最大限度提高交通顺畅交替运营;同步增长交通灯夜间模式,使交通灯在夜间黄灯亮以警示司机和路人,关闭LED数码管。大大提高交通运送运营效率,还可以减少交通事故,节约能源消耗。2系统方案与论证2.1设计任务在交通十字路口,分为东西方向和南北方向,在任一时刻最多只有一种方向通行,另一方向禁行,持续一定期间,通过短暂过渡时间,将通行和禁行方向对换。其详细状态如下图所示。红色表达禁止通行,绿色表达通行,黄灯表达敬告车俩和行人注意安全。十字路口整体设计如图2-1所示:图2-1整体设计状态一:东西方绿灯亮,表达东西方向行人和车辆通行;倒计时30秒,东西方向绿灯灭,南北方向红灯亮,东西方向黄灯闪烁5秒。切换到下一状态。其状态图如下图2-2所示:图2-2红绿灯东西通行状态图状态二:南北方向绿灯亮,表达南北方向行人和车辆通行;倒计时30秒,南北方向绿灯灭,东西方向仍为红灯亮,东西方向黄灯闪烁5秒。切换到下一状态。其状态图如下图2-3所示:图2-3红绿灯南北通行状态图状态三:当为白天正常模式下,为上述四种状态循环切换。当为紧急状态时,需要为紧急车辆和路人提供绿色通道时,东西南北俩个方向均禁止通行;此外当为夜间模式时,使四个路口交通灯为黄色,均通行警示车辆和行人慢行注意安全。状态图如下图2-4所示:图2-4红绿灯特殊状态状态图综上所述:整个交通灯状态可由下表2.1图所示:表2.1交通灯状态表2.2系统总体设计方案依照整个系统设计规定,本系统采用模块化设计。整个系统重要涉及控制模块、显示模块、电源模块、驱动模块构成。一方面是控制模块就是重要负责整个系统控制和运算,从而使各模块正常工作,第二个模块式显示模块涉及LED灯和数码管;第三是电源模块,给各模块提供电源,让各模块工作;第四是按键模块,切换系统工作状态;另一方面是系统驱动模块,使系统显示模块可以正常工作;其系统整体设计构造如图2-4所示:图2-4系统整体框图2.2.1系统控制模块方案一:由上表2.1真值表可得,本系统可以依照数字电子技术搭建电路实现上述功能,使用数字计数器、译码器、数字脉冲发生器实现上述功能。电路简朴,成本低廉。方案二:采用单片机STC89C51最小系统作为控制器。单片机运算能力强,软件编程非常灵活,自由度大。使用时容易掌握;采用STC89C51单片机稳定可靠、应用广泛、通用性强。方案比较:采用方案一来实现十字路口交通灯控制系统非常以便,电路构造简朴,控制单一,但整个系统性能不是很高,倒计时不是很精准,如果规定系统能设立不同工作时间不容易,设计复杂。而方案二完全能实现设计规定,容易掌握,利于编程,易控制,I/O接口诸多,易于扩展外围电路,价格便宜,故选取方案二。2.2.2系统显示模块方案一:采用8段数码管显示。这种方案完全够用红绿灯倒计时显示,且价格便宜。方案二:采用点阵式LED显示。这种方案虽然功能强大,并可以便显示各种符号,但实现复杂,且须完毕大量软件工作,价格昂贵。综上所述,我选取第一种方案,四个路口采用两个二位共阴极数码管。2.2.3系统按键模块方案一:矩阵键盘:编程简朴,但挥霍i/o接口。方案二:独立键盘:需要较多按键设计时,占用接口较少,但编程相称复杂。综上所述,虽然单片机接口有限,但是此交通灯按键较少,系统接口够用,故适当采用[2]。我选用方案一。2.2.4显示驱动模块方案一:使用三极管驱动。软件规定较低,由于本次设计需要数码管数量较多,故需要较多三极管,硬件规定较高,电路复杂。方案二:采用74HC245,编程简朴;集成度较高,硬件简朴。综上所述,我选用第二种方案。2.2.5系统电源模块方案一:采用独立稳压电源。此方案长处是稳定可靠,且有各种成熟电路可供选用;缺陷是各模块都采用独立电源,会使系统复杂,且也许影响电路电平;且成本较高。方案二:采用单片机控制模块提供电源,使用电池盒供电。该方案长处是系统简要扼要,节约成本;缺陷是输出功率不高。综上所述,为使模块稳定工作,须有可靠电源,我选取第二种方案[2]。3原理简介3.1STC89C51单片机简介STC89C51是89C51系列单片机中应用较为广泛一种型号,它把所有控制所需功能集中到一种尺寸有限集成电路芯片上。重要由CPU、RAM、4KFLASHROM、四个8位可编程并行I/O口、一种全双工串行、2个16位定期/计数、中断系统、SFR[3]。其内部构造如下图3-1所示:图3-151单片机内部构造STC89C51单片机40条引脚按功能来分,40个引脚可以分为三大类:电源及时钟引脚—Vcc、Vss、XTAL1、XTAL2。控制引脚—RESET(即RSR/VPD)、ALE、EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(_________),PSEN)、EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(____),EA)。和输入/输出引脚—P0、P1、P2、P3,4个8位I/O外部引脚。单片机引脚如图3-2所示:图3-2STC89C51单片机引脚3.1.1STC89C51单片机引脚功能主电源及时钟引脚(1)Vcc(40引脚):接+5V电源,为单片机芯片提供电能。(2)Vss(20引脚)接地。(3)XTAL1(19引脚)在单片机内部,它是一种片内振荡器反向放大器输入端,该放大器构成了片内振荡器,可提供单片机时钟控制信号。当使用片内振荡器时,该脚接外部石英晶体和微调电容。当采用外接时钟电源时,引脚接外部时钟信号,XTAL2悬空。(4)XTAL2(18引脚)在单片机内部,接至上述振荡器反向输出端。当使用片内振荡器时,该角接外部石英晶体和微调电容。3.1.2控制引脚控制引脚:(1)RST(9引脚):复位信号输入端,高电平有效,当单片机运营时,在此引脚加上两个机器周期(24个时钟振荡周期)高电平时,将使单片机复位。要使单片机正常工作,复位后应使此引脚电平保持为不不不大于0.5V低电平[3]。(2)ALE/EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(_________),PROG)(30引脚):ALE为低8位地址锁存容许信号。在系统扩展时,ALE负跳沿将P0口发送出低8位地址锁存在外接地址锁存器中,然后P0口再作为数据端口,以实现P0口低8位地址和数据分时传送[3]。(3)EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(),PSEN)(29引脚):片外程序存储器选通信号。在单片机读外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器选通信号。此引脚接外部程序存储器EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(),OE)端;在访问外部RAM时,EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(————),PSEN)信号无效[3]。(4)EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(———),EA)(31脚):EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(———),EA)功能为内外程序存储器选取控制端。当EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(———),EA)端保持高电平时,单片机读片内部程序存储器,但在PC值超过0FFFH时将自动转向访问外部程序存储器内程序。当EQ\*jc0\*"Font:宋体"\*hps12\o\ad(\s\up11(———),EA)引脚为低电平时,对程序存储器只限定在外部程序存储器[3]。3.1.3输入/输出引脚此类引脚涉及P0口、P1口、P2口和P3口。(1)P0(P0.0-P0.7)是一种8位三态双向I/O口,在不访积压处部存储器时,做通用I/O口使用,用于传送CPU输入/输出数据,当访问外部存储器时,此口为地址总路线低8位及数据总路线分时复用口,可带8个LSTTL负载[4]。(2)P1(P1.0-P2.7)是一种8位准双向I/O口,带有内部上拉电阻,可带4个LSTTL负载[4]。(3)P2(P2.0-P2.7)是一种8位准双向I/O口,与地址总路线高8位复用,可驱动4个LSTTL负载[4]。(4)P3(P3.0-P3.7)是一种8位准双向I/O口,除此之外每位还具备第二功能[4]。P3口功能表如下表3.1所示:

表3.1P3口第二功能定义3.2单片机最小系统图3-4单片机最小系统电路图3.2.1时钟电路STC89C51单片机个功能部件运营都已时钟控制信号为基准,使系统有条不絮工作。直接关系到系统稳定和工作速度,因而时钟是系统重要构成某些;时钟电路有两种方式,内部时钟和外部时钟方式,本系统选用内部时钟。内部时钟电路如下图3-5所示:图3-5时钟电路电路中电容C1、C2典型值普通选取30pF左右,该电容大小会影响震荡频率高低,震荡迅速性此系统选取30pF;晶振频率范畴在1.2-12MHZ晶体频率越高,系统频率越高,运营速度越快。此系统选用12MHZ;晶体振荡器和电容应尽量安装得与单片机芯片接近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作[5]。3.2.2.复位电路最小系统复位是由外部电路来实现,复位操作不会对内部RAM有所影响。片内复位引脚RST通过一种斯密特触发器与复位电路相连,施密特触发器可用来抑制噪声,在每个机器周期S5P2,由复位电路采样一次。复位电路普通采用上电自动复位和按钮复位两种方式,按键电平复位电路如下图3-6所示:图3-6复位电路此复位电路采用是按钮复位电路。时钟频率选用12MHz,C取10μF,Rs选用电阻值为2.2KΩ,Rk电阻值为10KΩ。3.2.3显示原理LED是LightEmittingDiode缩写,中文意思是发光二极管,是一种可以将电能转化为可见光固态半导体器件,LED特点非常明显,具备寿命长、光效高、辐射低、功耗低等长处。LED因其高亮度、低热量、长寿命、无毒、可回收再运用等长处,交通灯运用发光二极管来显示不同颜色信号批示灯。电路图如下图3-7所示:图3-7LED灯数码管是一种半导体发光器件,其基本单元是发光二极管;按发光二极管单元点亮方式可以分为共阴极数码管和共阳数码管。共阳极就是将所有发光二级管阳级接到一种公共端,公共端接高电压,惯用+5V;同理共阴极就是讲所有发光二级管阴极接到一起,公共端接地。本系统采用俩位共阴极八段数码管。其管脚电路如下图3-8所示:图3-8数码管显示引脚图由如上管脚图可知,该数码管有十个管脚G1为公共端,该引脚接地A~G和dp分别相应数码管各段被点亮,S1、S2为选通位,分别相应数码管第一、二位。其显示数字和编码相应如下表3.2所示:表3.2共阴极数码管显示编码3.374HC245简介74HC24,总线收发器(bustransceiver),典型CMOS型三态缓冲门电路。用于提高单片机数据总线、地址总线、控制总线端口负载能力[7]。其引脚图如下图3-9所示:图3-974HC245引脚图管脚定义如下表3.3所示:表3.3245管脚定义功能真值表如下表3.4所示:表3.4功能真值

4系统硬件设计4.1系统总构成本系统拟采用STC89C51单片机为控制核心最小系统、74HC245驱动电路、以及外围按键和数码管显示等部件,设计一种基于单片机交通灯设计。设计通过两位一体共阴极数码管显示,并能通过按键对定期进行设立。本系统实用性强、操作简朴、扩展功能强。在相似时间里提高通车质量、效率。并能在高峰期依照实际状况结合方程式控制按钮来调节主次干道通车时间,减少交通拥挤堵塞现象。并使交通控制系统具备紧急控制,使救护车、救护车通过时,使两个方向均亮红灯,救护车和消防车通过后,恢复本来状态,增长对浮现特殊状况解决能力。键盘设立模块对系统输入模式选取及详细通行时间设立信号,系统进入正常工作状态,执行交通灯状态显示控制,同步将时间数据倒计时输入到LED数码管上实时显示。在此过程中还要实时捕获违规检测和紧急按键信号,以达到对异常状态进行实时控制目。急停按违规检测随时调用中断。本单片机控制交通灯系统,可用单片机直接控制信号灯状态变化,基本上可以指挥交通详细通行,固然,接入LED数码管就可以显示倒计时以提示行使者,更具人性化。本系统在此基本上,单片机对此进行详细解决,及时调节控制指挥。如图4.1所示:图4.1系统整体构造图由上图可得,本系统以单片机最小系统为核心,构成一种解决、自动控制为一身闭环控制系统。系统硬件电路由单片机最小系统、LED红绿灯、LED8段数码管显示、驱动电路、按键等构成。实现本设计规定详细功能,可以用STC89C51单片机及外围器件构成最小控制系统,12个发光二极管提成4组红绿黄三色灯构成信号灯批示模块,8个LED东西南北各两个构成倒计时显示模块,若干按键构成时间设立和模式选取按钮和紧急按钮等。其中P0,P1,用于送显LED数码管型和位,P2用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P3用于口按键控制。4.2系统总电路依照上述原理将各个某些用电路联系在一起,构成整个系统电路如下图4.2所示:图4-2系统电路原理图

5系统软件设计5.1主函数流程图将系统分解为若干模块;按键模块程序,显示模块程序,LED红绿灯程序。最后主函数调用各个模块。主函数程序流程图如图5-1所示:图5-1主函数流程图5.2子函数程序流程图5.2.1外部中断本系统存在两个外部中断;外部中断有两种触发方式:即为电平触发方式和跳沿触发方式。电平触发方式适合于外部中断以低电平输入且中断服务程序能清除外部中断祈求源状况;外部中断跳沿触发方式适合于以负脉冲形式输入外部中断祈求[11]。本系统采用跳沿触发方式。外部中断管脚为P3.2和P3.3,分别相应外部中断0输入和外部中断1输入;当P3.2或P3.3存在按键时,故触发外部中断。其程序流程如图5-2所示:图5-2外部中断程序流程图当存在P3.2或P3.3存在按键时,即存在外部中断外部中断响应程序流程图如下图5-3所示:图5-3外部中断响应程序流程图5.2.2定期器中断本设计单片机定期器设立直接关系到系统精准度,单片机定期器时间计算办法可以有两种:一种是单片机内部定期器溢出中断,另一种是采用软延时办法。STC89C51单片机定期/计数有4种工作方式;工作方式选取如下表5.1所示:表5.1工作方式M0M1工作方式0013位定期/计数器0116位定期/计数器108位常数自动装载定期/计数器11仅合用T0当且仅当方式1时,最大计数为:216*1=65.535ms;TMOD=0X11;选取T0,方式1;TH0=3C,TL0=B0,计时50ms;因而1秒钟已经远远超过了计数器方式一最大定期间,咱们定期中断中设定一种初值count为0;并设立T0定期50ms.每次中断服务子程序。计数器count加1,然后判断它与否等于20。等于20表达1秒已到可以返回到输出时间显示程序。程序流程图5-4如下所示:图5-4定期一秒流程图

6调试6.1软件调试使用keil编译、运营程序成果如下图所示:图6-1keil编译、运营成果6.2硬件调试使用protus电路仿真成果如下图6-2所示:图6-2protus硬件仿真成果在硬件实物调试中浮现如下问题:系统不能正常工作问题因素:供电电源局限性;解决办法:采用USB电源供电。二、3个LED批示灯不亮、电源灯不亮。问题因素:浮现虚焊,漏焊,腐蚀电路浮现漏焊。电源批示灯上拉电阻焊错,本来焊接2.2KΩ,焊成22KΩ;解决办法:用万用表检查电路最后找到源头,重焊,用焊锡连接断路处。将22kΩ换成2.2kΩ。

参照文献[1]LaishengXiao.InternetofThings:aNewApplicationforIntelligentTrafficMonitoringSystem,JournalOfNetworks,。[2]严雨,廉洁。单片机c语言100应用例,电子工业出版社,。[3]张毅刚、彭喜元。单片机原理与应用设计,电子工业出版社,。[4]孙宝元、杨宝清。传感器及其应用手册,。[5]聂典、丁伟。基于Multisim1051单片机仿真教程,电子工业出版社,。[6]张志勇、何东健、肖军利、王顺。单片机在胶订机智能控制系统中应用[期刊论文]-包装工程,。[7]王为青、邱文勋。51单片机开发案例精选[J],人民邮电出版社,。[8]张鑫,华臻,陈书谦。单片机原理及应用[J],电子工业出版社,。[9]张洪润,张亚凡。单片机原理及应用[J],清华大学出版社,。[10]蒋辉平,周国雄。基于Proteus单片机系统设计与仿真实例[M],机械工业出版社,。[11]张萌。单片机应用系统开发综合实例,清华大学出版社,。

附录程序整个系统软件程序如下所示:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchardatabuf[4];uchardatasec_dx=20; //东西数默认uchardatasec_nb=30; //南北默认值uchardataset_timedx=20; //设立东西方向时间uchardataset_timenb=30; //设立南北方向时间intn;uchardatacountt0;//定期器0中断次数sbitk4=P3^7;//切换方向sbitk1=P3^5; //时间加sbitk2=P3^6; //时间减sbitk3=P3^4; //确认sbitk5=P3^1; //禁止sbitk6=P1^5; //夜间模式sbitRed_nb=P2^6; //南北红灯标志sbitYellow_nb=P2^5; //南北黄灯标志sbitGreen_nb=P2^4;//南北绿灯标志sbitRed_dx=P2^3; //东西红灯标志sbitYellow_dx=P2^2; //东西黄灯标志sbitGreen_dx=P2^1; //东西绿灯标志sbitBuzz=P3^0; bitBuzzer_Indicate;bitset=0; //调时方向切换键标志=1时,南北,=0时,东西bitdx_nb=0; //东西南北控制位bitshanruo=0;ucharcodetable[11]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴极数码管显示数字编码voiddelay(intms); //声明延声时子程序voidkey(); //声明按键扫描子程序voidkey_to1(); //声明键解决子程序voidkey_to2();voidkey_to3();voiddisplay(); //显声明示子程序voidlogo(); //声明开机LOGOvoidBuzzer();voidmain()//主程序{ TMOD=0X11; //定期器设立 TH0=0X3C; //定期器0置初值0.05S TL0=0XB0; EA=1; //开总中断 ET0=1; //定期器0中断启动 TR0=1; //启动定期0 EX0=1; //开外部中断0 EX1=1; //开外部中断1logo(); P2=0Xc3; //开始默认状态,东西绿灯,南北黄灯sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒 while(1) { key(); //调用按键扫描程序 display(); //调用显示程序 Buzzer(); } }voidkey(void) //按键扫描子程序{ if(k1!=1) //当K1(时间加)按下时 { display(); //调用显示,用于延时消抖 if(k1!=1) { TR0=0; //关定期器 shanruo=0; P2=0x00; if(set==0) set_timedx++; //南北加1S else set_timenb++; //东西加1S if(set_timenb==100) set_timenb=1; if( set_timedx==100) set_timedx=1; //加到100置1 sec_nb=set_timenb; //设立数值赋给东西南北 sec_dx=set_timedx; do { display(); } while(k1!=1); } } if(k2!=1) //当K2(时间减)按键按下时 { display(); //调用显示,用于延时消抖 if(k2!=1) { TR0=0; //关定期器 shanruo=0; P2=0x00; if(set==0) set_timedx--; //南北减1S else set_timenb--; //东西减1S if(set_timenb==0) set_timenb=99; if( set_timedx==0) set_timedx=99; //减到1重置99 sec_nb=set_timenb; //设立数值赋给东西南北 sec_dx=set_timedx; do { display(); //调用显示,用于延时 } while(k2!=1); } } if(k3!=1) //当K3(确认)键按下时 { display(); //调用显示,用于延时消抖 if(k3!=1) { TR0=1; //启动定期器 Buzzer_Indicate=0; sec_nb=set_timenb; //从中断回答,仍显示设立过数值 sec_dx=set_timedx; //显示设立过时间 if(set==0) //时间倒时到0时 { P2=0X00; //东西绿灯,南北红灯 Green_dx=1; Red_nb=1; sec_nb=sec_dx+5; //回到初值 } else { P2=0x00; //南北绿灯,东西红灯 Green_nb=1; Red_dx=1; sec_dx=sec_nb+5; } } } if(k4!=1) //当K4(切换)键按下{ display(); //调用显示,用于延时消抖 if(k4!=1) { TR0=0; set=!set; //取反set标志位,以切换调节方向 dx_nb=set; do { display(); } while(k4!=1); } } if(k5!=1) //当K5(禁止)键按下时 { display(); //调用显示,用于延时消抖 if(k5!=1) { TR0=0; //关定期器 P2=0x00; Red_dx=1; Red_nb=1; //所有置红灯 sec_dx=00; //四个方向时间都为00 sec_nb=00; Buzzer_Indicate=1; do { display(); } while(k5!=1); } } if(k6!=1) //当K6(夜间模式)按下 { display(); //调用显示,用于延时消抖 if(k6!=1) { TR0=0; //关定期器 P2=0x00; Yellow_dx=1; Yellow_nb=1; //所有置黄灯 sec_dx=00; //四个方向时间都为00 sec_nb=00; Buzzer_Indicate=1; do { display(); } while(k6!=1); } }}voiddisplay(void)//显示子程序{ buf[1]=sec_nb/10; //第1位东西秒十位 buf[2]=sec_nb%10; //第2位东西秒个位 buf[3]=sec_dx/10; //第3位南北秒十位 buf[0]=sec_dx%10; //第4位南北秒个位 P1=0xff; //初始灯为灭 P0=0x00; P1=0xfe; //片选LED1 P0=table[buf[1]]; /送东西时间十位数码管编码 delay(1); //延时 P1=0xff; //关显示 P0=0x00; P1=0xfd; //片选LED2 P0=table[buf[2]]; delay(1); P1=0xff; P0=0x00; P1=0Xfb; //片选LED3 P0=table[buf[3]]; delay(1); P1=0xff; P0=0x00; P1=0Xf7; P0=table[buf[0]]; //片选LED4 delay(1);}voidtime0(void)interrupt1using1 //定期中断子程序{ TH0=0X3C; //重赋初值 TL0=0XB0; TR0=1; //重新启动定期器 countt0++; //软件计数加1 if(countt0==10) { if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 { Green_dx=0; Yellow_dx=0; Buzz=0; } if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //南北黄灯闪 { Green_nb=0; Yellow_nb=0; Buzz=0; } } if(countt0==20) //定期器中断次数=20时(即1秒时) { countt0=0; //清零计数器 sec_dx--; //东西时间减1 sec_nb--; //南北时间减1 if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 { Green_dx=0; Yellow_dx=1; Buzz=1; } if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //

温馨提示

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

评论

0/150

提交评论