基于单片机的五岔路口交通灯方案设计_第1页
基于单片机的五岔路口交通灯方案设计_第2页
基于单片机的五岔路口交通灯方案设计_第3页
基于单片机的五岔路口交通灯方案设计_第4页
基于单片机的五岔路口交通灯方案设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的五岔路口交通灯方案设计关键词:AT89S52交通灯倒计时LED

目录TOC\o"1-3"\h\u摘要 IAbstract II1课题研究的背景 IV1.1交通信号灯的发展及研究意义 11.2现在城市路口交通灯控制技术现状 21.3单片机概述 21.4方案的设计与论证 31.4.1电源提供方案 31.4.2显示界面方案 31.4.3输入方案 42系统总体设计 42.1总体设计 52.2单片机的选择 112.3单片机的基本结构 72.4单片机外围电路设计 102.4.1复位电路设计 102.2.2外部晶振时钟电路设计 102.2.3显示模块电路设计 113交通信号灯控制系统的设计 143.1十字路口交通信号灯具体的控制要求 143.2五岔路口交通信号灯示意图 143.3五岔路口交通灯工作情况 153.4路口交通灯时间处理函数模块 154交通信号灯控制系统程序编制 194.1软件设计应用环境 194.2软件设计流程 194.3交通灯定时器模块 204.4定时器初值模块设计 21结论 22主要参考文献 25附录一:源程序代码 261课题研究的背景1.1交通信号灯的发展及研究意义现如今,安装在各个路口上的红绿灯,已经成为疏导交通车辆最常见以及有效的工具,这一技术的发展已经有了相当长的历史。1858年,世界上最早的交通信号灯在英国伦敦出现。他是通过在其主要街头安装了红,蓝两色的信号灯。这些信号灯是机械扳手式的,它由燃煤气提供光源,用以指挥马车通行。1868年,在伦敦威斯敏斯特区的议会大厦前的广场上,英国机械工程师纳伊特安装了世界上最早的一盏煤气红绿灯。它是红绿两个旋转式方形玻璃提灯组成的,红色表示“停止”,绿色表示“注意”。1869年1月2日,因为煤气灯爆炸,造成警察受伤,于是被取消了。而后,在美国出现了电气启动的红绿灯,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始就安装在了纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,出现了新式的带控制的红绿灯以及红外线红绿灯。带控制的红绿灯有两种类型,一种是用扩音器来控制红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。另一种是把压力探测器装在地下,当车辆一接近红灯便变为绿灯;红外线红绿灯则是当行人踏上对压力敏感的路面时,压力感应器就能察觉到有人要过马路,继而红外光束将延长红灯时间,推迟汽车放行,避免发生交通事故。目前,我国平均每一分钟就有一个人因交通事故受伤,平均每五分钟就有一个人因交通事故而死亡。同时,交通的阻塞以及不便,给全球的经济甚至也带来了很大的影响。英国大约有100个城市是属于平面交叉口的,因为车辆延误造成的经济损失每年就可以达到1400万英镑左右。我国百万人以上的大城市因为交通拥挤造成的经济损失每年估计为1600亿人民币,相当于我国国内生产总值的3.2%。不仅如此,城市交通问题还产生量其他一些城市问题。例如,城市生态环境状况就十分不乐观,交通工具排放废气,这己经成了破坏大气的重要污染源头之一。严重的大气污染不仅导致了环境变差,也会导致经济损失,不仅仅对公众健康造成损害。而且因为交通设施建设,更是加重了环境破坏的严重程度,土地资源正在以每年2%-3%的速度不断减少着。合理的交通控制方法能有效的减少尾气排放及能源消耗、缓解交通拥挤、缩短出行延时,改善我国独有的交通问题。平面交叉口是城市交通改善的一个重点,它是整个城市道路的瓶颈带,对其进行的交通信号控制方法的研究具有重大意义。交通信号灯的出现,使得交通状况可以被有效管制成为可能,对于提高道路通行能力、疏导交通流量以及减少交通事故的发生有着明显效果,更减轻了交警轮流指挥的辛苦和危险,实现了人,车,路三者的同步协调。现阶段,已经有一些先进的创意,它们体现出了更多智能化、自动化、数字化等更先进的交通灯控制方案,这让我们更加方便地对城市交通进行维护管理,并让我们可以在更加便利和安全的交通环境下生活。1.2现在城市路口交通灯控制技术现状城市机动车数量正在不断地增加,在许多大城市中,也出现了交通超负荷运行的状况。所以,从80年代后期开始,这些城市纷纷开始修建高速道路,在高速道路建设完成之初,也确实有效地改善了交通状况。然而,随着交通量的快速增长和对高速路的系统控制以及研究意识的缺乏,高速道路没有如预期充分发挥出其作用。而在构造上城市高速道路的特点,也决定了必然城市高速道路的交通状况会受到普通道路与高速道路藕合处交通状况的制约。所以,采用什么样的控制方法才合适,才能最大限度地利用好耗费巨资修建的城市高速道路,缓解主干道车流量繁忙的交通拥堵状况这一问题,已经慢慢成为城市规划以及交通运输管理部门需要解决的主要问题。1.3单片机概述目前,计算机系统的开发方向分为三个,这三个方向分别是:网络化,巨型化,单片化。高速数据处理的超级计算机以及解决复杂的计算系统仍然在工作,因此,超级计算机朝向电流以及高速方向的处理能力也在不断努力。供应链管理的最明显的好处是,你可以嵌入到各种仪器,设备。这是不可能的超级计算机以及网络[1]单片机在目前的发展情况来看,呈现出几个趋势:

