基于RTX51TINY实时操作系统的应用

来源 :企业技术开发·下旬刊 | 被引量 : 0次 | 上传用户:dhxdhxdhxdhx
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:为解决在单片机中处理实时多任务,通过在C8051F020单片机使用RTX51TINY OS操作系统,使系统能稳定运行无线模块,液晶点阵显示、数码管显示、温度芯片、时间芯片等实时任务,防止系统跑死和混乱现象的出现。
  关键词:实时;多任务;RTX51TINY
  中图分类号:TP315 文献标识码:A 文章编号:1006-8937(2013)06-0022-02
  1 RTX51的简介
  RTX51是KEIL公司开发的用于8051系列单片机的多任务实时操作系统。它有两个版本,RTX51 FULL和RTX51 Tiny。RTX51 Tiny是RTX51 FULL的子集,仅支持按时间片循环任务调度,支持任务间信号传递,最大16个任务,可以并行地利用中断。具有以下等待操作:超时、另一个任务或中断的信号。但它不能进行信息处理,不支持存储区的分配和释放,不支持占先式调度。RTX51 Tiny一个很小的内核,完全集成在 KEIL C51编译器中。更重要的是,它仅占用800字节左右的程序存储空间,可以在没有外放数据存储器的8051系统中运行,但应用程序仍然可以访问外部存储器。
  2 系统简述
  本系统是一个实时信息发布系统,需要显示各点的实时信息,同时也需要显示年月日和时分秒等信息。框图如图1所示,本设计包含多个从机部分,每部分都由AT89C2051单片机、JTT-433-UDI嵌入式微功率无线数传模块和HC-SR501人体红外感应模块组成。人体传感器HC-SR501检测当前空间内是否有人,如果有人则通过JTT-433-UDI嵌入式微功率无线数传模块发送数据给主机模块。主机模块主要由温度时钟部分、无线接收部分、数码管显示部分、点阵显示部分、LED灯指示部分、太阳能电池板、蓄电池、控制器8部分组成。
  3 多任务模式的实现
  整个程序中,采用多任务模式,但是在采用多任务模式中,程序调度多任务时数码管总会出现闪烁,虽然单片机运行频率很高,但是每一个任务中运算量都很大的,在调度任务时系统会自动的分配几个毫秒用来任务的切换,由于数码管扫描时采用动态扫描方式,每扫描一个数码管大概时间就是一毫秒的,再加上扫描时的延时,大概整个扫描过程就是20多毫秒,这个时间超过了系统分配的时间片,在系统配置文件中我们改变它的中端时间。
  由于扫描数码管是由单片机的I/O引脚来控制数码管位选扫描,在由I/O送出数据到数码管上显示,扫描液晶点阵的时候使用的是4线16译码芯片74H154扫描,两个的扫描方式不一样,这样使得在程序中无论如何修改程序都会使得整个扫描时间不能缩短,从而占用其他程序运行的大量时间,使用数码显示出现闪烁,我们通过将两种扫描方式合为一种扫描方式,都改为液晶点阵的自动扫描译码,这样就节约一半的时间,任务运行起来也稳定。
  3.1 创建多任务
  程序如下:
  void job0(void) _task_ 0 //rtx初始化任务
  {
  Systeminit(); //系统初始化
  ……
  os_create_task(1);
  os_create_task(2);
  os_create_task(3);
  os_delete_task(0); //删除
  }
  RTX51 Tiny程序不需要mian函数,取而代之,在初始化任务中,对系统初始化,时间芯片,无线模块,设置时间初始化。RTX51 Tiny从第0个任务开始执行,任务执行完后删除任务0。
  3.2 模块任务的创建
  3.2.1 任务1的创建
  程序如下:
  void job1(void) _task_ 1 //获取时间
  {
  while(1)
  {
  DS1302_GetTime(&CurrentTime);
  ……
  os_wait(K_TMO,2,0); //挂起
  }
  }
  RTX51 Tiny的任务1就是时间芯片DS1302读取时间,显示时间,扫描数码管,显示温度,RTX51 Tiny的时间片分配的时间不足以使得整个任务运行,在任务中加上挂起超时函数,单任务超时时,任务自动被挂起。
  3.2.2 任务2的创建
  由于液晶点阵中由于是采用4线16自动译码,它的扫描方式是自动扫描的,如果使用串口的方式来写入数据,但是我们在使用无线模块时已经占用串口URAT0,在使用串口的话,容易使得无线模块在接受数据时,是系统跑死,于是就采用向单片机内部写数据,编写一个写入内部数据的函数和内部数据清零的函数,液晶点阵的扫描方式是一行行的扫描。
  任务2就是在我们按键调整时间的时候,但被选中的数码管模块闪烁的问题,采用的是延时闪烁,当选中调整的模块式,给它送低电平(数码管采用的是共阴极),计时延时自减,减为零时,再送高电平,这样来实现闪烁,实现程序如下:
  if(displaydelay<=LONGTIME)
  displaydelay--;
  if(displaydelay==0)
  {
  displaydelay=LONGTIME;
  display=~display;
  }
  3.2.3 任务3的创建
  任务3包含两个程序,键盘扫描程序和无线模块接受程序,键盘扫描采用独立键盘扫描方式,共有三个按键,一个功能键,一个加键和一个减键,功能键是选择选中哪一个数码管模块,使用加减按键来实现时间,星期,校历周数的加减,设置好后数据写入DS1302内部的RAM,键盘采用延时,当我按下键盘时,如果超过5 s没有按键,将会自动退出键盘扫描功能。
  在无线模块中,使用串口UART0,在无线接收的过程中主要就是对于串口的配置问题,在使用单片机中的晶振是22.1184 MHz,使用外部晶振,使用串口计算波特率的时候,由于我们采用方式3,9位自动重装,在计算串口的波特率时,当系统初始化时使用的波特率是9600进行通信,用来启动无线模块的初始值,接下连使用1 200 bit/s进行接收数据,实现程序如下:
  void job4 (void) _task_ 3
  {
  while(1)
  {
  keyscan();
  ES0 = 0;
  if(RI0==1)
  {
  if(!recvdata(&buf))
  {
  BUTTON_OK=0;
  delay(2000);
  }
  else
  {
  BUTTON_OK=1;
  delay(2000);
  }
  }
  }
  os_wait(K_TMO,2,0);
  }
  4 结 论
  由于使用了RTX51TINY多任务实时操作系统,设计的电路能够稳定运行,达到了预期的目的。
  参考文献:
  [1] 吴金.8051单片机实践与应用[M].北京:清华大学出版社,2002.
  [2] 张友德.单片微型机原理、应用与实验[M].北京:复旦大学出版社,2003.
  [3] 何小艇.电子系统设计[M].杭州:浙江大学出版社,2004.
  [4] 陈明计,周立功.嵌入式实时操作系统Small RTOS51原理及应用[M].北京:北京航空航天大学出版社,2004.
  [5] 徐爱钧,彭秀华.单片机高级语言C51Win-dows环境编程与应用[M].北京:电子工业出版社,2001.
  作者简介:雷霞(1977-),女,四川广元人,讲师,电子技术应用专业。
