《道路交通灯控制系统》由会员分享,可在线阅读,更多相关《道路交通灯控制系统(11页珍藏版)》请在金锄头文库上搜索。
1、第32章 道路交通灯控制系统实时多任务操作系统(RTOS)常用于处理复杂的多任务控制系统。8051单片机支持典型的RTX-51实时多任务操作系统。通过RTX-51的任务管理工具,可以使单个51系统微处理器可以管理多个任务或者进程。目前,51系列单片机最常用的是RTX-51 Tiny实时多任务操作系统。本章通过一个道路交通灯控制系统,来讲解RTX-51 Tiny实时多任务操作系统的设计。32.1 交通灯控制系统概述道路交通灯也就是常说的红绿灯,这是最常见的一种控制系统,在一般的道路交叉口都可以看到。道路交通灯的控制综合了一般测控系统常用的功能,包括按键输入、时钟控制、显示以及串口通信等。下面介绍
2、道路交通灯的基本原理。32.1.1 道路交通灯概述典型的道路交通灯示意图,如图32.1所示。其中主干道为双向的交通线路,和其垂直的辅路可供行人行走。主干道上的红绿灯指挥车辆的行驶,辅路上的红绿灯指挥行人的通过与禁止。行人按钮用于行人通过马路的申请,当按下该按钮后,主干道变为红灯,禁止车辆通过,此后行人路灯变为绿灯,行人便可以通过马路。32.1.2 交通灯控制系统道路交通灯使用一般的单进程程序很难简洁有效地实现,如果采用实时多任务系统则可以很容易达到很好的效果。在一个用户定义的时间段里,交通灯受系统控制。在规定时间段之外,黄灯闪烁。如果一个行人按下了行人按钮,交通灯立即进入行人过马路状态,表示行
3、人需要穿过马路。否则,交通灯持续不断地工作。如果采用实时多任务操作系统,则道路交通灯控制系统至少应该包括如下几个任务。任务0:初始化系统,并且启动所有其他的任务;任务1:完成交通灯控制器的命令处理;任务2:控制系统时钟;任务3:如果时间在活跃的时间段之外,使黄色灯闪烁;任务4:当时间在活跃的时间段(在开始和结束时间之间)里以后,控制交通灯的交变显示;任务5:读取行人按钮是否按下,并且执行相应的处理。32.2 交通灯控制系统原理图道路交通灯控制系统原理图,如图所示。32.3 多任务交通灯控制系统程序这里在Keil Vison3集成开发环境中,使用Keil C51语言进行道路交通灯控制系统的设计。
4、其中采用了RTX-51 Tiny的实时多任务操作系统。32.3.1 建立项目首先在Keil Vison3集成开发环境中建立项目,具体操作步骤如下:32.3.2 多任务划分及程序设计使用RTX-51 Tiny实时多任务操作系统进行交通灯控制,整个系统将被分成如下几个任务。任务0:用于初始化串口,并且启动所有其他的任务;任务1:用于完成交通灯控制器的命令处理,并负责控制和处理接收到的串行命令;任务2:用于控制系统时钟;任务3:如果时间在活跃的时间段之外,黄色灯闪烁;任务4:当时间落在活跃的时间段(在开始和结束时间之间)里以后,控制交通灯的交错变化;任务5:读取行人按钮是否按下,如果按钮按下则向任务
5、4发送信号;任务6:如果在串行指令里遇到了ESC字符,则向任务1发送一个信号,并且终止显示命令。32.3.3 串行通信函数串行通信函数用于处理串行口的中断数据通信。其函数包含在文件中。这里包含基本的串行口初始化、字符输入输出以及串行中断处理等。下面在介绍各个函数之前,首先给出程序需要用到的一些头文件及预定于,示例如下:(详细内容请参照本书)32.3.4 获取命令函数获取命令函数getline用来编辑从串口接收到的字符,该函数位于文件中。这里通过_getkey函数获取串行口输入的命令,然后对不同的命令进行不同的处理。程序规定了如下几个命令键及其代码:CNTLQ,对应的字符代码为0x11;CNTLS,对应的字符代码为0x13;DEL,对应的字符代码为0x7F;BACKSPACE,对应的字符代码为0x08;CR,对应的字符代码为0x0D;LF,对应的字符代码为0x0A。32.4 小结本章详细讲述了道路交通灯的运行原理,以及如何使用RTX-51 Tiny程序来实现道路交通灯的控制模拟。本章给出了详细的电路图,以及RTX-51 Tiny的多任务程序。通过本章的学习,可以掌握实时多任务操作系统的设计,尤其是基于8051单片机的RTX-51 Tiny的程序设计。