基于μC/OS-II的显示控制系统开发

发布者:BlissfulAura最新更新时间:2009-12-28 来源: 单片机与嵌入式系统关键字:μC/OS-II  LCD  菜单显示  LM3S1960  HS240128A 手机看文章 扫描二维码
随时随地手机看文章

引 言

    随着性能的提高和价格的降低,越来越多的嵌入式应用采用了ARM处理器。在强大功能及丰富外设的支持下,嵌入式实时操作系统凭借较高的开发效率、可维护性和可靠性成为开发设计的理想选择。

    μC/OS-II是一个完整的、可移植、可裁减的占先式实时多任务内核。它是用ANSI C语言编写的,包含一小部分汇编语言代码,可以供不同架构的微处理器使用。μC/OS由美国人Jean J.Labrosse于1992年完成,1998年发展到μC/OS-II,目前的版本为μC/OS-II v2.83。2000年,μC/OS得到美国航空管理局(FAA)的认证,可以用于飞行器中。作为一个典型的嵌入式操作系统,μC/OS-II的应用非常广泛,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等等。

    本文主要讨论了μC/OS-II环境下中断按键消抖处理及LCD多级菜单显示的实现问题,并通过一款产品的实例设计阐述了中断按键的处理流程以及多级菜单显示的程序框架。

1 显示控制系统硬件设计

    本设计采用基于Cortex-M3架构的ARM处理器LM3S1960和液晶显示器HS240128A作为显示控制系统的核心,按键采用中断的方式。显示控制系统电路原理图如图1所示。

    LM3S1960是Luminary公司推出的高性价比微处理器。它具有256 KBFlash,64 KB RAM,4个32位定时器,6个运动控制PWM,3个UART,2个I2C,2个SSI以及60个用户可用I/O。LM3S1960最高运行频率为50 MHz,其所有GPIO输入可触发中断,支持IRDA的UART,非常适合嵌入式控制系统。

    HS240128A是240×128图形点阵液晶显示模块,采用T6963C作为内置控制器,内置字符发生器和32 KB显示缓冲区,具有接口简单、控制指令集功能齐全的特点。

2 中断按键消抖处理

    在按键数目较多的情况下,一般采用扫描查询的方式。本设计中按键全部采用中断的方式,主要是考虑到按键数目不多,且处理器的每一个引脚都具有中断功能,实现简单,响应速度快。

    在按键的过程中容易产生抖动,没有按键按下有时也可能会有干扰脉冲,如果不加以处理,容易引起误操作。所以,消除抖动是按键处理的必要过程。在一般的处理器中,消抖处理多采用延时判断的方法,这种方法不适合在操作系统中实现。因为在中断中加入大的时延,会大大降低系统的实时性和响应速度,所以本设计采用图2所示的处理方法。

    图2(a)为按键中断处理程序流程。为了提高中断的实时性,在中断处理过程中尽可能进行少的操作。本设计中只进行了保存键值和发送按键中断信号量的操作,大大提高了中断响应的实时性。

    图2(b)为按键处理任务流程。在完成初始化后,任务开始等待中断发过来需要判断的原始按键值的信号量()SSemPend(C)SKeyRawSem,O,&err)。其中的参数OSKeyRawSem是原始按键中断信号量。如果没有信号量发过来,那么任务会在这里被挂起。接收到后首先关闭按键中断,进行系统延时OSTimeDlyHMSM(0,0,0,JitterTime),JitterTime是延时时间。在这个延时的过程中,会进行任务的调度,本任务也会被挂起,直到延时结束,重新被加入等待任务列表。在延时结束任务重新获得CPU后,进行按键的再次判断,判断是否真的发生了按键中断。如果判断正确,则需要等待按键的松开。在判断是否松开的过程中,同样加入了系统延时判断OSTimeDly-HMSM(0,0,0,CheckTime),CheckTime是每次检测延时的时间。按键松开后,任务发送按键信号量给其他任务使用OSSemPost(OSKeySem),其中OSKeySem为经过确认的按键中断。如果判断错误,则清除键值。最后,打开按键中断,重新等待新的按键中断。