其他文献
肖前的经济环境中,就业形势严峻,要提高学生的就业率,必须加强就业指导。对中职学生职业指导可帮助其了解自己、了解专业、社会,树立正确的择业观、就业观,对推动学生就业、职业发
国家“十二五”科技规划重磅出炉,海水淡化、新能源汽车、节能环保三大产业颇具看点。
乏燃料转运是地区核与辐射安全监督站的一项重要监督工作。随着国内在建机组的陆续投入运行,乏燃料转运从量和次数上都随之增加,为了更好的遵循《放射性物品运输安全管理条例》
天然气是一种重要的清洁能源,在世界范围内有广泛的利用,具体的分析天然气的市场前景可以对天然气的开发和利用提供有效的指导。本文分析天然气的具体优势以及其在世界范围内的
本文对长输天然气管道的在线清管作业进行了简要的分析,并对其运行速度的控制提出几点建议,以期给施工人员提供一些帮助。
原有点火燃烧技术在运行中局部存在问题,采用目前工艺先进的高炉煤气点火伴烧的高炉煤气放散塔点火装置技术。所选用的设备为武汉维特拉自动化电气工程有限公司WZGLF-Ⅲ高炉煤
通过分析710队油井添加流动改进剂的现场试验,探讨流动改进剂加药效果的几个影响因素,阐述了流动改进剂的效果,确定合理的加药量和加药周期,并为流动性改进剂以后的正确使用
2011年DRAM市场将会是什么景况?以下是投资银行Barclays Capital分析师C.J.Muse收集产业界各方消息所归纳出的五项发展趋势:
介绍了用于太阳能电池片生产工艺中的新型等离子体刻蚀机及设备的工作原理、构造、简单的工艺试验结果。与现在生产线上普遍使用的老式等离子体刻蚀机相比,它大大提高了生产
文章通过对工务轨道车辆运用管理工作的调研,提出了运用管理中存在的若干问题及整改措施。