《汇编语言与接口技术》课程实习 |
题目: 模拟交通灯 |
该项目是基于AT89C51芯片设计的交通灯控制系统,主要应用于十字路口。模拟交通信号灯控制:一般情况下正常显示,东西-南北交替放行,各方向通行时间为30秒。有救护车或警车到达时,两个方向交通信号灯全为红色,以便让急救车或警车通过,设通行时间为10秒,之后交通恢复正常。
定时器/计数器、数码管、单刀双掷开关、交通信号灯
本项目主要分为信号灯显示、信号灯时间显示、紧急情况修改信号灯显示等模块 1) 信号灯显示模块:一般情况下东西-南北交替放行,各方向通行时间为30秒(各方向绿灯持续27秒,黄灯出现持续3秒),在遇到警车或救护车执行紧急任务时,各方向都变为红灯,持续10秒。 2) 信号灯时间显示:两个数码管显示红绿灯所剩余的持续时间。 3) 信号灯紧急情况模块:当有警车或救护车等执行紧急任务时,按下单刀双掷开关,使得各个方向的信号灯全部变红,同时数码管开始10秒的倒计时供执行紧急任务的车辆通过。
本项目软件设计部分可以分为三个模块:信号灯显示模块、信号灯时间显示模块和信号灯紧急情况模块。 1. 信号灯显示模块: ![]() 实现逻辑:当没有紧急情况发生时(没有触发外部中断),交通灯的信号首先是南北方向显示绿灯,东西显示红灯,经过27秒以后,南北方向由绿灯转变为黄灯,持续3秒,3秒后东西方向由红灯转变为绿灯,南北方向由黄灯变为红灯。再经过27秒后,东西方向由绿灯转变为黄灯,持续3秒,3秒后东西方向由红灯转变为绿灯,南北方向由黄灯变为绿灯。 2.数码管显示模块流程图: ![]() 实现逻辑:首先初始化相关变量和端口,然后加载要显示的数值。接着通过除法操作将数值分解为十位和个位,并根据结果从预设的查找表中获取对应的编码地址。通过间接寻址获取编码并发送到相应的端口以控制数码管显示。完成十位和个位的显示后返回调用。 3.信号灯紧急情况模块流程图: |