基于MCU和嵌入式操作系统的交通信号灯控制系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MCU和嵌入式操作系统的交通信号灯控制系统
摘要:交通信号灯用于道路平面交叉路口,通过对车辆、行人发出行进或停止
的指令,使人与人、车与车之间尽可能减少相互干扰,从而提高路口的通行能力,保障路口畅通和安全。

本文介绍了一种城市十字路口交通信号灯控制系统。

该系
统采用了以8051为内核的单片机芯片AT89s51作为核心控制器,以嵌入式操作
系统RTX51为软件开发平台,通过控制城市十字路口的交通信号灯来指挥交通。

该系统具有制作简单、成本低、功能实用等特点。

关键词:单片机嵌入式操作系统交通信号灯控制
0 引言
随着经济发展,汽车保有量急剧增加,城市道路日渐拥挤,交通拥塞已成为一
个城市管理的难题。

十字路口的红绿灯指挥着行人和车辆的安全通过,实现红绿
灯自动指挥是城市管理自动化的重要课题[1];围绕这一课题,多年来有众多设计
方案来实现这一功能,随着数字技术、软件编程的发展和进步,实现这一功能的
新的设计方案更是层出不穷。

就目前而言,在这一方面,比较普遍使用而又技术
先进的主要是以CPLD为核心的实现方案和以MCU为核心的实现方案[2]。

但是将
两者与嵌入式操作系统RTX51微控器软件相结合构成完整的交通信号灯控制系统
的设计方案还比较少。

本人与导师近年来一直从事这方面的研究,通过努力,我
们已将本设计方案优化、完善并应用于实际,且效果较好。

现本文将着力介绍基
于MCU和嵌入式操作系统RTX51微控器软件相结合的这一交通信号灯控制系统。

1 设计原理
一般来说,十字路口处的两条相交叉的道路是有主次之分的,其中车流量较大
的称为主干道;而车流量相对较小的称为次干道。

有主、次干道交叉口的城市道路,四个方向都设有红、绿、黄三色信号灯。

红灯亮表示禁止通行;绿灯亮表示
可以通行;在绿灯亮转变为红灯亮之前,先要求黄灯亮几秒,以便让交叉口停车
线以外的车辆停止通行,而交叉口停车线以内的车辆快速通过交叉口,并且主干
道红灯亮的时间等于次干道绿灯亮时间和黄灯亮时间之和。

同理,次干道红灯亮
时间等于主干道绿灯亮时间与黄灯亮时间之和。

完成以上系统设计方法有多种。

用MCU实现该系统设计,相对而言是最简单的,因MCU最适宜于对物理对象的
控制,通过控制器编程,很容易达到设计要求且成本较低、易于操作[3]。

2 交通信号灯控制电路的硬件设计
首先,要设计一个信号灯控制电路方案,实现对红、黄、绿三色信号灯的控制,用发光二极管模拟十字路口的红、黄、绿三色信号灯。

某城市道路十字路口交通
信号灯控制方案如表1:
表1 交通信号灯控制方案
路口街道主干道次干道
信号灯 R Y G r y G
主红支绿30s 1 0 0 0 0 1
主红支黄5s 1 0 0 0 1 0
主绿支红40s 0 0 1 1 0 0
主黄支红5s 0 1 0 1 0 0
由表1可知,主干道车辆通行时间是30s,次干道为20s,红绿灯转换之间黄灯亮
5s,控制三色灯的信号为开关信号,约定逻辑0表示灯灭,逻辑1表示灯亮。


计控制电路图如图1所示。

由图可知,这是一个非常简单的微控制器最小系统,其中的AT89S51具有高效
的8051内核,8KB FLASH EEPROM,256字节的RAM,符合本系统实际应用的要求。

其中,发光二极管实际为若干发光二极管组成的阵列,每个发光二极管只是一个
像素点,能显示红、黄、绿三种颜色,这是因为每个发光二极管封装内包含两个
发光二极管。

仅当Red亮时,灯显红色,仅当Green亮时,灯显绿色,当两者同
时点亮时,由混色原理可知,灯显黄色。

