当前位置:首页 > 便携式传感器巡检仪李梅实训论文110520打印 - 图文
在一切配置成功之后,移植Uc/COS操作系统,在Uc/COS操作系统的界面下,主要完成AppTaskAnalyze任务和AppTaskMBTx任务两个任务。如图4-6所示,在AppTaskMBTx中调用TransmitFrame()函数。
进入AppTaskMBTx任务错误标志位是否置位Y发送正确响应帧N发送错误响应帧
图4-7 发送任务子程序流程图
TransmitFrame()函数下设置为:
TxBuff[p]=(u8)((ADC_Value[t]>>8)&0xff); TxBuff[p+1]=(u8)(ADC_Value[t]&0xff);
把从外部采集并且存放在之前设置的ADC的数组中的信号传递于TxBuff[p+1],逐步向下,逐个采集。如果请求帧发送正确,则由串口发送数据,之后设置 SENDCOM=1,以表示出发送完成标志位置位。如图4-8在接受到CPU发送过来的数据信息后,首先进行数据解析,即本程序中的AppTaskMBTx任务,在该任务中调用Frame_Analyze()函数,Frame_Analyze()函数的功能是通过以下指令: CRC_CAL=CRC16(RxBuff,22);
CRC_FRAME=RxBuff[22]|(RxBuff[23]<<8);
使计算机收到数据CRC,进而判断主机发送的地址以及功能码,若分析出是发给ADC模块的数据信息后,则接受指令,从机ADC发送数据,完成整个任务。
20
进入 AppTaskAnalyze任务NCRC是否正确YNAddr=1?Y功能码=3?Y错误标志位复位错误标志位置位N
图4-8 帧解析任务子程序图
4.5 LCD显示模块的设计
4.5.1 uC_GUI概述
uC/GUI是Micrium公司研发的图像界面软件。是一种嵌入式应用中的图形支持系统. uC/GUI适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示.它的设计架构是模块化的, 由不同的模块中的不同层组成, 由一个LCD驱动层来包含所有对LCD的具体图形操作, UCGUI可以在任何的CPU上运行, 因为它是100%的标准C代码编写的. uC_GUI很适合大多数的使用黑色/白色和彩色。
硬件操作层直接对LCD操作,不同的系统需要根据LCD的控制器作相应的移植。LCD驱动层是测试驱动层程序最主要的层面,它利用硬件操作层来实现最基本的绘图函数。UCGUI系统层实现了复杂绘图层函数的封装,解决了绘图中出现的大部分问题,并给用户提供API接口。用户层利用UCGUI的上层API实现系统的图形界面。
UCGUI能够适应大多数的使用黑白或彩色LCD的应用, 它提供非常好的允许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系。UCGUI的内部模块结构图为:
21
应用程序窗口窗口管理层控制器基本图形控件消息2D图形库字体LCD驱动层LCD驱动程序
图4-9 UCGUI的内部模块结构图
4.5.2 LCD显示模块软件设计
在该实训的LCD模块的软件设计中,在MDK环境下我们首先是在裸机的状态下去完成数据的显示,首先是添加了LCD_drive file,在此文件中创建支持ILI9320的驱动IC控制程序LCD.c以及随其的配置头文件LCD.h,使用16位并行传输。在LCD.c文件中对LCD进行各种必要配置,(GPIO配置和LCD所要进行的背景颜色、汉字显示、图片显示等的写函数)。在LCD.h中主要是定义驱动IC是ILI9320并且声明与硬件相关的子函数,以及作了Lcd初始化:
void Lcd_Initialize(void);
及其低级控制函数: void Lcd_Initialize(void);
void LCD_WR_REG(u16 Index,u16 CongfigTemp);
void Lcd_WR_Start(void);
Lcd高级控制函数: void Lcd_SetCursor(u8 x,u16 y);
void Lcd_Clear(u16 Color);
的声明定义。在main.c中调用各种数字、汉字和图片的显示函数,以完成显示功能。程序流程图如下:
22
开始配置并调用RCC、GPIO、NVIC、USART调用Lcd配置和初始化函数LCD清屏GPIO读入数据Y延迟5sN调用画线、汉字、图片显示函数
图4-10裸机状态下LCD显示程序流程图
其中设置一个像素和获取一个像素的颜色两个函数很重要,因为在下述的移植uC_GUI操作系统时, UC_GUI和编写好的TFT驱动关联起来时需要这两个函数为前提。void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color) { ……};
unsigned short LCD_GetPixel(unsigned short x, unsigned short y) {…… };
然后进行测试。在显示成功后,则将μC/OS-II和uC_GUI嵌入式操作系统移植于TFT底层驱动程序。
4.5.2 uC_GUI的移植步骤:
第一步:首先,上述的TFT底层驱动写好,既在裸机下,可以正常显示。 第二步:加入uC_GUI程序包。
23
共分享92篇相关文档