利用单片机设计交通灯.doc_第1页
利用单片机设计交通灯.doc_第2页
利用单片机设计交通灯.doc_第3页
利用单片机设计交通灯.doc_第4页
利用单片机设计交通灯.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

交通信号灯控制器的设计摘 要现代交通指挥系统中,交叉路口信号指挥灯均为无人自动控制。交通灯的设计方法多种多样,最原始的交通信号灯完全使用电路设计,不仅结构复杂,体积较大,而且维护起来十分困难。当今交通灯设计领域,普遍采用单片机,PLC等现代技术。单片机最典型的代表是MCS-51系列,80C51系列单片机产品繁多,ATMEL公司的AT89系列单片机融入flash存储器技术,应用方便,适合初学者使用,所以本系统采用AT89C51单片机制作电路。本设计是以AT89C51为核心的单片机设计设计交通信号控制器。该交通信号灯系统由AT89C51单片机系统、键盘、LED 显示、交通灯演示系统组成。首先,我们选择两路,分别为A路与B路。A路的LED显示由单片机P1口经一个译码器输出;B路的LED显示由单片机P2口经一个译码器输出。A路的信号灯由单片机P3口的P3.0,P3.1和P3.4口输出,分别控制红黄绿灯;B路的信号灯由单片机P3口的高三位输出,也分别控制红黄绿灯。在这个系统中,我们增加了两个功能。一个是当遇到紧急情况时(如110,911和120等),A路与B路都亮红灯;另一个是换灯放行功能关键词 单片机,AT89S51,C语言AbstractModern transportation conductor system in, crossroad message number conductor light all is no man auto control. The design method of transportation light is varied, the most original traffic sign light completely uses an electric circuit design ,not only structure complications, the physical volume is more big, and support very difficult .Nowadays the transportation light design realm, widespread adopt a single slice machine, PLC etc. modern technique .The single slice representative with the most typical machine is series MCS-51s,80C51 series single slice the machine product be numerous,AT89 the series single slice machine of ATMEL company integrates flash saving machine technique, applied convenience, in keeping with raw recruit usage, so this system adoption AT89S51 single slice mechanism makes electric circuit.This design takes the AT89C51 as core of single slice machine course design. The traffic signs light system is show by the AT89C51 single slice machine system, keyboard, LED and the transportation light play to show system to constitute. First, we choose two roads, is A road and B road respectively. The LED of A road show machine P the 1 people is translated a code machine to output by 1 from the single slice; The LED of B road show machine P the 2 people is translated a code machine to output by 1 from the single slice. The signal beacon of A road from single slice the machine P 3 peoples P3.0, the P3.1 and P 3.4 people output and control red and yellow green light respectively; The signal beacon of B road from single slice machine P the 3 peoples high output Wei4 output and also control red and yellow green light respectively. In this system, we increased two functions. When 1 is to be to meet an urgent circumstance(such as 110, 911 with 120 and so on), A road and B roads are all bright red light; The another changes a light to let go function.Keywords single slice machine, the AT89C51, C language17目 录摘 要IAbstractII1 引 言12硬件电路设计22.1 单片机模块22.1.1 单片机模块基本属性22.1.2 单片机管脚介绍32.2 晶振模块52.3显示电路62.3.1 74LS48功能62.3.2数码管72.4 电路设计原理及总图73 软件程序设计93.1 软件设计实现方式93.2 C语言程序流程图93.3 C语言程序代码103.4子程序结构143.4.1换灯子程序源代码143.4.2换灯子程序流程图154 电路测试164.1硬件调试164.2软件调试16结 论17致 谢18参考文献19附 录201 引 言单片机是当今自动控制学科中一门重要的学科,被广泛的应用于自动控制领域,智能领域,检测领域,定时方面等家用电器等方面。特别是近年来,随着科技的飞速发展,单片机已经不单单是技术领域的专利.它的应用正在不断地走向大众生活,同时带动传统控制检测日新月益更新,在当今高速发展高度文明的现实生活中体现,最常见最简单的单片机应用就是控制路口的交通信号灯。随着社会经济的发展,城市交通问题越来越引起人们的关注。如何提高路口车辆的通行能力,己成为交通管理部门需要解决的重要课题之一。交通灯控制系统是用于城市交通数据监测交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分 。本设计采用单片机构成交通信号灯控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。根据单片机具有物美价廉功能强使用方便灵活可靠性高等特点,使用MCS-51系列单片机中的性能极佳的AT89C51单片机, 解决由主干道(纵向)和支干道(横向)组成的十字路口, 交通信号指挥灯的自动控制问题。同时采用软硬件仿真的方法进行测试,为交通指挥自动化提供了一种新的廉价手段,具有一定的推广意义。本设计的程序是通过C语言编程来实现的,在编程过程中是通过主程序调用子程序来实现的,子程序被定义为无返回值的函数,如果有返回值,系统可能会返回一个随机值,从而影响了交通灯功能的实现。硬件电路的核心部件是AT89C51,显示电路是通过74LS48和LED来实现的,其他器件还有红、黄、绿发光二极管。2硬件电路设计2.1 单片机模块2.1.1 单片机模块基本属性本设计采用ATMEL公司的AT89S51单片机,具有以下特点:1)具备 Flash可擦写技术的4K字节的内部存储器ROM。2)128字节的RAM存储器。3)4个并行I/O接口。4)1个全双工异步串行接口。5)2个定时/计数器。6)5个中断源。7)1000次的可擦写寿命。8) 全静态工作:0Hz-24Hz。9) 低功耗工作方式:空闲方式掉电方式。10) 三级存储器保密系统,用于保护程序,防止拷贝。11) 外部接口灵活扩展。12) 编程采用111条指令,7种寻址方式。13) 与MCS-51系列单片机兼容。图2.1 80C51单片机基本结构2.1.2 单片机管脚介绍图2.2 80S51总线型引脚封装1.电源及时钟引脚(4个):电源接入引脚;:接地引脚;XTAL1:晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡时,此引脚作为外部振荡信号的输入端)。2.控制线引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚;ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚;/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;:外部程序存储器选通信号输入引脚。3.并行I/O引脚(32个,分成4个8位口)P0.OP0.7:一般I/O引脚或数据/低位地址总线复用引脚;P1.OP1.7: 一般I/O引脚;P2.OP2.7: 一般I/O引脚或高位地址总线引脚;P3.OP3.7: 一般I/O引脚或第二功能引脚。4.I/O引脚结构介绍P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口: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.0 RXD(串行输入口) P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入) P3.5 T1(记时器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禁止,置位无效。5.中断源介绍(P3.2)。外部中断0请求信号输入引脚,可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。(P3.3)。外部中断0请求信号输入引脚,可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。6.工作方式介绍方式0:13位计数器;方式1:16位计数器;方式2:自动重装初值的8位计数方式;方式3:T0分为两个独立的8位计数器,T1停止工作。7. 定时/计数器介绍80C51单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,定时/计数器T0由特殊功能寄存器TH0、TL0构成,定时/计数器T1由特殊功能寄存器TH1、TL1构成。定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。单片机复位时,两个寄存器的所有位都被清0。80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式,TCON的低4位用于控制外部中断。8. 寻址方式介绍寄存器寻址;直接寻址;寄存器间接寻址;立即寻址;基址寄存器加变址寄存器变址寻址;相对寻址和位寻址。2.2 晶振模块电路采用但片中的单片中内部时钟方式,在AT89S51单片机XTAL1XTAL2引脚外接石英晶体,就构成了自激振荡器并在单片机内部产生时钟脉冲信号。振荡电路采用两个30pF的电容,作用是稳定频率和快速起振。晶振频率为6MHz。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。晶振电路设计如下:图2.3 内部时钟方式2.3显示电路显示电路是通过P1口和P2口外接74LS48译码器来实现的。2.3.1 74LS48功能数字显示电路通常由图7-45所示的电路组成。显示器件是由显示译码器驱动,数字显示器件种类很多,按发光材料不同可分为荧光管显示器、半导体发光二极管显示器(LED)与液晶显示器(LCD)等。按显示方式的不同可分为字形重叠式、分段式、点阵式等。目前,显示译码器随显示器件的类型而变。最常用的显示译码器是直接驱动半导体数码管的七段显示译码器。本次设计采用的就是直接驱动半导体数码管的七段显示译码器表2.1 8421七段译码器译码表A3A2A1A0YaYbYcYdYeYfYg显示0000000000100001100111110010001001020011000011030100100110040101010010050110010000060111000111171000000000081001000010092.3.2数码管半导体数码管是由特殊的半导体材料磷砷化镓、磷化镓、砷化镓等制成发光二极管(LED)。七段显示器由7个条形二极管组成8字形(见下图),每一段含有一个发光二极管。有规律地控制a、b、c段亮显示“7”。半导体数码管有共阴极(见图a)和共阳极(见图b)两种接法。共阴极时,输入高电平二极管亮;共阳极时,输入低电平二极管亮。动七段数码管的是与之对应的8421 BCD七段显示译码器。输入一个4位8421码,经七段显示译码器输出数码管各段的驱动信号,控制显示相应的十进制数。若驱动共阳极LED管,则七段显示译码器的逻辑状态表如表7-14所示。由作卡诺图并化简可得逻辑关系式,无交状态作约束条件处理。2.4 电路设计原理及总图该交通信号灯控制器是AT89C51并行口输出不同数据来控制发光二极管的亮与灭。用发光二极管模拟十字路口交通灯的工作情况,同时增加显示电路。交通灯的具体工作过程如下:有个十字路口,东西和南北两个方向,南北为A路口,东西为B路口。设初始状态为A路口的红灯亮,B路口的绿灯亮,此时A路口不准通行。当15秒之后B路口绿灯亮变为黄灯,A路口红灯不灭。延时4秒之后A路口红灯变为绿灯,同时B路口的红灯亮,再15秒之后,A路口的绿灯变为黄灯,B路口依然亮红灯,延时4秒之后A路口的黄灯变为红灯,而B路口的红灯变为绿灯,以后循环以上程序。假如当有紧急情况时,按键KEY1,这时候A路与B路的灯都变为红灯,同时显示器不计时。如果A路的车流量大,B路没有车,而此时A路是红灯,B路是绿灯,此时按键KEY2,使A路亮绿灯,B路亮红灯。在此设计中将AT89C51的P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7八个口均设为A路输出口并且用P3.0、P3.1、P3.4口来控制A路口交通信号灯的红灯、黄灯和绿灯;P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7八个口均设为B路输出口并且用P3.5、P3.6、P3.7口来控制B路口交通信号灯的红灯、黄灯和绿灯。而由单片机的P3.2口做紧急中断口,用单片机的P3.3口做换路中断口。其工作流程图如图3.1所示图2.4 电路设计总图3 软件程序设计3.1 软件设计实现方式软件的实现方式是根据交通灯电路真值表而形成的:表3.1 交通灯电路真值表控制电路主干道支干道X1X2红灯1黄灯1绿灯1红灯2黄灯2绿灯2000011000101010010100001111000103.2 C语言程序流程图 开中断开始端口初始化调用huandengA子程序调用huandengB子程序启用定时计数器0 图3.1 程序流程图3.3 C语言程序代码#include #include #define lvtimeA 10#define lvtimeB 15#define huangtime 3#define hongA P3_0#define huangA P3_1#define lvA P3_4#define hongB P3_5#define huangB P3_6#define lvB P3_7#define jinji P3_2#define fangxing P3_3char data timeA;unsigned char cishu=1;bit jinjiflag=0;void hongdengA() timeA=lvtimeB+huangtime; huangA=0; lvA=0; hongA=1;void lvdengA() timeA=lvtimeA; hongA=0; huangA=0; lvA=1;void huangdengA() timeA=huangtime; lvA=0; hongA=0; huangA=1;void hongdengB() huangB=0; lvB=0; hongB=1;void lvdengB() hongB=0; huangB=0; lvB=1;void huangdengB() lvB=0; hongB=0; huangB=1;void huandengA() static unsigned char i=0; switch(i+) case 0:hongdengA();break; case 1:lvdengA();break; case 2:huangdengA();break; default:break; if(i2) i=0; void huandengB() static unsigned char j=1; switch(j+) case 0:hongdengB();break; case 1:lvdengB();break; case 2:huangdengB();break; default:break; if(j2) j=0; void xianshi() P1=(timeA/103) P2=(timeA-4)/104)+(timeA-4)%10; else P2=(timeA/104)+timeA%10; if(lvA=1) P2=(timeA+4)/104)+(timeA+4)%10;void jishi() timeA-; if(timeA5&lvB=1) huandengB(); if(timeA0&lvA!=1) huandengB(); if(timeA24) jishi(); cishu=1; cishu+;void int1() interrupt 2 if(lvB=1) timeA=0x04; if(lvA=1) timeA=0x00;3.4子程序结构 当A道红灯亮时,红灯开始计时满18秒时,A道由红灯变为绿灯,B道由绿灯变为红灯。在程序编辑时,利用子程序调用来实现。定义一个换灯子程序来实现此功能。3.4.1换灯子程序源代码void huandengA() static unsigned char i=0; switch(i+) case 0:hongdengA();break; case

温馨提示

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

最新文档

评论

0/150

提交评论