液晶屏显示模块设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
显示模块设计
一、显示模块功能分析
由于整个控制系统采用的是以为核心的嵌入式系统结构,采用普通的显示器将带来巨大的系统开销。因此,我们选用显示模块作为本系统的显示部件。它需要能够实现以下显示功能:
1、显示系统的输出结果
(1)显示磁浮间距数据(包括上径向X和Y、下径向X和Y、Z轴共五个);
(2)以进度条的方式显示磁浮间距数据,使结果更直观;
(3)显示北向角度数据;
(4)以指针的方式显示北向角度。
2、显示控制参数设置界面
(1)显示控制器参数输入框(五行,四列,共20个);
(2)支持输入数据的合理显示;
(3)显示一些功能按钮(如退出等);
(4)支持输入框和按钮的选中和按下状态。
二、显示模块硬件设计
1、显示模块的选择
为了能充分显示上一节所提到的功能,我们选择320x240的双色点阵型作为显示模块。该模块自带显示驱动电路,只要通过向其写入相应的命令和显示数据即可完成显示功能。
2、接口电路设计
所选用的是5v的逻辑电平接口,为了提高系统的可靠性和稳定性我们采用专门的电平转换芯片74164245。它是公司的一款16位的双向电平转化芯片。如果访问只是单向的,采用驱动门电路也可实现电平的转化。
由于的运算速度很高,直接使用存储器读写的方式访问模块,存在时
图3-1 模块读写时序图
2、显示设置
时序正确之后,就可以对的显存进行操作了。屏幕上所有图形的像素点直接反映到显存的某一位,因此所有图形的显示都是通过对显存的写操作来完成的。
我们所选用的模块的显示芯片是13305F,它是1335的替代芯片,与其有相同的功能。其指令集如表3-1所示。
表3-1 1335显示操作指令集
在模块启动之后,使用之前,应至少有一次系统初始化,即调用系统控制命令‘’和‘’来设置模块的显示窗口设置和显示区域的显存地址。根据系统功能的要求把设置为单屏显示,无边界,每行显示40个字节(即满行显示)。同时,设置第一显示区的首地址为1=0x0000及其占有显示屏上的点行数1=240,第二显示区的首地址2=0x4000 及其占有显示屏上的点行数2=240。这些设置所对应得‘’和‘’的参数分别为:
[8]={0x30,0x87,0x07,0x27,0x42,00,0x28,0x00};
[10]={0x00,0x00,00,0x00,0x40,00,0x00,0x80,
0x00,0x00};
这其中第一显示区和第二显示区的理解是一个关键点,他们共同管理同一块显示区域,在以上设置中,他们管理的是整个显示屏。使用‘’可以设置两者合成后的现实效果,这里我们设置为或逻辑叠加方式,同时设置显示区为点阵性质。既只要有一个区去点亮像素点,则该像素点被点亮。
设置完之后,就可以往显存(显示一区或二区)中写入数据了,关于写入数据,应注意以下几点:
(1)屏幕像素点与第一显示区的对应关系如表3-2所示,二区类似;
(2)每次只能写入一个字节数据,对应八个点的显示,如表3-2;
(3)首先写入光标位置,即接下来写入的第一个数据的地址;
(4)光标位置‘’通过设置,先写高字节地址;
(5)然后设置光标移动方向‘’,为屏幕上的实际方向;
表3-2 屏幕像素点与第一显示区地址的对应关系
(6)最后依次写入数据,光标会自动移动。
四、显示模块的功能实现
1、字模提取V2.2简介
通过上一节的设计,我们就可以在的屏幕上自由的显示图形了。但是,仅用手工的方法绘制图形再转化成字节数据,工作量大的难以实现。因此我们选用字模提取软件‘字模提取V2.2’来辅助设计。这是一款免费的绿色软件,使用极为方便。其操作界面如图4-1所示。
图4-1字模提取V2.2操作界面
在文字输入区输入需要的文字,按就可以生成对应的点阵数组。并且,文字的大小和字体都可以设置。
通过打开图像图标可以调入用其它然间绘制好的的图形。通过取模方式获得想要的点阵数组。
本软件是专门针对显示设计的,和各种显示的兼容性非常好,是液晶模块现实设计的必备软件。
2、系统输出界面设计
先通过自带的绘图工具绘制好320x240的图像,然后调入字模提取软件转好即可。根据系统要求界面设计如图4-2所示。
图4-2 系统数据输出显示界面
磁浮间距数据和其进度条显示、方向角度数据和其指针显示都是需要实时改变的显示部分。因此,需要分别定义显示函数和对应的清除函数,以便在需要时调用。
数字和符号都可以转化为8的点阵格式,这要在特定的屏幕位置依次写入显示字节即可。数字显示函数如下所示:
( (*p)[12] )
{
;
;
c;
*;
(); 加上0x40可以实现在第二显示区的重叠显示
();
();
();
();
();
();
(0<12)
{
(*(*()));
}
0x01;
(0) 0x01;
}
该函数的输入参数x(0~39),y(0~239)是屏幕坐标,p为一个10x12的数组,每一行表示了一个12x8点的数字点阵,分别表示0~9。符号的现实类似。函数中加黑部分即是显示一个图形的典型步骤,曾在上一节显示设置中进行过详细描述。
进度条和指针的显示比较具有技巧性,因为它每一水平像素点都有可能显示,而通常都是只能在八的整数倍的位置才能写入显示数据。对于进度条,我的办法是先显示8的整数倍长度,然后根据余数用程序生成最后一格的显示图像。指针类似于进度条,只不过实现移动8的整数倍位置,然后根据余数用程序生成最后两个格的显示图像,因为指针用16位宽度的图像才能显示完全。下面用进度条的显示函数加以说明。
( )
功能:显示长度为的,高度为7的长条块
坐标为低8位寄存器(字节),y坐标寄存器(点行)
{
;
;
0x80;
;
(>167) = 167;
8;
8;
*;
();
();
显示8的整数倍长度
(0<)
{
();
();
();
();
();
(0<7)
{
(0);
}
0x01;