(1)高可靠性。提高应用以及互联网连接的水平是一个明显的趋势。

(2)越来越多的集成组件。NS(美国国家半导体)公司宜巴单片机语音,视频组件也被集成到设备中,也就是单片机的意义只在于一个单片集成电路,而不在其功能;如果它可以从功能的角度讲是万能机。因为用于各种应用其内部集成电路。

(3)低功耗。而在越来越多的模拟电路中,随着半导体工艺技术的发展以及系统设计水平的提高,单片机将继续产生新的变化以及进步,人们最终可能会发现:微控制器以及微处理器系统之间的距离越来越小,甚至难以辨认。1.4方案的设计与论证设计单片机为核心,倒计时用LED数码来指示,根据设计要求,我们考虑的功能模块,最佳解决方案的多种设计方案,以实现各种实时显示系统状态,系统还创建根据交通拥堵的运输时间可分别公路以及二级公路设置,以提高工作效率,缓解交通拥堵。系统总体设计框图如图所示。交通灯控制的框图如下图1-1所示,主要有控制电路、按键电路、晶振电路、复位电路、显示电路、电源电路等电路组成。数码管显示电路电源电路单片数码管显示电路电源电路单片机时钟电路时钟电路Led信号灯控制电路复位电路Led信号灯控制电路复位电路按键电路按键电路图1-1交通灯控制框图1.4.1电源提供方案为了模块的稳定性,它必须有一个可靠的电源。设计考虑到了两种动力选择:方案一:使用单独的电源。这个方案的优势是稳定以及可靠,并且有多种成熟电路可用;缺点是,每个模块使用独立的电源,会使系统变得复杂,可能影响电路的整体稳定性。

方案二:用单片机控制模块来提供电力。这个方案的优势是,该系统简洁,节约成本;缺点是输出功率不高。

综上所述,选择第二个方案。1.4.2显示界面方案该系统要求完成倒计时功能。因为上述原因,这次设计考虑了两种选择:方案一:完整的LED点阵显示屏。这个功能强大的程序,它可以很容易地显示各种中国文字,英文字符和图形等;但复杂,必须做大量的软件工作。

