交通灯控制实验

一)实验目的

通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用和中断的使用。

二)交通灯变化规律

十字路口交通灯的变化规律要求

1) 北路口的绿灯、东西路口的红灯同时亮10秒,然后

2) 南北路口的黄灯闪烁2次(闪烁周期2秒),同时东西路口的红灯继续亮,然后

3) 南北路口的红灯、东西路口的绿灯同时亮10秒,然后

4) 南北路口的红灯继续亮,同时东西路口的黄灯2次(闪烁周期2秒),然后

5) 转1重复。

三)实验内容

1. 带倒计时的交通灯控制:将L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连;L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连(方式0)。PA口的PA0~PA6作为输出口(方式0输出)连接7段数码管的段码,PC3、PC4连接数码管的S0,S1来选择显示的位。利用8253产生1秒的中断信号,在中断处理程序中用程序处理10秒延迟和三次黄灯闪烁的问题。编程使六个灯按交通灯变化规律燃灭,同时数码管显示倒计时的值(10~0,4~0)。

2. 带违章拍照功能的交通灯控制:将L7、L6、L5作为南北路口的交通灯与PA7、PA6、PA5相连;L2、L1、L0作为东西路口的交通灯与PA2、PA1、PA0相连。PA口工作在方式1(输出)。利用8253产生1秒的中断信号,在中断处理程序中用程序处理10秒延迟和三次黄灯闪烁的问题。利用单脉冲信号连接到PC6,作为信号输入,由8255产生中断(模拟东西方向上的汽车压黄线),该中断处理程序在东西方向为红灯的时候,令L3灯闪烁一下(周期100ms秒,利用软件延迟,用PA3控制,)。编程使六个灯按交通灯变化规律燃灭,同时处理东西方向汽车压黄线问题。

四)连线与编程提示

1) 对于8253中断,由于是1秒一次中断,所以中断处理程序需要有四个状态:S1、S2、S3、S4。S1状态是南北方向延迟10秒的正常周期状态,需要有变量来计数10次,以便延迟10秒;S2是南北方向黄灯闪烁周期,利用一个变量来计数形成4秒的闪烁(闪烁周期2秒,闪烁2次)。这两个状态东西方向都是红灯。S3状态是东西方向延迟10秒的正常周期状态,利用变量来计数10次,以便延迟10秒;S4是东西方向黄灯闪烁周期,利用一个变量来计数形成4秒的闪烁(闪烁周期2秒,闪烁2次)。这两个状态南北方向都是红灯。其状态变迁图如图18所示。在S2状态和S4状态,需要解决黄灯闪烁问题,这个可以用另一个状态标志来表示当前是黄灯亮还是黄灯灭。

413502dec91550e830ebbf946bc6bb13.png

2) 对于实验2,有两个中断请求(8253和8255),但实验台只有一个中断请求线——IRQ,需要一个简单的门电路将两个请求合并成一个中断请求(请同学们自己想办法)。另外,当中断到来,需要区分是哪一个中断,为此,可以将其中一个中断源(如8255)来的请求同时通过图19的电路,来锁存请求信号。在中断到来的时候,检查PC4的输入,如果是1,则说明是8255来的中断(此时在中断处理程序中需要利用D触发器的清零端(C端)清掉锁存的中断到来信号),否则是8253来的中断。

3f9062e34f87cbf43d3ef6f298929482.png

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