PAGE
11 -
计算机原理实验综合设计
交通灯自动控制系统设计
1 设计要求
利用实验台上的彩色LED模拟两组“红—黄—绿”交通信号指示灯,将其分别作为主干道和支线道路的信号灯。具体要求如下:
参照实验教程第三章3.1.4章节,利用8253实现秒定时。
顺序
(状态)
(空)
主干路(南北)信号灯
支线路(东西)信号灯
状态字(16进制)
D7
D6
D5
D4
D3
D2
D1
D0
--
--
红
黄
绿
红
黄
绿
1
0
0
0
0
1
1
0
0
0CH 主干路行
2
0
0
0
1
0
1
0
0
14H 主干路转换
3
0
0
1
0
0
0
0
1
21H 支线路行
4
0
0
1
0
0
0
1
0
22H 支线路转换
表 3.1.3:信号灯状态字表
1.按照教材3.1.4相关程序并将“延时操作”改为子程序调用的方式实现信号灯的控制与运行。
2.在上述基础上实现:主、支路的不同定时时间和黄灯闪烁的功能。
3.利用2级定时计数器(方式2)进行定时操作,利用8255的PA0做输入判断定时时间。
4.在上述基础上利用两个单脉冲源和主从8259的MIR5、SIR0实现2个人行通道的“应急通行”的呼叫开关功能。
5.增加“倒计时”功能等
2 设计分析及系统方案设计
可以将信号灯的每一种状态设定成一个“状态字”,CPU只要通过8255A的PC端口每隔5秒钟更新一次“状态字”就可以实现信号灯的正常工作。根据实验的要求可将这些状态字设定如表3.1.3中的内容。程序采用顺序结构。
设计步骤:
参照教材的3.1.4章节,运行信号等程序;
参照教材3.2.4章节,编制一个查询(子)程序,查询PA0的电平:一旦PA0=0(5秒钟到),转换一次信号灯的状态,替换到原程序中有延时控制的环节。
分别添加对MIR5和SIR0中断的初始化(参考教材3.3.3章节和表3.3.5):
修改主片8259的IR5的屏蔽字:
in al,21h
and al ;开放主片IR5中断和一个从片输入IR2
out 21h,al
in al,0A1h
and al ;开放从片IR0中断
out 0A1h,al
填写主片IR5和从片IR0的中断向量表(35H、70H),参照3.3.3章节的程序编写。
编写MIR5和SIR0的中断服务程序。在各自的ISR中实现“人工呼叫”的处理操作。注意,在MIR5和SIR0的中断服务程序中的“结束中断”命令要包括对主片、从片的结束命令:
MOV AL,20H ;发送中断结束命令(向386EX主8259的MIR5)
OUT 20h,AL
MOV AL,20H ;发送中断结束命令(向386EX从8259的SIR0)
OUT 0A0h,AL
3 系统电路图
4 外围接口模块硬件电路功能描述
(1).设定D8255A的PC口作输出、显示信号灯的效果;
(2).设定8253的CNT0做分频器,将1MHZ信号分频为100HZ,再由CNT1将100HZ分频为周期为5秒的周期性方波(模式2);
(3).将D8255A的PA口设定为输入,并使用PA0与8253的 OUT1连接,CPU通过查询PA0的电平变化(秒信号),控制信号灯运行(即每5秒钟改变一次信号灯的状态);
(4).分别使用两个单脉冲的输出(正的脉冲数出)与386模块的MIR5和SIR0连接,作为“南北”和“东西”人行横道的“紧急通行”呼叫信号。当产生呼叫信号后,该方向的信号灯变为绿色,维持一段时间后,信号灯恢复正常运行。
(5).将D8255A的PB口设定为输出,并与数码显示管连接,用做倒计时显示。
5 主程序中主要变量说明
变量名称
内存单元
功能
Portc1
0ch,14h,21h,22h
存储红绿灯状态
ledcode
3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h
存储0~9字码形状
6 系统软件中各个子程序的功能描述
子程序名称
入口参数
出口参数
功能 描述
delay
cx
无
执行延时功能加led显示
emrgM
无
无
实现主干道中断
emrgS
无
无
实现支线路中断
7 主程序程序流程图
8 程序清单
data segment
io8255_a equ 210h
io8255_b equ 211h
io8255_c equ 212h
io8255_k equ 213h
io8253 equ 200h
count0 equ 08h; 8s
原创力文档

文档评论(0)