对于多功能的智能仪表,采用点阵式LCD液晶显示模块,可提供更为丰富灵活的显示内容。点阵式LCD显示模块是一种集显示、控制与驱动与一体的显示器件。为了简化电路,充分发挥ARM的性能,采用了320×240的16级灰度LCD。
系统总体方案设计
本系统要求软件完成的功能有以下几个方面。
● 实时数据采集功能。系统要求能够实时采集外部电压的实时数据。
● 采样数据处理功能。在系统对实时数据采集完成后,要对数据进行实时处理。实时处理主要是将外部电压进行高速A/D转换,然后动态显示。系统还可利用按键对超过报警设定值进行动态修改。
● LED显示和RTC功能。本实验充分利用了LED显示和实时时钟功能。
● 报警处理功能。将实时数据与人机对话设定电压测量最大值进行比较,之后做出报警动作。
● 显示最大值功能。将实时数据中的最大值给予保存和显示。
● 利用EEPROM读写数据功能。系统可以在上电时读取110位上次运行的实时数据,并作为这次的历史数据。系统还可以按键来存储当前的110位实时数据。
● 串口发送数据功能。系统可通过按键,通过串口将100位实时数据发送到上位机显示。
为了实现系统的模块清晰,本系统采用了μC/OS-II操作系统。按照上述要求,本系统将软件划分为4个功能模块:A/D采集模块、LED显示和按键处理模块、LCD显示模块、报警、存储及串口处理模块。采样模块完成对实时数据的采样并保存;LED显示按键处理模块主要功能是对采样数据的处理,并把它们转换成有实际意义的参数;LCD显示模块是将各种参数在LCD显示出来;报警、存储及串口处理模块主要是实时对实时数据进行相应的处理。图1即为总体系统设计整体结构图。
图1 系统总体框图
系统硬件组成及功能
1 LCD显示部分
液晶显示器(LCD) 具有功耗低、体积小、重量轻、厚度薄等许多其他显示器无法比拟的优点,普遍应用于基于微处理器的仪器仪表及监视、控制等智能装置的终端显示和人机接口中。STN LCD——市面上销售的单色LCD绝大多数都是这种类型。STN LCD可选择自带LCD驱动器/控制器的STN LCD模块。TFT LCD——即俗称的“真彩色”液晶。TFT LCD通常一定要选择总线型液晶显示器,或者外接ARM的LCD驱动板也可以,总之要能够连接单片机或者ARM。
2 LED显示与键盘模块
键盘显示部分是利用我们最熟悉的8位LED数码显示加8位键盘输入。图2是自制的LED显示与键盘模块的电路图。利用了飞利浦公司的SPI总线,简单实用,有五根针脚引出。
图2 LED显示与键盘模块
系统软件设计
1 设计思想
在此简易示波系统中,我们采用了LPC2138这种高性能ARM,由于ARM处理器处理速度极快,并且它内部带4路A/D转换。我们知道,ARM中的Fpclk是ARM外设的频率,常规情况下,是ARM内核工作频率的1/4,但我们可以自行修改设定Fpclk等于ARM内核的频率Fcclk,然后我们自行设定A/D转换功能不分频,并且可以设定采样的精度设为8位,这样每A/D转换一次的时间就等于ARM的内核工作频率的9倍的时间,这样每次A/D的时间就相当快了,这时我们再采用两路A/D间隔采样,这样每次A/D的时间就又缩短了一半。理论上讲,这时的每次A/D采样时间差不多为2μs。这样,此系统的对外部电压的响应速度就提高了一个档次了,所以此系统的A/D性能比较高。
2 任务的划分
根据任务的划分原则,分析得出了6个任务:延时创建采样任务、采样任务、报警任务、实时时钟显示任务、串口任务、采样数据显示任务。其中采样任务安排优先级最高优先级为4,采样数据显示任务优先级为7,串口任务优先级为8,报警任务优先级为9,实时时钟显示任务为10。为了进行初始化工作,在延时创建采样任务中增加了对目标板的初始化和任务、互斥信号量、信号量的创建工作等内容。
3 共享资源的分析
在本测试要求中,采样的数据既要实时地放到LCD液晶屏上显示,而且还可以通过串口上传到上位机上,因此要采取资源同步的方法,否则有可能破坏时间,实现资源同步的方法一般有两种:关中断;使用互斥信号量。在本测试中使用互斥信号。
4 行为同步
在本测试中要用到两个行为同步,第一个是采样的数据的显示,测试要求把当前采样的数据通过LCD液晶屏上显示出来,所以要在数据显示任务中要等待采样任务完毕的信号量,当采样完毕后,发送信号量,把当前采样的结果显示出来。第二是查询历史记录,用户要查询历史记录时,才把记录显示出来,所以在查询历史记录任务里设置等待查询信号。任务之间相互配合和协调,才能得到预定的效果,这样可以实现任务的同步。
图3 采样任务流程图
5 软件设计模块流程图
嵌入式操作系统是嵌入式系统硬件和应用软件之间的接口,它的使用可以提高软件开发效率,它的可靠性和稳定性直接影响着系统的运行性能。本软件设计采用公开源码的μC/OS-II多任务实时操作系统。μC/OS-II作为一个实时微内核,实际上是一个高效的任务调度器,调度是线程级的,调度策略是采用静态分配优先级的方式,并且采用占先式的调度原则。为了实现基本的任务调度功能, μC/OS-II提供了必备的任务间通信手段,包括信号量、邮箱等。为了实现任务延时,还具有基本的时钟管理。