35-1附件二:□规定类□自选类西南交通大学电气工程学院实验竞赛月活动实验(作品)报告作品名称:智能交通灯的设计、仿真及实践专业:电气工程及其自动化队员姓名:指导老师:作品完成起止时间:2012年4月13日起至5月10日止2012年3月35-2一、课题的由来当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两色旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。二、课题的目的、意义为了使行人通过十字路口时更加方便、安全,也使车辆通行秩序化、规范化,就必须设计出更加完善、更加人性化和更加规范化的交通灯,以保障行人和车辆的安全通行,减少社会公共财富的流失。我们为了使通行更加方便,在实现交通灯的基本功能的前提下,增设了蜂鸣器,这不仅能给行人以提示,更能引导盲人安全通过十字路口,而且蜂鸣器的声音也能是司机保持警惕,大幅度增加了十字路口交通的安全性。我们设计的单片机控制交通灯就是基于信号灯,同时也加入了个性元素。三、人员分工蔺子存:实现对交通灯电路的仿真,程序的编写及修改,绘制并制作印制板;俞宙杰:实物制作与连接,程序的编写及修改;王竞远:结题报告的编写,程序的编写及修改。四、实验原理及预期结果35-3在本次实验中,本队本队使用了单片机和数字电路两种仿真方式设计出了较为合理的交通灯方案,我们也对传统交通灯进行了适当改进,使其更适应当今复杂多变的交通环境。(一)基于单片机原理的智能交通灯设计仿真与实践1、单片机简介单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。35-4P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当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/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。35-5/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2、Proteus7与Keil3C51的原理及仿真Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP、WIN7等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil3C51与Proteus的联调:35-6这是本设计仿真的核心。在所有仿真软件以及编译器之间,只有Proteus和KeilC51之间才能实现C语言编译8051、AVR等系列单片机程序.hex文件和proteus单片机模块的完美联调。在联调中需要用到右图所示的驱动,且需要设置Proteus启动远程调试功能,以及Keil的OptionforTarget‘Target1’选项中通过修改Tools.int目录调试出“调试”中的“ProteusVSMSimulator”一栏,就可以实现与Proteus的联合仿真。3、仿真电路的功能实现在Proteus中,AT89c51单片机的仿真电路省略了复位电路、晶振以及部分固定的接口的接线,经几次修改后的仿真电路图如下:工作方式:(1)正常显示:南北亮红灯,从24秒开始倒计时;东西亮绿灯,20秒开始倒计时东西倒计时到0,绿灯灭,黄灯亮3秒,并倒计时东西红灯亮,从31秒倒计时;南北绿灯亮,从25秒倒计时南北倒计时到0,绿灯灭,黄灯亮5秒,并倒计时35-735-835-9(2)信号灯时间调节按钮功能:SET:按1下为调节东西绿灯显示时间;按2下为调节东西黄灯时间;按3下为调节南北绿灯时间;按4下为调节南北黄灯时间。调时间时数码管以每秒钟3次的频率闪动,红灯时间=绿灯时间+黄灯时间+1ADD:时间+1,长按加10SUB:时间-1,长按减10(3)紧急情况中断功能SW1闭合:正常显示状态和调时间状态时闭合,所有计时停止,数码管熄灭,东西南北信号灯统一亮红灯SW1断开:数码管点亮,继续从中断时间计时,信号灯继续亮红灯,待缓冲倒计时结束后恢复正常信号灯显示35-104、单片机源程序:#includeat89x51.hunsignedcharnum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数字0~9unsignedcharctr[]={0x7e,0xf5};//0xfa(P3_0和P3_2为0,即高位有效)0xf5(P3_1和P3_3为0,即低位有效)//修改::0xfe(P3_7为1)unsignedchardisEW[2];//记录东西向高低位数值unsignedchardisSN[2];//记录南北向高低位数值unsignedcharv;unsignedcharcnt_ctr;unsignedintscdEW,scdSN;unsignedintcntSN,cntEW;unsignedcharcntP3_4,cntP3_5,cntP3_6;unsignedintcnt_num,cnt_key,cnt_flash,keyMemory;intgreenEW=20,yellowEW=3,greenSN=25,yellowSN=5;//延时函数,a为1延时1毫秒voidde