交通信号灯控制课程设计.docx
《交通信号灯控制课程设计.docx》由会员分享,可在线阅读,更多相关《交通信号灯控制课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
交通信号灯控制课程设计
阶段课程设计
课题名称_________________________________
所在院系_________________________________
班级_________________________________
学号_________________________________
姓名_________________________________
指导老师_________________________________
时间_________________________________
科技艺术学院工程系
一概述…………………………………………………3
二 设计内容与要求………………………………………4
三 设计思想………………………………………………5
四 教学实验系统连线……………………………………6
五 所用芯片工作原理……………………………………6
六 实验连线图……………………………………………7
七 程序流程图……………………………………………7
八 程序源代码……………………………………………11
九 设计心得………………………………………………15
一、概述
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—黄灯—绿灯”转换间隔,并自动切换。
它们一般由通行与禁止时间控制、红黄绿三色信号灯和方向指示灯三部分组成。
交通灯的时间控制,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的、高度非线性的、随机的,还经常受人为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不会因当前道路上通行车辆数的实际情况而变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
本次课程设计有一个十字路口,1,3为南北方向,2,4为东西方向,每个路口各有红、黄、绿三个交通信号灯。
用红黄绿三个彩色发光二极管模拟控制交通信号。
红、黄、绿灯接通时间分别为5秒、2秒、5秒。
二、设计内容与要求
1、设计要求
假设有一个十字路口,1,3为南北方向,2,4为东西方向,每个路口各有红、黄、绿三个交通信号灯。
用红黄绿三个彩色发光二极管模拟控制交通信号。
红、黄、绿灯接通时间分别为5秒、2秒、5秒。
2、设计内容
用8255的B端口和C端口控制12个LED发光二极管的,发光二极管输入为“0”时点亮;为“1”时熄灭。
8255应工作于模式0输出状态。
(1)十字路口红、绿灯通电方式如下表:
十字路口红、绿灯通电方式
绿1
绿2
绿3
绿4
黄1
黄2
黄3
黄4
红1
红2
红3
红4
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
(2)交通灯的时间控制
时间控制有两种方法:
1)硬件定时;
2)用软件延时,调用软件延时子程序。
三、设计思想
1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用
8255A实现控制。
2.用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的5秒钟、2秒钟和5秒钟的定时。
实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。
⒊用实验系统的发光二极管模拟红绿灯。
注:
8259A的端口地址为:
218H、219H
8255A的端口地址为:
端口A-200H、端口B-201H、端口
C-202H、控制端口-203H
8253的端口地址为:
计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。
设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。
利用CX对不同的状态时间计数,用来实现计数器0对5秒钟,2秒钟,5秒钟的定时。
中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。
每进入中断即刷新LED显示。
用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。
四、教学实验系统连线
Q6
OUT0
8253GATE0
Clk0
PA0
8255PC
地址CS1
译码CS2
电路CS3
CS4
路
数码管显示模块
IRQ2
8259IRQ3
发光二极管电路
单脉冲发生单元
PCBUS
系统硬件电路图
五、所用芯片工作原理
8253计数的起停由8255的PA0控制,8255的PA0输出1时,8253开始计数,交通灯按正常状态切换工作,PA0输出0时,计数器停止工作,交通灯不再按正常状态切换。
8253开始计数后每100ms发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。
当有紧急情况时进入外部中断服务子程序,先让8253停止计数,然后点亮所有的红灯,下一次外部中断处理时,恢复原来的交通灯状况,启动8253开始工作。
六、实验连线图
8255接口电路
七、程序流程图
主程序负责系统的初始化,然后数码管数据输出显示,同时检测PC键盘按键,有按键就退出程序。
主程序的流程图如图1示。
系统初始化包括8253的初始化,8255的初始化,中断向量初始化以及设置交通灯工作的初始状态。
8253定时的时间是100ms,clk0的输入时钟f=46875hz,所以计数初值为124FH。
Y
初始化8253
初始化8255
设置中断向量
设置交通灯初态
启动计数器
数码管数据输出
开始
有按键
结束
N
图1主程序的流程图
定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。
中断子程序包括数码管输出数据刷新程序和各状态处理程序。
中断程序的流程图如图2所示。
数码管输出数据刷新子程序是实现倒计时5s,用LEDOUT表示输出的数据,cnt用来软件计时1s,就是计数50个100ms。
LED输出是要将输出的数据转化为段选码。
LED数码管倒计时显示子程序的流程图如图3所示。
根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。
状态1和3的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。
状态2和4要实现黄灯的闪烁,间隔点亮和熄灭就可以了。
状态1和3处理程序的流程图(以状态1为例)如图4所示,其中NUM是状态1对应的PC口输出,见前面的表中介绍。
状态2和4处理程序(以状态1为例)的流程图如图5所示,其中NUM1和NUM2是状态1对应的PC口输出。
外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。
下次中断来时恢复以前的状态。
用一个标志位FLAG判断是第一次进入还是恢复状态。
外部中断服务子程序的流程图见图6所示。
八、程序源代码
本次设计中,选用8235的计数器0定时向实验系统主片8259A的IRQ0请求中断。
设置8253的计数器0每100ms请求一次中断,工作于模式3;8255的A端口控制交通灯;数码管驱动程序采用指导老师提供的程序。
初始化程序:
DATASEGMENT
LEDDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;存放七段代码表
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
D1EQU10H
D2 EQU200H ;8255A端口A
EAEQU200H ;8259端口地址
EE
EQU203H
CONTROLEQU20bH ;8253端口地址
COUNT0 EQU208H
COUNT1 EQU209H
COUNT2 EQU20aH
Z8279 EQU 222H
D8279 EQU 220H
LEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示
LEDFEQ EQU 38H ;扫描频率
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
CODE SEGMENT
ASSUMECS:
CODE
CONT DB0
CONT1 DB0
CONT2 DB0
BKSD DB0
BKAD DB0
BKDA DB0
TEMP DB0
*******************************************
START:
MOVAX,0
MOVDS,AX
MOVAX,OFFSETIRQ0
ADDAX,2000H
MOVSI,0FH*4
MOV[SI],AX
MOVAX,0
MOV[SI+2],AX
INAL,218H
ANDAL,7FH
OUT219H,AL
CLI
MOVAL,80H ;初始化8255
OUTEE,AL
MOVAL,00
OUTEA,AL
MOVAL,0f0H
OUTEA,AL
MOV DX,218H ;8259初始化
MOV AL,00010010b
OUT DX,AL
MOV AL,08H
MOV DX,219H
OUT DX,AL
MOV DX,203H ;设置为全输出
MOV AL,80H
OUT DX,AL
MOV DX,200H
MOV AL,0ffh
OUT DX,AL ;清LED
MOV DX,200H ;全红
MOV AL,
0F0H
OUT DX,AL
MOVAL,00000010b ;初始化8253
OUTCONTROL,AL
MOVAX,2500
MOVDX,COUNT0
OUTDX,AL
MOVAL,AH
OUTCOUNT0,AL
MOVAX,DATA
MOVDS,AX
中断服务程序:
A1:
STI
HLT
JMPA1
IRQ0:
JMPCOMPARE
COMPARE:
CMPDL,0
JZSTATE0
CMPDL,1
JZSTATE1
CMPDL,2
JZSTATE2
CMPDL,3
JZSTATE3
STATE0:
;状态0:
东西红南北绿
moval,
00000101b
outD2,al
DECSI
JNZCHANGE1
DECDH
MOVSI,100
CHANGE1:
DECCX
CMPCX,0
JNZM0
MOVCX,500
STATE1:
DECDI ;状态1:
东西方向黄灯闪烁,南北绿灯
CMPDI,0
JNZSHINE1
MOVAL,00000101b ;东西灭,南北绿
OUTD2,AL
MOVDI,50
JMPCHANGE
SHINE1:
MOVAL,00000010B ;东西黄,南北绿
OUTD2,AL
CHANGE:
DECSI
JNZCHANGE2
DECDI
MOVSI,100
CHANGE2:
DECCX
CMPCX,0
JNZM1
MOVCX,2000
MOVDH,25
STATE2:
MOVAL,00000101b ;状态2:
东西绿灯,南北红灯
OUTD2,AL
DECSI
JNZCHANGE3
DECDH
MOVSI,100
CHANGE3:
DECCX
CMPCX,0
JNZM2
MOVCX,500
STATE3:
DECDI ;状态3:
东西绿灯,南北黄灯闪烁
CMPDI,0
JNZSHINE2
MOVAL,000000101B ;东西绿灯,南北灭
OUTD2,AL
MOVDI,50
JMPSOURCE
SHINE2:
MOVAL,
00000010B ;东西绿,南北黄
OUTD2,AL
SOURCE:
DECSI
JNZCHANGE4
DECDH
MOVSI,100
CHANGE4:
DECCX
CMPCX,0
JNZM3
MOVCX,6000
MOVDH,65
M0:
MOVDL,0 ;下次进入状态0
JMPEXIT
M1:
MOVDL,1 ;下次进入状态1
JMPEXIT
M2:
MOVDL,2 ;下次进入状态2
JMPEXIT
M3:
MOVDL,3 ;下次进入状态3
EXIT:
MOVAL,20H
OUT218H,AL
IRET
CODEENDS
ENDSTART
九、课程设计总结
在本次设计中,使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制。
在设计中掌握的计算机接口设计的基本方法、锻炼了团队合作的能力。
本次设计中,对MCS-51单片机又有了更深的认识。
MCS-51单片机内部有两个可编程定时器/计数器T0和T1,每个定时器/计数器有四种工作方式:
方式0~方式3。
方式0是13位的定时器/计数器,方式1是16位的定时器/计数器,方式2是初值重载的8位定时器/计数器,方式3只适用于
T0,将T0分为两个独立的定时器/计数器,同时T1可以作为串行接口波特率发生器。
不同位数的定时器/计数器其最大计数值也不同。
对于定时器/计数器的编程包括设置方式寄存器、初值及控制寄存器(可位寻址)。
初值由定时时间及定时器/计数器的位数决定。
本次设计通过用以上四种工作方式设计100ms定时实例来对红绿灯的转换定时,不但要对硬件的控制,同时也运用了秒表的控制原理。
中断是指当机器正在执行程序的过程中,一旦遇到某些异常情况或特殊请求时,暂停正在执行的程序,转入必要的处理(中断服务子程序),处理完毕后,再返回到原来被停止程序的间断处(断点)继续执行。
中断请求的优先级由用户编程和内部优先级共同确定,中断编程包括中断入口地址设置、中断源优先级设置、中断开放或关闭、中断服务子程序等。
通过这次的设计,本人对《汇编语言》和在大一的时候学习的《逻辑语言和逻辑系统》得到了很好的实践,并对《微机原理与接口技术》的理解有了更深的认识,我相信自己会把这些理论知识很好的运用的生活中去的。
十参考文献
1.《微型计算机接口技术及应用》
2.《汇编语言程序设计》
3.《微型计算机汇编语言程序设计》
资料仅供参考!
!
!