还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
附件1学号0121018700XXX课程设计题目交通灯控制系统模拟设计学院物流工程专业物流工程班级物流工程卓越1001姓名XXX指导教师朱宏辉2013年6月28日交通灯控制系统模拟设计XXX武汉理工大学物流工程卓越1001摘要随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足本系统采用AT89C51单片机为中心器件来设计交通灯控制器,实现了红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管);以及实现3种工作模式正常情况、繁忙情况、特殊情况及报警功能本系统实用性强、操作简单、扩展功能强关键字交通灯;AT89C51;数码管;三种工作模式DesignoftrafficlightcontrolsystemsimulationZhimingGuoLogisticsEngineeringCollegeLogisticszy1001Abstract:Withthedevelopmentofeconomythesharpincreaseinthenumberofcarsincreasinglycrowdedcityroadstrafficcongestionhasbecomeaninternationalproblem.Thereforemulti-functiontrafficlightcontrolsystemdesignofreliablesafeconvenientandofgreatpracticalnecessity.Accordingtothecharacteristicsoftrafficlightsintheactualcontrolcombinedwiththecontrolfunctionofsinglechipthispaperpresentsasimplemethodforautomaticcontroloftrafficlightswithsinglechipmicrocomputer.Inthedesignofhardwarecircuitdesignandprogramdesignincludestwostepsonseveralimportantsingle-chiplearninghavetogetinvolvedin.ThesystemcentricdevicestodesignthetrafficlightcontrollerAT89C51realizesthecycletrafficlightslitcountdown5secondsleftwhentheyellowlightflashingwarningtrafficlightsignaloutputdisplaytimethroughtheoutputportP0totwodigitaltubethroughtheP1port;3workmodes:normalbusyandimplementationsituationspecialcircumstancesandalarmfunction.Thesystempracticalsimpleoperationstrongfunctionexpansion.Keywords:rafficlightsAT89C51LEDthreeworkmodes目录TOC\o1-3\h\u课程设计任务书1第1章前言
21.1交通灯发展概述
21.2课题背景及意义
21.3课题任务及主要实现内容
31.4原理分析
41.
4.1交通灯显示时序的理论分析
41.
4.2交通灯显示的理论分析5第2章设计方案分析
62.1单片机与外围接口部件
62.2倒计时显示界面
62.3交通灯6第3章硬件系统设计
83.1单片机的选择
83.
1.1AT89C51单片机简介
83.
1.2AT89C51单片机的主要特性
83.
1.3主要引脚功能
93.
1.4C51的中断源
113.2硬件电路实现
113.
2.1最小系统设计
113.
2.2显示设计
133.
2.3发光二极管模拟红绿灯
163.
2.4按键模块16第4章软件电路设计
174.1软件编译环境测试
174.
1.1C语言介绍
174.
1.2KeiluVision4介绍
174.2软件总体设计17结论20参考文献21源程序22课程设计任务书学生姓名XXX专业班级物流工程卓越1001指导教师朱宏辉工作单位物流工程题目:交通灯控制系统模拟设计初始条件
1.熟悉背景资料和任务熟悉给定的背景资料和数据,明确系统设计的任务要求;拟订设计计划和初步方案2.单片机应用系统硬件结构设计分析背景资料给定的相关技术要求和功能指标,采用自上而下的设计方法,完成系统硬件结构的规划设计,并详细设计单片机应用系统的电路原理图对于相对简单的应用系统,可设计出PCB图要求完成的主要任务:交通灯控制系统采用AT89C51单片机为中心器件来设计交通灯控制器,实现了红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管);以及实现3种工作模式正常情况、繁忙情况、特殊情况及报警功能本系统实用性强、操作简单、扩展功能强时间安排十六周到十七周设计,十七周答辩指导教师签名年月日系主任(或责任教师)签名年月日第1章前言单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种单片机微型计算机简称单片机,特别适用于控制领域,故称为微控制器通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件中央处理器、存储器和I/O接口电路等因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统单片机经过
1、
2、3,三代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗
1.1交通灯发展概述早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注世界上第一台交通自动信号灯的诞生,拉开了城市交通控制的序幕,1868年,英国工程师纳伊特在伦敦威斯特敏斯特街口安装了一台红绿两色的煤气照明灯,用来控制交叉路口马车的通行,但一次煤气爆炸事故致使这种交通信号灯几乎销声匿迹了近半个世纪1914年及稍晚一些时候,美国的克利夫兰、纽约和芝加哥才重新出现了交通信号灯,它们采用电力驱动,与现在意义上的信号灯已经相差无几1926年英国人第一次安装和使用自动化的控制器来控制交通信号灯,这是城市交通自动控制的起点伴随着城市交通信号控制系统的迅速发展人们认识到,要更好地提高城市管理水平,不仅仅依靠硬件设备的更新和改进,还必须同时在控制逻辑和方法上有所突破,即城市交通的区域协调控制传统的城市道路交通控制指的是区域交叉口信号灯控制,而城市交通的区域协调控制,是在整个城市范围内对交通进行控制,这无论是从理论角度还是实践角度,都是一个极其复杂的大系统控制问题可以说,在近百年的发展中,道路交通信号控制系统经历了无感应控制到有感应控制、手动控制到自动控制再到智能控制、单点控制点控到干线控制线控再到区域控制和网络控制面控的过程
1.2课题背景及意义当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段但这一技术在19世纪就已出现了1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行这是世界上最早的交通信号灯1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上红灯亮表示“停止”,绿灯亮表示“通行”1918年,又出现了带控制的红绿灯和红外线红绿灯带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口如果将每个交通十字路口的多余交通警察撤回,安排在最不利于管理和事故高发的地方,不但可以大大的降低交通事故的发生率,而且可以节省大量的人力财力所以,采用单片机自动控制交通灯有现实的社会意义
1.3课题任务及主要实现内容本系统由单片机系统、数码管显示、交通灯显示系统组成系统除基本的交通功能外,还具有倒计时,时间设置东西、南北两个干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,此外,每个路口加入一个新的左转绿灯,以区别直行路灯,指挥车辆安全通行红灯亮禁止通行,绿灯亮允许通行黄灯亮提示人们注意红、绿灯的状态即将切换程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环系统分三种工作模式正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化正常模式直行时间显示数码管显示60此时南北段直行通行(绿灯)、东西段禁止(红灯)40s,同时南北段和东西段方向的数码管分别从40s和60s开始倒计时,至最后5s时南北段绿灯变成黄灯闪烁;此后南北段左拐(左拐灯亮)通行、东西段禁止(红灯)20s,同时南北段和东西段方向的数码管都从20s开始倒计时,至最后5s时南北段左拐灯变成黄灯闪烁;再后东西段直行通行(绿灯)、南北段禁止(红灯)40s,同时东西段和南北段方向的数码管分别从40s和60s开始倒计时,至最后5s时东西段绿灯变成黄灯闪烁;最后东西段左拐(左拐灯亮)通行、南北段禁止(红灯)20s,同时东西段和南北段方向的数码管都从20s开始倒计时,至最后5s时东西段左拐灯变成黄灯闪烁繁忙模式南北段、东西段的通行时间改为45s,其中左拐的时间改为15s,其它与正常模式类似特殊模式特殊模式灯亮,南北段、东西段的通行时间改为0s,禁止左转和直行,东西南北四个方向都亮红灯
1.4原理分析
1.
4.1交通灯显示时序的理论分析下图所示为一种红绿灯规则的状态图图1-1状态S1南北直行通行图1-2状态S2南北左拐通行图1-3状态S3东西直行通行图1-4状态S4东西左拐通行交通灯状态转化图图1-5交通灯状态循环图依据上述车辆行驶的状态图,可以列出各个路口灯的逻辑表如下表所示其中逻辑值“1”代表直行通行,逻辑值“0”代表禁止通行,逻辑值“L”代表左拐通行表1-1逻辑值ENWNS10101S20L0LS31010S4L0L
01.
4.2交通灯显示的理论分析倒计时显示的理论分析利用定时器中断,设TH0=TH1=65536-50000/256,即每
0.05秒中断一次每到第20次中断即过了20*
0.05秒=1秒时,使时间的计数值减1,便实现了倒计时的功能状态灯显示的理论分析黄灯闪烁同样可以利用定时器中断每到第10次中断即过了10*
0.05秒=
0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次第2章设计方案分析本设计实现的交通灯是一款的多功能交通灯,预期实现的主要功能如下
1.具有时间显示功能,数码管倒计时功能;
2.红绿灯具有四种状态,南北直行,南北左拐,东西直行,东西左拐;
3.具有模式转换功能,切换到不同状态,交通灯通行时间不一样;
2.1单片机与外围接口部件根据课题任务的要求,该系统具有交通灯的显示功能,倒计时功能,改变时间设定功能,所以把系统分为几个模块,包括倒计时显示器、交通信号灯、控制模块系统硬件框图如下图2-1图2-1硬件框图该系统主控芯片单片机采用AT89C51,它内部具有128个8位用户数据存储单元和128个专用寄存器单元,两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向,可以满足该控制程序系统的设计要求
2.2倒计时显示界面该系统要求完成倒计时、状态灯等功能基于上述原因,我们考虑了二种方案方案一完全采用数码管显示显示简单,程序简单,端口用的少法案二完全采用点阵式LED显示这种方案实现复杂,且须完成大量的软件工作但功能强大,可方便的显示各种英文字符,汉字,图形等权衡利弊,第一种的方案适合于此题,我们决定采用方案二实现系统的时间显示
2.3交通灯发光二极管简称为LED,在此处设计中我们用他来模拟红绿黄交通灯,普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮它属于电流控制型半导体器件,使用时需串接合适的限流电阻第3章硬件系统设计
3.1单片机的选择
3.
1.1AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机单片机的可擦除只读存储器可以反复擦除100次该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
3.
1.2AT89C51单片机的主要特性与MCS-51兼容,4K字节可编程闪烁存储器,寿命1000写/擦循环,数据保留时间10年,全静态工作0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源),可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路·时钟电路时钟电路的作用是产生单片机工作所需要的时钟脉冲序列·中断系统中断系统的作用主要是对外部或内部的终端请求进行管理与处理AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源图3AT89C51系列单片机的内部结构示意图
3.
1.3主要引脚功能图4AT89C51引脚图·VCC电源电压·GND接地·P0口P0口是一组8位双向I/0口P0口即可作地址/数据总线使用,又可以作为通用的I/O口使用当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了在访问期间激活要使用上拉电阻·P1口Pl是一个带内部上拉电阻的8准位双向I/O口,P1作为通用的I/O口使用·P2口P2是一个带有内部上拉电阻的8位准双向I/O口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址·P3口P3口是一组带有内部上拉电阻的8位准双向I/0口P3口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,具体分配如下表具有第二功能的P3口引脚端口引脚第二功能P
3.0RXD(串行输入口)P
3.1TXD(串行输出口)P
3.2/INT0(外中断0)P
3.3/INT1(外中断1)P
3.4T0(定时/计数器0外部输入)P
3.5T1(定时/计数器1外部输入)P
3.6/WR(外部数据存储器写选通)P
3.7/RD外部数据存储器读选通)·RST复位输入当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能DISRT0位缺省为RESET输出高电平打开状态·ALE/当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作该位置位后,只有一条M0VX和M0VC指令ALE才会被激活此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效·程序储存允许()输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲当访问外部数据存储器,没有两次有效的信号·/VPP外部访问允许欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)需注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令F1ash存储器编程时,该引脚加上+12V的编程电压Vcc·XTAL1振荡器反相放大器及内部时钟发生器的输入端
3.
1.4C51的中断源C51有5个中断源,它们是两个外中断INT0(P
3.2)和INT1(P
3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制其中5个中断源的程序入口地址如下表所示中断源的服务程序入口地址中断源入口地址外中断00003H定时/计数器0000BH外中断10013H定时/计数器0001BH串行口中断0023H
3.2硬件电路实现选用设备8051单片机一片,共阴极的七段两位数码管两个,红、黄、交通灯各四个,绿发光二极管8个,按键三个、电容两个22pF,电阻十六个470Ω,晶体振荡器一个,连线若干
3.
2.1最小系统设计单片机最小系统有一个单片机加上一个复位电路和振荡电路组成如图3-2所示1.复位电路单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位当复位电平持续两个机器周期以上时复位有效复位电平的持续时间必须大于单片机的两个机器周期具体数值可以由RC电路计算出时间常数复位电路由手动复位和上电复位两部分组成
(1)上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作
(2)手动复位手动复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位单片机复位期间不产生ALE和PSEN信号,即ALE=1和PSEN=1这表明单片机复位期间不会有任何取指操作本设计的复位电路,如图3-2所示图3-2复位电路图
2.振荡电路单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率单片机晶振的作用是为系统提供基本的时钟信号单片机的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式在内部时钟方式下单片机内部的高增益、反相放大器通过XTAL
1、XTAL2外接作为反馈元件的外部晶体管振荡器与电容组成的并联谐振回路构成一个稳定的自激振荡器,向内部时钟电路提供振荡时钟振荡器的频率主要取决于晶体的振荡频率MCS-51单片机的晶体振荡频率可以再1-12MHz范围内选择,电容C
1、C2的选择范围是15-45pF,电容的大小会影响振荡器的稳定性和起振速度外部时钟方式是把外部已有的时钟信号引入到单片机内此方式常用于多片单片机同时工作,以便于各单片机的同步一般要求外部信号高电平的持续时间大于20μs,且为频率低于12MHz的方波本设计采用内部时钟方式,采用
11.0592MHz的晶振和两个22pF的电容如图3-所示图3-3振荡电路图
3.
2.2显示设计LED显示器由七个发光二极管组成,因此也称之为七段LED显示器,此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点通过七段发光二极管的不同组合,可以显示多种数字、字母或者其他符号LED显示器中的发光二极管共有两种连接方法如图3-3所示
(1)共阳极接法把发光二极管的阳极连在一起构成公共阳极使用时公共阳极接+5V这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮
(2)共阴极接法把发光二极管的阴极连在一起构成公共阴极使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮http://photo.blog.sina.com.cn/showpic.html\lblogid=62d3a73a0100i917url=http://s
15.sinaimg.cn/orignal/62d3a73a48540fea2c79e\t_blank图3-3LED引脚图及两种连接方法此设计用共阴级的2位数码管,如图3-4所示图3-4二位数码管经过万用表测定,此设计所用的数码管的引脚图,如下图3-5所示图3-5实物数码管引脚图LED显示分为动态显示和静态显示
(1)静态显示,是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止这种显示方法每一位都需要有一个8位输出控口控制,占用硬件资源多,一般用于显示位数较少场合静态显示时,较小的驱动电流就可以得到较高的显示亮度,所以可由接口芯片直接驱动
(2)动态显示,是一位一位地轮流点亮各位数码管对于多位LED显示器的接口电路来说,需要有两个输出口各位数码管的段控线相应并联在一起,由一个8位的I/O口控制,还学要一个输出口输出位控制信号,“位控”实际上就是对LED显示器的公共端进行控制,位控信号的数目与显示器个数相同这种电路的特点是节省I/O口线,硬件电路相对静态显示方式简单动态显示方式的硬件电路简单,动态显示采用多路复用技术的动态扫描显示方式,利用人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素静态显示程序简单,且CPU占用率低,但每个LED数码管需要一个锁存器来锁存每一个显示位的代码,硬件开销大,仅适合显示位数较少的场合本设计采用两个二位一体共阴数码管,不管将几位数码管连在一起,数码管的显示原理都是一样的,用P0口来控制LED数码管的段控线和和利用P2口控制位控线,动态显示采用动态扫描的方法进行显示及循环点亮每一个数码管,虽然任何时刻都只有一位数码管被点亮,但由于人眼存在暂留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉图3-6二位数码管
3.
2.3发光二极管模拟红绿灯它是半导体二极管的一种,可以把电能转化成光能,常简写为LED发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光不同的半导体材料中电子和空穴所处的能量状态不同当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短常用的是发红光、绿光或黄光的二极管发光二极管的反向击穿电压约5伏它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流
3.
2.4按键模块程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环系统分三种工作模式正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化正常模式下东西南北直行通行时间为40S,左转为20S,繁忙模式下直行时间改为20S,左转为15S,特殊模式下四个方向都亮红灯,禁止通行,3个按键可以互相转化按键图如3-7所示图3-7按键模块这里用到了二极管做开关,是为了防止有一按键被按下3根线同时被低,中断无效二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关利用二极管的开关特性,可以组成各种逻辑电路第4章软件电路设计
4.1软件编译环境测试
4.
1.1C语言介绍C语言是一种通用的计算机程序设计语言,它既可以用来编写计算机的系统程序也可以用来编写一般的应用程序以前计算机的系统软件主要用汇编语言编写,单片机应用系统更是如此由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难,为了提高单片机应用程序的开发效率,改善程序的可读性和可移植性,采用高级语言无疑是一种最好的选择C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以前只能采用汇编语言来解决的问题现在都可以用C语言来解决综上所述,C语言在功能上、结构性、可读性、可维护性上有明显的优势,故本课题采用C语言实现软件功能
4.
1.2KeiluVision4介绍本课题采用KeiluVision4软件开发系统,KeiluVision4是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统KeiluVision4是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision4还提供了一个配置向导功能,加速了启动代码和配置文件的生成此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等uVision4提供逻辑分析器,可监控基于MCU的I/O引脚和外设状态变化下的程序变量
4.2软件总体设计主程序流程图如下图4-1所示图4-1主程序流程图本设计中用到了定时器T0中断来控制灯的闪烁和数码管的倒计时功能,定时器中断流程图如下图4-2所示,外部中断流程图如4-3所示图4-2定时器中断流程图图4-3外部中断0中断流程图本设计用外部中断来控制按下键之后的情况,上图4-3为外部中断的流程图结论经过两周的努力工作,终于完成了自己的单片机课程设计虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅本设计是一款的多功能交通灯,采用AT89C51单片机为核心,2位LED数码管显示,本设计采用模块化的设计方法,硬件设计包括单片机模块、显示模块、发光二极管模块、相关控制模块等的模块化设计与制作;整个设计过程是硬件和软件相结合的,并采用C语言编写实现根据要求用单片机对其进行控制,取得了以下研究成果
(1)控制系统接线图
(2)控制系统工作原理的阐述
(3)硬件电路的完成由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,达到了预期设计要求的结果,实现了交通灯4个状态的转化,数码管的倒计时功能,和特殊情况下的交通灯的变化至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解在整个课程设计过程我还掌握了一下几点
(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法
(2)理解了最单片机的各部分组成及特性
(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用
(4)学会了利用KeiluVision4对C语言进行编译过程.更进一步加深了对PROTEUS软件的学习还有,我还发现自身一些毛病一,前期准备工作做的不够好,想的还算多,可就是没落实先说选题,就表现自己有畏难情绪,其实当时找到好几个题目,但交通灯最熟悉,所以就选了它就这,还没做的很理想,还有好些功能可以加上去,像通过测流量来自动调整通行时间,加个监控电路,看门狗电路等二,行动起来不是很卖力,虽说动手还算早,但每天的进展却不大,可以说做与玩相伴而行通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪这样才能将事情做好,才能干出一番成就我觉得类似这种课程设计的实践真的不错,通过这些项目练习,我自学能力,解决实际问题的能力得到提高,可以说是对综合素质全面提升,我想这也是我们上大学应真正学到的参考文献
[1]胡汉才.单片机原理及接口技术.清华大学出版社,2004
[2]张培忠.单片机C程序设计实验/实训指导书.浙江工商职业技术学院,2008
[3]刘同法,陈忠平.单片机基础与最小系统实践[M].北京北京航空航天大学出版社
2007.
[4]周坚.单片机C语言轻松入门[M].北京北京航空航天大学出版社,2006
[5]肖金球.单片机原理与接口技术.肖金球.清华大学出版社,出版日期2004
[6]梅丽风.单片机原理及接口技术.梅丽风.清华大学出版社,2004
[7]李泉溪.单片机原理及应用实例仿真.2010附录原理图:源程序/*******************************************************十字路口交通灯控制C语言程序*******************************************************/#defineucharunsignedchar//定义无符号字符型#defineuintunsignedint//定义无符号整型#includereg
51.h//调用reg
51.h头文件/*******************定义数码管端口*******************/sbitE_LED1=P2^0;//E_LED1控制位sbitE_LED2=P2^1;//E_LED2控制位sbitW_LED1=P2^0;//W_LED1控制位sbitW_LED2=P2^1;//W_LED2控制位sbitS_LED1=P2^2;//S_LED1控制位sbitS_LED2=P2^3;//S_LED2控制位sbitN_LED1=P2^2;//N_LED1控制位sbitN_LED2=P2^3;//N_LED2控制位/********************定义控制位***********************/sbitE1_LED=P1^3;//E1_LED红灯sbitE2_LED=P1^2;//E2_LED黄灯sbitE3_LED=P1^1;//E3_LED绿灯sbitE4_LED=P1^0;//E4_LED绿灯sbitW1_LED=P1^3;//W1_LED红灯sbitW2_LED=P1^2;//W2_LED黄灯sbitW3_LED=P1^1;//W3_LED绿灯sbitW4_LED=P1^0;//W4_LED绿灯sbitN1_LED=P1^7;//N1_LED红灯sbitN2_LED=P1^6;//N2_LED黄灯sbitN3_LED=P1^5;//N3_LED绿灯sbitN4_LED=P1^4;//N4_LED绿灯sbitS1_LED=P1^7;//S1_LED红灯sbitS2_LED=P1^6;//S2_LED黄灯sbitS3_LED=P1^5;//S3_LED绿灯sbitS4_LED=P1^4;//S4_LED绿灯sbitNOM_LED=P2^6;//交通灯正常指示灯sbitBUSY_LED=P2^7;//交通繁忙指示灯sbitSPE_LED=P2^5;//交通特殊指示灯sbitSPK=P2^4;//定义喇叭端口/***********************功能键**************************/sbitNOM_BUTTON=P3^3;//交通正常按键sbitBUSY_BUTTON=P3^5;//交通繁忙按键sbitSPE_BUTTON=P3^6;//交通特殊按键/***********************黄灯闪烁***********************/bitFlag_S2_LED;//N黄灯标志位bitFlag_E2_LED;//E黄灯标志位charT_EW;//东西方向倒计时单元charT_SN;//南北方向倒计时单元ucharEW=60SN=40EWL=19SNL=19;//程序初始化赋值,正常模式ucharEW1=60SN1=40EWL1=19SNL1=19;//用于存放修改值的变量ucharcodetable
[10]={0XC00XF90XA40XB00X990X920X820XF80X800X90};//1~~~~9段选码/**********************延时子程序************************/voidDelayuchara{uchari;i=a;whilei--{;}}/*****************显示子函数**************************/voidDisplayvoid{charhl;h=T_EW/10;l=T_EW%10;P0=table[l];E_LED2=1;W_LED2=1;Delay2;E_LED2=0;W_LED2=0;P0=table[h];E_LED1=1;W_LED1=1;Delay2;E_LED1=0;W_LED1=0;h=T_SN/10;l=T_SN%10;P0=table[l];S_LED2=1;N_LED2=1;Delay2;S_LED2=0;N_LED2=0;P0=table[h];S_LED1=1;N_LED1=1;Delay2;S_LED1=0;N_LED1=0;}/**********************外部0中断服务程序************************/voidEXINT0voidinterrupt0using1{ifNOM_BUTTON==0//测试按键是否按下,按下为正常状态{EW1=60;SN1=40;EWL1=19;SNL1=19;BUSY_LED=0;//关繁忙信号灯SPE_LED=0;//关特殊信号灯NOM_LED=1;//开正常信号灯}ifBUSY_BUTTON==0//测试按键是否按下,按下为繁忙状态{EW1=30;SN1=20;EWL1=9;SNL1=9;NOM_LED=0;//关正常信号灯SPE_LED=0;//关特殊信号灯BUSY_LED=1;//开繁忙信号灯}ifSPE_BUTTON==0//测试按键是否按下,按下为特殊状态{EW1=0;SN1=0;EWL1=0;SNL1=0;P0=0XFF;P1=0X77;NOM_LED=0;//关正常信号灯BUSY_LED=0;//关繁忙信号灯SPE_LED=1;//开特殊信号灯SPK=0;}}/**********************T0中断服务程序*******************/voidtimer0voidinterrupt1using1{staticucharcount;TH0=65536-50000/256;TL0=65536-50000%256;count++;ifcount==10{ifFlag_S2_LED==0//测试南北黄灯标志位{S2_LED=~S2_LED;}ifFlag_E2_LED==0//测试东西黄灯标志位{E2_LED=~E2_LED;}}ifcount==20{T_EW--;T_SN--;ifFlag_S2_LED==0//测试南北黄灯标志位{S2_LED=~S2_LED;}ifFlag_E2_LED==0//测试东西黄灯标志位{E2_LED=~E2_LED;}count=0;}}/*********************主程序开始**********************/voidmainvoid{NOM_LED=1;BUSY_LED=0;SPE_LED=0;IT0=0;//INT0低电平触发TMOD=0x01;//定时器工作于方式1TH0=65536-50000/256;//定时器赋初值TL0=65536-50000%256;EA=1;//CPU开中断总允许ET0=1;//开定时中断EX0=1;//开外部INTO中断TR0=1;//启动定时while1{/*******S0状态**********/Flag_E2_LED=1;//EW关黄灯显示信号T_EW=EW;T_SN=SN;whileT_SN=5{P1=0xD7;//SN通行,EW红灯Display;}/*******S1状态**********/whileT_SN=0{Flag_S2_LED=0;//SN开黄灯信号位E1_LED=0;//SN黄灯亮,等待左拐信号,EW红灯W1_LED=0;Display;}/*******S2状态**********/Flag_S2_LED=1;//SN关黄灯显示信号T_SN=SNL;S1_LED=0;N1_LED=0;whileT_SN=5{P1=0xe7;//SN左拐绿灯亮,EW红灯Display;}/*******S3状态**********/whileT_SN=0{Flag_S2_LED=0;//SN开黄灯信号位E1_LED=0;//SN黄灯亮等待停止信号,EW红灯W1_LED=0;Display;}/***********赋值**********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*******S4状态**********/Flag_S2_LED=1;//SN关黄灯显示信号T_EW=SN;T_SN=EW;whileT_EW=5{P1=0x7d;//EW通行,SN红灯Display;}/*******S5状态**********/whileT_EW=0{Flag_E2_LED=0;//EW开黄灯信号位S1_LED=0;//EW黄灯亮,等待左拐信号,SN红灯N1_LED=0;Display;}/*******S6状态**********/Flag_E2_LED=1;//EW关黄灯显示信号T_EW=EWL;E1_LED=1;W1_LED=1;whileT_EW=5{P1=0x7e;//EW左拐绿灯亮,SN红灯Display;}/*******S7状态**********/whileT_EW=0{Flag_E2_LED=0;//EN开黄灯信号位S1_LED=0;//EW黄灯亮,等待停止信号,SN红灯N1_LED=0;Display;}/***********赋值**********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;}}开始单片机初始化SN直行EW禁行EW禁行SN禁行通行35s通行35sSN黄灯闪EW黄灯闪闪5s闪5sSN左拐EW禁行通行15sEW左拐SN禁行SN黄灯闪通行15s闪5SEW黄灯闪闪5S。