单片机交通灯控制智能交通灯控制系统.docx
- 文档编号:12937311
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:31
- 大小:986.75KB
单片机交通灯控制智能交通灯控制系统.docx
《单片机交通灯控制智能交通灯控制系统.docx》由会员分享,可在线阅读,更多相关《单片机交通灯控制智能交通灯控制系统.docx(31页珍藏版)》请在冰点文库上搜索。
单片机交通灯控制智能交通灯控制系统
智能交通灯控制系统
1前言
于我们所生活的此年代交通便利尤其重要,随着生活水平提高及社会的发展,道路越修越宽、越建越多,车的数量也急剧增加,道路堵塞也伴随而来。
因此,一个好的交通灯控制系统,可以使道路拥挤、违章控制、突发事件、故障处理等方面的问题给予技术革新。
随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,计算机智能控制设备有了很大的发展,而且在生活各个方面的运用越来越广泛,且运用技术及手法越来越成熟。
本文介绍了一个智能交通灯系统的设计。
该智能交通灯控制系统可以实现的功能有:
能控制东西南北四个路口的红黄绿灯正常工作,并且在正常模式下可以在各种状态之间自动转换。
东西和南北方向分时准行和禁行;两垂直方向的准行时间均为60s或120s,可以进行控制转换;准行方向亮绿灯与禁行方向亮绿灯55s后,四个路口同时加亮一黄灯进行闪烁,以警告车辆及行人,准行方向与禁行方向即将改变;四个道口均用数码管显示准行或禁行的剩余时间;在交通情况特殊情况下可以通过K1、K2、K3按键对交通灯进行控制。
当有紧急情况发生时按下K1四个路口同时加亮黄灯进行闪灯(闪灯时间为5s)且倒计时显示关闭。
黄灯闪烁完毕后四路口全变红灯禁行,处理紧急情况。
有某方向上车辆过多,可以使用K2、K3键控制东西或南北方向通行,另一方向禁行。
按下控制键后先在四个路口加5s的黄灯闪烁。
在本次设计中,运用所学的单片机知识自发设计一个交通灯控制器,同时通过KeilC51软件编辑和调试,通过PROTEUS软件进行仿真。
整个过程中,不仅进一步巩固了所学的单片机知识,而且掌握了KeilC51软件以及PROTEUS软件的用法。
并且掌握了初步设一个器件的基本流程。
2交通灯系统总体设计思路
根据设计要求,该系统具有交通灯按要求正常显示功能、应对紧急情况功能及60.秒及120秒的转换功能。
在设计中用AT89C51和其他功能芯片实现了简单的最小系统。
实现了既定的基本功能。
该系统由四大部分组成,显示模块和中断模块、时钟模块以及复位模块。
在显示模块中,进行红黄绿灯的三个状态的转换及数码管倒计时显示。
在中断模块中,能进行紧急情况的处理,当处理完毕后能够进行复位。
显示模块中分为数码显示和红黄绿三个灯的显示。
由12个数码管和12个灯组成,通过8255A对数码管进行控制,通过P1口进行灯的控制。
中断模块中有四个按键,分别通过外部中断0和1及定时器0和1进行控制。
其中外部中断0控制着紧急情况的处理,定时器0和1控制着当车辆过多时的紧急情况,通过外部中断1进行定时时间120秒和60秒两个状态之间转换。
时钟模块由2个电容及1个晶振构成了内部时钟方式的电路。
复位模块通过1个电容、2个电阻和1个按钮构成了复位电路,把它接到89C51的复位端上,当按下按钮后电路回到初始状态运行。
在设计中,以AT89C51为中心控制的功能部件,以8255A作为扩展端口功能的芯片,扩展了三个并行口。
以数码管和发光二级管为外部输出设备,其中数码管显示为静态显示。
通过译码器74LS373作为译码选择Q7作为8255A的片选段端。
Q1,Q2作为8255A端口的选择端。
并且只用P0口就进行数据和地址的传送。
3硬件设计
3.1硬件设计概述
在进行硬件设计时,用到的主要器件有AT89C51、74LS373、8255A、数码管等。
其中由于数码管太多,而设计中用静态显示,所以需要进行I/O口的扩展,8255A便是应用于此功能。
在硬件电路中,8255A的D0-D7端与P0口直接相连。
因P0口能进行地址与数据的分时复用,因此当它用作地址输出口时,需要一个地址锁存器。
8255A的A1和A0接到锁存器的Q0和Q1上,而它的片选端接到锁存器的Q7上,这样就确定了8255A的地址。
而8255A的PA口接到低位数码管的a-g端,
PB口接到中间位数码管的a-g端,PC口接到最高位数码管的a-g端。
因数码管是同时亮、灭的,因此将它们的位选端并联接到P1.4上,通过P1.4输出高低电平对数码管的亮灭进行控制。
P1口的另外几个引脚,用来控制两个路口的灯。
因两个路口各有两组灯且这两组灯的状态应该相同,为了节省端口,将东西方向的红灯并联,接到P1.7上,东西方向的绿灯并联接到P1.6上,南北方向的红灯并联接到P1.3上,南北方向的绿灯并联接到P1.2上,由于两个路口的黄灯是同时闪烁的,因此将这四个黄灯并联接到P1.5上。
应用P3口的第二功能和四个按键,实现紧急情况的处理及倒计时时间转换。
将P3.2、P3.3、P3.4、P3.5分别接到四个按键上。
复位电路接到AT89C51的复位端。
时钟电路接到AT89C51的XTAL1和XTAL2端。
应用PROTEUS软件画出的电路图如图3-1所示。
图3-1交通灯的硬件电路图
3.2主要芯片简介
3.2.1核心芯片AT89C51单片机的说明
AT89C51是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明。
中央处理器:
央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
数据存储器(RAM):
AT89C51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
程序存储器(ROM):
AT89C51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
定时/计数器:
AT89C51有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:
AT89C51共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
全双工串行口:
AT89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
中断系统:
AT89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
时钟电路:
AT89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但AT89C51单片机需外置振荡电容。
3.2.2锁存器74LS373的简介
74LS373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74LS373芯片,其引脚图如下图3-2所示。
当74LS373用作地址锁存器时,应使数据输出允许端为低电平,此时锁存使能端LE为高电平时,输出Q0~Q7状态与输入端D1~D7状态相同;当LE发生负的跳变时,输入端D0~D7数据锁入Q0~Q7。
51单片机的ALE信号可以直接与74LS373的LE连接。
在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用。
其中输入端D0~D7接至单片机的P0口,输出端提供的是低8位地址,LE端接至单片机的地址锁存允许信号ALE。
输出允许端接地,表示输出三态门一直打开。
锁存端LE由高变低时,输出端8位信息被锁存,直到LE端再次有效。
当三态门使能信号为低电平时,三态门导通,允许Q0~Q7输出,当三态门为高电平时,输出悬空。
3.2.38255A的简介
8255A可编程并行接口芯片的简介:
8255A可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7-PA0,PB7-PB0,PC7-PC0。
其内部还有一个控制寄存器,即控制口。
其中C口可作为两个独立的四位接口。
外设数据口和单片机进行数据的通信,各个数据口的通信方式和传送方向是通过用户对控制口写控制字控制的。
各口地址有A1和A0决定。
当A1A0分别为00、01、10、11时,对应选择A口、B口、C口和控制口。
8255A外部引脚图如图3-3所示。
图3-38255A的外部引脚图
3.2.4七段数码管的简介
显示器是最常用的输出设备。
特别是发光二极管(LED)和液晶显示器(LCD)由于结构简单、价格便宜、接口容易,得到广泛的应用,尤其在单片机系统中大量使用。
现在简单介绍七段数码管的工作原理。
图3-4为七段数码管的内部电路图。
7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
上图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将“b”和“c”段接上正电源,其它端接地或悬空,那么“b”和“c”段发光,此时,数码管显示将显示数字“1”。
而将“a”、“b”、“d”、“e”和“g”段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它数字以此类推。
本设计中,所用到的数码管因为显示的内容为三位数,总有四个数码管显示同一个数,所以,将显示相同数数码管的段选段连一起;而将表示一个三位数的三个数码管的位选端连一起。
这样整个数码显示系统只有3根位选接线。
节省了接口,也方便了位选和片选。
12个数码管连接图如3-5
图3-512个数码管的连线图
4交通灯的软件设计
4.1主程序的设计
本实验的主控程序分成了两个状态,分别是60s显示程序和120s显示程序,由20h.0作为标志位进行判断,当20h.0为高电平时,定时时间为120s的倒计时显示,当20h.0为低电平时为60s的倒计时显示。
图4-1为交通灯主控程序设计的流程图。
图4-1交通灯设计的流程图
4.2显示程序的设定
在显示程序中通过对8255A的三个口送不同的段码,使数码管实现静态显示。
分成了四个状态,分别是东西红灯南北绿灯,黄灯闪烁,东西绿灯南北红灯,黄灯闪烁,接下来就是重复以上状态。
下面以60s的显示程序为例进行说明,图4-2为60s显示程序的流程图。
由流程图可以看出,初态为东西道口红灯亮,南北道口绿灯亮,计数初值为60s,并判断标志位20h.0是否为1,如果不为1,则进行减一倒计时,如果为1,则使东西道口绿灯亮,南北道口红灯亮,计数初值为60s,在倒计时过程中,不断判断是否减到5s,如果减到5s时,则执行黄灯闪烁的程序,在黄灯闪烁程序中,判断是否减为1s,当减为1s时,转换为下一个状态,即东西道口绿灯亮,南北道口红灯亮,在执行这段程序时同样判断是否减为5s,减为5s时,黄灯闪烁,减为1s时,转换为东西道口红灯亮,南北道口绿灯亮的状态,如此循环下去。
图4-260s或120s显示程序流程图
4.3延时程序的设计
在程序设计中用了1s的延时程序。
延时程序中,运用DJNE指令及三个循环实现了1s的软件延时。
延时程序的流程图如图4-3所示。
图4-3延时子程序的流程图
4.4中断服务程序的设计
该设计中共使用了四个中断,即外部中断0、1和利用定时器的计数方式扩展的中断。
在主程序中首先开中断,定时器设置在计数方式,工作在方式1下,在主程序中要进行初值的设定,在中断服务程序中要进行初值的重装(因为是方式1所以为自动重装),然后进行中断服务程序的处理。
外部中断0实现紧急情况的处理,当触发一次外部中断0时,便进入中断0的服务程序中,在中断服务程序中首先将数码管的位选端置1,然后通过延时程序和标志位控制黄灯闪烁5s,然后给控制东西路口红灯的引脚和控制南北路口的绿灯的引脚送高电平使它们都点亮,这样就实现了南北方向车多时南北方向为绿灯东西方向为红灯的功能。
外部中断0的流程图如图4-4所示。
图4-4外部中断0的流程图
外部中断1实现倒计时时间为120s和60s之间的转换,在主程序中设置一个标志位,在中断服务程序中对标志位取反,从而实现了倒计时时间的转换。
图4-5为外部中断1的流程图。
图4-5外部中断1的流程图
两个定时器中断是对外部中断的扩展,实现另外两种紧急情况的处理,其中定时器T1实现当南北方向车少而东西方向车多时,显示黄灯闪烁5s然后使南北方向红灯亮,东西方向绿灯亮的功能,通过复位返回到初始状态。
而定时器T0实现的是,当有故障发生时,先使黄灯闪5s,然后两个路口的红灯点亮,以处理故障,当故障处理完毕后,通过复位键回到初始状态。
定时器T0中断和定时器T1的流程图分别如图4-6和图4-7所示。
图4-6定时器0中断的流程图
图4-7定时器1中断的流程图
5调试与仿真
5.1KeilC51软件与PROTEUS软件的简介
5.1.1KeilC51软件的简介
目前流行的51系列单片机开发软件是德国KeilC51公司推出的KeilC51C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。
应用KeilC51进行软件仿真开发的主要步骤为:
编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。
KeilC51使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
5.1.2PROTEUS软件的简介
PROTEUS软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
PROTEUS软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
原理布图、PCB自动或人工布线、SPICE电路仿真以及互动的电路仿真和仿真处理器及其外围电路。
PROTEUS提供了丰富的资源,主要有以下几个方面。
1.PROTEUS可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
2.PROTEUS可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
3.除了现实存在的仪器外,PROTEUS还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
4.PROTEUS可提供的调试手段PROTEUS提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
在PROTEUS中绘制好原理图后,调入已编译好的目标代码文件*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
5.2调试与仿真的过程
5.2.1程序调试过程
1.打开KeilC51软件,首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
此时KeilC51的运行界面如图5-1所示。
图5-1KeilC51的运行界面
2.然后进行编译/汇编、连接,产生目标文件后的运行界面如图5-2所示。
图5-2生成目标文件的界面
3.编译、连接没有错误后,对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。
然后在进行编译,其运行界面如图5-3所示。
图5-3生成扩展名为.HEX文件的界面
5.2.2程序仿真过程及结果
首先在PROTEUS中将电路图画好,然后将生成的扩展名为.HEX的文件添加到AT89C51中。
在按运行键,便开始进行仿真。
1.首先测试初态,即东西路口红灯亮,南北路口绿灯亮,数码管从60s开始倒计时。
运行界面图如图5-4所示。
2.当数码管倒计时到5s时黄灯进行闪烁,其运行界面如图5-5所示。
图5-5倒计时5s时黄灯闪烁时的运行界面
3.当触发外部中断0时,黄灯先闪5s,然后东西路口红灯亮,南北路口绿灯亮。
其运行界面如图5-6所示。
4.当触发定时器0的中断时,黄灯闪5s,然后两个路口的红灯点亮。
其运行界面如图5-7所示。
6.当触发定时器1的中断时,黄灯闪5s,然后东西路口绿灯亮,南北路口红灯亮。
其运行界面如图5-8所示。
图5-8触发定时器1的中断后得运行界面
7.当触发外部中断1时,可以进行倒计时时间60s和120s之间的转换。
其运行界面如图5-9所示。
图5-960s与120s之间的转换界面
6总结
本次课设是基于单片机的智能交通灯系统的设计。
在课设过程中,首先我们根据课设要求选择好使用的芯片,以及电路的布局等。
然后利用PROTEUS软件,画出电路图。
再根据电路图进行软件的设计即编程。
编好程序后,再在KeilC51软件中进行编译、连接,和一些设置,最终生成,扩展名为.HEX的文件。
下一步便是进行仿真,在PROTEUS中将文件下载到AT89C51中,便可进行实时仿真。
仿真过程中要检测各个功能是否能够实现。
如果仿真的结果不符合要求,根据所出现的现象,检查是否是连线的问题,如果连线没有问题,在检查程序是否有错误。
如此反复的调试与仿真,直到得到正确的结果。
例如,我在调试显示模块时,当电路上电时,灯显示正常,但数码管不能进行正确的倒计时,检查硬件电路,并没有发现错误,于是我又重新检查了一遍程序,原来程序中有错,修改之后再进行仿真,倒计时显示正常,显示模块调试完毕。
我设计的交通灯能够进行符合课设的要求,但也存在着一些缺陷。
比如,在中断中,按下键后进入中断,但中断不能再通过按此键返回,必须通过复位键才能返回。
此缺陷可以通过修改中断服务程序的内容得以改善。
在设计智能交通灯的过程中,我们总是在不断的发现问题解决问题。
因此,此次课设培养了我们独立思考,拓宽思路,积极探索的精神。
由于PROTEUS软件提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了为我们提供了提高自己的实践精神、创造精神的平台。
同时使用PROTEUS软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,也有利于培养我们电路设计能力及仿真软件的操作能力。
由于我们是初次使用PROTEUS软件,设计过程中遇到问题是在所难免的,实践出真知,只有不断的解决实际设计中的问题,才能不断丰富我们的单片机设计的经验,才能巩固我们的知识。
参考文献
[1]范凤强,兰婵丽.单片机语言应用实战集锦[M].电子工业出版社,2005.
[2]林立,张俊亮.单片机原理及应用.电子工业出版社,2007.
[3]于殿红,王新年.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007.
[4]张刚毅,彭喜媛.单片机原理与应用设计.电子工业出版社,2005.
[5]曹旭东,刘得军.单片机语言应用设计.电子工业出版社,2007.
附录
org0000h
ljmpmain
org0003h;外部中断0
ljmpintp0
org000bh;定时器0
ljmppnt0
org0013h;外部中断1
ljmpintp1
org001bh;定时器1
ljmppnt1
main:
movp1,#00h
movth0,#0ffh;T0装初值
movtl0,#0ffh
movth1,#0ffh;T1装初值
movtl1,#0ffh
movtmod,#66h
setbea;中断允许
setbet0;定时器中断初始化
setbet1
setbtr0
setbtr1
movsp,#60h
mova,#80h
movdptr,#0ff7fh
movx@dptr,a
clr20h.0
clr21h.2
setbea
setbex0;外部中断初始化
setbit0
setbex1
setbit1
jnb20h.0,gu
ljmpl120
gu:
mov40h,#00h;高位
movdptr,#tab
mova,40h
movca,@a+dptr
movdptr,#0ff7eh
movx@dptr,a
clr20h.1;20h.1为两个灯转换的标志位
clr20h.2;黄灯标志位
state1:
movr0,#61h
jb20h.1,state3
setb20h.1
clrp1.6;东西绿灯
clrp1.5;黄灯
clrp1.3;东西红灯
setbp1.7;南北红灯
setbp1.2;南北绿灯
ljmploop
state3:
movr0,#61h;东西绿南北红
clr20h.1
clrp1.7
setbp1.6
clrp1.5
setbp1.3
clrp1.2
ljmploop
state2:
clrp1.7;黄灯闪烁
clrp1.2
clrp1.6
clrp1.3
jb20h.2,l1
setbp1.5
setb20h.2
ljmploop
l1:
clrp1.5
clr20h.2
loop:
clrc
mova,#9ah
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 交通灯 控制 智能 控制系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)