完整代码、实验报告
交通灯控制实验
实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口和计数器8253的使用。
实验内容
1.要求一:
(1)南北与东西方向,每个方向由红黄绿三个灯控制
(2)南北向: 红(30秒),黄(5秒),绿(25秒)
东西向: 红(30秒),黄(5秒),绿(25秒)
采用8253定时,上述基本参数可以根据实际情况自行调整,灯的变化规律与实际路口规律相同,绿灯在最后5秒钟时,黄灯亮,然后红灯亮,不允许两个方向同时亮绿灯。
黄灯的时间在数码管上进行显示。
2.要求二:
(1)设计一个紧急控制开关信号,当紧急开关信号为1时,两个方向的灯全为红灯。紧急开关撤消后,按照开关按下之前的状态继续运行(其参数要保存)。
(2)设计一个夜间行车开关,当开关按下后,两个方向都只有黄灯闪烁,其它灯熄灭。
### 交通灯控制实验知识点详解
#### 实验背景与目的
本实验是计算机组成原理课程中的一个重要实践项目,旨在通过并行接口8255和计数器8253来实现交通灯的控制,从而加深学生对于这些硬件组件的理解与运用能力。实验的核心目标在于利用8255和8253这两款经典的接口芯片,模拟出真实的交通灯控制系统,进而掌握并行口和计数器的基本操作方法。
#### 实验内容详解
##### 要求一
**实验目标**:实现南北与东西方向上的交通灯控制,确保交通灯的变化规律符合实际情况。
- **南北向**:红灯30秒 → 黄灯5秒 → 绿灯25秒
- **东西向**:红灯30秒 → 黄灯5秒 → 绿灯25秒
其中,绿灯的最后5秒会切换成黄灯,之后再变为红灯,以此循环。为了避免冲突,同一时间内只允许一个方向的绿灯亮起。
**实现方法**:
1. **8253计数器**:通过8253的定时功能来实现精确的时间控制。具体来说,可以设置两个计数器,一个用来产生1Hz的信号作为时钟源,另一个则根据所需的时间间隔来控制交通灯的切换。
- **计数器0**:工作在方式3(方波发生器),初值设定为1000,产生1Hz的时钟信号。
- **计数器1**:工作在方式0(可自动重新加载的一次性定时器),初值同样设定为1000,用于产生1秒的定时信号。
2. **8255并行接口**:8255被配置为A口输出,C口输入。通过控制A口输出的状态来驱动交通灯,而C口的输入则用来接收外部开关的信号,例如紧急开关和夜间模式开关等。
##### 要求二
**实验目标**:增加紧急控制开关和夜间行车开关的功能。
- **紧急控制开关**:当紧急开关信号为1时,所有方向的交通灯均变为红灯。紧急开关撤销后,系统应恢复到之前的运行状态。
- **实现方法**:通过8255的C口检测紧急开关的状态,一旦检测到紧急信号,则立即将所有交通灯设置为红灯,并保存当前状态。待紧急信号消失后,根据保存的状态恢复交通灯的运行。
- **夜间行车开关**:开启后,所有方向仅黄灯闪烁,其他灯熄灭。
- **实现方法**:同样是利用8255的C口检测夜间行车开关的状态。如果开关被激活,则让所有方向的黄灯以一定的频率进行闪烁,其余灯熄灭。当开关关闭后,系统恢复正常运行状态。
#### 实验原理与硬件配置
1. **8255并行接口芯片**:该芯片具有3个8位的并行端口(A、B、C),可以设置不同的工作模式。在本实验中,A口用于输出交通灯的状态,C口的一部分引脚用于接收外部开关信号。
2. **8253计数器芯片**:这款芯片主要用于定时和计数。在实验中,通过两个计数器的组合使用,能够产生精确的定时信号,从而控制交通灯的变化周期。
3. **其他辅助器件**:包括用于显示黄灯剩余时间的数码管、紧急模式触发的单脉冲中断、以及用于锁存数据的74LS273芯片等。
#### 实验程序设计
程序主要包括以下几个部分:
1. **主程序**:负责初始化各个芯片,并根据用户输入或其他条件调用相应的子程序。
2. **输入检测子程序**:监测键盘输入,根据用户的指令调整交通灯的运行状态或执行特定功能。
3. **延时子程序**:实现精确的1秒延时,通常基于8253计数器的工作。
4. **紧急模式子程序**:处理紧急模式下的逻辑,如保存当前状态、显示红灯等。
5. **夜间模式子程序**:实现夜间模式下的特殊灯光显示逻辑。
以上就是关于“交通灯控制实验”的详细介绍,通过对这一实验的学习和实践,不仅可以帮助学生理解并行接口和计数器的工作原理,还能培养其实现复杂控制系统的技能。