液晶屏显示模块设计.docx
- 文档编号:2448660
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:13
- 大小:159.54KB
液晶屏显示模块设计.docx
《液晶屏显示模块设计.docx》由会员分享,可在线阅读,更多相关《液晶屏显示模块设计.docx(13页珍藏版)》请在冰点文库上搜索。
液晶屏显示模块设计
LCD显示模块设计
一、显示模块功能分析
由于整个控制系统采用的是以DSP为核心的嵌入式系统结构,采用普通的显示器将带来巨大的系统开销。
因此,我们选用LCD显示模块作为本系统的显示部件.它需要能够实现以下显示功能:
1、显示系统的输出结果
(1)显示磁浮间距数据(包括上径向X和Y、下径向X和Y、Z轴共五个);
(2)以进度条的方式显示磁浮间距数据,使结果更直观;
(3)显示北向角度数据;
(4)以指针的方式显示北向角度.
2、显示控制参数设置界面
(1)显示控制器参数输入框(五行,四列,共20个);
(2)支持输入数据的合理显示;
(3)显示一些功能按钮(如退出等);
(4)支持输入框和按钮的选中和按下状态。
二、显示模块硬件设计
1、显示模块的选择
为了能充分显示上一节所提到的功能,我们选择320x240的双色点阵型LCD作为显示模块。
该模块自带显示驱动电路,只要通过DSP向其写入相应的命令和显示数据即可完成显示功能.
2、LCD接口电路设计
所选用的LCD是5v的逻辑电平接口,为了提高系统的可靠性和稳定性我们采用专门的电平转换芯片SN74ALVC164245。
它是TI公司的一款16位的双向电平转化芯片。
如果访问只是单向的,采用驱动门电路也可实现电平的转化.
由于DSP的运算速度很高,直接使用存储器读写的方式访问LCD模块,存在时序不匹配的问题.为了使访问时序更容易控制,我们采用GPIOA模拟读写时序对LCD模块进行控制。
综合以上两点可以设计LCD接口电路如图2—1所示.
图2-1LCD模块接口电路原理图
该电路有一点需特别注意,就是LCD的芯片电源和背光电源要做好隔离。
由于背光最后要转化成很高的电压,经常会反馈回较大的电压脉冲,这会对DSP及其电源芯片造成极具破坏性的影响.
三、显示模块的软件驱动设计
1、读写LCD模块的时序匹配
LCD模块的读写时序如图3-1所示,其中最关键的时间是T2和T5,必须在给出WR的一个上升沿之后,保持地址T2(10ns),保持数据T5(120ns)。
其它时序在保证顺序的前提下都容易满足.
图3-1LCD模块读写时序图
2、LCD显示设置
时序正确之后,就可以对LCD的显存进行操作了.屏幕上所有图形的像素点直接反映到显存的某一位,因此所有图形的显示都是通过对显存的写操作来完成的.
我们所选用的LCD模块的显示芯片是SID13305F,它是SED1335的替代芯片,与其有相同的功能。
其指令集如表3—1所示。
表3-1SED1335显示操作指令集
在LCD模块启动之后,使用之前,应至少有一次系统初始化,即调用系统控制命令‘SYSTEMSET'和‘SCROLL'来设置LCD模块的显示窗口设置和显示区域的显存地址。
根据系统功能的要求把LCD设置为单屏显示,无边界,每行显示40个字节(即满行显示)。
同时,设置第一显示区的首地址为SAD1=0x0000及其占有显示屏上的点行数SL1=240,第二显示区的首地址SAD2=0x4000及其占有显示屏上的点行数SL2=240.这些设置所对应得‘SYSTEMSET’和‘SCROLL’的参数分别为:
Lcd_SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
Lcd_SCRTAB[10]={0x00,0x00,0xf0,0x00,0x40,0xf0,0x00,0x80,
0x00,0x00};
这其中第一显示区和第二显示区的理解是一个关键点,他们共同管理同一块显示区域,在以上设置中,他们管理的是整个显示屏.使用‘OVLAY’可以设置两者合成后的现实效果,这里我们设置为或逻辑叠加方式,同时设置显示区为点阵性质。
既只要有一个区去点亮像素点,则该像素点被点亮。
设置完之后,就可以往显存(显示一区或二区)中写入数据了,关于写入数据,应注意以下几点:
(1)屏幕像素点与第一显示区的对应关系如表3-2所示,二区类似;
(2)每次只能写入一个字节数据,对应八个点的显示,如表3-2;
(3)首先写入光标位置,即接下来写入的第一个数据的地址;
(4)光标位置‘CSRW’通过设置,先写高字节地址;
(5)然后设置光标移动方向‘CSRDIR',为屏幕上的实际方向;
表3—2屏幕像素点与第一显示区地址的对应关系
点数
行数
Dot1—Dot8
Dot9-Dot16
…
Dot313—Dot320
C1
SAD1
SAD1+1
…
SAD1+39
C2
SAD1+40
SAD1+41
…
SAD1+79
…
…
…
…
…
C240
SAD1+40*239
SAD1+40*239+1
…
SAD1+40*239+39
(6)最后依次写入数据,光标会自动移动。
四、显示模块的功能实现
1、字模提取V2.2简介
通过上一节的设计,我们就可以在LCD的屏幕上自由的显示图形了。
但是,仅用手工的方法绘制图形再转化成字节数据,工作量大的难以实现。
因此我们选用字模提取软件‘字模提取V2。
2’来辅助设计。
这是一款免费的绿色软件,使用极为方便。
其操作界面如图4-1所示.
图4—1字模提取V2.2操作界面
在文字输入区输入需要的文字,按Ctrl+Enter就可以生成对应的点阵数组。
并且,文字的大小和字体都可以设置。
通过打开图像图标可以调入用其它然间绘制好的的图形。
通过取模方式获得想要的点阵数组.
本软件是专门针对LCD显示设计的,和各种LCD显示的兼容性非常好,是液晶模块现实设计的必备软件。
2、系统输出界面设计
先通过windows自带的绘图工具绘制好320x240的bmp图像,然后调入字模提取软件转好即可。
根据系统要求界面设计如图4-2所示。
图4—2系统数据输出显示界面
磁浮间距数据和其进度条显示、方向角度数据和其指针显示都是需要实时改变的显示部分。
因此,需要分别定义显示函数和对应的清除函数,以便在需要时调用。
数字和符号都可以转化为8xN的点阵格式,这要在特定的屏幕位置依次写入显示字节即可。
数字显示函数如下所示:
voidDCpro_Lcd_WNumber(BYTEx,BYTEy,BYTE(*p)[12],BYTEnum)
{
WORDtemp;
BYTEhi,lo;
BYTEc;
temp=y*Lcd_AP+x;
hi=Lcd_HiByte(temp);//hi加上0x40可以实现在第二显示区的重叠显示
lo=Lcd_LoByte(temp);
Lcd_WLcdCom(Lcd_CSRDOWN);
Lcd_WLcdCom(Lcd_CSRW);
Lcd_WLcdData(lo);
Lcd_WLcdData(hi);
Lcd_WLcdCom(Lcd_MWRITE);
for(c=0;c<12;c++)
{
Lcd_WLcdData(*(*(p+num)+c));
}
lo=lo+0x01;
if(lo==0)hi+=0x01;
}
该函数的输入参数x(0~39),y(0~239)是屏幕坐标,p为一个10x12的数组,每一行表示了一个12x8点的数字点阵,分别表示0~9.符号的现实类似。
函数中加黑部分即是显示一个图形的典型步骤,曾在上一节LCD显示设置中进行过详细描述。
进度条和指针的显示比较具有技巧性,因为它每一水平像素点都有可能显示,而通常LCD都是只能在八的整数倍的位置才能写入显示数据。
对于进度条,我的办法是先显示8的整数倍长度,然后根据余数用程序生成最后一格的显示图像。
指针类似于进度条,只不过实现移动8的整数倍位置,然后根据余数用程序生成最后两个格的显示图像,因为指针用16位宽度的图像才能显示完全。
下面用进度条的显示函数加以说明。
voidDCpro_Lcd_FillBlock(BYTEx,BYTEy,BYTElen)
//功能:
显示长度为len的,高度为7的长条块
//x坐标为低8位寄存器(字节),y坐标寄存器(点行)
{
WORDtemp;
BYTEhi,lo;
BYTEa,b,c=0x80;
BYTElenb,lens;
if(len〉167)len=167;
lenb=len/8;
lens=len%8;
temp=y*Lcd_AP+x;
hi=Lcd_HiByte(temp);
lo=Lcd_LoByte(temp);
//显示8的整数倍长度
for(b=0;b〈lenb;b++)
{
Lcd_WLcdCom(Lcd_CSRDOWN);
Lcd_WLcdCom(Lcd_CSRW);
Lcd_WLcdData(lo);
Lcd_WLcdData(hi);
Lcd_WLcdCom(Lcd_MWRITE);
for(a=0;a〈7;a++)
{
Lcd_WLcdData(0xff);
}
lo=lo+0x01;
if(lo==0)hi+=0x01;
}
//显示百分比数据
DCpro_Lcd_DisData(x+10,y+9,(len*100)/167);
DCpro_Lcd_WNumber(x+11,y+9,DCpro_Number,12);
//显示余数部分程序,c为生成图像的一行值
if(lens==0)return;
for(b=1;b { c=0x80+c/2; } Lcd_WLcdCom(Lcd_CSRDOWN); Lcd_WLcdCom(Lcd_CSRW); Lcd_WLcdData(lo); Lcd_WLcdData(hi); Lcd_WLcdCom(Lcd_MWRITE); for(a=0;a<7;a++) { Lcd_WLcdData(c); } } 通过调用以上显示函数,最后可以实现如图4—3所示的显示效果。 图4—3系统数据输出显示效果图 3、控制器参数配置界面设计 根据系统功能要求,控制器参数配置界面设计如图4-4所示。 图4-4控制器参数配置界面 图4-5输入框的选中状态和输入状态 该界面的显示功能实现比较简单,主要包括主界面的显示(同上一小节)、选中虚框的显示、选中实框的显示。 显示函数通过对上一节提到的函数进行一些简化即可得到。 虚实框的显示函数为: voidDCpro_Lcd_SetChoose(BYTEx,BYTEy,BYTE(*p)[7]) { WORDtemp; BYTEhi,lo; BYTEb,c; temp=y*Lcd_AP+x; hi=Lcd_HiByte(temp)+0x40;//hi加上0x40可以实现在第二显示区的重叠显示 lo=Lcd_LoByte(temp); for(b=0;b〈7;b++) { Lcd_WLcdCom(Lcd_CSRDOWN); Lcd_WLcdCom(Lcd_CSRW); Lcd_WLcdData(lo); Lcd_WLcdData(hi); Lcd_WLcdCom(Lcd_MWRITE); for(c=0;c<17;c++) { Lcd_WLcdData(p[c][b]); } lo=lo+0x01; if(lo==0)hi+=0x01; } } 选择框大小为56x17点阵,数组大小7x17,已由字模提取软件事先生成。 五、结论 LCD模块的显示功能除与光电码盘相关的外都已实现,并且试验测试通过。 该部分程序具有很好的模块化,在DCpro_Lcd。 h外部没有任何与DSP和LCD直接相关的操作,全部通过接口函数实现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶屏 显示 模块 设计