• 优质范文
  • 工作总结
  • 工作计划
  • 作文大全
  • 心得体会
  • 述职报告
  • 实习报告
  • 写作方案
  • 教案反思
  • 演讲稿
  • 发言稿
  • 读书笔记
  • 精美散文
  • 读观后感
  • 范文大全
  • 当前位置: 博通范文网 > 写作方案 > 正文

    智能交通系统毕业论文

    时间:2021-09-22 来源:博通范文网 本文已影响 博通范文网手机站

    智能交通系统毕业论文 摘 要 随着现代社会的快速发展,各种各样的交通工具成为了代步工具,特别是近年来小汽车的普及,加重了现有交通资源的压力。优化交通网络可以缓解交通压力,但是投入成本较高,还要受很多环境因素的影响,对于道路交通的控制方法和控制技术的优化显得更容易实现,而交通灯是整个交通网的指挥系统。

    本文研究的是以STC89C52RC单片机为控制器的智能交通灯控制系统,该系统在基础交通灯系统的基础上增加了如下功能:(1)自动实时监测车流量并将传回的数据进行处理,动态分配不同方向的通车时间,最大程度优化交通道路资源;

    (2)紧急情况强制转换通车;

    (3)根据车流量自动进入夜间模式等功能。本设计进行软硬件整体设计,并利用PROTEUS软件进行软件仿真,并进行了硬件板卡实现。

    关键词:智能交通灯;

    STC89C52;

    智能控制;

    74HC573 ABSTRACT With the rapid developments of modern society, all kinds of traffic tools has become the transport, especially the popularity of the car in recent years, which increased the pressure of the existing transport resources, Although optimizing the transportation networks can ease traffic pressure, the cost is higher,and which is influenced by many environment factors also.Optimizing the control methods and control technologies are more easy to implement, and the traffic light is the core command system for entire transportation network.This paper has researched the controller of the intelligent traffic light control system based on STC89C52RC single-chip microcomputer.The system of traffic lights on based system increased automatic real-time monitoring on the basis of the number of cars and will be back to the data, the dynamic distribution of different directions of traffic time, maximum optimization of traffic resources; Emergency coercion; According to the number of cars and the time, the control system can enter the night mode automatically.This design carries on the overall design flow of software and hardware, using the PROTEUS software for simulation, and the circuit board was implemented at last. KeyWords:Intelligent traffic lights; STC89C52; Intelligent control; 74 hc573 目 录 第一章 绪论 1 1.1 智能交通系统发展史 1 1.2 智能交通系统的发展现状 1 1.3 智能交通灯研究的意义 2 第二章 系统总体方案设计 3 2.1 通行状态设计 3 2.2 交通灯系统的功能设计 4 2.3 系统总体框图 5 第三章 硬件电路设计 6 3.1 STC89C52RC单片机简介 6 3.1.1 STC89C52RC主要特性 6 3.1.2 STC89C52RC单片机的工作模式 7 3.1.3 STC89C52RC引脚功能说明 7 3.2 各模块电路设计 12 3.2.1 时钟电路 12 3.2.2 复位电路 13 3.2.3 强制转换电路 13 3.2.4 车流量检测电路 13 3.2.5 数码管显示电路 14 3.2.6 红绿灯显示电路 14 第四章 软件设计 16 4.1 程序主体设计 16 4.2 模块化程序设计 17 4.2.1 主程序 17 4.2.2 初始化函数 17 4.2.3 定时函数 18 4.2.4 毫秒延时函数 18 4.2.5 交通灯函数 18 4.2.6 数码管显示函数 19 4.2.7 强制转换函数 20 第五章 仿真测试 21 5.1 软件仿真 21 5.2 硬件仿真 23 5.3 功能测试 26 第六章 总结 27 参考文献 28 致 谢 29 附录:

    源程序 30 第一章 绪论 1.1 智能交通系统发展史 随着社会的快速发展和人口数量的急剧上升,有限的道路资源已经无法满足时代的需要,交通控制也就应运而生。交通控制在人类社会生产和生活中起着越来越重要的作用,没有有序的交通控制,我们的交通网将陷入瘫痪状态。同样,交通控制也在随着我们社会和科学的进步而发展,由最初的人工手动控制发展到机械控制,再发展到电气控制,到现在发展为今天的智能交通系统(ITS,Intelligent Transportation Systems)。

    交通灯是交通控制的重要手段,早在19世纪就出现了最原始的交通灯。19世纪初,在英国约克城女性穿着不同颜色的衣服代表不同的身份。在交通灯出现之前,马车压人事件时常在英国会议大厦前上演。直到1868年12月,英国著名机械设计师德· 哈特由红绿色的服装代表不同身份这件人们习以为常的事情中受到了启发,于是他设计了英国也是世界上第一盏交通灯,它是在7米高的灯柱上挂着两盏红绿颜色的煤气灯,通过牵动皮带将不同颜色的灯提上来来告诉是通行还是禁行,最初的交通灯是煤气交通灯,不幸的是第一盏煤气交通灯仅面世23天就因为煤气爆炸炸死人而被迫停止。

    爆炸噩梦一直影响着人们,销声匿迹几十年后终于在1914年,通过不断的实验研究,世界上第一台电气信号灯在美国克利夫兰市诞生了。但是到1918年为止,世界上各种各样的交通灯都还是只有红绿两种颜色。伴随着交通的发展和需要,第一盏名副其实的交通信号灯在1918年诞生了,它有红黄绿三种颜色组成,一直延续到今天,我们还是在使用三色交通信号灯。虽然三色信号灯诞生在美国,但是黄色信号灯的发明者是我国当时在美国深造的胡汝鼎。他怀着“科学救国”的抱负到美国深造,当时他在美国通用电器公司工作,某天,他在十字路口看到变为红灯时准备走过去,正好一辆转弯的汽车呼啸而过,差点撞到他,于是他反复思考,终于想到在绿色和红色之间加一个黄色灯提醒人们。他把这一想法反映给有关部门,很快这个建议得到了肯定,并应用到实际中。

    1928年在上海的英租界出现的红绿灯是中国最早的交通灯。

    1.2 智能交通系统的发展现状 纵观国际上的智能交通系统,在20世纪六七十年代智能交通系统开始萌芽。随着现代社会的快速发展和技术的进步,智能化系统逐步发展到交通系统,智能交通系统包括车辆控制系统、车辆监控系统、车辆高度管理系统。通过监控系统实时监测各路段的实时路况,然后通过卫星联网,实现管理中心与驾驶员的双向通讯,及时告知该路段中驾驶员附近路段的实时路况,避免走拥堵线路,通过这样进行高度管理,然后是汽车本身的智能化,可以根据卫星定位第一时间了解目前所在地和目的地之间的路况,智能提供最优路线给驾驶员。因此,实时性、系统性和交互性是智能交通系统的主要特点。

    首先,实时性至关重要,如果监控、采集的数据不是实时的将没有任何意义,就不能有效的做到预防交通拥堵,因此,采集的交通数据要第一时间通过网络发送到交通管理中心,再通过管理中心针对性的将数据发送到相关区域中的驾驶员。

    其次是系统性,交通网相互交织,非常复杂,但是必须由点到面,将各个路段的信息收集到一起,再由交通管理中心统一调度,系统管理,这样的交通才能井然有序。

    最后是交互性,是智能交通系统中最难的,它不再是单纯的某种技术,而是将各种最先进的技术进行交互式组合形成的。涉及电子、通信、信息、交通工程和系统工程等诸多学科,就是将信息、计算机、数据通信、传感器、自动控制、运筹学、互联网进行有效的组合形成最终的智能交通系统。

    智能交通系统通过传播实时的交通信息使出行者对自己所处的实时交通环境有一个全面的了解,进而选择最适合自己出行的路线,最大程度地缓和了道路堵塞、减少了环境污染和交通事故,提高了交通利用者的方便、舒适度。

    1.3 智能交通灯研究的意义 现代社会交通拥堵严重,不仅浪费了很多时间,还加重环境的污染和交通事故率的增加,交通问题会造成巨大的经济损失。交通运输关系到国家经济的兴衰,是经济建设的重要组成部分。同时,交通问题也是一个世界性难题。作为智能交通系统的核心部分,智能交通灯的发展对智能交通系统有着决定性的作用。

    第二章 系统总体方案设计 2.1 通行状态设计 十字路口车辆通行状态有四种,假设为东西方向和南北方向,四种状态如图2.1:

    南北向绿灯、东西向红灯 南北向黄灯、东西向红灯 南北向红灯、东西向绿灯 南北向红灯、东西向黄灯 图2.1 四种通行状态 系统工作时按照上面四个状态依次循环工作,任何时刻只能有一个方向的车通行,四个状态的工作流程如下:

    (1)南北向通行,东西向禁行,南北向绿灯55秒(初始值,工作一个周期后会根据车流量变化);

    (2)南北向和东西向都禁行,南北向黄灯5秒(值不变);

    (3)南北向禁行,东西向通行,东西向绿灯55秒(初始值,工作一个周期后会根据车流量变化);

    (4)南北向和东西向都禁行,东西向黄灯5秒(值不变);

    状态(4)完成后又变换到状态(1),反复循环。

    红绿灯的状态表如下表2.1所示:

    表2.1 红绿灯状态表 状态1 状态3 状态4 状态6 东西红灯 0 0 1 1 东西黄灯 1 1 1 0 东西绿灯 1 1 0 1 南北红灯 1 1 0 0 南北黄灯 1 0 1 1 南北绿灯 0 1 1 1 说明:1表示灭,0表示亮 2.2 交通灯系统的功能设计 除了常见的基本功能外还增加了车流量检测及自动控制红绿灯时间的功能,提高车辆行驶效率;

    为了让特殊车辆快速通行,增加了强制转换功能;通过对车流量的统计,当某段时间内通过的车辆数量总和小于某数时将自动进入闲时模式。

    (1)车辆检测技术 随着车辆拥有率的不断升高,道路拥堵特别是十字路口的堵塞变得尤为严重,因此,提高十字路口的通行效率也变得尤为重要,这就需要实时的按照车流量的多少智能调整两个方向的红绿灯时间,最大程度的保证车辆的通行。现今的检测技术主要有红外线检测器、地磁检测器、机械压电检测器、磁频检测器、波频检测器、视频检测器等。红外检测车流量是通过使用红外对接管,一个发射,一个接收,能接收到红外是一个电平(有高有低,看硬件参数的),有车的时候会挡住红外的接收,这样接收不到红外,没有车的时候一直可以接收到红外,这样一高一低电平通过单片机计数器可以实现车流量统计,本设计以120秒为一个检测周期,对采集到的数据进行运算,再分配两个方向的绿灯时间,例如南北方向的车流量为SN,东西方向的车流量为WE,那么南北方向下一个周期的绿灯时间为Tsn=(120-10)*SN/(SN+WE),舍去小数部分取整数,东西方向的绿灯时间为Twe=120-10-Tsn,公式中减去的10秒为两次5秒黄灯时间。一个周期是固定,但是不能让一边的时间太短或者太长,所以当任何一边的绿灯时间大于90秒时都取90秒,当任何一边的时间小于20秒时都取20秒。由于没有红外对接管,这里使用按键代替。

    (2)强制转换功能 每次看到路上的急救车或者消防车被红绿堵在车流中,都是既焦急又无奈,因此设计了强制转换功能,当某个方向有特殊车辆只需按下该方向的强制转换按钮即可立即让该方向的车辆优先通过,这样就为消防和医院的急救争取了时间。

    (3)闲时模式 当车流量很少时,特别是夜间,每个方向的车流量都很少,有时甚至没有,这样如果时间设置的很长很容易让司机产生焦虑,因而不顾交通规则强行通过,车流量很少的时候车速往往很快,这样很容易产生交通事故。通过车流量检测,当两个方向的车辆总数少于一定数量时将自动进入闲时模式,即每个方向都是15秒绿灯时间,一旦车流量超过设置的数值时会自动恢复到正常工作状态。

    2.3 系统总体框图 系统外接5V直流电源,并和内部时钟电路、复位电路构成单片机最小系统。在最小系统的基础上,由按键电路和检测电路组成输入电路,按键控制特殊情况强制转换,检测电路实时车流量检测,单片机对输入的信号进行运算和处理,产生输出信号,用来控制交通灯模块和数码管驱动,再通过数码管驱动控制数码管显示剩余时间。

    电源 交通灯模块 单片机(MCU) STC89C52 时钟电路 数码管驱动模块 (74HC573) 复位电路 按键电路 检测电路 数码管显示 图2.2 系统总体框图 第三章 硬件电路设计 此设计以STC89C52单片机为主控制器,搭载按键、红外对管、发光二极管、数码管驱动及数码管,构成一个完整的智能交通灯系统。总电路图如图3.1所示:

    图3.1 总体硬件电路图 通过单片机控制红外对管,当车辆通过时会不停的阻断红外信号,就会产生不断变化的高低电平,计数器T0和T1分别对东西和南北向的车流量进行计数,然后通过单片机计算东西向和南北向下一个周期的绿灯时间分别是多少,再将数据传给数码管驱动和交通灯,最后通过数码管驱动控制数码管显示剩余时间。本设计的硬件核心是单片机(MCU),型号是STC89C52RC。

    3.1 STC89C52RC单片机简介 STC89C52RC单片机是深圳宏晶公司设计的一款高速、低功耗的单片机,并且兼容传统8051单片机。

    3.1.1 STC89C52RC主要特性 (1)增强型8051单片机,有6和12两个时钟/机器周期可以任意选择,完全兼容传统8051 (2)工作电压:5V单片机(5.5V~3.3V)/3V单片机(3.8V~2.0V) (3)频率范围:0~40MHz,实际工作频率可达48MHz (4)用户应用程序空间ROM为8K字节 (5)片上集成512字节数据存储空间RAM (6)通用I/O口(32个) (7)支持ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器和仿真 器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序 (8)具有EEPROM功能 (9)具有看门狗功能 (10)共3个16位定时器/计数器 (11)PDIP40封装 3.1.2 STC89C52RC单片机的工作模式 (1)正常工作模式:典型功耗4mA~7mA (2)空闲模式:典型功耗2mA (3)掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序 3.1.3 STC89C52RC引脚功能说明 STC89C52RC引脚图如图3.2所示 VCC(40引脚):电源电压 GND(20引脚):接地 P0端口(39~32引脚):P0口是一个漏极开路的8位双向I/O口。P0口可以作为普通的I/O口使用,但需加上拉电阻构成准双向口。当作为普通I/O口输入 时,应先向端口的输出锁存器写入1。在访问外部程序和数据存储器时,P0口可 以作为地址总线(低8位)和8位数据的分时复用总线。

    P1端口(1~8引脚):8位准双向I/O口,具有内部上拉电阻。P1口是专为用户使用的准双向I/O口,当作为普通I/O口输入时,应先向端口的输出锁存器 写入1。

    此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),这是和89C51的区别。具体参见下表3.1:

    在对Flash ROM编程和程序校验时,P1接收低8位地址。

    表3.1 P1.0和P1.1引脚复用功能 引脚号 功能特性 P1.0 T2(定时器/计数器2外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器2捕获/重装触发和方向控制) 图3.2 STC89C52RC引脚图 P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2口可以作为地址总线(高8位)。

    P3端口(P3.0~P3.7,10~17引脚):8位准双向I/O口,具有内部上拉电阻。P1口是专为用户使用的准双向I/O口,当作为普通I/O口输入时,应先向端口的输出锁存器写入1。

    P3口除作为一般I/O口外,还有第二种复用功能,如下表所示:

    表3.2 P3口引脚复用功能 引脚号 复用功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 (外部中断0) P3.3 (外部中断1) P3.4 T0(定时器0的外部输入) P3.5 T1(定时器1的外部输入) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器读选通) RST(9引脚):复位信号输入端,高电平有效。当单片机运行时,该引脚维持大于两个机器周期(24个时钟振荡周期)的高电平时,单片机将进行复位。在单片机正常工作时,该引脚电压低于0.5V。

    ALE/(30引脚):ALE为低8位地址锁存允许信号。在系统扩展时,ALE的负跳沿将P0口发出低8位地址锁存在外接地址锁存器中,然后P0口再作为数据端口,以实现P0口的低8位地址和数据分时传送。

    此外,单片机运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率的1/6,该正脉冲信号可以作为时钟源或者定时信号使用。但是要注意的是,每次单片机访问外部RAM时要丢失一个ALE脉冲。因此,严格的说用户不宜用ALE作为精确的时钟源或者定时信号。

    为该引脚的第二功能,在对片内Flash存储器编程时,此引脚作为编 程脉冲输入端。

    (29引脚):片外程序存储器的读选通信号。在单片机读外部程序存储器时,此引脚输出脉冲的负跳沿作为读外部程序存储器的选通信号。此引脚接外部存储器的端,在访问外部RAM时,信号无效。

    /VPP(31引脚):外部程序存储器访问允许控制端。为低电平时,单片机访问从0000H到FFFFH的外部程序存储器,内部程序存储器不起作用。当为高电平时,单片机读取内部程序存储器。VPP为该引脚第二功能,是编程电压输入端。在对片内Flash固化编程时应加+5V或+12V电压。

    XTAL1(19引脚):片内振荡器反相放大器和内部时钟发生电路的输入端。

    XTAL2(18引脚):片内振荡器反相放大器的输出端。

    3.1.4 特殊功能寄存器(SFR) 在STC89C52RC片内存储器中,80H~FFH共128个单元位特殊功能寄存器(SFR),SFR的地址空间如下表3.3所示:

    表3.3 STC89C52RC的特殊功能寄存器 特殊功能寄存器符号 名称 字节地址 位地址 B B寄存器 F0H F7H~F0H A(Acc) 累加器 E0H E7H~E0H PSW 程序状态字 D0H D7H~D0H TH2 定时器/计数器2(高字节) CDH — TL2 定时器/计数器2(低字节) CCH — RCAP2H 定时器2 16位扑捉/自动重载(高字节) CBH — RCAP2L 定时器2 16位扑捉/自动重载(低字节) CAH — T2MOD 定时器/计数器2方式控制 C9H — T2CON 定时器/计数器2控制 C8H CFH~C8H IP 中断优先级控制 B8H BFH~B8H P3 P3口 B0H B7H~B0H IE 中断允许控制 A8H AFH~A8H P2 P2口 A0H A7H~A0H SBUF 串行数据缓冲器 99H — SCON 串行控制 98H 9FH~98H P1 P1口 90H 97H~90H TH1 定时器/计数器1(高字节) 8DH — TH0 定时器/计数器0(高字节) 8CH — TL1 定时器/计数器1(低字节) 8BH — TL0 定时器/计数器0(低字节) 8AH — TMOD 定时器/计数器方式控制 89H — TCON 定时器/计数器控制 88H 8FH~88F PCON 电源控制 87H — DPH 数据指针高字节 83H — DPL 数据指针低字节 82H — SP 堆栈指针 81H — P0 P0口 80H 87H~80H 并非所有的地址都被定义,从80H~FFH共128个字节只有一部分被定义。还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。

    不应将“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。

    STC89C52RC和其他89C51一样都有T0、T1两个定时器/计数器,都具有四种工作方式,通过工作方式控制寄存器TMOD进行模式和工作方式的选择,TMOD格式如表3.4所示:

    表3.4 TMOD格式 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/ M1 M0 GATE C/ M1 M0 T0方式字段 T1方式字段 TMOD各位功能如下:

    (1)GATE——门控位 GATE=0时,仅用运行控制位TRx(x=0,1)来控制定时器/计数器计数;

    GATE=1时,需用外中断引脚上的高电平与运行控制位TRx共同控制定时器/计数器计数。

    (2)M1、M0——工作方式选择位 M1、M0有四种编码,分别代表四种工作方式,如表3.5所示 表3.5 M1、M0工作方式选择 M1 M0 工作方式 0 0 方式0: 13为定时器/计数器 0 1 方式1: 16位定时器/计数器 1 0 方式2:

    8位的常数自动重新装载的定时器/计数器 1 1 方式3:

    仅适用于T0,此时T0分成两个8位的计数器,T1停止计数 (3)C/——计数器模式和定时器模式选择位 C/=0,为定时器模式,对晶振12分频后的脉冲进行计数。

    C/=1,为计数器模式,计数器对外部引脚T0或T1的外部脉冲(负跳变) 计数。

    TCON 有八位,可按位寻址,该设计中只需用到高四位,故只对高四位进行说明:

    (1)TF1/TF0——计数溢出标志位 当计数器溢出时,该位置“1”,应软件清“0”。

    (2)TR1/TR0——计数运行控制位 该位置“1”时启动定时器/计数器工作;

    该位清“0”时停止定时器/计数器工作。

    STC89C52RC除了有定时器/计数器0和定时器/计数器1之外,还增加了一个定时器/计数器2。控制和状态位分别位于T2CON(见表3.6)和T2MOD(见表3.7)。

    定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择。定时器2有三种工作模式:捕捉方式、自动重载和波特率发生器。工作模式由T2CON中的相关位选择(如表3.8所列)。定时器2 有2 个8位寄存器:TH2和TL2。

    表3.6 特殊功能寄存器T2CON CFH CEH CDH CCH CBH CAH C9H C8H TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ CP/ 表3.7 定时器2模式控制寄存器(T2MOD) D7 D6 D5 D4 D3 D2 D1 D0 - - - - - - T2OE DCEN 表3.8 定时器2工作方式 RCLK+TCLK CP/ TR2 模式 0 0 1 16位自动重装 0 1 1 16位捕获 1 X 1 波特率发生器 X X 0 (关闭) 自动重装模式该模定时器2递增计数到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L 和RCAP2H中的16位值作为重新装载值装入定时器2。RCAP2L和RCAP2H的值是通过软件预设的。

    3.2 各模块电路设计 3.2.1 时钟电路 时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3.3(a) 所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用晶振和两个30pF电容组成的并联谐振回路。

    外部方式的时钟电路如图3.3(b)所示,XTAL1接地,XTAL2接外部振荡器。

    (a)内部方式时钟电路 (b)外部方式时钟电路 图3.3 时钟电路 3.2.2 复位电路 复位就是对单片机的进行初始化操作。其主要功能就是将PC值初始化,使单片机从0000H单元开始执行程序。复位除了进入系统的正常初始化之外,当系统处于死循环状态时,为正常工作,可以按复位键重新启动。此设计采用的是按键电平复位,如图3.4所示:

    图3.4 复位电路 3.2.3 强制转换电路 强制转换电路是在有特殊车辆或者紧急情况需要一边马上通行的情况下,按下相应的按键,该方向就会一直保持绿灯,紧急情况解除时只需要按复位键即可进入正常模式。

    如图3.5所示,正常模式下P3.0和P3.1脚都是高电平,当按下南北向按键时P3.1脚会检测到低电平,通过程序控制使南北向绿灯常亮,东西向保持红灯亮;

    反之,当按下东西向按键时,P3.0脚会检测到低电平,此时,东西向绿灯常亮,南北向保持红灯亮。

    图3.5 强制转换电路 3.2.4 车流量检测电路 如图3.6所示,东西向检测按键接单片机P3.4脚,南北向接P3.5脚,初始状态两引脚都是高电平,当有车辆通过时,按键将被压下闭合,使得对应引脚变为低电平,计数器接收到该信号将自动加1,计数以120秒为一个周期,当到达120秒时计数器将自动置零重新计数。通过对计数器的数据进行运算,分配南北向和东西向的绿灯时间。

    图3.6 车流量检测电路 3.2.5 数码管显示电路 如图3.7所示,两个74HC573锁存器,U2是位选锁存器,U3是段选锁存器,当锁存引脚为高电平时为直通状态,当为低电平时为锁存状态,锁定后数据将不再变化,直到解除锁定,通过一定的延时可以实现数码管的动态显示,但是由于延时时间很短,肉眼无法分辨,所以我们看到的是静态的。

    图3.7 数码管显示电路 3.2.6 红绿灯显示电路 如图3.8所示,所有发光二极管正极接正5V电压,通过控制负 极的电平来决定是否点亮,例如,当P0.0脚为低电平时,南北方向的 红灯将被点亮,当P0.0为高电平时,南北方向的红灯将熄灭。

    图3.8 红绿灯显示电路 特别需要注意的是,因为P0口内部是漏极开路型,所以在做I/O口使用时需要加上上拉电阻,否则电流不足以驱动发光二极管。如图3.9所示:

    图3.9 P0口接上拉电阻 第四章 软件设计 4.1 程序主体设计 本设计采用keil软件进行软件设计,编译后生成hex文件可供proteus进行软件仿真和硬件下载到单片机仿真。软件系统由很多模块组成:主程序、初始化程序、延时函数、定时函数、交通灯函数、数码管动态显示函数、东西向和南北向强制转换函数等。对它们进行有序的组合才能让系统正常工作。程序流程图如图4.1所示:

    开始 初始化 设定初值 P3.0和P3.1电平检测 东西向红灯 P3.0为低电平 P3.1为低电平 南北向绿灯 东西向绿灯 南北向黄灯5秒 南北向车流量 东西向车流量 南北向红灯 东西向绿灯 南北向红灯 南北向绿灯 东西向红灯 东西向黄灯5秒 图4.1 程序流程总图 4.2 模块化程序设计 4.2.1 主程序 在C语言中有且必须有一个主函数main,都是从main函数开始执行,又是以main函数结束。

    void main(void) { init(); //初始化函数 k1=1; k2=1; for(;;) { light(); led(); changewe(); changesn(); } } 首先调用初始化函数,然后将强制转换按钮置高电平,最后进入一个for循环这是一个死循环,循环中调用了很多子程序,如交通灯函数、数码管显示函数、东西向和南北向的强制转换函数。

    4.2.2 初始化函数 初始化函数是对计数器和定时器的一些模式和工作方式进行选择、赋初值以及启动计数器和定时器。我们需要对计数器T0、T1和定时器T2赋初值,因为计数器都是从0开始计数,故将计数器的初值都赋值为0,因为工作在方式1,所以,最大计数65536次,对于定时器T2,工作在16位自动重装模式,晶振频率为12MHz,故计数周期为T=12/12MHz=1us,最多计时65.5ms就会溢出,因此采用50ms计时,初值为X=65536-50000,所以RCAP2H = (65536-50000)/256,RCAP2L = (65536-50000)%256。

    void init(void) { T2CON=0x01; //16位自动重装 TMOD = 0x55; //计数器T0、T1,工作方式1 TH0=0; //计数初值清0 TL0=0; //计数初值清0 ET0=1; //使T0中断可以溢出 EA =1; //开启总中断 IT0=1; TR0=1; //计数器0启动 TH1=0; //计数初值清0 TL1=0; //计数初值清0 ET1=1; //使T1中断可以溢出 IT1=1; TR1=1; //计数器1启动 RCAP2H = (65536-50000)/256;//晶振12M 60ms 16bit 自动重载 RCAP2L = (65536-50000)%256; ET2=1; //打开定时器中断 TR2=1; //打开定时器开关 } 4.2.3 定时函数 定时函数是通过定时器T2进行定时,主要有两个定时,一个是1秒定时,当一秒到了数码管显示时间将进行减1操作;

    另外一个是120秒定时,本设计以120秒为一个周期通过计数器T1和T0分别对南北向和东西向车流量进行计数,然后对数据进行运算,求出两个方向的绿灯时间,最后对计数器清零,重新开始计数。

    4.2.4 毫秒延时函数 void delay(uchar t) { uchar i; for(t;t>0;t--) { for(i=120;i>0;i--); } } 单片机的晶振是12M时,通过keil仿真该延时函数接近1ms(0.986us)的时间。其他函数中有很多地方需要用到延时函数,比如数码管动态显示、按键的消抖都需要很短暂的延时。

    4.2.5 交通灯函数 void light() { P0=c[k]; } 交通灯由12个发光二极管组成,正极都接在正5V电压上,因为通过P0口控制发光二极管负极的高低电平来点亮或者熄灭发光二极管,该函数中通过在不同时间把数组c[4]={0x33,0x35,0x1E,0x2E}的某个元素赋值给P0口来控制交通灯。

    4.2.6 数码管显示函数 void led() { P2=b[0]; //南北向个位数码管位选 L2=1; L2=0; P2=a[SN%10]; //南北向个位数码管段选 L1=1; L1=0; delay(20); P2=b[1]; //南北向十位数码管位选 L2=1; L2=0; P2=a[SN/10]; //南北向十位数码管段选 L1=1; L1=0; delay(20); P2=b[2]; //东西向个位数码管位选 L2=1; L2=0; P2=a[WE%10]; //东西向个位数码管段选 L1=1; L1=0; delay(20); P2=b[3]; //东西向十位数码管位选 L2=1; L2=0; P2=a[WE/10]; //东西向十位数码管段选 L1=1; L1=0; delay(20); } 通过锁存器74HC573可以动态的显示四位数码管,因为延时时间极短,人眼不能分辨,所以我们看起来是静态的,实际上是数码管在不停的动态扫描。这样做主要是为了节省I/O口。

    4.2.7 强制转换函数 强制转换函数主要是不停的扫描按键电平,当相应方向按键为低电平时将会使该方向的绿灯点亮,另外一个方向的红灯点亮。该函数中要注意按键的消抖,本设计中采用软件消抖,就是检测到低电平时进行一个很短的延时,然后看按键是否还为低电平,如果是则确定是按键按下,然后执行后面的程序。

    第五章 仿真测试 5.1 软件仿真 本设计通过使用Proteus进行软件仿真,将系统电路图绘制完成,在单片机上将Keil软件编译生成的hex输出文件载入就可以进行仿真。仿真结果如下:

    图5.1 Proteus仿真(南北向绿灯、东西向红灯) 图5.2 Proteus仿真(南北向黄灯、东西向红灯) 图5.3 Proteus仿真(南北向红灯、东西向绿灯) 图5.4 Proteus仿真(南北向红灯、东西向黄灯) 图5.5 Proteus仿真(南北向、东西向强制转换电路) 5.2 硬件仿真 根据电路图使用万能板做成成品,将程序下载到单片机进行硬件仿真,仿真结果如下图:

    图5.6 硬件仿真(南北向绿灯、东西向红灯) 图5.7 硬件仿真(南北向黄灯、东西向红灯) 图5.8 硬件仿真(南北向红灯、东西向绿灯) 图5.9 硬件仿真(南北向红灯、东西向黄灯) 图5.10 硬件仿真(南北向强制通行) 图5.11 硬件仿真(东西向强制通行) 5.3 功能测试 经过对设计所包括的功能进行一一测试,均测试通过。车流量检测电路正常工作,计数正确。当计数总数少于20时将进入闲时模式,每个方向15秒绿灯,5秒黄灯,总共40秒一个小周期,三个小周期构成一个大周期120秒,一个大周期内计数器总数大于20将自动进入正常模式。强制转换为单向通行时将不会自动恢复到正常模式,只有按复位键才能恢复正常。

    第六章 总结 经过一个月的努力,查看各种书记、资料,通过网络搜索,认真学习了单片机的基础相关知识,对以前所学的知识进行了巩固,圆满完成了毕业设计。

    首先是对交通信号灯的功能进行构思,通过不同的方案的比较,主要是车流量检测方案的选择,最终选择红外对管检测,原因是红外检测灵敏度高,操作方便,寿命长,维护方便,成本低。其次是对元器件的选择,设计中需要两个计数器和一个定时器,89C51只有两个定时器/计数器无法满足需要,因此选择STC89C52,它具有三个定时器/计数器,数码管驱动选择74HC573锁存器,编程简单,选择完成后就是对电路图的绘制,然后进行软件编程,编译后生成hex文件,通过proteus软件进行软件仿真,在仿真中不断的修改源程序,直至程序和仿真满足自己的目标。最后按照电路图在万能板上用电烙铁进行焊接,连接好电路。硬件电路连接好后将程序下载到单片机,连接电源线进行硬件仿真。

    在整个过程中遇到各种问题,不过通过反复检查修改,问题逐渐减少,最后完全达到了自己最初的目标,软硬件都能正常仿真运行。通过本次设计学会了很多,也将大学四年所学的知识进行了整合运用,在实践中对知识的理解更透彻。

    参考文献 [1]方俊锋.嵌入式8位MCU内核的设计研究[D].陕西:西安电子科技大学,2003.[2]孙玉芳.基于单片机的智能交通灯控制系统的研究[D].哈尔滨:哈尔滨工程大学,2009.[3]周蔚吾.道路交通信号灯控制设置技术手册[M].北京:知识产权出版社,2009.[4]迈尔斯(英).智能交通系统手册[M].北京,人民交通出版社,2007.[5]邹力.物联网与智能交通[M].北京,电子工业出版社,2012.[6]余锡存,曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.[7]李学海.标准80C51单片机基础教程[M].北京:北京航空航天大学出版社,2006.[8]雷丽文 .微机原理与接口技术[M].北京:电子工业出版社,1997.[9]张靖武,周灵彬.单片机原理、应用与PROTEUS仿真[M].北京:电子工业出版社,2008。

    [10]张毅刚,彭喜元.单片机原理与应用设计[M].北京:电子工业出版社,2008. 致 谢 在论文完成之际,我首先向关心帮助和指导我的指导老师XX老师表示衷心的感谢并致以崇高的敬意!从论文的开题到完成,XX老师给了我很多意见和帮助,还给了很多参考资料,从旁引导我完成这篇论文。XX老师严谨的治学态度加上丰富的专业知识使我受益匪浅,在此,再次向佘老师表示衷心的感谢。

    此外还要感谢一起生活四年的室友们,感谢那些一起努力的日子,在论文完成过程中给我的帮助,包括资料的收集,图书的借阅,还有论文的排版,没有你们的帮助,我的论文不可能完成的如此顺利。

    最后,衷心感谢在百忙之中抽出时间审阅本论文的老师。

    附录:

    源程序 #include #define uchar unsigned char sbit k1=P3^0; //东西向强制通行按键 sbit k2=P3^1; //南北向强制通行按键 sbit L2=P3^7; //位选锁存器使能端 sbit L1=P3^6; //段选锁存器使能端 uchar code a[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; uchar code b[4]={0x40,0x80,0x10,0x20}; //P1口低有效 uchar code c[4]={0x33,0x35,0x1E,0x2E}; //P0口 低电平有效 int SN=55,WE=60,SN_G=55,WE_G=55; //SN表示南北方向 WE表示东西方向 int n=0,p; uchar i,k=0,count=0,count1=0,count2,num=0; void delay(uchar t); void light(); void led(); void changesn(); void changewe(); /*******程序初始化**********/ void init(void) { T2CON=0x01; //16位自动重装 TMOD = 0x55; //计数器T0、T1,工作方式1 TH0=0; //计数初值清0 TL0=0; //计数初值清0 ET0=1; //使T0中断可以溢出 EA =1; //开启总中断 IT0=1; TR0=1; //计数器0启动 TH1=0; //计数初值清0 TL1=0; //计数初值清0 ET1=1; //使T1中断可以溢出 IT1=1; TR1=1; //计数器1启动 RCAP2H = (65536-50000)/256;//晶振12M 60ms 16bit 自动重载 RCAP2L = (65536-50000)%256; ET2=1; //打开定时器中断 TR2=1; //打开定时器开关 } /********定时函数*********/ void timer(void) interrupt 5 { TF2=0; //TF2清0 count++; n++; if(count>=20) //定时满1秒, { if(n>=2400) //定时满120秒 { n=0; count2=256*TH0+TL0; //东西向车流量 count1=256*TH1+TL1; //南北向车流量 p=count1+count2; TH0=0; TL0=0; TH1=0; TL1=0; if(p<=20) { SN_G=15; WE_G=15; } else { SN_G=110*count1/p; if(SN_G>20) { if(SN_G>90) { SN_G=90; WE_G=20; } else WE_G=110-SN_G; } else { SN_G=20; WE_G=90; } } } SN--; WE--; led(); count=0; if(SN==0||WE==0) { k++; if(k>3) //当k》3执行switch程序 k=0; switch(k) { case 0: SN=SN_G,WE=SN_G+5;break; case 1: SN=5,WE=5;break; case 2: SN=WE_G+5,WE=WE_G;break; case 3: SN=5,WE=5;break; } } } } /******延时T毫秒*********/ void delay(uchar t) { uchar i; for(t;t>0;t--) { for(i=120;i>0;i--); } } /*********交通灯函数*******/ void light() { P0=c[k]; } /*******数码管时间显示********/ void led() { P2=b[0]; //南北向个位数码管位选 L2=1; L2=0; P2=a[SN%10]; //南北向个位数码管段选 L1=1; L1=0; delay(20); P2=b[1]; //南北向十位数码管位选 L2=1; L2=0; P2=a[SN/10]; //南北向十位数码管段选 L1=1; L1=0; delay(20); P2=b[2]; //东西向个位数码管位选 L2=1; L2=0; P2=a[WE%10]; //东西向个位数码管段选 L1=1; L1=0; delay(20); P2=b[3]; //东西向十位数码管位选 L2=1; L2=0; P2=a[WE/10]; //东西向十位数码管段选 L1=1; L1=0; delay(20); } /*******东西向强制转换函数*******/ void changewe() { if(!k1) { delay(20); //按键防抖延时 if(!k1) { P0=0X1E; while(1) { for(i=0;i<=3;i++) { P2=b[i]; L2=1; L2=0; P2=0X00; //将所有数码管显示“88“ L1=1; L1=0; delay(20); } } } } } /******南北向强制转换函数*********/ void changesn() { if(!k2) { delay(20); //按键防抖延时 if(!k2) { P0=0X33; while(1) { for(i=0;i<=3;i++) { P2=b[i]; L2=1; L2=0; P2=0X00; //将所有数码管显示“88“ L1=1; L1=0; delay(20); } } } } } /********主函数********/ void main(void) { init(); //初始化函数 k1=1; k2=1; for(;;) { light(); led(); changewe(); changesn(); } } led(); changewe(); changesn(); } }

    ,段段精辟,章章绝伦

    层次清晰。

    目 录

    摘 要 ...........................................................2 第一章 概述 .....................................................3 1.1交通灯的发展及现状 ...........................................3 1.2 单片机说明 .................................................3 第二章 智能交通灯的设计原理 .....................................6 2.1 智能交通灯的设计框图 ........................................6 2.2智能交通灯的设计方案及改进措施 ...............................6 第三章 智能交通灯电路设计 .......................................6 3.1控制器的系统框图 .............................................7 3.2智能交通灯控制系统电路图 .....................错误!未定义书签。 3.3工作原理 ....................................................8 第四章 智能交通灯软件系统设计 ..................................14 4.1 智能交通灯的软件设计流程图 .................................14 4.2 程序源代码 .................................................14 第五章 智能交通灯方案的仿真 ....................................14 小结 ...........................................................18 致谢词 .........................................................18 参考文献 .......................................................18 附 录 ..........................................................21 附录A:智能交通灯控制程序: ....................................21

    摘 要

    本文介绍的是一个基于PROTEUS的智能交通灯控制系统的设计与仿真,系统根据交通十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。

    本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析,指出了现状交通灯存在的缺点,并提出了改进方法。智能交通灯控制系统通常要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。本文还对AT89C51单片机的结构特点和重要引脚功能进行了介绍,同时对智能交通灯控制系统的设计进行了详细的分析。最后利用PROTEUS软件,通过其平台对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。

    关 键 词:PROTEUS、AT89C51单片机、智能交通灯;

    第一章 概述

    1.1交通灯的发展及现状

    中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。

    目前设计交通灯的方案有很多,有应用CPLD设计实现交通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1.两车道的车辆轮流放行时间相同且固定, 在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。

    1.2 单片机说明

    按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

    3 1.2.1 AT89C51单片机硬件结构

    AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的单片机芯片,它采用静态CMOS 工艺制造8位微处理器,最高工作频率位24MHZ。AT89C5外形及引脚排列如图1所示:

    图1

    1.2.2管脚说明

    RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

    P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

    P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输

    4 入,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)这是由于上拉的缘故。

    ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

    PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

    EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。

    XTAL1和XTAL2:反向振荡放大器的输入及内部时钟工作电路的输入。

    5 第二章 智能交通灯的设计原理

    2.1 智能交通灯的设计框图

    2.2智能交通灯的设计方案及改进措施

    交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。

    针对道路交通拥挤,交叉路口经常出现拥堵的情况利用单片机控制技术提出了软件和硬件设计方案及两点改进措施。

    1、根据各道路路口车流量的大小自动调节通行时间。

    2、考虑特殊车辆通行情况,设计紧急切换开关。

    AT89S51单片机有2计数器,6个中断源,能满足系统的设计要求。用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。

    第三章 智能交通灯电路设计

    根据设计任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。

    6 3.1控制器的系统框图如图3所示

    图3

    3.2智能交通灯控制系统电路图 智能交通灯电路图如图4所示:

    图4

    交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。

    7 3.3工作原理

    绿灯的放行时间与车辆通过数量不成正比。比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。因为这有一个起步的问题,还有一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。通过一辆车的平均时间是1.25秒。如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。通过一辆车的平均时间只需1秒。显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。我设定了绿灯通行时间的上限为40秒。在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为40秒。 3.3.1车检测电路

    用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒, 依此类推。绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。因为路上的车不可能突然增多,塞车都有一个累积过程。这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。本系统的特点是成本低,控制准确。十字路口车辆通行顺序如图5所示:

    图5十字路口车辆通行顺序

    由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表1。

    表1 显示时间选择

    车辆情况

    本次该方向通行时间 20秒 20秒 20秒 20秒 20秒 20秒 20秒 20秒

    下次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒

    本次该方向通行时

    间 40秒 40秒 40秒 40秒 40秒 40秒 40秒 40秒

    本次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒 南往北少车,北往南少车

    南往北少车,北往南多车

    南往北多车,北往南少车

    南往北多车,北往南多车

    东往西少车,西往东少车

    东往西少车,西往东多车

    东往西多车,西往东少车

    东往西多车,西往东多车

    3.3.2信号灯电路

    信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图6。每个路口的信号的的转换顺序为:绿—>黄—>红 绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。

    图6交通信号灯运行状态

    3.3.3时间显示电路

    在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图7所示。

    图7 数码管连接方法

    下面我们用这种方法显示交通灯的时间,南北方向要显示20秒,东西方向要显示25秒,那么我们先给P0口送2的共阴极码即5BH,让第一位2要显示的

    10 位码GND段为低电平,其它三位的控制端都接高电平,那么第一位就显示2,其它三位不亮。让其显示1MS后再给P0口送0的共阴极码即3FH,让第二位要显示0的位码GND段为低电平,其它三位的控制端都接高电平,那么第二位就显示0,其它三位不亮。依此类推分别送完第一位2,第二位0,第三位2,第四位5,每一位点亮1MS一个扫描周期为4MS,一秒时间就要扫描250次其程序如下: MOV R6,#250;显扫描次数 LOOP:

    MOV P0,#5BH ;送2的共阴极码 CLR P2.0;第一位显示2 ACALL D1MS ;延时1MS SETB P2.0 ;灭第一位

    MOV P0,#3FH ;送0的共阴极码 CLR P2.1;第二位显示0 ACALL D1MS ;延时1MS SETB P2.1 ;灭第二位

    MOV P0,#5BH ;送2的共阴极码 CLR P2.2;第三位显示2 ACALL D1MS ;延时1MS SETB P2.2 ;灭第三位

    MOV P0,#6DH ;送5的共阴极码 CLR P2.3;第四位显示5 ACALL D1MS ;延时1MS SETB P2.3 ;灭第四位

    DJNZ R7,LOOP;不够一秒,继续扫描 NEXTNUMBER;到一秒显示下一个数 D1MS: ;1MS延时程序

    STAT1:MOV R4,#2 MOV R3,#250 DJNZ R3,$ DJNZ R4,STAT1 RET

    3.3.4紧急转换开关电路

    一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。

    1、Mcs—51的中断源

    8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序 11 入口地址如表2所示:

    表2 中断源程序入口 中断源的服务程序入口地址 中断源 外中断0 定时/计数器0 外中断1 定时/计数器0 串行口中断

    2、中断的处理流程

    CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述:

    1)现场保护和现场恢复:

    中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。 如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,单片机不能正常工作。

    2)中断打开和中断关闭:

    在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。

    3)中断服务程序:

    既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。

    4)中断返回:

    入口地址 0003H 000BH 0013H 001BH 0023H 执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。

    5) 交通灯中的中断处理流程: (1)现场保护和现场恢复:

    有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。

    (2)中断打开和中断关闭:

    为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。

    (3)中断服务程序:

    有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。

    (4)中断返回:

    执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。

    13 第四章 智能交通灯软件系统设计

    4.1 智能交通灯的软件设计流程图

    智能交通灯的软件设计流程图如图8所示:

    图8交通灯的软件设计流程图

    4.2 程序源代码

    见附录

    第五章 智能交通灯方案的仿真

    PROTEUS嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的整合了,如它可以和Keil ,Wave6000等编译模拟软件结合使用。由于Wave6000使用方便,具备强大的软件仿真和硬件仿真功能。把Proteus和Wave6000结合起来调试硬件就方便多了,这里就是采用“Proteus+Wave6000”的仿真方法,具体步骤如下:

    14 1)首先运行PROTEUS VSM 的ISIS,选择Source→Define Code Generation Tool 菜单项,将出现如图8所示定义代码生成工具对话框。

    图9 定义代码生成工具对话框

    在Tool下拉列表框中选择代码生成工具,在这一示例中,电路中的微处理器为8051系列单片机,因此选择ASEM51, 单击Browse按钮,选取Wave6000的安装路径。单击OK按钮,结束代码生成工具的定义。

    选择Source→Add/Remove Source File 菜单项,将出现Add/Remove Source Code Files对话框,如图10所示:

    图10添加/删除源文件对话框

    2)在Code Generation Tool 选项区,单击下三角按钮,选择ASEM51工具 单击New按钮,将出现如图11所示对话框。

    图11 创建源代码对话框

    选择用Wave6000创建好的AA.ASM文件,即完成了文件的创建。就这样当用Wave6000对AA.ASM 文件进行更改时每一次运行PROTEUS VSM 的ISIS对电路进行仿真时Wave6000都会对AA.ASM进行编译,AA.HEX文件也会随时更新。

    电路图绘制完成后, 再添加AT89C51 的应用程序。将鼠标移至AT89C51 上, 单击鼠标右键使之处于选中状态, 在该器件上单击左键, 打开如图12所示的对话框。在 Program File 栏添加编译好的十六进制格式的程序文件AA.hex(可以接受3 种格式的文件) ,给AT89C51输入晶振频率,此处默认为12MHZ, 单击OK 按钮完成程序添加工作, 下面就可以进行系统仿真了。单击主界面下方的按钮开始系统仿真。PROTEUS VSM 所进行的是一种交互式仿真, 在仿真进行中可以对各控制按钮、开关等进行操作, 系统对输入的响应会被真实的反映出来如图13。

    图12 AT89C51添加程序文件

    图13 交通灯仿真界面

    在毕业设计的整个过程中,我深切地体会到:实践是理论运用的最好检验。毕业设计是对我们3年所学知识的一次综合性测试和考验,无论是在动手能力方面还是理论知识的运用能力方面,都使得我有了很大的提高。

    经过总结和分析,我意识到在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。 本次毕业设计为我的大学生活画上了圆满的句号,为我即将的工作和生活奠定了坚实的基础。

    致谢词

    在整个毕业设计中,我得到了学校电子实验室的大力支持,为我提供了各种所需的仪器设备。感谢学校为我们安排了本次毕业设计,让我们的理论知识和实际操作经验更加紧密的结合了在一起;同时又拓展了我们的知识面。同时十分感激夏老师对我的悉心指导和帮助,使我能够顺利的完成此次毕业设计。此次毕业设计让我从中受益匪浅,最后再次感谢老师对我的培养和教育!

    参考文献

    [1] 徐爱钧 《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出版社,2004年;

    [2] 吴金戌、沈庆阳、郭庭吉 《8051单片机实践与应用》[M].北京:清华大学出版社,2002年;

    [3] 谢自美 《电子线路设计·实验·测试》(第三版)[M].武汉:华中科技大学出版社,2006年;

    [4] 谢维成、杨加国 主编 《单片机原理与应用及C51程序设计》[M].北京:清华大学出版社,2006年;

    [5] 杨立、邓振杰、荆淑霞 《微型计算机原理与接口技术》[M].中国铁道出版社,2006年;

    [6] 黄智伟 《全国大学生电子设计竞赛技能训练》 [M].北京:北京航空航天大学出版社,2007年 [7] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003; [8] 华成英、童诗白 主编,《模拟电子技术基础》(第四版)[M].高等教育出版社,2006年.[9] 黄海萍、陈用昌 编 《微机原理与接口技术实验指导》[M].北京:国防工业出版社,2004年

    [10] 黄智伟: 《凌阳单片机设计指导》 ,北京: 北京航空航天大学出版社,2007年

    附 录

    附录A:智能交通灯控制程序:

    ORG 0000H A_BIT EQU 20H ;用于存放南北十位数 B_BIT EQU 21H ;用于存放南北十位数 C_BIT EQU 22H ;用于存放东西十位数 D_BIT EQU 23H ; 用于存放东西位数

    TEMP1 EQU 24H ;用于存放第一二南北状态要显示的时间 TEMP2 EQU 25H ;用于存放第一二东西状态要显示的时间 TEMP3 EQU 26H ;用于存放第三第四南北状态要显示的时间 TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间 LJMP MAIN ORG 0003H ;外部中断0入口 LJMP INT0 ;跳转到外部0中断 ORG 0013H ;外部中断1入口 LJMP INT1 ;跳转到外部1中断 INT0: MOV A,P1 ;外部0中断 PUSH ACC MOV A,P2 ;中断保护 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.0 CLR P1.4 ;南北通行,东西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC MOV P1,ACC RETI ;中断返回 INT1:MOV A,P1 ;外部1中断 PUSH ACC ;中断保护 MOV A,P2 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3 ;东西通行,南北禁止通行 CLR P1.5

    21 JNB P3.3 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC MOV P1,A RETI ;中断返回 MAIN: ORG 0100H ;初始情况 MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯

    MOV TMOD,#55H ;计数方式方式1 MOV IE,#85H ;开中断 MOV TEMP1,#20 ; MOV TEMP2,#25 MOV TEMP3,#25 MOV TEMP4,#20 STAR: MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯 MOV A,24H ;将显示时间送A CJNE A,#20,T40T ;判断时间,选初始值

    T20T: ;南北通行要显示的时间为20的计数器初始值 CLR TF0 ;清TF0 CLR TF1 ;清TF1 MOV TH1 ,#0FFH ;送20秒时的初始值

    MOV TL1 ,#0FCH ;在些设计20秒6辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP20 ;跳到20秒

    T40T: ;南北通行要显示的时间为40的计数器初始值 CLR TF0 ;清TF0 CLR TF1 ;清TF1 MOV TH1,#0FFH ;送40秒时的初始值

    MOV TL1 ,#0F8H ;在些设计40秒8辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP40 ;跳到40秒 TEMP20: ;TEMP1=20情况 SETB TR0 ;开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#20 ;南北要显示的时间, MOV TEMP2,#25 ;东西要显示的时间

    22 STLOP: ACALL DISPLAY1 ;调用显示

    DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT ;若显示时间不为0保持现在状态 LJMP STAR2 ;若显示时间为 0跳到第二状态 NEXT: LJMP STLOP STAR2: ;状态1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP2: ACALL DISPLAY1 ;调用显示

    DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT2 ;若显示时间不为0保持现在状态 JB TF1 ,T40 ;判断南北是否多车 JB TF0 ,T40 ;判断北南是否多车

    MOV TEMP1,#20 ;少车下次显示时间为20秒 LJMP STAR3 ;跳到状态3 T40: MOV TEMP1,#40 ; 多车下次显示时间为40秒 LJMP STAR3 ;若显示时间为 0跳到第三状态 NEXT2:LJMP STLOP2 TEMP40:;TEM=40 程序 SETB TR0 ; 开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#40 ;南北要显示的时间, MOV TEMP2,#45 ;东西要显示的时间 STLOP11: ACALL DISPLAY1 ;调用显示

    DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT11 ;若显示时间不为0保持现在状态 LJMP STAR22 ;若显示时间为 0跳到第二状态 NEXT11: LJMP STLOP11

    23 STAR22: ;状态1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP22: ACALL DISPLAY1 ;调用显示

    DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT22 ;若显示时间不为0保持现在状态 JB TF1 ,T401 ; 判断是否多车 JB TF0 ,T401 MOV TEMP1,#20 ;少车下次显示时间为20秒 LJMP STAR3 T401:MOV TEMP1,#40 ;多车下次显示时间为40秒 LJMP STAR3 ;若显示时间为 0跳到第三状态 NEXT22:LJMP STLOP22 STAR3: MOV A,26H CJNE A,#25,T40T1 ;判断时间,选初始值

    T20T1: ;南北通行要显示的时间为20的计数器初始值 CLR TF0 ; 清溢出位 CLR TF1 MOV TH1 ,#0FFH ; 给初值 MOV TL1 ,#0FCH MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP320 T40T1: ;南北通行要显示的时间为40的计数器初始值 CLR TF0 ; CLR TF1 MOV TH1,#0FFH ;给初值 MOV TL1 ,#0F8H MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP340 TEMP320:;状态三

    SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数

    SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0

    24 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#25 ;南北要显示的时间, MOV TEMP4,#20 ;东西要显示的时间, STLOP33: ACALL DISPLAY ;调用显示

    DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT33 ;若显示时间不为0保持现在状态 LJMP STAR34 ;若显示时间为 0跳到第四状态 NEXT33:LJMP STLOP33 STAR34: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP34: ACALL DISPLAY ;调用显示

    DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT34 ;若显示时间不为0保持现在状态 JB TF1 ,T402 JB TF0 ,T402 MOV TEMP3,#25 LJMP STAR T402: MOV TEMP3,#45 LJMP STAR NEXT34: LJMP STLOP34 TEMP340 : SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数

    SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3

    25 MOV TEMP3,#45 ;南北要显示的时间, MOV TEMP4,#40 ;东西要显示的时间, STLOP43: ACALL DISPLAY ;调用显示

    DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT43 ;若显示时间不为0保持现在状态 LJMP STAR44 ;若显示时间为 0跳到第四状态 NEXT43:LJMP STLOP43 STAR44: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP44: ACALL DISPLAY ;调用显示

    DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP3 CJNE A,#0,NEXT44 ;若显示时间不为0保持现在状态 JB TF1 ,T403 JB TF0 ,T403 MOV TEMP3,#25 LJMP STAR T403: MOV TEMP3,#45 LJMP STAR NEXT44: LJMP STLOP44 ;显示 DISPLAY1: MOV A,TEMP1 ;将南北要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV B_BIT,A ; 将A放到20H MOV A_BIT,B ;将B放到21H MOV A,TEMP2 ;将东西要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV C_BIT,A ;将A放到22H MOV D_BIT,B ;将B放到23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL11: MOV R1,#250 ;R1=250

    26 DPLOP1: MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7 ;灭南北10位数

    MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时1MS SETB P2.6 ;灭南北个位数

    MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示东西10位数 CLR P2.5 ACALL D1MS ;延时1MS SETB P2.5 ;灭东西10位数

    MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET; ;等待1秒返回 显示 DISPLAY: MOV A,TEMP3 ;将南北要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV B_BIT,A ; 将A放到20H MOV A_BIT,B ;将B放到21H MOV A,TEMP4 ;将东西要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV C_BIT,A ;将A放到22H MOV D_BIT,B ;将B放到23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL1: MOV R1,#250 ;R1=250 DPLOP: MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表

    27 MOV P0,A ;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7 ;灭南北10位数

    MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时1MS SETB P2.6 ;灭南北个位数

    MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示东西10位数 CLR P2.5 ACALL D1MS ;延时1MS SETB P2.5 ;灭东西10位数

    MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表

    MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET ;等待1秒返回

    D1MS: MOV R7,#250 ;1MS延时程序 DJNZ R7,$ RET;

    1到10对应电路图数码管表

    NUMT: DB 7EH,48H,67H,6BH,59H DB 3BH,3FH,68H,7FH,7BH

    中英文摘要---目录---引言----研究现状---背景----思路---整体原理---部分电路介绍--程序介绍----总结---------------谢词==参考文献===附件 可以联系我,有程序。仿真,原理图,等

    .南北方向绿灯和东西方向绿灯不能同时亮,如果同时亮,则立刻关闭信号灯系统,并报警。同理,东西向绿灯与南北向转弯灯也不能同时亮。

    2.南北及南北转弯红灯亮并保持40秒,同时东西绿灯亮,但只保持35秒,到35秒时东西绿灯闪3次(每周期为1秒)后熄灭,继而东西黄灯亮,并保持2秒,到2秒后,东西黄灯灭,东西红灯亮,同时南北红灯熄灭和南北绿灯亮;南北转弯红灯继续亮着。

    28 3.东西及南北转弯红灯亮并保持30秒,同时南北绿灯亮,但只保持25秒,到25秒时南北绿灯闪亮3次(每周期1秒)后熄灭,继而南北黄灯亮,并保持2秒,到2秒后,南北黄灯灭,南北红灯亮,同时南北向转弯红灯灭,绿灯亮。

    4.南北向转弯绿灯亮25秒,同时南北向和东西向红灯亮并保持25秒,待南北向转弯绿灯亮25秒后,红灯亮起,东西向红灯灭,绿灯亮,并保持35秒,南北向红灯继续亮着,后接2.中继续循环。

    5.各灯能手动控制也能自动转换,并且能周而复始的进行工作。

    1 绪论

    1.1 道路交通控制的发展背景

    随着经济发展,城市化速度加快,机动车辆占有量急剧增加,由此引发出日益严重的交通问题:交通拥挤甚至堵塞,交通事故频繁,空气和噪声污染严重,公共运输系统效率下降等。解决这一问题通常有两种办法,一种是修路造桥,这对道路交通状况的改善是一种最直接的办法,但它需要巨额的投资,且在城市中心区受拆迁的限制,很难实施.另一种是在现有的道路交通条件下,实施交通控制和管理,充分发挥现有道路的通行能力,大量事实已经证明这种方法的有效性。

    通常,一个经验丰富的交通警察能在极短的时间内把一个交叉路口的交通阻塞缓解或解除,但他的作用范围往往局限于单个交叉路口。而现代的道路交通非常复杂,常常是几个或几十个甚至是成百上千个路口互相关联,在这种情况下,任何一个经验丰富的交通警察都无能为力了.因此,人们越来越关注把先进的科学技术用于交通管理,从而促进了交通自动控制技术的不断发展。

    1.2 道路交通控制的目的和作用

    道路交通控制的目的可定义为:在确定的行政规定约束下,采用合适的营运 方法来确保公共和私人运输方式具有最佳的交通运行状态。围绕这一目的研制出的道路交通控制系统,把受控对象看成一个整体,采用对交通流科学地时间分割的方法,最大限度地保证交通流运动的连续性,使受控区域的交通流减少冲突,同时平稳地、有规则地运动。道路交通控制的作用主要表现为以下几个方面:

    (1) 改善交通秩序,增加交通安全。

    (2) 减少交通延误,提高经济效益。

    (3) 降低污染程度,保护生态环境。 (4) 节省能源和土地消耗。

    29

    1.3 我国城市交通特点分析

    人、车、路是构成城市交通的三大要素,要探讨我国城市交通特点,必须从分析这三大要素的基本特点着手。

    1.3.1 人的交通素质

    人是交通的主体,与世界发达国家相比,我国人的社会交通意识还没有真正形成,少数领导部门交通观念淡薄,对城市交通建设在国民经济建设中的重要性认识不足,交通政策时有失误。机动车驾驶员文化水平低,又缺乏系统训练,尤其缺乏心理素质,感知能力和判断能力的培养,因而,对人,车的运动特征不能很好掌握。行人与非机动车驾驶员普遍不懂,甚至漠视交通法规。交通管理人员交通工程和心理学知识贫乏,感知,分析交通信息和处理特发性事件的能力不强。总的来看,我国人的交通素质距离现代化城市交通要求还相差甚远,而交通与人密切相关,城市交通中出现的问题几乎都离不开人的因素,因此,想方设法提高全社会的文化素质,健全交通法规,加强交通宣传教育,增强人的社会交通意识,培养良好的交通习惯,使参与交通的每个人都认识到交通的重要性,自觉顺应交通规律,是建立我国城市交通控制系统,使之有效运行的前提条件。

    1.3.2 城市道路状况

    路是交通的物质基础,有路才能通车,行人。我国是一个文明古国,许多城市已有上千年的历史,城市布局和道路结构是在漫长的历史进程中逐步形成的,近几年虽然作了些改建和扩建,但毕竟还难以冲破原来的基本格局。我国城市道路普遍存在的弊端是:

    (1)路网密度低

    (2)交通干道少

    (3)路口平面交叉

    1.3.3 我国城市交通的特殊性

    道路状况与车辆状况的综合作用形成了我国城市交通的特殊性,主要表现是:

    城市路网稀,干道少,间距大,市区人口稠密,出行需求集中,迫使车辆集中于少数干道上行驶。至于中小城市 ,干道特征更为明显,往往只有一两条干道贯穿全市,而其他支路上交通量极小。从流量变化情况来看,除外围过境干道外,都是有一定规律的,高峰小时基本上都集中在几个时段内。

    我国城市机动车车种繁杂,从50年代的老式车到80年代的新型车,从大货车到小轿车 30 都在一个平面上行驶,不少城市拖拉机还是一种主要运输工具,前面一辆旧车挡道,尾随的新型车只能跟着爬行,过交叉口时经常出现启动慢的车挡住启动快的车,使交通工程师精心设计的交通配时方案不能很好发挥效益。

    1.4 我国城市交通控制策略探讨

    本着不盲目照搬现成系统的经验,或一味追求控制策略与原理的新颖性,而是根据我国城市交通的实际情况,从简从易,逐步完善的原则,我国城市交通控制策略宜采取:

    (1) 根据干道特征明显的特点,系统以线控制为主。

    (2) 根据干线上交通流有规律可循的特点,系统以定时控制为主。

    (3) 根据车种混杂和路网稀,路口间距相差悬殊,难以建立精确交通预测模型的特点,系统应加强路口应变能力,强化感应控制功能。

    (4) 根据机非混合交通特点,系统要处理好自行车交通,常用的方法有: 1)实现自行车与机动车的分离

    自行车与机动车的突出矛盾在于混行,要在我国现有道路基础上,开辟出规模庞大的自行车道路网是不现实的,但各城市确有许多小街小巷可利用,对它们进行合理规划,造成自行车专用道,消除或减少自行车与机动车的相互干扰是可能的。

    2)增设左转相位

    对机动车干扰最大的是 左 转自行车,在自行车高峰时,对左 转自行车流较大的路口增设 左 转相位,时间不需很长便可利用自行车启动,疏散快的特点,使左转自行车基本通过。

    3)控制信号分时使用

    自行车与机动车高峰出现时间是交错的,在自行车高峰期间,自行车是构成交通流的主体,系统进行信号配时优化时,可优先考虑自行车。

    (5) 可能的系统结构

    确定系统的硬件结构主要是依据系统控制策略要求,系统成本分析和城市的财政承受能力,同时也要受到系统管理维护人员技术水平的制约。纵合考虑,我国城市采用两级控制结构为宜,即由中心计算机和终端——交通信号控制器组成,信号配时方案存于终端中,终端将处理好的检测器数据和交叉口工作状态数据定时传送至中心计算机,中心计算机经优化计算后给出下一个配时方案指令,由交通信号控制器执行。这种结构形式的突出优点是:

    1)减少数据传输量,控制中心与终端间只需低容量传输系统即可有效地进行数据通信。

    2)主要控制和处理功能由终端——交通信号控制器完成,大大减轻了中心计算机的负担,只要配置功能稍强的微机系统即可建成一个相当规模的控制系统。

    31 按上述设想建立起来的将是一个旨在解决机非混合交通问题,以线控制为主,方案选择型实时自适应城市交通控制系统。

    (6) 可能出现的动向

    1) 系统功能的缩小

    我国建制市370多个,绝大多数还难以投入足够的资金建立一个功能齐备的控制系统,从几个引进系统的实施情况来看,并不需要,实际上也没有用到这些系统的全部功能,因此,系统发展的一个可能趋势是系统功能的缩小,国外也提出了基本系统的概念,基本系统不以交通应答作为基本设计依据,只是按照一天内划分的时段或根据控制中心的人工干预执行简单的时间表,因而不需车辆检测器和大量的数据处理。功能缩小后的系统不需配置动态地图显示板等外围设备 ,便于控制中心主机微机化,耗资少,使用方便,对我国大中城市有很吸引力。

    2) 交通信号控制器微机化、系列化

    我国有2000多个县,每个县都有几个城镇,计算机区域控制目前对这些小城市来说是不现实的,以微机为基础的交通信号控制器功能灵活,便于实现无电缆协调控制,必将成为小城市交通控制的主体。大中小城市对信号控制器的使用要求不同,对交通信号控制器的微机化,系列化势在必行。

    本论文正是以此为出发点,对单片机控制的交通信号灯模型作了较详尽的介绍。

    32

    推荐访问:毕业论文 智能交通 系统

    • 读/观后感
    • 精美散文
    • 读书笔记
    • 演讲
    • 反思
    • 方案
    • 心得体会