交通信号灯实时控制系统设计报告
组员:李波 李敏
一、实验目的
现代城市交通日益拥挤,为保证交通安全,防止交通堵塞,使城市井然有序,交通信号灯在城市交通管理中的作用越来越重要。通过本实验:
⒈掌握交通信号灯实时控制系统的设计思想与实现方法。
⒉掌握定时/计时器和并行接口在实时控制系统中的应用。
⒊加深对定时/计时器和并行接口芯片的工作方式和编程方法的了解。
⒋加深对中断机理及应用方法的了解。
二、实验任务
设计制作一个交通信号灯实时控制系统。要求:
⒈在一个十字路口的一条主干道和一条支干道上分别装一套红,黄,绿3种信号灯;用钮开关模拟十字路口的车辆检测传感器信号。
⒉在一般情况下,主干道上的绿灯常亮,而支干道上总是红灯。
⒊当检测到支干道上来车时(用按键开关模拟),主干道的绿灯转为黄,持续4秒后,又变成红灯,同时支干道由红灯变为绿灯。
⒋支干道绿灯亮后,或者检测到主干道上来了3辆车(用3个钮子开关模拟),或者虽未来3辆车,但绿灯已持续了25秒,则支干道立即变为黄灯,4秒后转为红灯,同时主干道由红灯变为绿灯。
三、实验设备器材
⒈80X86系列微机一台。
⒉微机硬件实验平台。
⒊定时/计时器和并行接口芯片。
⒋按键开关1个(单脉冲源),钮子开关(高低电平开关)3个及红,黄,绿发光二极管(即实验平台上的三色显示灯)。
四、实验原理
根据实验任务要求,在本实验系统中,微机需要检测4个开关送来的主,支干道车辆到达信号,并按一定的条件发出主,支干道6个信号灯的控制信号。显然,用一片8255A足以满足上述要求。对8255A 各端口不妨作如下安排:
令端口A 工作于方式0的无条件数据输出方式,用以控制交通灯的亮灭;端口B 工作于方式1的输入方式,并设置为允许中断;将端口C 的PC2接到中断请求线上,使得当支干道上有车来时,由中断请求线向CPU发出中断,CPU响应中断后发出控制信号来控制主,支干道交通灯变换状态。端口C 的高4位用作输入口,从PC7,PC6,PC5接入3个钮子开关,当钮子开关打到高电平时,表示主干道有车辆到来。具体设置如下:
端口A 的地址为:250H
端口B的地址为:251H
端口C的地址为:252H
控制寄存器地址为;253H
有关定时/计时器的功能,可以采用8253计时/定时器结合中断服务程序计数的方法来实现。可设想用8253来产生秒时钟信号,为此可以设置8253的定时器0工作方式3(方波方式),定时器1工作于方式2(分频方式),并将定时器0的输出端接到定时器1的时钟端。这样,就可以做到让定时器0每隔10ms向定时器1发出一个计数脉冲,而当定时器1计满100个数时,向主机发出一次中断请求信号,于是就实现了每隔1s发出一次中断请求的功能。然后在时钟中断服务程序中对秒信号作相应的计数。(通道1接10KHZ的方波脉冲源)。
另外附加三色显示灯的变色原理:从8255芯片的PA1,PA2,PA6,PA7 4个接口连出4根线接到三色显示灯的4个接口上,每两个控制一个灯。其中控制信号由程序中通过表示高低电平来设置好,如:
红灯为1000 绿灯0100 黄灯1100
综上所述,本试验系统的硬件结构框架如下图所示:
8253 通道0的端口地址为220H,通道1的为221H,控制寄存器的地址为223H。
实验的主程序和支干道来车中断服务程序流程图则如下图:
.model small
.stack
.data
count db 0
running db 'running',13,10,'$'
message db 'inter',13,10,'$'
time db '.','$'
.code
main proc far
start:
mov ax,@data
mov ds,ax
cli ;中断标志置0 IF<-0
mov ah,09
lea dx,running
int 21h
mov al,0fh ;0bH
mov ah,35h
int 21h
push es
push bx
push ds
;设置两个中断向量
mov ax,seg interproc
mov ds,ax
mov dx,offset interproc
mov al,0fh
mov ah,25h
int 21h
pop ds
pop bx
pop es
mov al,0bh ;0bH
mov ah,35h
int 21h
push es
push bx
push ds
mov ax,seg timeproc
mov ds,ax
mov dx,offset timeproc
mov al,0bh
mov ah,25h
int 21h
pop ds
pop bx
pop es
;保存原8259屏蔽字
in al,21h
push ax
in al,0a1h
push ax
mov al,071h
out 21h,al
mov al,0fdh
out 0a1h,al
;初始化8253,设置两个计数器的工作方式
;定时器0 工作方式3(方波方式) 10ms
mov dx,223h
mov al,16h ;控制字
out dx,al
mov dx,210h
mov al,64h
out dx,al
;定时器1 工作方式2(分频方式) 100个数
mov dx,223h
mov al,54h ;控制字
out dx,al
mov dx,221h
mov al,00001010b
out dx,al
;初始化8255,设置各端口的工作模式
mov dx,253h
mov al,10001111b ;控制字
out dx,al
;将8255的pc2置1,允许中断
mov dx,253h
mov al,00000101b
out dx,al
repeat: ;开中断,等待
sti
;从8255的A端口送出红绿灯信号
mov dx,250h
mov al,01000010b ;主绿支红
out dx,al
mov ah,1 ;Ctrl+C
int 16h
jz repeat
cli
pop ax
out 0a1h,al
pop ax
out 21h,al
sti
;返回DOS
mov ax,4c00h
int 21h
main endp
interproc proc near ;中断处理程序
;保存现场
cli
push ds
push ax
push cx
push dx
mov ax,@data
mov ds,ax
mov ah,09
lea dx,message
int 21h
mov dx,251h
in al,dx
;主干道有3辆车吗?
mov dx,252h
in al,dx
and al,11100000b ;7,6,5
cmp al,11100000b
jz goend
;清除秒计算器
mov count,0
;送主干道黄灯,支干道红灯数据
mov dx,250h
mov al,11000010b ;主黄支红
out dx,al
sti
;计数
libo:
cmp count,4
jnz libo
;秒计数器清零,送主干道红灯,支干道绿灯数据
mov count,0
mov dx,250h
mov al,10000001b ;主红支绿
out dx,al
captain:
cmp count,25
jz cipher
;主干道有3辆车吗?
mov dx,252h
in al,dx
and al,11100000b ;7,6,5
cmp al,11100000b
jnz captain
cipher:
;秒计数器清0,并送主干道红灯,支干道黄灯数据
mov count,0
mov dx,250h
mov al,10000011b ;主红支黄
out dx,al
smartcat:
cmp count,4
jnz smartcat
goend:
mov al,20h
out 20h,al
out 0a0h,al
;恢复现场
pop dx
pop cx
pop ax
pop ds
iret ;退出中断
interproc endp
timeproc proc near ;时间中断
;保存现场
cli
push ds
push ax
push cx
push dx
mov ax,@data
mov ds,ax
inc count
mov ah,09
lea dx,time
int 21h
mov al,20h
out 20h,al
out 0a0h,al
;恢复现场
pop dx
pop cx
pop ax
pop ds
sti
iret ;退出中断
timeproc endp
end start
第二篇:交通信号灯实时控制系统设计
中北大学 课程设计任务书 学年第学期
学 院: 信息商务学院 专 业: 起 迄 日 期:
课程设计地点: 通信工程 7月 1 日 ~ 7月7 日 中北大学 指 导 教 师: 杨文君 系主任: 赵冬娥
下达任务书日期: 2007 年 7 月 1日
一、设计目的和要求
(一)设计的目的
通过对红绿黄LED发光二极管的控制,熟练掌握8255A可编程并行接口的编程方法。
(二)设计的要求
编写程序控制8255A可编程并行接口芯片,使实验台上的红、绿、黄发光二极管按照十字路口交通信号灯的燃灭规律发光。当按下任意键则停止运行,返回DOS。
二、设计内容及步骤
1.要完成本次设计,首先必须了解交通信号灯的亮灭规律。设有一个十字路口,1、3位南北方向,2、4位东西方向。
初态为4个红灯全亮,禁止通行;
(1)1、3路口绿灯亮,2、4路口红灯亮;
(2)1、3路口绿灯灭;
(3)1、3路口黄灯闪烁;
(4)4个路口红灯全亮;
(5)2、4路口绿灯亮, 同时1、3路口红灯亮;
(6)2、4路口绿灯灭;
(7)2、4路口黄灯闪烁;
(8)转向(1)循环执行。
设计电路并在实验台上连接线路,应连线如图所示:
·L1~ L4接PB4~PB7,控制黄灯;
·L5~ L8接PC0~PC3,控制红灯;
·L9~ L12接PC4~PC7,控制绿灯;
·CS接地址译码器218H~21FH插空。
2.各发光二极管通过电阻接+5V。因此,要使其点亮应使8255A相应端口位清零。
3.程序运行过程中,按下任意一个键,要返回DOS可以用6H号系统功能调用来识别有无键按下。这是直接控制台I/O调用。是输入还是输出,要视DL寄存器的内容而定。当DL=FFH时,如果要输入的字符已经准备好,就从标准输入设备上输入字符。调用返回时,该字符放在AL寄存器中,并清除零标志位;如果字符没准备好,零标志位被置一。当DL≠FFH时,表示要进行输出,此时把DL的内容作为一个要输出的有效字符,输出到标准的输出设备上。注意,这个功能调用不对Ctrl_Break进行检查,也就是说,在这功能调用期间系统对Ctrl_Break不予响应。因此可以用以下指令来判断是否有键按下,有键按下则转移,无键按下顺序执行。
MOV AH, 06H
MOV DL, 0FFH
INT 21H
4.参考程序流程图如下图所示
主程序
延时子程序1 延时子程序10
+5V
1/6U37×6
三、进度安排 8255A与LED发光二极管的接口电路
四、答辩与成绩评定
1.成绩评定方法如下:
课程设计成绩=考勤30%+设计报告70%
如果条件允许,可以组织学生答辩,答辩过程如下:
·教师通过审阅课程设计报告发现问题向学生提出;
·首先由学生阐述自己对本课程设计的认识,及设计思路;
·教师通过提问方式进一步对学生的课程设计工作进行评审,了解学生对设计的深入程度并帮助学生找出设计的不足之处。
课程设计成绩=考勤20%+设计报告50%+答辩30%
2.设计报告的要求:
·写出详细的设计步骤和设计内容;
·画出实验电路;
·打印程序清单。
教学参考书目
1.周耿烈,《微机原理与接口技术实验指导书》,兰州工专计算机工程系,20xx年3月
2.李顺增,《微机原理及接口技术》,机械工业出版社.20xx年第一版
3.沈美明,《IBM PC机汇编语言程序设计》,清华大学出版社,19xx年第一版
4.陈够喜,《微机原理应用实验教程》,人民邮电出版社,20xx年6月