3 LCD多级菜单显示

    对于多级菜单的编写,控制关系比较复杂,特别是对于不同的界面,人机交互的内容一般都不相同。所以在操作系统实现时,一般把每一级菜单的实现都作为一个任务分别设计。这样思路清晰,不容易出现问题,而且方便删减和增加菜单项,也便于程序的维护和更新。主菜单任务循环体内程序如下:


    程序说明如下:

    ①在任务开始时判断系统模式SystemMode是否为主菜单模式SysMode_MainMenu。如果不是,那么就需要把主菜单显示任务挂起,直到从其他任务返回。

    ②等待按键信号量OSKeySem,根据用户的按键执行相应的操作,RfreshTime是菜单的刷新时间。信号量等待函数在RfreshTime时间内等待,如果等待时间到了按键还没有操作,那么它继续执行下面的程序,err变量会返回错误的数值。

    ③如果②中的err返回没有错误,说明在刷新时间内发生了按键中断,那么进入按键的操作处理程序。

    ④根据键值变量KeyNumber进行相应的操作,例如确定按键的处理、返回按键的处理等。

    ⑤假如是确定键KEY_OK按下,那么首先把系统子菜单的编号SubMenuNumber赋给SystemMode变量,并进行相应的初始化操作。

    ⑥例如是XXXX子菜单,那么在初始化完成后发送信号量OSSemPost(OSDisXXXXSem)。其中,OSDisXXXXSem是子菜单XXXX的显示信号量。

    ⑦目的是调用主菜单显示函数。之所以再次进行判断,是因为在⑥中发送信号量要进行系统调度。如果子系统任务优先级比主菜单高,主菜单就会被挂起而去执行子菜单,在子菜单执行间隙会重新调度回来进行主菜单显示,那么就造成显示错误。

    子菜单显示的任务流程和主菜单类似。在按返回键时发送启动主菜单的信号量OSSemPost(OSDisMain-MenuSem),系统就会重新返回到主菜单。

结 语

    本文对μC/OS-II操作系统下的中断按键消抖处理及LCD多级菜单显示方法进行了研究,并提出了一种简单、可靠性高、维护方便的实现方案。该方法已经应用于某产品的开发设计中,效果较好,运行稳定可靠。

关键字:μC/OS-II  LCD  菜单显示  LM3S1960  HS240128A 引用地址:基于μC/OS-II的显示控制系统开发

上一篇:WinCE和Win2000/XP设备驱动开发的区别
下一篇:基于HDMI技术的智能LED显示屏控制器设计

推荐阅读最新更新时间:2024-05-02 20:57

移动电话屏引入三维图像 打造三维LCD面板
  尽管三维(3D)视频有望在下一代电视机上流行,但是,一些日本供应商正提前筹划开发出一种把三维图像引入移动电话屏幕的途径。   Seiko Epson公司最近在日本推出了预计在两年内商用的2.57英寸彩色LCD三维显示器。这种三维LCD面板不需要采用特殊的玻璃。   要在移动手机屏幕上显示三维图像会带来特殊的挑战。最大的挑战在于无法确定用户与屏幕之间的固定观看距离。传统上,三维显示器给每只眼睛呈现稍微不同的图像。图像首先被分开,然后,在LCD面板上被显示出来。透镜的镜头被放置在LCD面板的前面,以便于来自不同角度的图像不会同时抵达一只眼睛。当LCD面板与观看者的眼睛之间建立了固定的距离时,三维图像的显示就不需要附加的设备。蜂
