标题 | 基于uCOS—II的空气质量检测系统设计 |
范文 | 何雅琴??张飞??仲潘 摘要:设计一种基于实时操作系统uCOS-II的空气质量检测系统,该系统能检测空气的温度、湿度和固态颗粒物浓度。介绍了uCOS-II的移植方法,并给出了系统硬件和软件实现方法。 关键词关键词:空气质量;实时操作系统;固态颗粒物 DOIDOI:10.11907/rjdk.143901 中图分类号:TP319 文献标识码:A文章编号文章编号:16727800(2015)002011902 基金项目基金项目:江苏省高校优秀中青年教师和校长境外研修计划项目(2014);2014年江苏省高等学校大学生实践创新训练计划项目(2014131140011Y) 作者简介作者简介:何雅琴(1981-),女,江苏常州人,硕士,常州机电职业技术学院信息工程系讲师,研究方向为计算机网络;张飞(1981-),男,江苏常州人,硕士,常州机电职业技术学院电气工程系讲师,研究方向为嵌入式系统;仲潘(1993-),男,江苏徐州人,常州机电职业技术学院信息工程系学生,研究方向为计算机网络技术。 1系统框架 本文设计了一种基于uCOS-II的空气质量检测系统。该系统具有以下主要功能:①能够检测空气的温度、湿度以及固态颗粒物浓度;②能通过液晶显示器显示检测结果;③检测数据可以通过RJ45接口(TCP/IP或UDP协议)传送给PC机;④相关检测参数可设置,并具备声光报警功能。系统框架如图1所示。 图1系统框架 2主要硬件设计 本设计控制器采用宏晶科技有限公司的STC90C58AD芯片。STC90C58AD具有4.2k字节RAM和32k字节ROM,完全能满足uCOS-II移植对存储容量的要求。该处理器还具有1路串行通讯口、3个定时计数器、28k字节EEPROM、8路10位高速ADC、39个I/O引脚等多种硬件资源[1],能满足系统设计要求。 本系统分别采用粉尘和温湿度传感器来检测空气的固态颗粒浓度、温度和湿度。粉尘传感器采用GP2Y1010 AU0F光学空气质量传感器,该传感器体积小,内置气流发生器,可以自行吸入空气,支持5V电源,可以检测出0.8μm以上的微小颗粒物。温湿度检测采用SHT11集成式传感器,该传感器芯片集成了一个电容性聚合体测湿敏感元件和一个用能隙材料制成的测温元件。湿度输出分辨率为14位,温度输出分辨率为12位。SHT11采用工业标准的I2C接口与CPU通讯。SHT11与CPU接口只需要连接DATA(数据)和SCK(时钟)两个引脚。GP2Y1010AU0F、SHT11的接口电路如图2所示。 图2GP2Y1010AU0F、SHT11接口电路 声光报警电路采用直流蜂鸣器、发光二极管,键盘电路采用了独立式按钮。接口电路如图3所示。 图3声光报警和键盘电路 电源模块采用三端集成稳压电源芯片LM7805,该芯片内含过流、过热和过载保护电路,安装散热片后,输出电流可以达到 1A。电路原理如图4所示。 图4电源模块电路 通信模块采用美信公司的MAX232芯片,使用正5V电源供电,采用DB9与以太网串口数据转换模块(ZNE-10T)连接。电路原理如图5所示。 图5通讯模块电路 采用128*64黑白液晶(LM3033DFW-0B-1),该液晶采用ST7920控制器。液晶模块原理如图6所示。 图6液晶模块原理 3软件设计 3.1uC/OS-II介绍 uC/OS-II是一款嵌入式实时操作系统,其核心代码用C语言编写,只有底层函数需要针对不同的CPU采用汇编语言编写,可以管理64个任务,可移植到目前大多数CPU上[2]。uC/OS-II工作时,包括休眠态、就绪态、运行态、挂起态、被中断态等5种状态[3]。 3.2uC/OS-II移植 uC/OS-II移植需注意4个环节。①函数可重入性。可重入性和编译器有关,利用KEIL编写函数时,在函数后加reentrant 关键字即可满足要求;②存储器大小。STC90C58AD具有4.2k字节RAM和32k字节ROM,完全能够满足uC/OS-II的移植要求;③时钟节拍。STC90C58AD和其它51单片机一样,具备定时计数器,可以用来产生时钟节拍;④任务堆栈。本系统功能程序对RAM的需求大,可以把任务堆栈设计在4.2k字节RAM中。 uC/OS-II移植过程主要包括在OS_CPU.H中设置堆栈增长方向、定义数据类型、3个宏的声明,在OS_CPU_C.C文件中编写6个函数(可以用C语言编写),在OS_CPU_A.S文件中编写任务切换等函数(汇编语言编写)[4]。 3.3任务设计和资源分配 uC/OS-II是一个实时多任务操作系统,所以将系统软件分割成多个任务,每个任务负责完成部分工作,系统功能由多个任务协作完成。任务分配方案将直接影响软件编写效率和性能。本系统任务分配如表1所示。 表1任务分配 任务名称[][]任务名称 通信任务[]txtask()[]报警任务[]bjtask() 检测任务[]jctask()[]键盘任务[]jptask() 显示任务[]xstask()[]时钟任务[]sztask() 为协调任务运行,系统用OSSemCreate()函数建立了semtx、semjc、semxs、sembj、semsz共5个信号量[5]。 系统开机后首先执行初始化程序对系统进行初始化,建立各个任务和信号量。然后运行以上6个任务,通信任务、检测任务、显示任务、报警任务、时钟任务运行后均处于等待信号量模式。当键盘任务扫描到有按键信号时,根据工作模式和不同按键,分别向通信任务、检测任务、时钟任务发送不同的信号量。报警任务和显示任务的信号量由检测任务发送。任务运行过程如图7所示,图中箭头代表信号量发送方向。 图7任务运行过程 3.4任务功能 与前后台系统不同,本系统功能由各个任务相互配合完成,每个任务完成系统部分功能。各任务功能如表2所示。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。