单片机智能交通灯控制系统设计单片机课程设计.docx
《单片机智能交通灯控制系统设计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机智能交通灯控制系统设计单片机课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
单片机智能交通灯控制系统设计单片机课程设计
提醒:
1.请用PDF转Word之类转换工具转成word即可随意复制粘贴!
2.课程设计封面请自行设计!
课程设计任务书
学生姓名:
路长鑫专业班级:
09级电气3班
指导教师:
吴泽工作单位:
电气工程及其自动化
题目:
智能交通灯控制系统设计
一、设计要求
1.用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。
2.A、B两车道交叉组成十字路口,A是主车道,B是支道。
正常情况下,A、B两车道轮流放行,A放行50s,B放行30s,各含5s警告时间。
3.交通繁忙时,该系统应有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,可通过开关获得15s放行时间。
4.有紧急车辆通过时,另需一开关设置两车道均禁止通行20s。
二、主要功能模块
智能交通灯控制系统主要功能模块包括电源电路、单片机主控电路、按键控制电路和道路显示电路组成。
根据具体情况选择合适型号的单片机,发光二极管,开关等硬件设备进行设计。
三、要求完成的主要任务
1.根据功能要求完成硬件电路设计,提供硬件电路图。
2.使用汇编或者C语言完成软件部分设计,实现相应功能。
要求程序加注释并提供软件流程图。
3.使用Proteus软件进行系统仿真,并提供仿真截图,测试数据,误差分析。
四、时间安排
2012.3.26~2012.4.8收集资料,确定设计方案
2012.4.9~2012.5.27系统设计
2012.5.28~2012.6.10撰写课程设计论文及提交
指导教师签名:
年月日
成员分工
成员分工情况如下表:
分工及完成情况
成员名单
分工
完成情况
刘淦
收集资料
完成
董卓奇
硬件设计
完成
刘晓东
单片机介绍,软件调试
完成
李海龙
总体方案,软件设计
完成
路长鑫
硬件设计与调试,软件设计与调试,撰写论文
完成
课题分析
一、概述
单片机是计算机技术、大规模集成电路技术和控制技术的综合产物。
经过30多年的发展历程,单片机应用已经十分广泛和深入。
可以毫不夸张的说,任何设备和产品的自动化、数字化和智能化都离不开单片机。
这里我们选用当今应用最为广泛的8位单片机80C51来完成智能交通控制系统的设计,并用Proteus进行仿真。
二、智能交通的意义
国内的交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯。
加上一个倒计时的显示计时器来控制行车。
对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:
1.经常出现的情况是某一车道车辆较多,放行时间应该长一些,另一车道车辆较少,放行时间应该短些。
2.没有考虑紧急车通过时,两车道应采取的措施,例如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。
利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。
三、Proteus
Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改进手段之一。
全部过程都是在计算机上通过Proteus来完成的。
其过程一般也可分为三步:
1.在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等。
简称Proteus电路设计。
2.在ISIS平台或其他平台(如Keil平台)上进行单片机系统程序设计、编译、汇编编译、代码级调试,最后生成目标代码文件(*.hex)。
简称Proteus源程序设计和生成目标代码文件。
3.在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。
它在相当程度上反映了实际单片机系统的运行情况。
简称Proteus仿真。
四、要求分析
1.以红黄绿三色LED灯模拟交通信号灯,以二位LED数码管显示倒计时。
2.A、B两车道交叉组成十字路口,A是主车道,B是支道。
正常情况下,A、B两车道轮流放行,过程如下:
ØA绿灯放行共50s,通行15S之后开始允许转向,转向包括左转和右转,期间B为红灯禁止前行且禁止转向;
Ø50s结束后,AB均有5s黄灯警告时间;
ØB绿灯放行共30s,通行15S之后开始允许转向,期间A为红灯禁止前行且禁止转向;
Ø30s结束后,AB均有5s黄灯警告时间。
3.交通繁忙时,有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,通过开关可获得15s放行时间。
额外放行时间结束后红绿灯返回之前中断时刻的状态继续。
4.有紧急车辆通过时,另有开关设置AB均禁止通行20s,期间AB全部黄灯警告。
第一章80C51单片机
1.1单片机的概念
单片机是集成在一个芯片上的计算机,全称单片微型计算机SCMC(SingleChipMicro-Computer)。
单片机是计算机、自动控制和大规模集成电路技术相结合的产物,融计算机结构和控制功能于一体,是微型计算机的一个重要分支,也是颇具生命力的机种。
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3三代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
1.280C51单片机简介
80C51是8位单片机中一个最基本、最典型的芯片型号,是MCS-51系列单片机中8051的改进型,使用相当广泛。
1.2.180C51单片机内部逻辑结构
80C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行I/O接口、串行接口、中断系统、时钟电路、位处理器等几大单元及数据总线、地址总线和控制总线等三大总线,其逻辑结构如图1.1所示。
1.中央处理器CPU
中央处理器CPU(CentralProcessingUnit)是整个单片机的核心部件,包含运算电路和控制电路两大部分,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2.内部数据存储器(RAM)
80C51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3.内部程序存储器(ROM)
包括ROM(4Kx8)和程序地址寄存器等。
80C51共有4KB掩膜ROM,用于存放用户程序、原始数据或表格,简称内部ROM。
图1.180C51芯片逻辑结构图
4.定时/计数器(ROM)
80C51共有两个16位的可编程定时/计数器,用以实现定时或计数功能,并以此产生的中断对单片机进行控制。
5.并行输入输出(I/O)口
8051共有4组8位I/O口(P0、P1、P2或P3),以实现数据的并行输入与输出。
6.全双工串行口
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
7.中断系统
8051具备较完善的中断功能,共有5个中断源,即外中断2个、定时/计数器中断2个和串行中断1个。
全部中断分为高级和低级共两个优先级别,可满足不同的控制要求。
8.时钟电路
80C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但石英晶体和微调电容需外接。
9.位处理器
单片机主要用于控制,需要较强的位处理功能,因此,位处理器是它的必要组成部分,也称布尔处理器。
10.内部总线
上述这些部件通过总线连接起来,才能构成一个完整的计算机系统。
芯片内的地址信号、数据信号和控制信号都是通过总线传输的。
总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。
总线结构如图1.2所示
图1.280C51内部总线结构
1.2.280C51单片机的封装与信号引脚
1.芯片封装形式
(a)引脚排列(b)逻辑符号
图1.380C51单片机芯片引脚及逻辑符号
80C51有40引脚双列直插式DIP(DualInlinePackage)和44引脚方形扁平式QFP(QuadFlatPackage)共两种封装形式。
本设计采用40引脚DIP形式,其引脚排列及芯片逻辑符号如图1.3所示。
2.芯片引脚简介
80C51的40个引脚主要包括:
Ø+5V电源Vcc
Ø地线Vss
Ø外置石英振荡器的时钟线XTAL1和XTAL2
Ø复位信号RST
Ø访问程序存储器控制信号EA
Ø外部程序存储器读选通信号PSEN
Ø地址锁存控制信号ALE
Ø4组8位共32个I/O口线
3.芯片引脚的第二功能
随着单片机功能的增强,而又由于简化、工艺或标准等原有,芯片引脚数目总是有限的,所以,“引脚复用”现象在单片机中十分常见。
80C51的引脚复用主要集中在P3口线上,P3口线的第二功能见表1.1.
表1.1P3口线的第二功能
口线
特殊功能
信号名称
P3.0
RXD
串行输入口
P3.1
TXD
串行输出口
P3.2
INT0
外部中断0输入口
P3.3
TNT1
外部中断1输入口
P3.4
T0
定时器0外部输入口
P3.5
T1
定时器1外部输入口
P3.6
WR
写选通输出口
P3.7
RD
读选通输出口
1.2.380C51单片机的内部存储器
一般的,单片机芯片的内部存储器包括数据存储器和程序存储器。
1.内部数据存储区
80C51单片机的数据存储器共有256个单元,按照功能又把其划分为两部分:
低128单元区和高128单元区,如图1.4所示。
低128单元区包括:
Ø寄存器区,内部RAM前32个单元,分为4组
Ø位寻址区,内部RAM的20H-2FH单元
Ø用户数据区,内部RAM的30H-7FH单元
高128单元区共专用寄存器(SFR)使用,单元地址为80H-FFH,用于存放相应功能部件的控制命令、状态、或数据。
80C51除去程序计数器PC外,还有21个专用寄存器。
参看表1.2。
图1.480C51内部数据存储器
2.内部程序存储器
在80C51中,程序存储器被用来存放程序、常数或表格等。
其片内有4K字节的ROM存储单元,地址为0000H~0FFFH。
在程序存储器中,以下6个单元具有特殊含义:
Ø0000H:
单片机复位后,PC=0000H,程序从0000H开始执行指令。
Ø0003H:
外部中断0入口地址。
Ø000BH:
定时器0中断入口地址。
0013H:
外部中断1入口地址。
Ø001BH:
定时器1中断入口地址。
Ø0023H:
串行口中断入口地址。
在系统中断相应之后,将自动转到各中断入口地址处执行程序,而中断服务程序一般无法存放于几个单元之内,因此在中断入口地址处往往存放一条无条件转移指令进行跳转,以便执行中断服务程序。
表1.280C51专用寄存器一览表
1.2.480C51单片机的时钟与时序
为了保证同步工作方式的实现,单片机必须有时钟信号,一是以使系统在时钟信号的控制下按时序协调工作。
时序是指令执行过程中各信号之间的相互时间关系。
1.时钟电路
Ø内部时钟方式
单片机的时钟电路由振荡电路和分频电路组成。
在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
电路中的电容一般取30pF左右,而晶体的振荡频率范围通常是1.2MHz~33MHz。
Ø外部时钟方式
在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,引入唯一的外部脉冲信号作为各单片机的振荡脉冲。
这时外部的脉冲信号是经XTAL1引脚注入,XTAL2引脚悬空。
2.机器周期
80C51采用同步控制方式,因此有固有的机器周期。
一个机器周期共有12个震荡脉冲周期,则当晶振频率为12MHz时,一个机器周期为1us。
第二章总体方案
2.1画出原理框图
在仔细分析设计要求的前提下,把系统要完成的任务分配给若干个单元电路,画出一个能表示各单元功能和关系的原理框图。
依靠原理框图,可为下一步的器件选择和布线提供依据和参考。
原理框图如图2.1所示。
图2.1智能交通设计原理图
2.2了解Proteus的编辑环境ISIS
目前比较流行的或应用广泛的绘制软件包有Proteus、Protel和ORCAD/STD。
亦可用电子工作平台multisim。
Proteus集成了高级原理布图、混合模式SPICE仿真、PCB设计以及自动来实现一个完整的电子设计系统。
其中,ISIS是智能原理图输入系统是Proteus系统的中心,该编辑环境具有友好的人机交互界面,并且设计功能强大,使用方便,易于掌握。
ISIS绘制环境如图2.2所示。
图2.2ISIS绘制环境
2.3了解ISIS电路图的绘制基本常识
用Proteus的ISIS绘制电路图时应注意:
1.引脚的隐藏
Proteus中电源引脚和接地引脚默认都是隐藏的,由系统自动分配。
2.布局合理、排列均匀、图面清晰、便于看图、有利于对图的理解和阅读
有时一个总电路图由几部分组成,绘制时应尽量把总电路图画在一张纸上。
如果电路比较复杂,需绘制几张图,则应把主电路图画在一张图纸上,而把一些比较独立或次要的部分画在另外的图纸上,并在图的断口两端做上标记,标出信号从一张图到另一张图的引出点和引入点,以此说明各图纸在电路连线之间的关系。
3.注意信号的流向
一般从输入端或信号源画起,从左到右或从上到下按信号的流向依次画出各单元电路,而反馈通路的信号流向则与此相反。
4.图形符号要标准,图中应加适当的标注
电路图中的中、大规模集成电路器件,一般用方框表示,在方框中标出它的型号,在方框的边线两侧标出每根线的功能名称和管脚号。
除中、大规模器件外,其余元器件符号应当标准化。
5.连接线应为直线,并且交叉和折弯应最少
通常连接线可水平或垂直布置,一般不画斜线。
互相连通的交叉线,应在交叉处用圆点表示。
根据需要,可以在连接线上加注信号名或其它标记,表示其功能或去向。
有的连线可用符号表示,例如器件的电源一般标电源电压的数值,地线用符号“⊥”表示。
2.4了解仿真时电路故障的排除方法
仿真时连接的电路一般比较复杂,参数计算一般比较繁琐,当出现线路未连接到位、错连、短路,选用仪器的参数设置错误或不合适时,就可能使仿真得不到预期的结果,甚至没有结果,这时就需要进行电路故障的排出,具体方法有以下几点:
1.信号寻迹法
寻找电路故障时,一般可以按信号的流程逐级进行。
从电路的输入端加入适当的信号,用虚拟示波器或电压探针等仪器逐级检查信号在电路内各部分传输的情况,根据电路的工作原理分析电路的功能是否正常,如果有问题,应及时处理。
调试电路时也可以从输出级向输入级倒推进行,信号从最后一级电路的输入端加入,观察输出端是否正常,然后逐级将适当信号加入前面一级电路输入端,继续进行检查。
2.对分法
把有故障的电路分为两部分,先检查这两部分中究竟是哪部分有故障,然后再对有故障的部分对分检测,一直到找出故障为止。
采用“对分法”可减少调试工作量。
3.分割测试法
对于一些有反馈的环行电路,如振荡器、稳压器等电路,它们各级的工作情况互相有牵连,这时可采取分割环路的方法,将反馈环去掉,然后逐级检查,可更快地查出故障部分。
对自激振荡现象也可以用此法检查。
4.电容器旁路法
如遇电路发生自激振荡或寄生调幅等故障,检测时可用一只容量较大的电容器并联到故障电路的输入或输出端,观察对故障现象的影响,据此分析故障的部位。
在放大电路中,旁路电容开路,使负反馈加强,输出量下降,此时用适当的电容并联在旁路电容两端,就可以看到输出幅值恢复正常,也就可以断定旁路电容的问题。
这种检查可能要多处实验才有结果,这时要细心分析可能引起故障的原因。
5.对比法
将有问题的电路的状态、参数与相同的正常电路进行逐项对比。
此方法可以比较快地从异常的参数中分析出故障。
6.替代法
把已调试好的单元电路代替有故障或有疑问的相同的单元电路(注意共地),这样可以很快判断故障部位。
7.静态测试法
故障部位找到后,要确定是哪一个或哪几个元器件有问题,最常用的就是静态测试法和动态测试法。
静态测试就是用各种虚拟测试仪表测试电阻值、电容器是否合适、电路是否断或短路,晶体管和集成电路的各引脚电压是否正常等。
这种测试是在电路不加信号时进行的,所以叫静态测试。
通过这种测试可发现元器件的故障。
8.动态测试法
当静态测试还不能发现故障时,可采用动态测试法。
测试时在电路输入端加上适当的信号再测试元器件的工作情况,观察电路的工作状况,分析、判别故障原因。
第三章硬件系统设计
3.1元器件的选择
由设计要求和原理框图可知,在Proteus中仿真智能交通灯系统所需的元器件包括:
80C51单片机、红黄绿三色LED灯、倒计时显示LED数码管和控制开关,80C51单片机已在前面介绍,下面就其他几个器件一一介绍。
3.1.1红黄绿三色LED灯
Proteus中提供了专门的交通灯模块TRAFFICLIGHTS,位于ACTIVE库中,由红黄绿三色组成,内部三色灯采用共阴极接法,对外有3个引脚(实际应为4个,Proteus中默认隐藏了电源和接地引脚),分别对应一种颜色的灯,使用时只要令需点亮的灯接高电平,不需点亮的灯接低电平即可,接线方便简单。
TRAFFICLIGHTS如图3.1所示。
图3.1TRAFFICLIGHTS
3.1.2倒计时显示LED数码管
(a)7SEG-MPX2-CA模块(b)符号和引脚(c)内部共阳极接法
图3.28段LED数码管
由于设计要求中需要显示的倒计时最长为50s,2位8段的数码管足以满足设计要求。
Proteus的DISPLAY库中提供了多种显示数码管,我们选用其中的7SEG-MPX2-CA作倒计时的显示用。
如图3.2(a)所示
7SEG-MPX2-CA内部采用共阳极接法,A-G引脚分别对应“8”字形的其中一段,共7段,相应段的引脚接低电平是点亮,接高电平时熄灭,DP为小数点对应的引脚。
符号和引脚关系如图3.2(b)所示,内部接法如图3.2(c)所示。
1.段码
所谓段码就是为数码管显示提供的各段状态组合,字形代码。
7段数码管的段码为7位,8段数码管的段码为8位,用一个字节即可表示。
在段码字节中代码位与各段发光二极管的对应关系如下:
段码
D7
D6
D5
D4
D3
D2
D1
D0
段名
dp
g
f
e
d
c
b
a
段码的值与数码管公共引脚的接法(共阳极和共阴极)有关。
以8段数码管共阳极为例,显示十六进制数的段码值如表3.1所示。
表3.1共阳极十六进制数段码表
显示数值
驱动代码
0
1
2
3
4
5
6
7
8
9
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
90H
2.动态显示
LED显示器多采用动态显示方式,全部数码管共用一套段码驱动电路。
显示时通过位控信号采用扫描的方法逐位地循环点亮各位数码管。
动态显示虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉暂留效应,看起来与全部数码管持续点亮的效果完全一样。
LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。
3.1.3控制开关
Proteus中提供了多种开关,这里我们选择最简单的BUTTON模块即可,有两个接线引脚,位于ACTIVE库中。
3.2单元电路的设计
根据系统指标和功能框图,明确任务,进行各单元电路的设计,每个单元电路设计前都需明确本单元电路的任务,详细拟定出单元电路的性能指标。
注意各单元电路之间的相互配合和前后级之间的关系,尽量简化电路结构。
注意各部分输入信号、输出信号和控制信号的关系。
选择单元电路的组成形式,模仿成熟的先进的电路,或进行创新或改进,但都必须保证性能要求。
本智能交通灯系统所需的单元电路由开关控制电路、80C51单片机主电路、红黄绿三色灯电路和倒计时显示电路构成,各个单元之间的关系较为简单和明确,只需和主电路以此进行连接即可。
3.3电路连接
在ISIS的模块库中找到所需的各个元器件,按照绘图的基本原则进行电路的绘制,将各个元器件连接为一个功能完善的整体,构成智能交通灯控制系统。
如图3.3所示。
如图中所示,南北方向记为AB车道,东西方向记为CD车道,A、B、C和D路口各有两个红黄绿三色LED灯和一个2位8段倒计时显示LED数码管,其中靠近中间黄色路中分界线的一个三色LED灯模拟的是转向灯。
U2为非门,用来使倒计时显示LED数码管交替工作,实现动态显示。
图3.3智能交通灯控制系统连接图
第四章软件系统设计
4.1程序流程图
根据设计的具体要求,画出程序的流程图如图4.1所示
图4.1程序流程图
4.2汇编程序
Proteus的ISIS编辑环境即可完成源代码程序的编辑、编译、链接和调试等任务,相当的方便,创建源代码文件的步骤如下:
1.打开Proteus的ISIS编辑环境,在sources菜单中,选择“Add/RemoveSourcesfiles…”项,将打开Add/RemoveSourcesCodeFiles对话框。
2.单击“New”按钮,选择保存的路径,即可新建一个“*.ASM”文件。
3.在CodeGenerationTool下拉菜单中选择“ASEM51”代码生成工具。
4.点击“OK”完成ASM文件的创建
源代码文件创建好以后,在sources菜单中就会出现刚刚新建的ASM文件的序号和名称,单击即可开始源代码的编辑。
下面是智能交通灯控制系统的汇编源代码,诸多不足,仅供参考:
org0000h
ljmpMain
org0003h;外部中断0,繁忙时手控开关
ljmpWInt0
org000bh;定时器0中断
ljmpT0Int
org0013h;外部中断1,紧急情况手控开关
ljmpWInt1
Main:
movIE,#b;中断允许
movTCON,#0h;低电平触发方式
movIP,#b;定时0设为高级中断
movp1,#b;p1.7置0为外部中断提供低电信号
;p1.2和p1.4置1表示AB和CD当前禁止转向
;p1.1置1表示AB线路通行
movdptr,#4000h;dptr设置数码管显示的首地址
movr0,#51d;r0设置倒计时的秒数
movr1,#15d;r1设置何时转向
clrc;将p1.0当前的值放入CY
mov00h,c;将c中的内容保存在00h,以免后面的程序改变c
callDeldis;调用50s延时且数码管倒计时的Deldis