快捷搜索:  MTU2MTA1MzQzNg`  as

基于51单片机的电子存包柜的设计

Small RTOSRAM 需求小,异常得当单片机这类资本对照少的系统上。RTOS 具有多义务处置惩罚,较强的实时性,可裁减的内核,使得实时利用法度榜样的设计、扩展和掩护变得更轻易。RTOS 思惟的引入,一改传统单片机软件设计措施,使其不再是单一线程布局要领,经由过程利用法度榜样瓜分为多少自力的义务,RTOS 使得利用法度榜样的设计历程大年夜为简化。本文结合基于单片机的电子存包柜的软件设计,简要阐发了Small RTOS 的设计思惟及消息行列步队通信机制的利用。

1. Small RTOS51 的基滥觞基本理

Small RTOS51是一个很小的内核,完全集成在KEIL C51编译器中,仅占用较少的法度榜样存储空间,可以在没有外挂数据存储器的51单片机系统中运行。内核认真系统的初始化和开放、调整其它义务,根据各个义务的优先级,合理地在不合义务之间分配CPU 的光阴,内核一样平常都能供给义务调整和中断办事等功能。把一道法度榜样和一个义务对应,把义务中的每个分开的、自力履行的部分称之为线程。所有的事故驱动和光阴驱动都体现在设置响应的义务标识和线程标识。当硬件情况必然时,依据这些标识,经由过程安排系统内中断相应要领和调剂义务调整算法,采纳设置情况变量的措施,使中断退出后可以随意率性返回到多个设置进口中的某一个去履行,有效地办理了前台和后台义务线程的机动切换这一关键问题。Small RTOS 51 的用户义务具有运行态、就绪态、等待和挂起、中断办事法度榜样。任何一个时候,义务的状态便是这四种状态之一。为了节省内存,OS 不能动态的建立和删除义务,用函数OSSTART()启动多义务情况后,OS 就把所有的义务建立起来,并把它们设为就绪状态,开始运行优先级最高的义务。只有当所有的优先级高于它的义务转为等待时。就绪的义务才能进入运行状态。调整法度榜样将“义务就绪表”中的最高优先级其余义务作为下个要履行的义务。

义务调用 os_wait 函数,挂起当前义务,等待一个或几个距离(K_IVL)、超时(K_TMO)、旌旗灯号(K_SIG)事故。假如所等待的事故已经发生,继承履行当前义务;假如所等待的事故没有发生,则置响应的等待标志后,挂起该义务,转义务切换法度榜样段切换到下一义务。

Small RTOS51 经由过程履行函数init ( )来给寄存器赋初值,调用函数OSSTart ( ) 来初始化每一个义务的客栈并履行第一个义务,而选择第一个义务履行的来由是该义务的优先级别。在选择历程中就完成了义务的调整。

1.1 义务之间的通讯

义务之间的通讯采纳消息行列步队,颠末3步:创建消息行列步队OSQCreate(),向消息行列步队发消息OSQPost(),取消息OSQPend()。调用OSQPost ( )函数发送消息时,假如已经有义务在等待该消息,则急速转向等待该消息的义务,假如消息行列步队已满,则无法通报该消息,返回一个差错信息。如消息行列步队未满,同时也没有其他义务等待该消息,则入列。值得留意的是,当行列步队满时,该函数并不挂起当前义务,是以调用该函数的义务该当判断返回前提,假如消息满,则应挂起当前义务。接管消息时,假如消息行列步队空,则取消息的义务将挂起,直到该消息行列步队中有消息时才会继承履行。

2. 利用实例

2.1 硬件平台

以利用在大年夜型超市、书店的电子式存包柜为例,系统框图如下

该电子存包柜可以节制的最大年夜货物存储箱数为 32 个,分阁下各16 个箱子,上图只画出16 路节制。节制芯片采纳AT89C55 单片机,配有及不时钟模块、条码读入器、液晶显示模块、热敏打印机组成,设计为三块PCB 板。

1 主控板,进行用户的存包和取包人机交互,保存存包密码,显示用户取*程中的密码输入以及整个32 个存包箱的状态。

2 门节制板由三部分组成,第一部分箱内物品检测,包孕16 路红外线检测输入、16 路红外发射节制驱动。第二部分16 路继电器节制,开箱节制由16 个小直流电机构成16 个箱子的开门节制。第三部分箱门状态检测,检测16 个箱门的开/关。

3 存取包的条码打印、语音提示,全部系统由 4 个单片机共同事情,主控单片机治理存包用户的操作并记录其历史参数,然后向从单片机发出指令,分配空箱并打印输出存包条,给用户。

2.1 软件设计

电子存包柜主要包括按键处置惩罚、显示处置惩罚、通讯处置惩罚等模块,由中断处置惩罚条码读入和串口通讯。是以,可以把义务分为按键显示、接管数据、敕令处置惩罚、发送数据等4 个义务。

以主控单片机1 接管用户按存包输入密码、键值处置惩罚、密码显示及箱子状态显示、发送开箱敕令为例,阐明主体设计思惟。

主法度榜样进行系统初始化今后,调用函数OSStart()设置多义务情况,为每一个义务建立义务客栈,顺序建立了4 个义务,等待响应义务的唤醒。用户只需把自己想要实现的功能定义为义务,在cONfig.h 中声明义务函数名和它的优先级,并且编写好自己的代码段就可以了,完全没有了传统编程下的那种高低调用的关系,系统会自动运行代码。Small RTOS51 的移植主如果要设置设置设备摆设摆设OS_CPU.H、OS_CFG.H 和CONFIG.H 三个文件,此中OS_CFG.H 文件主要用于对操作系统的裁减和时钟等的相关设置设置设备摆设摆设。

在 CONFIG.H 文件中定义4 个义务

#ifndef …。。

…………

#endif

限于篇幅,向单片机2、3 的发送及接管单片机2 数据的法度榜样略

4.结论

采纳实时多义务操作系统使得编程效率更高、掩护及改动也更方便,以是今朝获得广泛利用,尤其是在嵌入系统中。在低真个51 单片机利用领域,使用实时多义务操作系统的思惟,采纳Small RTOS 多义务平台进行系统利用设计及改进,同样也有现实意义。

本文立异点:将Small RTOS 多义务的思惟利用在一个详细的单片机节制的电子式存包柜系统的软件设计中,先容了基于消息行列步队的义务通讯的编程措施。

您可能还会对下面的文章感兴趣: