交通信号灯模拟控制系统设计I
一、概述 成细 在STARES598PCI实验系统的基础丄,应用可编程并行接口8255、定-----------吋/计数器8253等I/O接口芯片,设计一个十字路口交通信号灯模拟控制系统。
二、 设计目的
通过设计一个十字路口交通灯系统掌握8255.8253等接口芯片的编程和应用方法,做到理论联系实际。
三、设计要求
要求绘制流程图、编写源程序,并在实验系统丄调试通过程序。
!1! |
|
1、十字路口交通信号灯设置
某十字路口交通信号灯系统在4个路口均装设红、绿2个灯,并装设数码管显示倒计吋。
南
图1交通信号灯设置
实验时用LED(发光二极管)代替十字路口的红绿灯(其分布口行定义)。
2、 交通信号灯亮灭规律
交通信号灯系统初始状态为所有红灯闪烁N1秒钟(不必在数码管显示);之后东西向车行道绿灯亮,车辆放行N秒钟,此吋南北向车行道红灯亮,之后转为南北向车行道放行N秒钟,如此循环重复。要求数码管能够显示倒计时。
参数选择:
NIWlOs,闪烁次数为3-8次
各小组自行选择N、N1及闪烁次数方案。
3、 参考方案
采用8255、8253组成系统,采用8253产生定吋。如果加入紧急车辆通过功能或其他任何先进功能,可根据具体情况加创新分。
如果采用8255、8253、8259组成系统,则加创新分(用8259产生中断,其功能自学)。
1、方案说明...............................................7 1.1十字路口交通信号灯设置
1.2实验接口芯片选择
1.2.1 8255
1.2. 2 8253
2、硬件设计...............................................9 2.1硬件接线图2.2引脚连接详细说明
3、软件设计...............................................10 3.1程序流程图
3.2源程序清单
4、调试现象...............................................13
5、心得体会...............................................15
6、参考文献...............................................15
一.方案说明
1.1十字路口交通信号灯设置
某十字路口交通信号灯系统在4个路口均装设红、绿2个灯,每个路口均装设一个数码管显
示倒计时。
原理图屮的东西南北方向红绿灯分别对应于实验仪器丄的8个LED灯,分别代表如下:
东 | 西 | | 南 | 北 | ||||
绿灯 | 红灯 | 绿灯 | 红灯 | | 绿灯 | 红灯 | 绿灯 | 红灯 |
根据实验实验要求,在初始情况下,所有方向的红灯闪烁4秒;然后进入先让南北方向红灯亮(此时东西方向绿灯亮),南北方向亮10S,并用数码管显示所有方向的倒计时。Z后南北方向绿
灯亮,如此循环往复下去。
1?2实验接口芯片选择
1.2.18255
主要功能:控制的是交通灯的亮灭以及数码管的显示。
(1)首先对8255的控制端口写入控制字,程序如下:
MOVAL,10000001B ;8255初始化
MOVDX,0F003H ;8255控制口地址
OUTDX,AL
AL=10000001B,实现的功能如下:
写入方式0控制字,A口、B口、C口高四位为输出,C口低4位为输入。
A口控制的是交通灯的亮灭,B口用来显示数码管丄的数字,C口用来控制数码管。
⑵以下程序为A口地址:0F000H来实现交通灯红绿灯的转换。0表示灯亮,1表示灯灭。
MOVDX,0F()0()H
MOVALJ0100101B ;南北红灯,东西绿灯
OUTDX,AL
CALLCOM
MOVDX,0F()0()H
MOVAL,010I1010B ;南北绿灯,东西红灯
OUTDX,AL (3)以下程序为B口地址:0F00IH,用来显示数码管的数字。
Al: | MOV DX,0F001H | ;数码管每隔1秒依次显示9,&7....0 |
MOV AL,[SI] |
OUTDX,AL
CALLDELAY
CALLDELAY ;延时两个0.5秒,即1秒INCSI
LOOPAl
RET
COMENDP
⑷以下程序为C口地址:C端口的高4位用来控制数码管的位置,0为C口高4为有效。
MOVDX,0F002H ;C口控制数码管灭
MOVAL,0FH ;4个数码管
OUTDX,AL 1. 2. 2 8253
主要功能:产生2HZ的方波,使数码管每秒计数以及交通灯亮10S的要求。
(1)首先是将方式控制字写入8253的控制端口中,程序如下:
MOVAL,00110111B ;通道0读低高字节,方式3,BCD码
MOVDX,0E003H
OUTDX,AL
AL=00110111B,按照8253控制字的格式,通道0计数,计数器先读写低字节,再读写高字节,
工作方式为方式3,BCD码计数。血8253的控制口的端口地址为0E003H。当计数器通道用作定
时器时,8253的计数初值计算可由以下公式求得:计数初值二输入时钟脉冲的频率/输出吋钟
脉冲的频率
输入吋钟脉冲的频率=7812H乙
而输出吋钟脉冲的频率=2HZ
⑵计数初值是被送到通道0的地址。程序如下:
MOV DX,0E000H ;8253 初始化,产生 2HZ 方波,7812/2=3906
MOV AL,06H
OUT DX,AL
MOV AL,39H
OUT DX,AL
8253 OUTO输出产生2HZ的方波,而将OUTO与PC2连接,判断PC2在一?个周期内, 输出低电
平则执行A,输出高电平则执行B, 一次来实现交通灯与数码管的功能。
(3)延迟的程序如下:
DELAY PROC ;8253延时0.5秒钟
A: MOV DX,0F002H
B
IN AL,DX 则执行AND AL,04H | ;OUTO —个周期(0.5秒)输出高低电平,低电平执行A,否 ;0000 0l00B |
B: MOV DX,0F002H
IN AL,DX
AND AL,04H
JNZB
RET
DELAY ENDP
二.硬件设计:
2.1硬件接线图
2?2引脚连接详细说明
C5 区:CS、AO、A1 | | A3 区:CS2、AO、A1 |
C5 区:OUTO | | B4 区:PC2 |
C5 区:GATEO | | C1 区:VCC |
C5 区:CLKO | | B2 区:7812 |
B4 区:AO,A1 | | A3 区:AO,A1 |
B4 区:/CS | | A3 区:CS1 |
B4 区:PA 口 | | G6 区:JP65 |
B4 区:PB 口 | | G5 [x: JP42 |
B4 区:PC 口 | | G5区:JP41上半部 |
三、软件设计
3.1程序流程图
3.2源程序清单
DATA | SEGMENT | ;0-9数码显示 |
TAB | DB 6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH | |
DW $-TAB | ||
XUN | ||
DATA | ENDS | |
STAR | SEGMENT STACK | |
DW 100 DUP(?) | ||
STAK | ENDS | |
CODE | SEGMENT |
ASSUMECS:CODE,SS:STAK,DS:DATA
START:
MOVAX,DMA MOV
DS,AXXOR AX,AX
MOVAL, 1000000IB ;8255初始化,AB口为方式0,输出;C口高四位输出,低四位输入
MOVDX.0F003H
OUTDX,AL
MOVAL,0011011IB;8253初始化,选择计数通道0,工作方式3,
高低字节,以BCD码计数
MOVDX,0E003H
OUTDX,AL
MOVDX,0E000H ;产生2HZ方波,输入频率/输出频率二计数
初值,8253/2=3906
MOVAL,06H;读计数初值低字节
OUTDX,AL
MOVAL,39H;读计数初值高字节OUTDX,AL
MOVCX,4 ;初始吋东西南北红灯闪四次,0表示灯亮,
1表示灯灭
L: | MOV DX,0F000H | ;A 口控制的是交通灯的亮灭 |
MOV AL,10101010 B | ;红灯全亮 |
OUTDX,AL
CALLDELAY
MOVDX,0F000H
MOVALJHlllllB;全灭
OUTDX,AL
CALLDELAY
LOOPL
SI: | MOV DX,0F002H | ;C 口控制数码管亮灭 |
;4个数码管 | ||
MOV AL,0FH |
OUTDX,AL
MOVDX,0F000H
MOVAL,01011010B;南北红灯,东西绿灯OUTDX,AL
CALLXS
MOVDX,0F000H
MOVALJOIOOIOIB
OUT DX,AL
CALL XS
JMPS1
MOV AH,4CH
INT21H
;南北绿灯,东西红灯
;无条件跳转,死循
环
DELAY | PROC | ;8253 延时 0.5 秒钟(1/2二0.5) |
A: | MOV DX,0F002H | ;OUT—个周期(0.5秒)输出高低电平,低电 |
IN AL,DX |
平执行A高电平执行B
B: | AND AL,04H | ;00000100B |
JZ A | ;ZF=1则跳A即AL=0,实现低电平执行A | |
MOV DX,0F002H |
IN AL,DX
AND AL,04H
JNZB ;ZF=0则跳B即ALH0,实现高电平执行B
RET
DELAY | ENDP | ;数码管每隔1秒依次显示9,&7....0 |
XS | PROC | |
MOV CX,XUN | ||
Al: | LEA SI,TAB | ;取TAB的有效地址(偏移地址) |
MOV DX,0F001H | ;B 口用来显示数码管上的数字 | |
MOV AL,[SI] | ;把TAB的第一个元素给AL |
OUT DX,AL CALL
DELAY
CALL DELAY INC SI | ;延时两个0.5秒,即1秒 |
LOOP Al
RET
XS ENDP
CODE ENDS
END START
四、调试现象
1、交通信号灯系统初始状态:所有红灯闪烁4秒钟(不必在数码管显示)
xmgyan. com. cn |
2、东西向车行道绿灯亮,车辆放行10秒钟,此吋南北向车行道红灯亮(要求数码管能够
显示倒计时)
CLK |
|
| | ||
1 | |||||
O | |||||
|
| | Q | ||
A2 |
SIN |
OM11
|
开关 |
|
|
| WWW. xingyan. com. cn |
佐红編亿址紅仇?L
3、之后转为南北向车行道放行10秒钟,即东西红灯亮,南北绿灯亮,如此循环重复。 (要求数码管能够显示倒计时)
五、心得体会
本次实习最主要学习了8255和8253接口芯片的功能及应用,为期一周的实习让我对8086汇编语言的一些应用有了更深的认识,我学到了许多书本上学不到的知识,为今后的进一步学习奠定了基础。当老师布置完题H后,由于对需要掌握的知识还不是十分理解,我通过看教材和查资料等方式将各个芯片的引脚和功能分析清楚,在设计的过程屮编程部分是个难点,尤其是芯片接口方面的编程。通过查表得知各引脚的作用以及各引脚対应的端口,然后设定各端口的功能。以前在丄课的时候,老师说在写一个程序的时候,要先把程序原理方框图画出来,但是我开始总觉得这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计屮碰到的需要很多代码才能完成的任务,画程序方框图是很有必要的。通过程序方框图,在做设计的过程屮,我们每一步要做什么,每一步要完成什么任 血且在程序测试的过程屮也有利于查错。
同时我也深入了解了务都有一个很清楚的思路,试验仪的操作,比如在进行结果验证时,结果与预想的相反,最后查明是PA端口与JP65的高低位接反,使输岀结果错误。这提醒我在接线的时候要注意高低位,不能接反。
经过这次的实际动手操作,让我明白不仅要掌握课本上的知识,而且要学以致用。
本次实习使我对微机原理这门课程又有了新的认识,这对于我今后的学习会有事半功倍的效果。非常感谢本次实习给了我这样一个锻炼我的机会,在此也感谢老师对我的指导!
六、参考文献
1、李干林,李升.微机原理及接口技术实验指导书.北京:北京大学出版社.2、李继灿.新编16/32位微型计算机原理及应用(第4版).北京:清华大学出版社.
3、周荷琴,吴秀清?微型计算机原理与接口技术?合肥:
屮国科学技术大学岀版社.