3 交通信号灯控制电路的软件设计
根据城市道路十字路口交通信号灯控制方案,结合硬件电路,可以得出十字路
口交通信号灯的状态变换关系如图2
由上图可知,信号灯的状态共有4个,每个状态停留的时间是不同的,软件要
完成的任务就是按照状态关系控制主干道和次干道红、黄、绿三色信号灯变化。

这是一个典型的按照时间原则控制系统在4个状态之间循环。

基于嵌入式操作系
统RTX51的微控制器软件很容易实现这种要求。

该软件可以实现实时和多任务控制,并可以利用操作系统函数os_wait(K_IVL,ticks)来实现精确定时,通过MCU的
I/O端口实现对信号灯的控制[4]。

根据以上分析,可以把软件要完成的功能分成
两部分:
任务0:系统初始化。

将6个信号灯全部熄灭,然后启动任务1。

任务1:按照设计方案控制信号灯状态。

当是同处于某种状态时,条用系统操作
函数os_wait(K_IVL,ticks)实现经确定时,使这一状态保留特定的时间后转到下一状态。

4种状态都完成后再回转到状态1,并无限循环下去。

使用keil V7.0软件[5],采用C51高级语言编程,用户应用程序如下:
#include<reg52.h>
#include<rtx51tny.h>
sbit main_red=p0^0
sbit main_yellow=p0^1
sbit main_green=p0^2
sbit branch_red=p0^5
sbit branch_yellow=p0^6
sbitbranch_green=p0^7
/************************************/
/任务0 系统初始化,将六个灯全部熄灭,然后启动任务1
/************************************/
Void int(void)_task0
{
main_red=1;
main_yellow=1;
main_green=1;
branch_red=1;
branch_yellow=1;
branch_green=1;
os_create_task(1);
os_delete_task(0);
************************************/
任务1 按时间原则控制信号灯
/************************************/
void ledcontrol(void)_task1
While(1)
main_red=0;
main_yellow=1;
main_green=1;
branch_red=1;
branch_yellow=1;
branch_green=0;
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250); main_red=0; main_yellow=1;
main_green=1;
branch_red=1;
branch_yellow=0;
branch_green=1;
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
main_red=1;
main_yellow=1;
main_green=0;
branch_red=0;
branch_yellow=1;
branch_green=1;
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
so_wait2(k_ivl,250);
main_red=1;
main_yellow=0;
main_green=1;
branch_red=0;
branch_yellow=1;
branch_green=1;
4 总结
本文详尽介绍了交通信号灯MCU控制系统的设计思路、硬件及软件的构成。


件电路为一个MCU最小系统,设计十分简单,而且MCU仅仅使用了很少的IO
口,留下了很多没用到的IO口资源,这保证了系统功能扩展时有足够的硬件资源。

软件部分由于采用了越来越受广大电子设计工作者青睐的实时嵌入式操作系统软件,并且使用C语言编程,使整个系统软件部分同硬件部分一样简捷。

交通信号
灯控制系统实际运行结果表明,实时操作系统能保证对外界信息进行足够迅速的
处理。

本系统的创新之处:传统的微控制器应用大多采用结构化编程思想,对单任务
控制能达到编程简单、思路清晰、开发周期短的要求。

但面对多任务、实时性要
求高、相对复杂的系统,采取传统的结构化编程方法,所编写的用户程序可能非
常复杂,这无疑给设计人员带来了较大的困难;嵌入式实时操作系既能够保证对
外界的信息以足够快的速度进行处理,又能并行地运行多个任务,具有实时性和
并行性的特点。

嵌入式实时操作系统的使用降低了软件编程的复杂程度、编写的
程序有较好的可读性和可移植性、提高了开发效率,而且系统维护和功能扩展非
常方便。

参考文献:
[1]尹宏宾,徐建闽.道路交通控制技术.广州:华南理工大学出版社.2000.
[2]刘智勇.智能交通控制理论及其应用.北京:科学出版社.2003.
[3]何立民.单片机高级教程[M].北京:北京航空航天大学出版社.2000.
[4]晨风.嵌入式实时多任务软件开发基础[M].北京:清华大学出版社.2004.
[5]彭秀华.Keil V7.0单片机高级语言编程.北京:电子工业出版社.2005.。

相关文档
最新文档