基于单片机简易交通灯设计资料_第1页
基于单片机简易交通灯设计资料_第2页
基于单片机简易交通灯设计资料_第3页
基于单片机简易交通灯设计资料_第4页
基于单片机简易交通灯设计资料_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1 2 3 3 3 52.1交通灯的工作原理 5 53硬件系统设计 9 93.1.1单片机最小系统 93.1.2信号显示驱动电路 4交通灯系统详细设计 4.1软件总体设计思想 4.2交通控制算法实现 4.3系统初始化模块 20 24 35 36参考文献 38附录三交通灯电路原理图 1绪论城市道路增长的有限与车辆增加的无限这一对矛盾是里取得什么样的实际进展,交通控制领域的控可以说真正成熟的控制策略仍然不存在.智能化和交通系统正是解决这一矛盾的途径之一。智能交通系统是将先进的信息技进入20世纪70年代,随着计算机技术和自动控制技术的发展,以及交通流越先进,形成了一批商水平有实效的城市道路交通控制系统。早在1977年,Pappis等人就将模糊控制运用到交通控制上,通过建立规则库或是专家系统对统:SC00T(经典交通系统),他们都是主要采用统计模型和经典算法。但城市交2系统工作原理及设计方案P3.7控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接,因此I/0口输出低电平时,与之相连的相应指示灯会亮,并通过LED数码管显示时控制,以中断方式输入单片机,无紧急车通过时,中断引脚INTO(P3.2)通过电中断引脚INTO(P3.2)采用人工方法接地为低电平,产生中断请求,单片机执行中断服务程序,让紧急车通过,紧急车通过后,中断引脚INTO(P3.2)变为高电不需调整周期时,中断引脚INT1(P3.3)通断引脚INT1(P3.3)采用人工方法接地为低电平,产生中中断服务程序,系统以方程式控制,按一次开关按钮A1执行方程式A,按两次开关按钮A1时执行方程式B,按三次开关按钮A1时执行方程式C。当按四次时,的方法。由于STC10F04单片机自带有2个计数器,6个中断源,能满足系统的3秒。(2)正常状态下主干道通车时间为35s,次干道通车时间为20s。(5)特殊状态的功能显示,进入特殊状态时(如119救火车,或120救护灯亮3秒。持续3秒。20秒。出现特殊情况时(如119救火车,或120救护车通过时)按下按钮A0进入向的通车时间延长15秒,即50秒。东西方向通车时间不变,为20秒。的通车时间延长25秒,即为60秒。东西方向的通车时间延长10秒,即为30南方向北方向东西方向态红黄绿红黄绿红黄绿1001101110110011301110010100130101100101110310011011010110111100110110110101011001101110101011011010101101001101100101101100101l00101010101101110101011011100110111100110111011010110111100110111011010110111101010111011100110113硬件系统设计单片机的最小系统包括电源(地),晶振(一般使用11.0592M或者12M),复抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。STC10F04单片机的定时器0/定时器1/串行口与传统8051兼容,增加了速,最快的指令快24倍,最慢的指令快3倍。3、工作频率范围:0~35MHz,相当于普通8051的0~420MHz6、通用I/0(40/36个),复位后为:准双向口/弱上拉(普通8051传统8、看门狗择低的复位门槛电压,如3.7V以下复位,复位脚接1K电阻到12、2个16位定时器(与传统8051兼容的定时器/计数器,16位定时器Powerdown(掉电)模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,INT/TO/P3.4,INT/T1/P3.5,INT/Rxd/P3.0(或INT/Rxd/P1.6)·VCC:电源电压地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,RXD(串行输入口)TXD(串行输出口)/INTO(外中断0)/INT1(外中断1)T0(定时/计数器0外部输入)T1(定时/计数器1外部输入)/WR(外部数据存储器写选通)/RD外部数据存储器读选通)复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部和PNP两种。我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管基极B集电极C发射极E下面的分析仅对于NPN型硅三极管。如上图3.4所示,我们把从基极B流至发射极E的电流叫做基极电流Ib;把从集电极C流至发射极E的电流叫做集电极电流Ic。这两个电流的方向都是流出发射极的,所以发射极E上就用了一个 (假设电源能够提供给集电极足够大的电流的话),并且基极电流很小的变化,管的放大倍数(β一般远大于1,例如几十,几百)。如果我们将一个变化的小信号加到基极跟发射极之间,这就会引起基极电流Ib后,导致了Ic很大的变化。如果集电极电流Ic是流过一个电阻R的,那么根据单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/0口上一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较独立式键盘的实现方法是利用单片机I/0口读取口的电平高低来判断是否口置于高电平,平时无键按下时I/0口保护高电平。当有键按下时,此I/0口4交通灯系统详细设计初始化外部中初始化外部中断进入while(1)循环调用显示控制函数定义字位码函数定时器0初始化I/0初始化定义共阴极字型定义函数变量并设置字型码和字位红灯全亮维持图4.2中断子程序定义1定义1svoidint_t0()iwaittime--if(tc==0){smdis=md[shu0];weishuaelseif(tc==1){smdis=m我们由在主程序中设定的初值可知T0定时5毫秒.这样每当T0到5毫秒4.3系统初始化模块式为1。系统程序中主函数初始化如下:单片机定时/计数器初值计算公式:T初值=2一定时时间/机器周期时工作在方式1,所以N=16。T初值=0xee00=60928。又因为fosc=11.0592,所以//S1发光二极管I/0口的接法如下表4.1所示东红方式控制未用未用sfrjtd=0xa0;/1交通灯的控制口,P2口sbitNLR=P3^6;//北向左转的红灯sbitNLG=P3^7;//北向左转的绿灯unsignedcharS2[]={0x95,0xbf,0x40,35};unsignedcharS6[]={0x主函数main()运行while循环,while循环调用statusdis函数来实现各个状态数组。其程序如下:{//东西红灯,南绿北红//南左转绿灯,北左转红灯//等待35秒//东西红灯3秒,南北左转均为黄灯0x00//等待3秒3//S2//东西红灯,南红北绿0x95//等待35秒35//S3//东西红灯,南红北黄0x04//等待3秒3//东西绿灯,南北红0x66//等待20秒20//东西黄灯,南红北绿0x44//南转左红灯,北转左红灯0x50//等待3秒3while(waittime)//等待35秒}jtd=status[0];11东西南北灯状态jtdh=status[1];1/东西南北灯状态句,可以增强显示--}本系统采用8位的动态数码显示。控制数码显示的数据由两部分组成,一部阴型数码管,单片机芯片的PO口和P4口引脚构成了对于这种数码管的驱动,要求在片选端提供电流,为此,使用了PNP型三极管作为片选端的驱动,共使用8只三极管,所有三极管的发射机连在一起,接到负所有8位数码管的笔段连在一起,通过先留电阻后接到PO口,因此,究竟哪些笔段亮,取决于PO口的8根线是输出高电平还是低电平。原理理图中把所有数码管的8个笔划段A-DP同名端连在一起,而每一个显示器的公共极COM到相同的字形码,由8个NPN的三极管,来控制这8位哪一位工作。具体的数4.4.2-2LED数码管引脚连接表4.2数码管引脚连接6543219P4.4(单片机29脚)P4.5(单片机30脚)P4.6(单片机31脚)78数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8由于接法为共阴接法,那么为1(高电平)是亮,为0(低电平)是灭。从AFEDCGB0111010110000010201001300014010001115010110611101107100001018111011911010111A1001B0110110C1110000D0010111E1111000F10000AFEDCGB动态借口采用各数码管循环轮流显示的方法,由于一次只能让一个数码管显示,因此,要显示8位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显示的时间大约在1ms到4ms之间,所以为了保证正确显示,我们必须每隔1ms,就得刷新一个数码管。而这刷新时间我们采用单片机的定时/计数器0来控制,每定时1ms对数码管刷新一次,TO采用方式2。在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。Unsignedcharmd[]={0xf5,0x05,0xb3,0x97,0x47,0xd6,0xf6,0xa185,0xf7,0xd7,0xe7,0x76,0xf0,,0xf2,0xe2,0x00};1/0,1,2,3,4,5,6,7得到字型和字位的地址后,向不同的字位送数据内容包括各位和十位,用取模和取余来确定。结果分别用两个6位的数码管显示if(tc==0){smdis=md[shu0];weishelseif(tc==1){smdis=md[shul];weishuang0elseif(tc==2){smdis=md[shu2];weishuang0}判断tc的值是为0还是为1,还是为2,进而根据tc的值执行相应的if语气或elseif语气。假如tc==0,则执行第一条if语气,从md[]数组中选与shu0相对应的值赋给smdis,并判断出LED数码管位的选择,其他两个elseif语气类似。中断的概念:中断时指中央处理器CPU正在执行程序,处理某件事情的时候,外部发生了某一件事情,请求CPU马上处理,CPU暂(1)实现中断及返回当某一个中断源发出中断申请时,若允许响应这个中断请求,CPU必须在现有的指令执行完以后,把断点处的(2)保护现场(3)恢复现场以提供5个中断源(52子系列是6个),具有两个中断优先级,可实现两级中断(1)基本概念4、查询硬件、中断源标识符、中断矢(向)量XES:串行口收、发中断允许位。为0时禁止该类中断,为1时允许该类中ET1:定时器/计数器1溢出中断允许位。为0时禁止该类中断,为1时允许EX1:外部中断0(INTO或P3.2)允许位。为0时禁止该类中断,为1时允ETO:定时器/计数器0溢出中断允许位。为0时禁止该类中断,为1时允许EX0:外部中断0(INTO或P3.2)允许位。为0时禁止该类中断,为1时允需要注意的是,要使某个中断源的中断申请得到响应,必须保证EA=1和相应的允许位为1.例如,要使定时器0与外部中断0的中断得到响应,必须保证可知,由允许中断的条件:总允许中断和源允许中断都接通才能产生中断。由EA=1、ETO=1、EX0=1得出初始化程序设定定时器TO和外部中断INTO中断。由EA=1、EX1=0得出初始化程序设定禁止外部中断INT1中断。(3)中断优先级控制寄存器IPPX0:外部中断0优先级设置位。PX1:外部中断1优先级设置位。PT0:定时器/计数器中断0优先级设置位。PT1:定时器/计数器中断1优先级设置位。中断优先级只分高与低两个级别,各位为0时,为低优先级;各位为1时,3、当同时收到多个同级的中断请求时,哪一个首先得到中断服务,取决于中断源同级内的优先级外部中断0最高定时器/计数器0溢出中断外部中断1定时器/计数器1溢出中断串行口最低PTO=1;//设置定时器0为高优先级PX0=0;//设置外部中断0为低优先级PX1=0;//设置外部中断1为低优先级通过上面的程序可知,TO优先级最高,然后到外部中断INTO,最后外部中断INT1优先级最低。当定时器TO运行时,外部中断INTO、INT1不能打断TO,被禁止响应。当外部中断INT1运行期间,假如定时器TO和外部中断都被响应,按照优先级的先后顺序,系统先运行定时器TO,待TO运行完后才能运行INTO,待INTO运行完了,INT1才能执行中断服务。(4)定时器控制寄存器TCON寄存器TCON的地址为88H。TCON既有定时器/计数器的控制功能,又有中断控制功能。其中,与中断有关的控制位共6位,其格式及位的含义如下:IE0:外部中断INTO的中断请求标志位。当检测到INTO引脚有中断请求信号时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0.IE1:外部中断INT1的终端请求标志位,其功能与IEO类似。TF0:片内定时器/计数器0溢出中断请求标志位。当定时器/计数器0溢出发生时,此位由硬件置1;在中断响应完成后转向中断处理子程序时,再由硬件自动清0.TF1:片内定时器/计数器1溢出中断请求标志位,其功能与TFO类同。控制将2个方向的车都停止运行,点亮所有红灯,并持续10s。下次中断来时恢复以前的状态。用一个标志位FLAG半段是第一次进入还是恢复状态,外部中调用控制函数statusdis运行紧恢复现场图4.6INTO紧急情况中断处理流程图{unsignedcharwaittimel,secl,timel,jtdl,jtdh

温馨提示

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

评论

0/150

提交评论