[手机便携]
移动电话屏引入三维图像 打造三维<font color='red'>LCD</font>面板
韩媒:三星或会向京东方、华星光电出售LCD制造设备
电视面板价进入下跌周期之际,三星显示(SDS)拖延已久的LCD退产计划终于排上了日程,据称其计划将部分产线设备出售给中国的京东方和华星光电。 据《朝鲜商务报》报道,SDC在其L7-2工厂用6G OLED (1500 x 1850mm)生产线取代了LCD电视面板产线,并拆除了L8-1工厂的部分大尺寸LCD面板设备,腾出的空间用于容纳月产3万个玻璃基板的QD-OLED电视面板生产线。 报道称,L8-1的QD-OLED面板产能相当于每年100万台55英寸和65英寸QD-OLED电视,SDC计划将这些LCD面板生产设备出售给京东方或华星光电,后两者为当前全球最大的LCD面板制造商。 此外,由于L8-1仍有闲置空间,因此,SDC将扩大QD-
[手机便携]
LCD实验学习笔记(四):系统时钟
一般CPU频率(FCLK)高于内存、网卡等设备频率(HCLK),而串口、USB、I2C等设备频率(PCLK)更低。 系统时钟:   系统时钟源为晶振,初始频率12MHz。   通过设置MPLLCON寄存器的MDIV、PDIV、SDIV(s3c2440手册上有时钟设置取值表),可设置系统时钟FCLK。    设置MDIV, 设置PDIV, 设置SDIV。   设置公式:     * S3C2410: MPLL(FCLK) = (m * Fin)/(p * 2^s)     * S3C2410: MPLL(FCLK) = (2 * m * Fin)/(p * 2^s)     * 其中: m = MDIV + 8, p = PDI
[单片机]
STM32f4---TFTLCD显示实验代码(03)
第十个要介绍的是字符显示函数LCD_ShowChar,该函数同前面OLED 模块的字符显示函数差不多,但是这里的字符显示函数多了1 个功能,就是可以以叠加方式显示,或者以非叠加方式显示。叠加方式显示多用于在显示的图片上再显示字符。非叠加方式一般用于普通的显示。 该函数实现代码如下: //在指定位置显示一个字符 //x,y:起始坐标 //num:要显示的字符: --- ~ //size:字体大小 12/16/24 //mode:叠加方式(1)还是非叠加方式(0) void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode) { u8 temp,t1,t; u
[单片机]
STM32驱动LCD的原理介绍
TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。 ▲驱动流程 01 使用FSMC驱动LCD 关于FSMC,把数据写入相应的地址,FSMC就会把地址从FSMC_A出去,写入的数据会会从FSMC_D发出去。至于片选等信号线都是自动的。读的话,直接读相应的地址,就会拿到改地址上的数据。 FSMC驱动外部SRAM时,外部SRAM的控制一般有: 地址线(如A0~A25) 数据线(如D0~D15) 写信号(WE,即WR) 读信号(OE,即RD
[单片机]
STM32驱动<font color='red'>LCD</font>的原理介绍
益丰泰再遭韩厂解除TFT-LCD面板设备供应合同
近日,韩国设备厂商DMS公司发布公告称,公司解除了与江西益丰泰光电科技有限公司(以下简称:益丰泰)曾签订的的62亿韩元规模的显示设备供应合同。 关于合同解除原因,该公司解释是因合同对方无法履行合同(设备无法采购),因而合同失效。 据多家报道称,此前韩国多家厂商收到益丰泰订单,并进行了设备制作,但合同终止日反复被延。设备搬入时程延迟导致厂家无法收到设备款。 据了解,江西益丰泰光电技术有限公司于2017年8月在井冈山经济技术开发区工商行政管理局注册,注册资本1000万元。该公司决定在井冈山经济技术开发区投资新建TFT-LCD和AMOLED面板生产项目。项目预计总投资约230亿元,新建1条准6代TFT-LCD面板生产线和1条AMOLED
[手机便携]
LCD液晶显示的51单片机简单计算器
概述 LCD液晶显示的51单片机简单计算器可实现完成了两个范围在0到255的数加、减、乘、除运算,其中减法可显示负数,除法只保留整数并由LCD液晶显示。并在实验室实验箱,实现上述功能。完成该任务需要熟悉和了解控制LCD液晶屏的显示的方法,矩阵键盘读取按键值的方法、89C51系列单片机的相关知识、C51编程和数字电子技术的相关知识。 完整代码:https://download.csdn.net/download/weixin_43786907/16524021。 方案 我使用实验室试验箱的2×8矩阵键盘作为的16个按键作为输入分别为0到9、“+”、“-”、“*”、“/”、“=”与复位,由单片机计算并通过LCD显示。 矩阵键盘
[单片机]
<font color='red'>LCD</font>液晶<font color='red'>显示</font>的51单片机简单计算器
各品牌力推LED当十一主角 LCD下岗有多远
      五一彩电圈的热销记忆似乎仍未褪去,转眼十一也已不远,记者在对连锁卖场的采访中了解到,从各品牌的产品布局来看,LED毫无疑问地会成为十一黄金周的绝对主角,LED高调的背后是否意味着LCD即将低调下岗?       台前:品牌商力捧LED       眼下已进入八月底,尽管距离十一彩电黄金大战还有一个多月,但各品牌已开始进入战略部署阶段,记者在南京国美电器采访时了解到,今年十一LED的销量占比突破实实在在的40%应该不在话下,从目前各品牌的出样布局来看,LED产品已占到所有出样产品的6成以上。老字号长虹更是率先发起了大规模的LED普及风暴,以实实在在的优惠价格来刺激LED销量。       此外,针对老百姓最
[家用电子]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved