1.设计目的
(1)掌握I/O接口电路的编程方法。
(2)掌握模拟交通信号灯控制的实现方法。
(3)掌握外部中断处理程序编程方法。
2.设计要求
(1)设计一个模拟的十字路口交通信号灯控制系统,东西、南北两方向交通信号灯的亮灭规律为:初始态是两个路口的红灯全亮;之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车;延时一段时间后,东西路口绿灯灭,黄灯开始闪烁;闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车;延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁;闪烁若干次后,再切换到东西路口方向,重复上述过程。
(2)当有急救车到达时,两个方向上均亮起红灯,以便急救车通过,10s后,交通信号灯恢复中断前的状态。
3.原理说明
东西、南北方向各采用3个LED,分别表示红灯、黄灯和绿灯。各LED的阳极通过限流电阻接到+5V的电源上,阴极接到输出I/O口上,因此若要使其点亮,则应使相应I/O口输出低电平。
程序设计要点如下。
1)延时程序的设计方法
软件延时可先编写一段延时1s的子程序,然后在主程序中反复调用,以实现不同的延时。同时,送出信号控制相应的交通信号灯和调用相应的LED显示子程序。
定时器延时可以通过单片机内部定时器T0产生中断来实现。T0可工作于方式1,每50ms产生一次中断,由中断服务程序实现规定的延时,同时,送出信号控制相应的交通信号灯和调用相应的LED显示子程序。
2)中断处理程序的设计
发生中断时两方向的红灯一起亮10s,然后返回中断前的状态。(www.xing528.com)
本实训中最主要的问题是如何保护中断前的状态,使中断程序执行完毕后能回到交通信号灯中断前的状态。要保护的寄存器,除了累加器ACC、标志寄存器PSW外,还要注意以下几点。
(1)主程序中的延时程序和中断处理程序中的延时程序不能混用。
(2)主程序中每执行一步经I/O口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行I/O口输出数据的操作,中断返回时如果没有恢复中断前I/O口锁存器的数据,则显示可能出错,不能返回中断前的状态。
例如,有如下操作:
程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOV A,SAVE指令,由于主程序中没有执行(2),故SAVE中的内容实际上是前一次放入的,而不是(0)语句中给出的0F0H,显示出错。将(1)(2)两句顺序颠倒一下则没有问题。
4.硬件电路原理图
模拟交通信号灯控制电路原理图如图7.2所示。
图7.2 模拟交通信号灯控制电路原理图
5.程序流程图
模拟交通信号灯程序流程图如图7.3所示。
图7.3 模拟交通信号灯程序流程图
(a)主程序;(b)中断子程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。