液晶显示器(liquid crystal display,lcd )具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示无法比拟的优点,不仅可以显示数字、字符,还可以显示汉字及各种图形、图片,可实现屏幕上下左右滚动、动画、反转显示、显示闪烁多种功能,日益成为智能仪器仪表和测试设备的首选显示器件。目前常用的lcm12864系列的液晶模块,一般都没有图形驱动模块,而图形作为一种更为生动的表现方式,是用户需求的重点和设计的亮点。如何在这种点阵式液晶显示器中显示任意静态图片以及动画, 成为困扰设计者大量应用lcd的问题。我们现在可以通过互联网、图形处理软件及扫描仪等很方便地获得各种各样的图像、图片,这样可以通过比较简单的方法把任意图片移植到液晶显示器lcd上。文章通过分析bmp图像的存储格式和128 64点阵lcd上图像显示的原理,设计了一个lcd图片数据转换及模拟显示的软件,并介绍了实现lcd意图片的显示方法。
bmp图片格式及lcd显示原理
bmp位图是微软公司(microsoft)和国际商用机器公司(ibm)共同倡导的一种图片格式。它按点阵排列顺序,将每个像素的色彩值以规定的方式把整个图片记录下来。根据色彩位深度不同,windows bmp文件像素描述部分差别较大,如256色每个像素需要8位(即1个字节)来描述,而16色的图片每个像素描述者只需4 位(即半个字节)。对于绝大部分电子设计者来说,最常用的是黑白二色的点阵式液晶显示器。因此,这里仅分析对microsoft windows类型1位(bit)描述的黑白二色bmp图片文件的处理。
一幅128 64点阵的黑白bmp图片文件的总长度为1086字节,前62个字节是文件头,用于表示文件类别、长度、图像的行数以及列数等信息,地址为 00h~3dh;后1024字节则对应画面的点阵数据,地址为3eh~43dh。bmp文件的中字节排列与点阵数据对应关系如图1 所示,bmp点阵数据块第0个字节对应图片中左下角第63行的第0到7列,第15个字节对应图片中第63行的第112到127列,也就是按照从左至右,从下到上的顺序,bmp数据块最后一个字节对应第0行的112到127列。因此,要想实现将bmp图片文件转化为供模块直接显示的数据,不但涉及到各个数据排列的先后顺序,还涉及到字节中各个位的重组。
对于rt12864hz汉字图形点阵液晶显示模块,它可显示汉字及图形,内置8192个中文汉字(16 16点阵)、128个字(8 16点阵)及绘图显示ram(gdram)。绘图显示ram提供128 8个字节的记忆空间,在更改绘图ram时,先连续写入水平与垂直的坐标值,再写入两个字节的数据到绘图ram,而地址计数器(ac)会自动加一;在写入绘图ram的期间,绘图显示必须关闭,整个写入绘图ram的步骤如下:
(1) 关闭绘图显示功能。
(2) 先将水平的位元组坐标(x)写入绘图ram地址;再将垂直的坐标(y)写入绘图ram地址;将d15~d8写入到ram中;将d7~d0写入到ram中。
(3) 打开绘图显示功能。
绘图显示的缓冲区与图形点阵对应分布参考图2所示(水平方向x以字节单位,垂直方向y以位为单位)。