交通灯 (汇编语言)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

——交通灯

设计人:张玉印200800800439

李娜200800800099

一、设计目标:设计一个工作于支、干路交叉处的交通灯系统,支道和干道各

有一组交通灯,依次为绿、黄、红。主干道红灯20秒、黄灯4

秒、红灯14秒,支干道绿灯10秒、黄灯4秒、红灯24秒。

主要功能:

1、每一时间段内两组数码管都只有一个灯亮,并且颜色不同,能

够实现数码管倒计时计时到零时能够自动的转换成下一个阶段,

四个阶段交替周期进行。

2、在道路出现紧急情况时,能够手动中断控制使主道和支道的交

通灯都变成红灯,并且紧急情况排除后能够手动控制恢复到原

来中断前的状态有序执行。

3、能够报警,根据特殊情况的分类报警器(蜂鸣器)的发生的频

率不一样,蜂鸣器的频率能够通过旋钮手动调节。

一、实验器材

唐都TS-PITE试验箱,用到的芯片单元有8254单元.、8255单元、8259

单元、LED显示单元、数码管显示单元、单脉冲产生单元、A/D 0809转

换单元、蜂鸣器单元、时钟源。

二、实验原理与方法:

1.、8259工作原理

1、数据总线缓冲器:8259A与系统数据总线的接口,是8位双向三态

缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,

都是通过缓冲器传送的。

2、读/写控制逻辑:CPU通过它实现对8259A的读/写操作。中断请求寄存器

IRR:8位,用以分别保存8个中断请求信号,当响应的中断请求输入脚有中断请求时,该寄存器的相应位置1。

3、在试验中应用到8259的MIR7中断申请口,首先写入中断向量表中,将中断申请口接在KK1+上。通过手动按下KK1+来决定是否产生中断。

4、中断子程序中必须用STI开中断否则会影响下一个中断的响应。

2、8254的工作原理

1)8254是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端。

2)8254在此次试验中主要有两个作用。一是产生秒脉冲输入到8255的PC0口用于计时检测,此秒脉冲产生于通道0。二是中断中用于产生蜂鸣器的发生频率用于报警,此频率产生于通道1。

3、8255的工作原理

1)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,

一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和

缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存

器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。A组和B组

控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,

它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU 输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C 口上半部,B组控制电路控制B口和C口下半部。

2)8255的工作方式

方式0---基本输入输出方式;方式1---选通输入输出方式;

方式2---双向选通输入输出方式。本次试验中主要应用方式0来检测脉冲和输出数据,方式的选择是通过给8255写方式字来实现的。

3、AD转换器0809的工作原理

1)ADC0809 是8 位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图)。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。

2)当通道被所存并启动后,EOC端变为低电平,当数据转换完成后变成高电平。此时转换成的数据被所存到三态门端,使OE为高电平时才能取走转换的数据。

4、除了用到8254、8259、825

5、AD0809等芯片外,还用到的单元有LED 显示单元(用于交通灯的显示)、数码管显示单元(用于每一阶段倒计时显示)、单脉冲产生单元(用于产生中断脉冲)、蜂鸣器、1.8432kHz的时钟源、1MHz 的时钟源等。

三、硬件电路的设计与控制思路

交通灯系统的总体硬件电路设计如上图所示

各芯片端口地址:

8254 A口06C0H,B口06C2H,C口06C4H,控制口06C6H 8255 A口0600H,B口0602H,C口0604H,控制口0606H

1)交通灯显示单元

交通灯的显示是通过8255的PB口的输出来控制的,各位的分配情况如

图所示

PB 口每在一个时间阶段输出一种状态控制灯的状态,由于PB 口的锁存作用灯的状态将持续到PB 口再次输出另一个状态。所存的状态由AA0数组中的数决定的,每个状态每组交通灯只亮一个灯,且两组的交通灯所亮灯的颜色不同。每个时间段的时间长短是由AA 0数组中定义的数的大小来决定的。PC0用于检测1Hz 的脉冲,每来一个脉冲记一次数,直到记的脉冲数目与本阶段所定义的数相同时,转换成下一状态并重新计数。这样周期的循环使两组交通灯有序的工作。

2) 数码显示单元

秒脉冲产生单元

秒脉冲是1.8432KHz的时钟源经8254通道0分频后得到的,8254通道0 的初始值是二进制的4800H。

数码显示单元是通过PA口和PC口的高四位来控制的,PA口控制的是数码管的段选,PC口的高四位控制的是数码管的位选,采用动态扫描的方式来使两位数码管显示不同的计数值。此功能中采用CX做计数变量,CX的初始值是本阶段中定义的内存单元的值,每计一次脉冲CX就减一,直到减到0为止。并且数码管中要显示的值就是CX中的值,通过子函数SCREEN和DIS来把CX的值转化成要显示的数的断码(0~9的段码放在数组AA1中)并显示在数码管上。

3)手动报警单元

报警单元是模拟旋钮通过A/D转换成数字信号,作为8254通道1的输出频率,计数初值=时钟频率/转换的数字频率,数字频率加到蜂鸣器上从而产生单一的音调。启动报警单元时只需用手按动KK1+产生中断即可调用中断子程序产生报警,报警声的音调可通过调节模拟旋钮来控制。调用中断子程序时程序并不会退出中断,只是不断检测KK2+的状态,只有KK2+按下时才推出中断,这样既能有效的控制中断的调用也能有效的防止重复产生中断导致混乱。设计此功能时用到8254的通道1,注意到GATE1需要接高电平,而GATE0是不用手动接上的,否则8254通道1不会工作,这要求对试验箱原理的熟悉了解。

判断A/D 0809的通道0数据是否转换完,是通过软件延时后直接提取采样后的值的。此外,也可用查询法查询EOC的电平变化来判断是否转换完成,然后提取数据段的数据。也可用中断发通过EOC的电平变化

相关文档
最新文档