一、设计内容和要求
提高要求:
a) 考虑东往西,南往北两个直行方向和左拐情况;直行、左拐和禁止时间比例为0.8∶0.2∶1;
b) 南口和北口设置各设置直行和左拐两组红绿灯(利用红绿LED显示)和倒计时牌显示(利用4个数码管或液晶显示屏分两组显示);
c) 注意东口和南口之间禁止通行时间等于左拐与直行通行时间之和。
如下图,在十字交叉路口设置交通灯和倒计时牌,东边与西边显示完全一样,南边与北边的显示完全一样,只需设计东边和南边。 模拟交通图
二、设计思想
本程序是TND—MD教学系统上实现的,要使用汇编语言进行编写,整体的设计思路是:
由于要实现前叙实验要求,本程序要达到以下几个功能:
秒信号的产生:
现实生活中交通灯都是倒计时的,因此本实验需要一个秒信号,而在TND—MD教学系统上的8253定时计数器可以实现这个功能。由于8253的OUT输出频率为1.19318MHz,若使其计数初值为1193180,则刚好每秒产生一个脉冲。而8253的每个计数器都是16位的,无法存入这个值,两个计数器级联可以实现:让0通道的OUT0连接8259的IRQ0,再由OUT0 连2通道的CLK2,使OUT2输出秒信号。其中计数器0的计数初值设计为1190,而计数器2的计数初值设计为1000,则OUT2每秒输出一个脉冲方波信号。
倒计时的显示:
利用TND—MD教学系统上的液晶显示屏,来实现显示倒计时。由于考虑到了东、南两个方向的通行显示,所以我们设计了两个到计时,一个用来显示东边方向的到计情况,另一个用来显示南边方向的到计情况。为了模拟的方便,我设计了直行时间为24秒,左拐时间为6秒,禁行时间为30秒。通过8253产生的秒信号,每秒驱动8259的IRQ7产生一次中断,调用中断服务程序显示到计时,每秒减一。东边通行时:时间从24减到0,然后是6秒的左拐时间,南边是30秒的禁止时间。南边的情况一样。东、南两个方向的时间都分别显示在液晶显示屏上。
红绿灯的显示和改变:
在TND—MD教学系统上有LED红绿发光二极管,上面有4个红灯和4个绿灯,且有8个对应的引脚,我们可以利用并行接口芯片8255来实现对这个8个引脚的控制。即8255初始化后,将PB0…PB7依次连接在D0…D7上,每次只要往8255的B端口写数据就可以控制8个灯的亮灭。在本实验中,为了模拟各种情况,我把8个灯分成两组:东组有:1,2,5,6四盏灯;南组有:3,4,7,8四盏灯。其中东直行时各盏灯的亮灭情况是:11010111(“0”为亮,“1”为灭);东左拐时是:11010011;南直行时是:01111101;南左拐时是:01111100。
通过8253来定时驱动各种情况的切换。
三、教学实验系统连线
1)本实验所用引脚有:
8259A的IRQ0和IRQ7
8253的计数器2上的CLK2和OUT2
8255的PB0——PB7
LED发光二级管的D0——D7
2)各引脚的连线情况:
IRQ0——CLK2
OUT2——IRQ7
PB0…PB7——D0…D7
四、所用芯片工作原理
本实验所使用的芯片主要有8253定时计数器、8255A并行接口电路芯片、8259A中断控制器等,它们的工作原理分别如下:
(一)8253定时计数器
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。它有3个独立的十优位计数器,计数频率范围为0-2MHz.它所有的计数方式和操作方式都通过编程控制,右下图是8253的内部结构图,其工作原理如下:
1、8253的功能是:
(1)延时终端;(2)可编程频率发生器;(3)事件计数器;(4)倍频器;(5)实时时钟;(6)数字单稳;(7)复杂的电机控制器
2、计数器0,计数器1,计数器2 :
这3个计数器互相独立,各自可按不同的方式工作。计数器的内部结构如前面所述,每个计数器包含一个16位的初始寄存器,一个计数执行部件和一个锁存器。计数执行部件从初始值寄存器中获得计数初值,便进行减1计数,此时,锁存器跟随记数执行部件的内容而变化,当有一个锁存命令来到时,锁存器便锁定当前计数,直到被读走以后,又跟随计数执行部件的动作。
各计数器的外部输入输出信号:
① 计数器0:CLK0—计数器0的时钟输入。
GATE0—计数器0的门脉冲控制输入。
OUT0—计数器0的输出。
② 计数器1:CLK1—计数器1的时钟输入。
GATE1—计数器1的门脉冲控制输入。
OUT1—计数器1的输出。
③ 计数器2:CLK2—计数器2的时钟输入。
GATE2—计数器0的门脉冲控制输入。
OUT2—计数器0的输出。
3.读/写逻辑电路:
读/写电路从系统控制总线接收输入信号,经过组合,产生对8253各部分的控制。具体为:
A1、A0—用来对3个计数器和控制积存器进行寻址。
RD—读信号。当RD为低电平时有效,此时,表示CPU正在对8253的一个计数器进行读操作。
WR—写信号。当WR为低电平时有效,此时,表示CPU正在对8253的几个计数器进行写操作。
CS—片选信号。只有在CS为持续低电平的情况下,RD和WR才会受到确认,否则会被忽略。
4.工作方式:
方式0:计数结束产生中断
方式1:可重复触发的单稳态触发器
方式2:分频器
方式3:方波发生器
方式4:软件触发的选通信号发生器
方式5:硬件触发的选通信号发生器
(二)8255A并行接口电路芯片
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0:基本输入/输出方式;方式1:选通输入/出方式;方式2:双向选通工作方式。
右图为8255内部结构图:
1.数据端口A、B、C
共提供24条数据线,与外设相联结,可以用软件将它们分别编程为输入端口或输出端口:
端口A:
①1个8位的数据输入锁存器:PA作输入时,有锁存功能。
②1个8位的数据输出锁存器缓冲器:PA作输出时,有锁存功能。
端口B:
①1个8位输入缓冲器:PB作输入时,不对数据锁存。
②1个8位输出锁存器缓冲器:PB作输出时,有锁存功能。
端口C:
①1个8位输入缓冲器:PC作输入时,无锁存功能。
②1个8位输出锁存器缓冲器:PC作输出时,有锁存功能。
2.A组控制和B组控制
8255在使用中,PA和PB常作为独立的输入/输出端口,端口C则配合PA、PB的工作。因此,把PA、PB、PC分为两组。
A组:PA、PC的上半部(PC7-PC4)
B组:PB、PC的下半部(PC3-PC6)
这两组端口的工作方式分别由A组控制和B组控制逻辑进行控制。
3.读写控制逻辑
该部分控制8255与CPU的数据传输。它接收CS、A1、A0,WR、RD及reset信号。
(三)8259A中断控制器
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片.其内部结构逻辑主要由以下三部分组成:(1)控制逻辑;(2)中断优先权判优及其屏蔽;(3)辅助电路.编程结构由三组共10个寄存器构成,每个寄存器均为