方案二:完全采用数字显示。这个方案的优势是简单,是可以做到的倒计时功能。但缺点是,更少的特征只能显示有限的符号以及数字的字符。根据设计要求,方案二较为满足要求,所以这种设计使用了方案二来实现显示功能。1.4.3输入方案这里同样给出了两种可用方案:方案一:8155扩展I/O端口,键盘以及显示器。这一方案的优势是使用的灵活可编程的,并且有RAM以及计数器。如果选用这个当个可以给我们提供更多的I/O端口,但是操作稍微复杂一些。方案二:在I/O端口线直接连接按钮开关。因为流线型以及优化电路的设计,所以端口资源还更的其余部分。因为该系统是一个交通灯以及数字控制,只需使用微控制器本身的I/O端口,可实现的,以及自己的计数器以及RAM已经足够,所以选择方案二。2系统总体设计在硬件计划的全部体系的基础上还要斟酌许多方面,例如要达成交通灯的基本功能,除此之外,还重要思考如下要素:①体系的稳定性,设备的通用性②容易购买;③软件编程易于实施;④其他系统功能以及性能。因此,至关硬件设计很重要。现在,一个个从实现各功能模块的讨论以及分析。2.1总体设计该计划以单片机为中心,选用模块化来进行分模块设计,分别为了实现如下功效模块:单片机控制体系,键盘以及状态体现,模块倒计时。单片机作为硬件系统的核心,既作为协调作业机械控制器以及数据处理器。她是有单片机的振荡电路和复位电路。该体系选用双数字倒计时计数功效,最大体现数为99。界面设计方便,控制简单,本设计的最大特点是优化物理结构。2.2单片机的选择在微型计算机的重要分支中单片机占有一席之地,它是可行性很强的模式。单片机的全称是单片微型计算机,尤其是在控制领域,通常也称为微控制器。一般设备构成一个单芯片。具备和计算机相同的基本功能:CPU,存储器以及I/O接口电路。所以,微型控制器只需要软硬件之间组合适当,就可以是组成一个单芯片的控制系统。单片机从一代开始发展到如今的第四代,正朝着功能多样化,性能高级化,功耗低消耗,价格低廉,存储容量大等良好的相容性结构的方向发展。仅限于以下几个方面的发展趋势:功能将单片机所需要的存储器以及I/O端口集成在一个芯片上,从而形成可以实现更多的微控制器。例如,A/D,PWM,PCA(可编程计数器阵列),WDT(看门狗定时器看门狗),高速I/O端口以及计数器捕捉/比较逻辑。[2]一些微控制器,用于在一定的应用领域,集成相关联的控制设备,以降低芯片的应用的数目。例如,少许以51内核芯片为中心,集成USB控制器,智能卡接口,MP3解码器,CAN或I*I*C总线控制器,LED,LCD或VFD显示驱动器开始被集成在八个MCU。(2)高效率以及高性能单片机采用RISC功能,来提高执行速度以及效率处理,为了控制器的性能得到显著改善,提出了流水线以及DSP设计技术,MCU时钟频率提高;单片机的运行效率相同的频率已经大大提升;因为增加了集成技术,供应链管理的寻址能力以及片上ROM(FLASH)、RAM容量突破了以往的限制。因为系统具有很强的复杂性,开始采用如C语言的高级语言开发的单芯片方案。降低了开发难度,缩短了开发周期,减少了开发成本,改善了软件的可塑性,增加了软件的使用寿命。低电压以及低功耗低电压以及低功耗对于单片机来说是最基本的一项重要指标。由于CMOS技术的广泛使用,很多这些设备都已经在在较低的电压(1.2V或0.9V)下工作,功率消耗已经降低到微安级。这些特性使单片机系统可以支持根据功率较小的工作时间更长。[3](4)低价格普遍的微控制器应用中,使用了大量的单片机系统直接的益处便是降低成本。当前世界各大公司为了进步竞争力,同时加强MCU技能,高度重视,通过削减其产品的价格来实现。这里介绍大致SCM主要应用领域以及功能:(1)家用电器领域现在更新家电,销售等环节,应用越来越广泛,如电子玩具以及先进的视频游戏单片机,单片机将应用其控制功能;以及衣物的洗涤机可用于识别微控制器以及脏污染程度,从而自动选择洗涤强度以及洗涤时间的类型;在冰柜冷藏室选用单片机控制食物的种类和保存食品标识可以自动选择制冷温度和贮藏时间;微波加热也可以通过微控制器确定自动识别食物的温度以及加热时间,在等芯片技术的应用,这些家电的类型,两者相比传统技术的性能以及功能方面取得了很大的进步。(2)办公自动化领域单片机被广泛应用于计算机键盘,磁盘驱动器,打印机,复印机,电话以及传真机等。商业应用领域商业应用类似于家庭和办公应用,而是着眼于稳定,设备的可靠性和安全性。电子测量仪器广泛应用于商业系统,收银,条码阅读器,安防监控系统,空调系统以及制冷保鲜系统,全部采用专用系统芯片微处理器。与通用计算机比拟,因为这些体系相对关闭,病毒能够更有效地防备电磁干预,升高可靠性。(4)工业自动化事实上,它是从最初单芯片产业开始兴起,是因为它在工业控制领域的应用非常广泛,单片机技术,构成了各种各样的数据采集系统以及智能控制系统,如工厂流水线智能管理,智能电梯,报警系统等,都通过单片机技术以及计算机汇集形成二级控制体系。(5)智能仪表与集成智能传感器MCU具有集成度高,体积小,强大的控制功能以及灵活扩展等特点,处理速度快,可靠性高,所以应用程序的智能仪器仪表等领域是非常广泛的。在某方面上来说,微控制器驱动的基础衡量,保持仪表技巧的一场革命,通过单片机技巧实现了仪表技术数字化,智能化,综合性,多功能的,与传统的或数字电子电路电路相比,功能更强大,集成而更为突出。(6)现代交通与航空航天领域通常用在电子综合显示系统,电力监控系统,自动驾驶系统,通讯系统以及运营监控系统。尺寸,功耗,稳定性,以及实时性请求的这些区域每每比商业系统甚至更高,因此,使用该SCM体系是更重要的。2.3单片机的基本结构AT89S52单片机是一种低功耗,低电压,高性能CMOS8位微控制器,具有8KB(可承受1000年擦除周期)可擦写闪存可编程只读程序存储器(EPROM),该器件采用ATMEL高密度CMOS技术以及公司的非易失性存储器(NURAM)技术制造,输出引脚以及指令集兼容的MCS-51,快闪存储器芯片允许可再编程系统内,或通过常规的非易失性存储器编程到程序。因此,AT89C52是一款功能强大,高灵活性以及低成本的单芯片,可在各控制区很容易地应用。AT89S52具有以下主要特性:(1)8KB可改编流程FLASH存储器;全表态工作:0~24HZ;(3)256X8字节内部RAM;(4)32个外部双向输入,输出(I、O)口;引脚说明如图2-1。图2-1AT89S52引脚说明引脚功能如下:VCC:电源电压。GND:地面。P0口:设定时间线端口地址转换(低8位)以及数据总线复用,激活内部上拉电阻。当FLASH编程,P0口回收指令字节,而在流程校验输出目标字节,当检查需求外部上拉电阻。在拜访外部数据储存器或流程储存器时,这组口线分时转换地址(低8位)以及数据总线复用,在访问期间激活内部上拉电阻。FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻[15]。P1口:内部的上拉电阻I/O口包括一个8位双向P1,P1的硬件输出缓冲器可启动(吸收或输出电流)4个TTL逻辑门。端口写“1”拉通的端口内部拉高,此时可以作为输入。行为输入端口利用,由于内部上拉电阻的存在,一个引脚被拉低时,当前的外部信号的输出。在FLASH编程以及验证,P1接收低8位地址。P2口:8位双向IP2是一个内部的上拉电阻/O口,P2输出缓冲器可驱动(吸收或输出电流)4个TTL逻辑门。端口写“1”拉通的端口内部拉高,此时可以作为输入。作为输入端口使用,因为内部上拉电阻的存在,一个引脚被拉低时,当前的外部信号的输出。要访问外部程序存储器或16位外部数据存储器地址(如执行MOVX@DPTR指令),P2口送出高8位地址数据。P3口:8位双向IP3是一个内部的上拉电阻/O口,P3输出缓冲器可驱动(吸收或输出电流)4个TTL逻辑门。端口写“1”拉通的端口内部拉高,此时可以作为输入。作为输入端口使用,因为内部上拉电阻的存在,一个引脚被拉低时,当前的外部信号的输出[9]。P3除了作为通用I/O口线,但更重要的用途是它的第二个功能,表2-1中所述的具体特征。P3口还接收了闪存FLASH编程以及学校一些控制信号。表2-1P3口的第二功能表端口引脚第二功能P3.0RXD(穿行输出口)P3.1TXD(穿行输入口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器0)P3.6WR(外部数据写选通)P3.7RD(外部数据读选通)RST:复位输入。当振荡器RST引脚为高电平两个机器周期以上的复位装置。ALE/PROG:访问外部程序存储器以及数据存储器,当ALE(地址锁存使能)输出脉冲用于锁存低8个字节的地址。无论是否会访问外部存储器,ALE输出的时钟振荡频率都是固定值,为正脉冲信号的1/6,所以他可能或外部输出时钟定时的目的。应当指出的是:ALE脉冲会在访问外部存储器是跳过一个脉冲。在FLASH存储器编程,该引脚还可以应用于输入编程脉冲(PROG)。即使有需要,经过特别功效寄存器(SFR)地区D0位8EH单位ALE操作能够禁止。这一点,ALE惟有被一个MOVX以及MOVC指令激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE失效。PSEN:外部程序存储器读选通信号循序的一个信号,当AT80C51取从外部程序存储器指令(或数据),PSEN被激活两次,每台机器在每个周期内可以激活两次。在此期间,访问外部数据存储器时,两个有效PSEN信号不出现。EA/VPP:外部访问允许。为了使CPU仅访问外部程序存储器(寻址空间0000H-FFFFH),EA端必须保持低(地)。作为EA的高端(Vcc的一侧),CPU的指令执行的内部程序存储器。当FLASH存储器编程,该引脚与+12V的编程许可电源Vpp的,这务必利用编程电压12V的器件。XTAL1:反相振荡放大器以及内部时钟发生器的输入。XTAL2:振荡器反相放大器的输出端2.4单片机外围电路设计2.4.1复位电路设计MCS-51RST复位输入引脚MCS-51提供了技术措施来初始化,您可以使程序从指定位置开始,只要RST引脚发生在两个机器周期以上高的时候,它可以产生复位操作,只要RST居高不下,MCS-51周期复位[5],从高级别只有一个RET低电平后,MCS-51开始从地址0000H该系统程序执行使用复位按钮复位电路,如图2-2所示。图2-2按键复位方式复位电图2.2.2外部晶振时钟电路设计时钟MCS-51可以用两种方式来生产,一个是内部的方式,与芯片振荡器电路;另一个是外部的方式,本文根据实际需求以及简单,使用内部振荡模式中,内部的MCS-51具有一个放大器,引脚XTAL1以及XTAL2是的输入以及输出放大器,该放大器芯片是晶体或陶瓷谐振器的反馈元件,两个放大器芯片一起构成一个自激振荡装置。MCS-51,虽然也有内部振荡电路,而是形成时钟,必须添加成分,所以振荡时钟电路,外部晶体振荡器以及电容器C1以及C2的实际组合物形成的并联谐振电路连接到反馈回路,电容器的尺寸将影响振荡器的振荡频率稳定的水平,因为振动速度以及温度的稳定性。晶体频率可以是1.2MHZ〜12MHZ任选之间,电容器C1以及C2是20PF之间的典型值〜100pF的选择,因为该系统使用一个计时器,为了便于计算,使用12MHZ晶体,选择电容30pF的。如图2-3。图2-3外部晶振时钟电路2.2.3显示模块电路设计该模块由共阳极LED数码管,采用数字化控制的动态扫描基本思路,由晶体管,当控制数字IO端口P20以及P21低(以及晶体管基数很低),晶体管导通,VCC电源锁通过晶体管数字电源,数码管点亮,采用数码管点亮余辉以及人眼视觉基本思路的持久性的,它看起来像数码管被同时点亮。如图2-4。图2-4显示模块电路从设计的角度要求,表示时间的流逝,必须是两位LED,从节省硬件资源的角度考虑,可用于扫描处理,对7段的方式,占据7的微控制器I/O口,并分别在两个显示复杂的两个电子开关占用两个I/O端口,共四组红绿灯十字路口,有黄色的转换,共有12灯应与12端口以及应急交通控制按钮在两个方向,占两个I/O端口,所以单片机的I/O端口是24的实际占领,因此,我们可以在ATAT89S52使用51台计算机的中央处理器。单片机的I/O口作为输出,以更大的能力来吸收电流,所以我们可以使用常见的数码显示管,所以I/O端口可以直接启动,可以简化硬件设计[10]以下为数码管的相关定义函数[8]:ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,// A B C D EF 不显示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=4;//显示数码管的个位数//数码管位选定义sbitsmg_we1=P2^0; //数码管位选定义sbitsmg_we2=P2^1;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;chardx_s=0; //东西南北倒计时变量sbitdx_red=P2^4; //东西红灯sbitdx_green=P2^3; //东西绿灯sbitdx_yellow=P2^2; //东西黄灯sbitnb_red=P2^7; //南北红灯sbitnb_green=P2^6; //南北绿灯sbitnb_yellow=P2^5; //南北黄灯 ucharflag_jtd_mode;//交通灯的模式根据时间bitflag_1s=0;bitflag_500ms;bitflag_dx_nb; //东西南北模式ucharflag_5m_value;uchari;ucharflag_alarm; //模式uchardx_time=30,nb_time=20;//东西、南北的时间ucharflag_jdgz;//交通管制3交通信号灯控制系统的设计交通灯由红,绿,黄灯组成。红色光以指示流量,它允许绿光通过,黄灯表示警告。机动车信号灯,非机动车信号灯,行人信号灯,车道灯,方向灯,警灯,道路以及铁路穿越灯都是交通信号灯的一部分。交通灯十字路口的道路,通过发出旅游或停止指挥车辆,行人,让谁在同一时间到达所有的人,车辆通行流量,保证平稳安全道口。因此,在主要道路路口必须正确设计的系统。3.1十字路口交通信号灯具体的控制要求(1)交通信号灯位于卡车和一个较小的分支道路交通量,每个有三个。青绿色的南北方向以及东西方向不能亮;如果你光,应立即关闭自动信号系统,并立即发出报警信号。系统工作后,第南北红灯亮并保持30秒;与此同时,一些绿色的光,并维持25秒的时候25岁,东西绿灯熄灭。当当西方向上的绿灯时间到熄灭时,东西方向上的黄灯亮并保持5秒,然后将黄色的东西了,东西红灯,红灯熄灭,而南北,南北绿灯;东西红灯并维持30秒;同时,南北以及绿灯25秒保持;那么,南北绿灯熄灭时,绿灯熄灭南北,南北黄灯熄灭保持5秒后;而红光南北,东西向绿灯。因此,工作周期结束时,如下图3-1交通信号灯变化表:图3-1交通灯循环过程示意图(2)在交通灯以及闪光的同时,两个七段显示器与一个倒计时的交点,这样,车辆以及行人可以清楚地知道多久灯将在另一个变化。司机以及行人,以能够准确地传递在有限的时间。3.2五岔路口交通信号灯示意图五岔路口可简化为图3-2如下显示,图中道路部分分为五个岔口,我分别将五个岔口进行编号,以方便在下文中进行循环描述。在实际情况中,可根据各个路口的实际车流量大小来进行编号。图3-2五岔路口示意图3.3五岔路口交通灯工作情况一个循环两分半钟:1->4,1->3,3->130秒1->2,3->5,3->430秒2->5,2->4,4->230秒2->3,4->1,4->530秒5->1,5->2,5->330秒3.4路口交通灯时间处理函数模块voidjiaotongdeng_dis(){if(flag_1s==1) { flag_1s=0; if(dx_s==0) { if(flag_dx_nb==1) dx_s=nb_time; //南北时间 else dx_s=dx_time; //东西时间 flag_dx_nb=~flag_dx_nb; } dx_s--; } dis_smg[0]=smg_du[dx_s%10]; dis_smg[1]=smg_du[dx_s/10]; dis_smg[2]=smg_du[dx_s%10]; dis_smg[3]=smg_du[dx_s/10];/***********************南北时间*********************************/ if(flag_dx_nb==0) { if(dx_s>5) { dx_red=1;//灭 dx_green= 0; //亮 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=1;//灭 dx_green= 1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 if(flag_500ms==0) { dx_yellow=0;//亮 } else { dx_yellow=1;//灭 } } }/***********************东西时间*********************************/ if(flag_dx_nb==1) { if(dx_s>5) { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 0; //亮 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=0;//灭 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 1; //灭 if(flag_500ms==0) //黄灯闪烁 { nb_yellow=0; //亮 } else { nb_yellow=1; //灭 } } } }4交通信号灯控制系统程序编制4.1软件设计应用环境本计划软件的计划是在KeilC51的环境下编译的。KeilC51单片机兼容凯尔软件公司在美国发布的51系列单片机C语言软件开发系统,软件提供了一个丰富的库函数和强大的开发和调试工具的集成,所有的Windows界面。另一个重要的点,只要看一下编译后生成的汇编代码,可以实现我们的C51单片机生成的目标代码效率非常高,大部分的语句生成的汇编代码非常紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C语言有以下特点:(1)语言简洁、紧凑、使用方便、灵活。C语言一共只有32个字,9种控制语句,程序书写自由,主要在小写字母,压缩不必要的成分。(2)运算符丰富。C操作符包含范围很广,共有34种运营商,使C操作类型非常丰富,表达类型多样化,灵活使用不同的运营商在其他高级语言很难实现。(3)数据结构丰富,各种现代语言的数据结构,可以用于操作来实现各种复杂的数据结构。(4)结构化控制语句作为一个方便的程序的程序模块的实现功能的模块单元。(5)语法要求不多,可自由发挥程序构想。(6)C语言可以执行一个操作[2],可以实现大部分的汇编语言功能,可以直接对硬件。因此,C高级语言的功能,但也有许多低级语言的功能,可以用来编写系统软件。C语言的二元性,使它不仅是成功的系统描述语言,和泛型编程语言。(7)用C语言写的程序可移植性好。基本没有修改就可以用于计算机和各种操作系统的各种模型用C语言来对操作系统进行系统实用程序设计以及需求对硬件进行操作的场合,明显地优势于其他高级语言,有的大型应用软件也用C语言来编写。4.2软件设计流程软件总体设计主要完成各部分的软件控制以及协调。本系统主程序模块主要完成系统的初始化、发送数据显示和键盘扫描,同时等待外部中断,并根据功能的要求相应的操作。交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间。其流程图如图4-1所示。设置定时,显示初始化设置定时,显示初始化南北绿灯亮,东西红灯亮,延时南北黄灯闪烁,东西红灯亮,延时南北红灯亮,东西绿灯亮,延时南北红灯亮,东西黄灯闪烁,延时开始图4-1软件流程设计4.3交通灯定时器模块AT89S52单片机内部的3个定时器分别是T0,T1和T2,本次设计中使用T0工作方式1,在16位定时器,定时50ms,每秒信号产生20次中断,来控制红绿灯的亮灭时间。T0、T1的工作方式由工作方式寄存器TMOD来设置。这次设置TMOD=0x01,即T0工作于方式0(16位定时器)。内部定时器用来当作定时器时,是对机器周期计数,每个机器周期的长度是12个振荡周期。定时常数的设置可用一下方式计算:机器周期=12/12MHz=1us(65536-定时常数)*1.0us=50ms所以定时常数是50000。定时器T0,定时器T1初始化相关程序:voidtime0_init() {EA=1;//开总中断TMOD=0X11;//定时器0、定时器1工作方式1ET0=1;//开定时器0中断TR0=1;//允许定时器0定时ET1=1;//开定时器1中断TR1=1;//允许定时器1定时} 4.4定时器初值模块设计定时器工作时要事先给计数器假设一个初始值,将这个值送到TH以及TL中。它是用加法运算法则来存储数字的,并能当出现全1到全0时自动产生中断请求。因此工作于方式1,定时器为16位计数器其定时时间由下式计算:定时时间=(216-X)×振荡周期×12(或)X=216-定时时间/振荡周期×12式中X为T0的初始值,该值以及计数器工作方式有关。方式0定时时间=213×1微秒=8.192毫秒方式1定时时间=216×1微秒=65.536毫秒18秒钟仍旧高处了计数器的最大按时,因此咱们只有采纳定时器以及软件相结合的举措才气办理这个问题,定时器需定时50毫秒,故T0工作于方式1,定时20次,就可定时一秒。相应程序代码(1)主程序定时器需定时50毫秒,故T0工作于方式1。振荡周期×12=1微秒初值:X=216-50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令T0为定时器方式1MOVTH0,#3CH;装入定时器初值MOVTL0,#BOH;MOVIE,#82H;开T0中断SEBTTR0;启动T0计数器MOVRO,#14H;软件计数器赋初值LOOP:SJMP$;等待中断(2)中断服务子程序ORG000BHAJMPBRT0ORG00BHBRT0:DJNZR0,NEXTAJMPTIME;跳转到时间及信号灯显示子程序DJNZ:MOVR0,#14H;;恢复R0值MOVTH0,#3CH;重装入定时器初值MOVTL0,#BOH;MOVIE,#82H;开T0中断RET1END结论本论文介绍了基于AT89S52单片机的交通灯的设计方法,我在这次论文中完成了基本的硬件和软件两方面的设计与制作,详细介绍了系统硬件的背景知识以及硬件的选择方案,还介绍了硬件设计的全部过程,并结合相关软件知识完成了整个系统的软、硬件调试,系统工作正常,实现了基本功能,完成了最初的目标。通过这次毕业设计,加强了我对于学习过的专业知识的了解,真正意义上的把理论知识运用在了实际实践当中。在完成设计的过程中,我通过在互联网上查找相关资料,询问老师,在图书馆查找有关书籍等方法将不懂不理解的地方一一击破。在这短时间中,也认识到了自己的不足和短板,在日后的学习工作过程中要不断改进和提高。通过这次毕业设计,我不仅在专业知识上进一步的巩固了,而且还与同学和老师建立了良好的奋斗伙伴。锻炼了自己独立思考和团队协作能力,让自己在步入社会之前,又一次成熟了一次。再遇到不懂的地方我首先自己在网上查找相关资料,先自己努力了解一点,对于再不懂的点我会去询问专业知识比较扎实的同学或者找自己的导师去寻求帮助。提高了自己的应用能力也提高了自己的动手能力。主要参考文献[1]秦志强.C51单片机应用与C语言程序设计(第2版).电子工业出版社[2]谭浩强.C语言程序设计(第三版).清华大学出版社,2005[3]兰吉昌.51单片机应用设计例.北京化学工业出版社,2009[4]周荷琴,吴秀清.微型计算机基本思路与接口技术(第四版).中国科学技术大学出社,2008.[5]康华光.电子技术基础(第五版).华中科技大学出版社,2005[6]胡寿松.自动控制基本思路(第五版).科学出版社,2007[7]实用电子电路设计制作300例[M].中国电力出版社,2005[8]彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真(第2版)北京:电子工业出版社,2012,(10).[9]朱定华.数字电路与逻辑设计.北京:清华大学出版社,2011.[10]赵建玲.51系列单片机开发宝典[M].电子工业出版社,2007.[11]郭天祥.新概念51单片机C语言教程.北京:电子工业出版社,2012.[12]陈毅,许飞,王学飞.基于单片机的交通灯智能控制系统[J].中国高新技术企业,2009年第15期.[13]CharlesBlandRadcliffe.Proteus.NabuPress,2012,(02).[14]MeehanJoanne,MuirLindsey.SCMinMerseysideSMEs:Benefitsandbarriers[J]..TQMJournal.20082~5[15]B.A.Artwick,MicrocomputerInterfacing,Prentice-Hall,Inc,1980..附录一:源程序代码#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//宏定义"uchar"代替"unsignedchar"。#defineuintunsignedint //宏定义"uint"用来定义无符号整型数。#include"eeprom52.h"//数码管段选定义0123 4 5 6 7 8 9 ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,// A B C D EF 不显示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=4;//显示数码管的个位数//数码管位选定义sbitsmg_we1=P2^0; //数码管位选定义sbitsmg_we2=P2^1;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;chardx_s=0; //东西南北倒计时变量sbitdx_red=P2^4; //东西红灯sbitdx_green=P2^3; //东西绿灯sbitdx_yellow=P2^2; //东西黄灯sbitnb_red=P2^7; //南北红灯sbitnb_green=P2^6; //南北绿灯sbitnb_yellow=P2^5; //南北黄灯 ucharflag_jtd_mode;//交通灯的模式根据时间bitflag_1s=0;bitflag_500ms;bitflag_dx_nb; //东西南北模式ucharflag_5m_value;uchari;ucharflag_alarm; //模式uchardx_time=30,nb_time=20;//东西、南北的时间ucharflag_jdgz;//交通管制/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){ switch(i) { case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break; case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break; case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_we4=1;break; case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break; } }/******************把数据保存到单片机内部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,dx_time); byte_write(0x2001,nb_time); byte_write(0x2058,a_a); }/******************把数据从单片机内部eeprom中读出来*****************/voidread_eeprom(){ dx_time=byte_read(0x2000); nb_time=byte_read(0x2001); a_a=byte_read(0x2058);}/**************开机自检eeprom初始化*****************/voidinit_eeprom() ///开机自检eeprom初始化{ read_eeprom(); //先读 if(a_a!=1) //新的单片机初始单片机内问eeprom { a_a=1; dx_time=30; nb_time=20;//东西、南北的时间 write_eeprom(); //保存数据 } }/*********************************************************************名称:delay_1ms()*功能:延时1ms函数*输入:q*输出:无***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<110;j++);}/*********************************************************************名称:display()*功能:数码管显示*输入:无*输出:无***********************************************************************/voiddisplay(){ uchari; for(i=0;i<smg_i;i++) { P0=0xff; //消隐 smg_we_switch(i); //位选 P0=dis_smg[i]; //段选 delay_1ms(3); }}/*********************定时器0、定时器1初始化******************/voidtime0_init() { EA=1; //开总中断 TMOD=0X11; //定时器0、定时器1工作方式1 ET0=1; //开定时器0中断 TR0=1; //允许定时器0定时// ET1=1; //开定时器1中断// TR1=1; //允许定时器1定时 }/*********************交通灯处理函数*********************************/voidjiaotongdeng_dis(){ if(flag_1s==1) { flag_1s=0; if(dx_s==0) { if(flag_dx_nb==1) dx_s=nb_time; //南北时间 else dx_s=dx_time; //东西时间 flag_dx_nb=~flag_dx_nb; } dx_s--; } dis_smg[0]=smg_du[dx_s%10]; dis_smg[1]=smg_du[dx_s/10]; dis_smg[2]=smg_du[dx_s%10]; dis_smg[3]=smg_du[dx_s/10];/***********************南北时间*********************************/ if(flag_dx_nb==0) { if(dx_s>5) { dx_red=1;//灭 dx_green= 0; //亮 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=1;//灭 dx_green= 1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 if(flag_500ms==0) { dx_yellow=0;//亮 } else { dx_yellow=1;//灭 } } }/***********************东西时间*********************************/ if(flag_dx_nb==1) { if(dx_s>5) { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 0; //亮 nb_yellow=1; //灭 flag_5m_value=0; }elseif(dx_s<=5) //当小于5秒时黄灯要闪了 { dx_red=0;//灭 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=1;//灭 nb_green= 1; //灭 if(flag_500ms==0) //黄灯闪烁 { nb_yellow=0; //亮 } else { nb_yellow=1; //灭 } } } }/********************独立按键程序*****************/ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P1|=0x1f; if((P1&0x1f)!=0x1f) //按键按下 { delay_1ms(1); //按键消抖动 if(((P1&0x1f)!=0x1f)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P1&0x1f) { case0x1e:key_can=1;break; //得到按键值 case0x1d:key_can=2;break; //得到按键值 case0x1b:key_can=3;break; //得到按键值 case0x17:key_can=4;break; //得到按键值 } } } else key_new=1; }ucharmenu_1,flag_s;/********************设置函数*****************/voidkey_with(){ if(key_can==4)//交通管制按键 { flag_jdgz++; if(flag_jdgz>5) flag_jdgz=0; if(flag_jdgz==1) //全部亮红灯 { dx_red=0;//亮 dx_green= 1; //灭 dx_yellow=1; //灭 nb_red=0;//亮 nb_green= 1; //灭 nb_yellow=1; //灭 } if(flag_jdgz==2) //东西红灯南北绿灯 { dx_red=0;//亮 dx_gr

温馨提示

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

评论

0/150

提交评论