O 引言
一个高效的单片机智能控制系统,不仅要求系统能够同时执行多个任务,对每个任务作出实时响应,而且要求系统能够及时响应随机发生的外部事件,并对其作出快速处理。对于这样的系统应用,采用实时操作系统RTOS(Real-time-Operating System)作为系统软件设计平台是一个良好的选择,它可以灵活地安排系统资源,简化复杂的软件设计,加快软件的开发效率,大大缩短了项目的开发周期。道路交通灯是最常见的一种多任务控制系统,本文以此为倒,详细阐述了51嵌入式实时操作系统RTX51开发软件的方法和步骤。
1 系统硬件电路设计
交通信号灯控制系统主要实现以下三个功能:
(1)信号灯指示,即完成十字路口红、黄、绿交通信号灯的控制。
(2)时间显示,各个信号灯持续的时间显示。
(3)紧急情况响应,当系统出现故障或者有紧急情况是能够及时响应。
根据以上功能要求,完整的交通灯控制系统硬件电路如图l所示,主要由三部分模块组成:单片机最小系统模块、红绿色显示模块、倒计时显示模块、紧急中断模块。
(1)单片机最小系统:包括时钟电路和开关复位电路。单片机选用具有成本低廉且具有串口ISP下载功能的STC89C52单片机,晶振选用12 MHz。
(2)信号灯指示电路:东西南北四个方向分别有红、绿、黄三个状态指示的灯,其中南北方向的红绿黄发光二极管分别连接到P1.O~P1.2,东西方向的红绿黄发光二极管分别连接到P1.3~P1.5。
(3)倒计时显示:每个交通灯状态倒计时时间由两位共阳数码管显示,八位段码分别连接到P0.0~P2.7,两位位选通过反向器分别连接到P3.4、P3.5。
(4)紧急中断:开关K1为紧急中断开关,当有特殊情况时按下K1,K1连接到单片机P3.2外部中断O输入端。
2 基于RTX51的软件设计
近年来,利用嵌入式实时操作系统来开发嵌入式系统的软件已是大势所趋。这是因为传统的这类设计中,大多采用了中断结合单任务的顺序机制进行,这种设计方法虽然比较直观,但是也带来了诸如稳定性差、不便于调试等问题。尤其是当系统比较复杂、实时性要求比较高时,这种单任务机制的缺陷更为明显。利用嵌入式实时操作系统,程序开发者可以将复杂的系统分成多个相对独立的任务,从而分而治之,降低了系统的复杂性;通过对不同的任务赋以不同的优先级,从而能够保证系统的实时性;同时,由于软件系统有多个任务组成,所以其模块化程度好。提高了系统的可维护性。因此,这里利用实时操作系统RTX51来进行软件系统的设计。
2.1 RTX51实时操作系统介绍
RTX51是美国Keil公司开发的一种运行于8051单片机环境中的实时多任务操作系统(RTOS),其常用于处理复杂的多任务控制系统。8051单片机支持典型的RTX-51Tiny和RTX-51 Full实时多任务操作系统。在Keil μVison3集成开发环境中提供了RTX-51实时操作系统的编译和仿真调试支持。
在多任务嵌入式系统中,合理的任务调度必不可少。单纯通过提高处理器速度无法达到目的,这样就要求嵌入式系统的软件必须具有多任务调度能力。在微控制器应用系统中通常可以分解为多个相互独立的功能模块,在RTX51嵌入式实时操作系统中将这些模块划分为任务,引入多任务机制管理。依据系统功能优先级分配不同的任务,多个任务分别在各自的时间片内访问CPU,从而产生了微观上轮流运行、宏观上并行运行的多任务效果,保证了对外界的信息足够快的速度进行响应处理,又能并行运行多个任务,因此能很好完成对多个信息的实时测量、处理并进行响应的多个实时控制。
2.2 任务分配
在本系统中,依据交通灯控制系统功能的分析,将整个软件系统分解为以下三个任务,系统初始化、红绿黄灯显示、倒计时显示。具体情况如下:
任务0:用于系统初始化,开外部中断0;启动任务1和任务2。
任务1:红绿黄信号指示灯控制,实现红绿黄灯的五种状态控制。状态0:东西方向红灯亮,同时南北方向绿灯亮,亮的时间为30 S;状态1:东西方向红灯亮,南北方向黄灯闪烁,时间为3 S;状态2:东西方向绿灯亮,同时南北方向红灯亮,时间为30 S;状态3:东西方向黄灯闪烁,南北方向红灯亮,时间为3 S;状态4:当紧急开关按下时,响应紧急状况或者故障状态,东西南北四个方向红灯均亮,时间为10S。
任务2:各个状态指示灯倒计时显示。两个数码管采用动态扫描显示,实时显示当前交通指示灯状态的倒计时时间。
2.3 程序设计
依据任务分配,将三个任务分别规划为_task_0,_task_1,_task_2,由于完整的程序较大,这里不便给出,只给出部分代码,如下所示。
3 结束语
本文以道路交通灯控制系统为例,详细介绍了RTX51实时操作系统在单片机程序设计中的应用。系统实际运行结果表明,RTX51实时操作系统既能保证对外界的信息以足够快的速度进行处理,又能并行运行多个任务,具有实时性和并行性的特点,因此能很好地完成对多个信息的实时测量、处理和进行相应的多个实时控制。此外,使用RTX51实时操作系统,降低了软件编写的复杂度,提高了产品的开发效率,方便了系统的维护和功能扩展。