单片机课程设计 交通灯正文Word文件下载.docx
《单片机课程设计 交通灯正文Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 交通灯正文Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
P1口是专门供用户使用的I/O口,是准双向口。
P2口是从系统扩展时作高8位地址线用。
不扩展外部存储器时,P口也可以作为用户I/O口线使用,P2口也是准双向口。
P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。
作为第一功能使用时操作同P1口。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚
备选功能
P3.0RXD
串行输入口
P3.1TXD
串行输出口
P3.2/INT0
外部中断0
P3.3/INT1
外部中断1
P3.4T0
记时器0外部输入
P3.5T1
记时器1外部输入
P3.6/WR
外部数据存储器写选通
P3.7/RD
外部数据存储器读选通
表2-1-2
控制口线:
PSEN(片外取控制)、ALE(地址锁存控制)、EA(片外储器选择)、RE2SET(复位控制);
电源及时钟:
CCC、VSS;
XTAL1,XTAL2
图2.1.28051管脚图
2.28255工作原理
8255A是Intel公司生产的可编程输入输出接口芯片,它具有3个8
位的并I/O口,具有三种工作方式,可通过程序改变其功能,因而使用灵活,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。
8255有三种基本工作方式,三种工作方式由工作方式控制字决定,方式控制字由CPU通过输入/输出指令来提供.三个端口中PC口被分为两个部分上半部分随PA口称为A组,下半部分随PB口称为B组.其中PA口可工作与方式0、1和2,而PB口只能工作在方式0和1。
8255共有40个引脚,采用双列直插式封装。
其引脚图如图2-4所示,
各引脚功能如下:
图2.28255管脚图
D7~D0(databus):
三态、双向数据线,与CPU数据总线连接,用来传送数据。
CS(chipselect):
片选信号线,低电平有效时,芯片被选中。
A1,A0(portaddress):
地址线,用来选择内部端口。
RD(read):
读出信号线,低电平有效时,允许数据读出。
WR(write):
写入信号线,低电平有效时,允许数据写入。
RESET(reset):
复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0(portA):
A口输入/输出信号线。
PB7~PB0(portB):
B口输入/输出信号线。
PC7~PC0(portC):
C口输入/输出信号线。
VCC:
+5V电源。
GND:
电源地线。
2.37279工作原理
HD7279A是一片数码管/键盘串行接口芯片,其主要特性如下:
串行接口,无需外围元件可直接驱动LED;
各位具有独立控制译码/不译码及消隐和闪烁属性;
具有(循环)左移、(循环)右移指令;
具有段寻址指令,方便控制独立LED;
具有64键键盘控制器,内含去抖动电路。
引脚说明及管脚图:
CS:
片选
CLK:
时钟输入端
DATA:
串行数据输入/输出端
RES:
复位端
CLKO:
振荡输出端
KEY:
按键有效输出端
SG—SA:
段g----段a驱动输出
DP:
小数点驱动输出
DIGO—7:
数位0—7驱动输出
RC:
RC振荡器连接端
图2.37279管脚图
2.4系统工作原理
1.根据设计要求,我们可以把整个方案设计为单片机控制模块、交通灯点亮模块、数码显示模块和紧急放行模块。
其系统组成框图如图3.2。
2.对各个模块进行编程,当系统复位后,便进入东西南北均亮红灯5S的初始状态,随后进入的是东西绿灯亮10S、黄灯亮3S、红灯亮12S循环变换,相对应的南北放向则是以红灯亮13S、黄灯亮3S、绿灯亮9S顺序循环变换,此时当有紧急放行键按下时则如果禁行方向为红灯,则红灯继续维持12秒;
如果禁行方向为黄灯,则黄灯继续维持。
3.其中指示灯亮灭状态变换是通过89C51定时器T0产生定时中断来实现的,紧急放行键是通过键扫程序读入按键离合状态加以判断处理实现,而倒计时显示是利用定时器产生一秒定时,通过修改显缓区的内容得以实现。
图2.4系统组成框图
第三章硬件电路方案设计
3.1方案选择
方案一:
采用标准的STC89C51单片机作为控制器;
交通灯状态通过P1.0~1.5六个口来控制;
用单片机外扩一片8255与八个八段数码管相连,该八段数码管用于显示通行倒计时间;
四个方向的车辆直行及行人通行指示灯采用12个发光二极管;
数码管显示采用动态扫描,以节省端口数。
紧急放行采用实时中断来完成,识别方法采用外部按键方案。
按以上系统的构架设计,单片机端口资源够用且有富余。
该系统具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点。
方案二:
采用标准的STC89C51标准的51系列单片机作为控制器;
交通灯的控制信号由P2.0~P2.2口输出,其中P2.0高电平对应东西绿灯和南北红灯,P2.1高电平对应南北绿灯和东西红灯,P2.2高电平对应东西黄灯和南北黄灯。
为显示通行倒计时间,程序中按排了十进制转换程序。
剩余秒数的BCD码由P1口输出,通过2个CD4511驱动2个LED数码管,实现动态显示。
紧急切换按钮接在P0.0、P0.1上,通过在主程序中查询这两个端口的状态来决定是否进行紧急切换。
方案三:
通过89C51进行控制,利用8255进行并行I/O口扩展。
用8255的PA.0~PA.5口控制东西南北四个方向的十二盏指示灯的亮灭,用PC.0作为东西放行控制口,PC.1作为南北放行控制口。
另外本次设计用的是89C51最小系统板作为设计平台的,因此,在设计中直接使用最小系统板中的7279进行倒计时数码显示控制。
方案确定:
由于本次设计主要目的是提高对单片机产品的设计与掌握,且使用的是8255扩展I/O口的最小系统板,并掌握7279键盘及显示功能的编程。
因此为了增强对多片外部芯片扩展的掌握及熟练应用7279功能模块,本设计选择方案三。
3.2系统硬件单元电路设计
单片机最小系统板电路
8051通过74LS373进行地址锁存,74LS138进行译码产生片选信号,其中74LS138的地址输入端A、B、C分别接89C51的P2.5、P2.6、P2.7口。
为使8255的控制字端口地址为7FFFH、C口为7FFEH、B口为7FFDH、A口为7FFCH,即使P2.7、P2.6、P2.5的值分别为0、1、1,也是将A15、A14、A13置为011其他的地址A12-A2全部置‘1’完成唯一片选。
现将8255扩展芯片的片选端
接74LS138输入出端的Y3。
本系统设计的51最小系统板操作简单,使用方便,在PC机上编好程序后,经过编程器生成Hex文件后,然后用PC机串口通过STC-ISC程序下载软件能够非常方便地将程序烧到单片机中。
图见附录二
8255、指示灯及放行键电路
四个方向的红、绿、黄灯,东西及南北灯的状态相同,故可以将东西的红黄绿灯,南北的红黄绿灯相连接,通过分别接一电阻到5V电源,LED另一端接8255的PA口,,由低电平驱动。
放行键是由8255的PC.0和PC.1构成,其中PC.0构成东西放行键,PC.1构成南北放行键。
其电路是由一个电阻和按键组成分压结构,当按键断开时控制口将通过电阻到地实现数字低电平,当按键按下时,PC.0或者PC.1就直接接收5V电压,实现数字电路中的高电平,否则为低电平。
见附录三指示灯及放行键电路
7279倒计时显示电路
本系统显示模块是利用7279来控制数码管的显示,cs、clock、data分别接单片机的P1.0、P1.1、P1.2口。
图见附录四
3.3电路参数分析
指示灯控制电路是用8255的PA口的低六位接十二个发光二极管组成,采用的是低电平点亮,因此发光二极管的正端通过一个510Ω的提拉电阻接到5伏电源上。
此时流过发光二极管的电流
I=(5-1.5-0.3)/510≈6.27(mA)式4.1
完全可满足发光二极管点亮时的亮度问题。
定时器初值分析:
T0定时最长时间约为65ms,可用T0产生50ms的定时,再通过计时10次产生半秒标志、计时20次产生1S标志。
设定时初值为X,则有
(65536-X)*1μs=50ms式4.2
得X=3CB0H,即TH0=3CH,TL0=B0H
第四章软件设计
系统软件采用汇编语言,在Windowsxp环境下采用KeiluVision2进行编写,对AT89C51进行编程以实现各项功能。
本控制系统控制程序主要分为以下几个模块:
主程序、交通灯控制子程序、定时中断服务程序、紧急放行中断服务程序、7279显示程序等。
4.1程序设计原理
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,设东西方向按绿灯亮10秒、黄灯闪烁3秒、红灯亮12秒控制、指示灯燃亮的方案如表5-1。
表4-1交通灯状态变换表
……
10S
3S
9S
东西道
绿灯亮
黄灯亮
红灯亮
南北道
表4-1说明:
(1)当东西方向为绿灯,此道车辆放行,东西道行人可通过;
南北道为红灯,此道车辆禁止通过,行人通行。
时间为10秒。
(2)东西方向黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换,此时南北方向保持红灯。
(3)当东西方向为红灯,此道车辆禁止通行;
南北方向为绿灯,南北道车辆放行,行人通行。
时间为12秒。
(4)当东西方向红灯只剩三秒时,南北方向将由绿灯转为黄灯闪烁三秒。
综上分析:
软件模块中应包含四种亮灯状态,同时利用中断控制状态转换,利用键盘扫描控制完成放行键管理,利用显示程序完成倒计时显示,最终通过主程序衔接各子模块。
4.2内存分配
(1)由于7279管理八个数码显示,且用前两个显示东西倒计时,后两个显示南北倒计时,于是需开辟40H~47H八个单元作为显示缓冲区,31H为东西倒计时存储单元,32H为南北倒计时存储单元。
(2)由于本设计中状态变换较多,因此设置了下例标志:
00H:
黄灯亮灭标志,01H:
放行键按下有效标志,02H:
东西放行标志,03H:
南北放行标志,04H:
半秒标志,30H:
指示灯状态标志,51H:
50ms储存单元,50H:
50ms储存单元,53H:
存放计时的单元。
4.3程序流程图及部分功能子程序代码
4.3.1主程序流程图及部分代码
主程序流程图如图4.1所示,程序开始执行初始化,再进入循环体工作。
在循环本中通过对30H标志位的判断控制交通灯的状态转换,其中30H标志在中断程序中产生。
MIAN1:
LCALLKEY8255;
调用键扫描子程序
MOVA,30H
CJNEA,#00H,MIAN1_0
LCALLLVDENG
CLR01H
MIAN1_0:
CJNEA,#01H,MIAN1_1
LCALLH_DENG
MIAN1_1:
CJNEA,#02H,MIAN1_2
LCALLH9_DENG
MIAN1_2:
CJNEA,#03H,MIAN1_3
LCALLH3_DENG
MIAN1_3:
JNB04H,MIAN1_4
LCALLS_X
LCALLDTR_7279
CLR04H
MIAN1_4:
SJMPMIAN1
图4.1主程序流程图
4.3.2中断服务程序流程图
中断服务程序流程图如图4.2所示,在本程序块中将产生半秒标志53H,用于控制黄灯的闪烁。
同时还会产生交通灯状态转换标志30H,其中30H有0、1、2、3四种不同的状态值。
图4.2中断服务程序流程图
INT_T0:
MOVTL0,#0B0H
MOVTH0,#3CH/*定时器初始化,定时50ms*/
INC50H
INC51H
MOVA,50H
CJNEA,#0AH,INT_0
INT_0:
JCINT_1
CPL00H/*0.5s标志*/
SETB04H/*0.5s标志*/
MOV50H,#00H
INT_1:
MOVA,51H
CJNEA,#14H,INT_2
INT_2:
JCINT_
MOV51H,#00H
INC53H;
时间标志
CJNEA,#00H,INT_4;
判断亮灯状态
MOVA,53H
CJNEA,#0AH,INT_3;
判断时间到否
INT_3:
JCINT_10
MOV30H,#01H
MOV53H,#00H;
时间标志清零
MOV31H,#03H;
倒计时时间显示设定
MOV32H,#03H
SJMPINT_
INT_4:
CJNEA,#01H,INT_6;
CJNEA,#03H,INT_5;
INT_5:
JCINT_10
MOV30H,#02H
MOV53H,#00H
MOV31H,#0CH
MOV32H,#09H
INT_6:
CJNEA,#02H,INT_8
CJNEA,#09H,INT_7
INT_7:
MOV30H,#03H
MOV31H,#03H
INT_8:
CJNEA,#03H,INT_
CJNEA,#03H,INT_9
INT_9:
MOV30H,#00H
MOV31H,#0AH
MOV32H,#0DH
INT_10:
DEC31H
DEC32H
INT_:
RETI
4.3.3倒计时显示程序流程图
倒计时显示流程图如图4.3所示,其功能是将倒计时值转换成十进制形式送给显示缓冲区显示。
图4.3倒计时显示程序流程图
4.3.4四种亮灯状态程序流程图
1)东西绿灯亮、南北红灯亮时其执行程序的流程如图4.4,其主要完成的任务是对按键的扫描,判断是否有放行键按下,从而设置状态标志转换标志30H的标志值。
图4.4东西绿灯亮、南北红灯亮程序流程图
2)东西黄灯闪烁、南北红灯亮时其程序流程图如图4.5所示。
图4.5东西黄灯闪烁、南北红灯亮程序流程图
3)东西红灯亮、南北绿灯亮程序流程图如图4.6所示。
图4.6东西红灯亮、南北绿灯亮程序流程图
4)东西红灯亮、南北黄灯闪烁程序流程图如图4.7所示。
图4.7东西红灯亮、南北黄闪烁程序流程图
4.3.5紧急放行键扫描程序流程图
本程序用于对按键的监控,既定期对键盘实行监控扫描,判断是否有按键按下,及对按下键进行分析判断,产生对应标志,从而完成对按下键的相应操作。
KEY8255:
JB01H,KEY8255_0
MOVDPTR,#7FFEH
MOVXA,@DPTR
ANLA,#03H
JZKEY8255_0
MOVR7,#20H
KEY8255_1:
MOVR6,#64H
DJNZR6,$
DJNZR7,KEY8255_1
CLRC
RRCA
MOV02H,C;
东西放行键按下标志
MOV03H,C;
南北放行键按下标志
KEY8255_3:
SETB01H
KEY8255_0:
RET
图5.8紧急放行键扫描流程图
第五章实验、调试和测试结果与分析
5.1硬件调试
电路连通测试:
电路焊接好后,进行电路连通测试,先用万用表检测各个连接点,确保连接点连接良好;
再检测各种电源线与地线之间是否有短路现象,要确保电路无短路,否则有可能会烧坏元器件。
用万用表检查完后,再进行上电检测。
给板加电,用万用表检测所有的连接点或是器件的端口是否符合预计的电压值。
最后是联机检测。
各芯片功能检测:
事先编好一段简易程序(程序要能体现芯片功能),将程序烧入到硬件电路的单片机中,观察各个芯片实现的功能是否正常运行,如能正常运行,说明芯片没有损坏,芯片可以使用。
5.2软件调试
软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
调试过程中,对程序实现的是分模块调试,先确认模块程序能够运行,再进行程序的整体调试。
这样可以快速的检查出程序实现的功能与系统实际要求的区别,发现有区别也可以快速更改程序,直到程序能够实现设计要求。
最后将各个模块组合后再次调试程序,确保各功能模块能够相容。
5.3性能分析
本系统以STC89C51单片机为核心,开发程序调试阶段采用Keil软件进行编程及修改。
设计的交通灯可用于十字路口的车辆及行人的交通管理,显示采用8位4段数码管,可以很直观地显示红绿灯的开放和关闭的时间;
次系统的功能基本完善,不仅有普通交通灯的指示功能,还增加了紧急情况下的紧急放行功能。
其控制功能与效果与真实道口管理红绿灯基本一致。
结论
通过本次的毕业设计,我受益匪浅,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的工作奠定了一定的基础。
设计中也有不足处,其主要是1.没有设计东南方向和西北方向车辆行驶信号灯,而实际中车辆会在这两方向行驶;
2.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;
另一车道为副干道,车辆较少,放行时间应该短些;
3.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。
利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。
对于未来的交通灯,它或者就不再只是指挥车停车走这么简单,随着道路拥堵的加重,堵车现象的越加频繁,它在堵车的时候也将能够展现威力。
它或许能够代替一个真正的交通警察来疏导拥堵的车流,例如,它可以将一束光线打到它想要指挥的某辆车上,然后下达“前进”、或者“后退”或者“左右靠边”的命令,以此来迅速疏导车流。
而它比交警还要厉害的是,它能够一次指挥许多辆车,这样可以让疏导交通的速度大大加快。
参考文献
[1]谭浩强.单片机课程设计.北京:
清华大学出版社,1989
[2]张毅坤.单片微型计算机原理及应用.西安电子科技大学出版社,1998
[3]谢维成、杨加国.单片机原理与应用及C51程序设计.清华大学出版社,2006
[4]张先庭.单片机原理、接口与C51应用程序设计.国防工业出版社,2011
[5]余锡存、曹国华.单片机原理及接口技术[M].陕西:
西安电子科技大学出版社,2000.7
附录一程序代码及注释
ORG0000H
LJMPMIAN
ORG000BH
LJMPINT_T0
ORG1000H
MIAN:
MOVSP,#67H
MOVTMOD,#01H
MOVTH0,#3CH/*50ms*/
MOVIE,#82H
SETBTR0
CLR00H
CLR