LCD彩色图形显示和英文、汉字显示实现的具体原理和方法EEVP.doc_第1页
LCD彩色图形显示和英文、汉字显示实现的具体原理和方法EEVP.doc_第2页
LCD彩色图形显示和英文、汉字显示实现的具体原理和方法EEVP.doc_第3页
LCD彩色图形显示和英文、汉字显示实现的具体原理和方法EEVP.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LCD彩色图形显示和英文、汉字显示实现的具体原理和方法摘 要:本文着重介绍了ARM7处理器S3C44B0X内置LCD控制器的使用方法,简要介绍夏普LM057QC1T01液晶显示模块以及它和S3C44B0X的接口方法。并在此基础之上,讨论了彩色英文、汉字和图形在LCD模块上的显示原理和实现方法。关键词:S3C44B0X;LCD Controller;LM057QC1T01引言S3C44B0X是面向嵌入式系统的高性价比微处理器,它采用ARM7TDMI核,工作在66MHz。为了节约项目开发周期和成本,S3C44B0X大量集成了ADC、LCD控制器等外围器件。其中,LCD控制器支持在LCD上的单色、4级、16级灰度、256色的显示,具有很强的通用性。夏普LM057QC1T01是像素格式为3203240的256色TSTN透光型液晶显示模块。本文讨论了S3C44B0X和夏普LCD接口的连接。在此基础之上着重讨论彩色图形显示和英文、汉字显示实现的具体原理和方法。LCD控制器S3C44B0X LCD控制器的作用是将缓存中的数据传送到外部的LCD驱动器,并产生必须的LCD控制信号。LCD 控制器可以编程支持不同水平和垂直点数(640480, 320240, 160160等)、不同数据线宽度、不同接口时序和刷新速率的LCD,支持4位双扫描、4位单扫描、8位单扫描模式,并支持水平/垂直卷动,以用来支持更大的屏幕显示(如12801280)。液晶显示模块LM057QC1T01LM057QC1T01是夏普公司生产的图形点阵256色STN液晶模块,它的分辨率为320240,由于它具有接口简单、工作稳定和便于操作等特点,在嵌入式系统有比较广泛的应用。S3C44B0X和LM057QC1T01的连接由于S3C44B0X和LM057QC1T01液晶显示模块都具有很强的通用性。所以它们的连接比较容易实现,但是由于LCD模块需要有液晶显示所必需的偏转电压,所以需要在控制器和LCD接口之间加装能实现电压偏转功能的电路,实现输出LCD显示所需的27V偏转电压。具体引脚连接如表1所示。LCD控制器有20个引脚,其中针对夏普LM057QC1T01液晶显示模块,引脚1317没有使用意义,在实际的连接中悬空不接。其他引脚和LCD的连接如表1所示。在LCD显示模块中,引脚6所接入的用于液晶显示所需的27V偏转电压由外部外接电路提拱。外接电路所需要的电源可以由LCD控制器提供,也可以由其它电路提供。但LCD模块显示所需的高压只能由外接电路实现。图形和字符显示显示图片在S3C44B0X中,由于CUP不支持文件管理,必须把要显示的图片包含到程序中。例如,如果要在LCD显示320240大小的图片,在实际操作中,首先应使用转换工具把图片转换成C格式的数组文件,即把每一个象素点的颜色转换成用一个字节表示,然后把整个文件保存成240320的数组形式。例如:char BMP240320= 0x00,0x00,0x01, 蓕; 然后把文件包含在项目工程中,用如下循环语句实现显示: for(i=0;i240;i+) for(j=0;j320;j+)LCD_Buffer_Colorij= BMPij;显示英文字母和字符在实际应用中,通常用一个数组保存字母和字符点阵。以168点阵为例,用168个点阵表示一个字符,例如显示字符 1 ,象素需要显示的地方用*表示,否则为空白,这样,一个字符 1 就显示出来。把这个点阵用十六进制的形式表示出来,字符1所对应的点阵是:0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x1,0x18,0x18,0x18,0x7e,0x00,0x00,0x00,0x00,在把字符送LCD缓冲区显示的时候,由于在缓冲区中是用一个字节表示一个象素,而字库中的一个位表示一个象素,即字库中一个字节对应缓冲区的八个字节,所以在送入缓冲区之前必须对字库进行必要的调整。具体方法是在显示一个象素之前,先把这个位右移到字节的最低位,然后屏蔽除此象素点的其它七位,再乘这个象素要显示的颜色,最后把调整后的数据送入对应的缓冲区。例如:假设字符1点阵存在一维数组字库Zfk,起始地址为20,显示颜色值为42的字符1到第8行第10列的程序是:for (i=0;i16;i+)for(j=0;j(7-j)&0x01)*42;显示汉字在容量比较大的系统中实现汉字的显示通常有两种方法,1. 把汉字库烧录到存储器,用烧写的地址加字库的偏移地址确定具体汉字的位置。2. 把汉字库转化成数组的形式,在程序中以读取数组的形式读取字库。这两种方法各有优缺点,这里讨论用第二种方法实现汉字显示。在汉字库中,为了方便查找所需汉字的点阵,每个汉字都与一个双字节的内码一一对应。通过汉字的内码可以计算出它的点阵起始字节。以1616宋体横向点阵为例,计算点阵起始字节地址的公式为:地址=(内码高字节-160)*94+(内码低字节-160)*32例如:汉字“嵌”所对应的内码是7B6H,那么它在汉字库中的地址是:long int adress= (7-0xa1)*94+(B6-0xa1)*32=1C120假设转换后的汉字库存放在一维数组Hzk中,那么Hzk1C120至Hzk1C120+32所对应值就是汉字“嵌”所对应的十六进制点阵。由于在LCD显示的过程中,点阵中的一行数据要用两个字节来表示,在确定所要显示的行数据在点阵中的位置时需要做必要的调整,例如:在LCD上显示底Y行象素数据的时候,对应于汉字点阵中的数据应该是汉字库数组中的偏移地址,即2*Y和2*Y+1所对应的数据。所以在确定偏移地址的时候应该在行前乘2。在显示一行的过程中,前八个象素点对应的偏移地址是2*Y,后八个象素是2*Y+1,所以在计算偏移地址的时候应该用表示象素点列的数据与8相除,即Y*2+X/8.在具体实现过程中,为了方便,首先把所要显示的汉字点阵从字库中读出,实现程序是: char hzbuff16;for (i=0;i16;i+)hzbuffi= Hzkaddress+i ;读出字库后,同样需要处理字库中的一位表示一个象素和LCD缓冲区中的一个字节表示LCD上一个象素的问题。处理方法和显示英文字母大体相同。举例:在LCD模块Y行X列显示颜色为C的汉字“嵌”的程序是:for (i=0;i16;i+) for(j=0;j(7-j%8)&0x01)*C;关于换行:在显示点阵为1616汉字、LCD模块为320240大小的情况下,每行显示20个汉字,共有15行,每屏能显示300个汉字或者字符。在程序的实现中,用数字01520代表每个汉字的位置,例如0代表开始的第一个位置,15代表第二行的第一个位置,以此类推。假设当前显示位置为Positon,当显示中需要换行,重新计算显示位置时可以用如下程序实现:Position=(position/20+1)*20; 结语本文主要讨论了ARM7处理器S3C44B0X内置LCD控制器的使用方法,简要介绍了夏普LM057QC1T01图形点阵式液晶显示模块,并详细给出了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论