EDN China > 设计实例 > 消费电子设计 > 家居智能控制系统 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于μC/OS-II的智能窗系统设计

2012年01月04日 ?? 收藏1
本文讨论了一种基于实时操作系统μC/OS-II的智能窗设计方法。

1、系统功能

本系统功能如下:手动按钮开关窗户;红外遥控窗户的开关;雨天能够自动把窗户关闭;检测到可燃气体自动把窗户打开;遇有盗情,会发出刺耳的报警声,把窗户关闭,并发送一条短消息给住户。

2、硬件设计

CPU的选择是嵌入式系统开发的关键所在。本系统的CPU采用了ATMEL公司生产的AT89S51单片机。主要基于以下几点考虑;相比其他CPU价格便宜;经过扩展后可以移植操作系统μC/OS-II;51单片机在国内研究的较早,技术成熟。系统还包括电源、存储、按键、煤气、湿度、盗情、电机等基本模块。

3、软件设计

3.1 μC/OS-II简介

μC/OS-II是一个可移植(portable)、可固化的(rom-able)和占先式的(preemptive)实时内核,最多可以管理64个任务。μC/OS-II的源代码公开,绝大部分代码使用标准的ANSIC书写,所以可以方便地移植到很多不同种类的处理器或控制器上。μC/OS-II中的任务包括休眠态、就绪态、运行态、挂起态和被中断态5种状态。

3.2软件方案

3.2.1 设计思路简介

本设计的软件和以往设计的前后系统不同,采用了多任务机制来设计应用程序。CPU对大多数事件的处理都是放在任务中完成,而各个任务都是由对应的信号量激活的。信号量可以由任务或外中断INT0来发送。

3.2.2系统任务和资源分配

μC/OS-II是一个实时多任务操作系统,所以把系统软件分割成多个任务,每个任务负责完成部分工作,系统功能由多个任务协作完成。任务分配方案的好坏将直接影响软件的编写的效率和性能。

3.2.3 主要任务描述

首先建立一个主函数(main函数),在主函数中调用OSInit()函数初始化μC/OS-II,然后建立第一个任务(起始任务),最后调用OSStart()函数启动多任务。当然,在建立主函数之前必须定义各个任务的堆栈,系统的全局变量和相关宏。主函数的程序清单如下:

主函数的程序清单

起始任务(StartTask) 是系统建立的第一个任务,他主要有3个功能:完成对定时器、外中断0和串行口的初始化;建立系统所要用到的信号量;建立系统的其他任务。

起始任务部分程序清单如下:

起始任务部分程序

电机开窗任务(openwintask) 在电机开窗任务中首先等待信号量sem_open.该信号量是由煤气处理任务、红外遥控处理任务和手动开窗任务发送的。如果其他任务发送了该信号量,程序就设置电机转动方向,并控制p3.4送出电机转动脉冲,直到窗户被打开。

电机关窗任务(closewintask) 该任务必须在信号量sem open有效时才会被激活。信号量sere_open有下雨处理任务、红外遥控处理任务和手动关窗任务发送。

短信任务则要得到盗情处理任务发出的信号量sam_dq时被激活。系统采用门磁传感器作为人室盗窃报警信号发生器。当窗户被打开时,门磁的开关状态发生变化,信号被发送到微处理器。微处理器检测到信号输入、控制GPRS模块发送中文报警信息给户主手机,户主可根据短信及时报警,避免造成更大的损失。

4 小 结

完成了基于32位ARM微处理器LM3S615和嵌入式实时操作系统μc/os—II的嵌入式智能窗的设计开发,并为嵌入式系统开发提供了一种解决方案。μc/os—II作为一个优秀的RTOS已经被成功移植到多种体系结构的微处理器上。将其移植到ARM平台上能够更深刻地理解RTOS的构造,加快应用和开发。把μC/OS—II引入到智能窗控制系统的软件设计中,使软件的开发更具层次性,开发效率更高,系统的稳定性、可靠性、实时性更强,也更容易扩展。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

AT89S51? 嵌入式? RTOS?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