51单片机和图形LCD接口技术的实现

2007-12-25 10:38:02

LCD 近年来越来越多地应用在单片机控制的仪器仪表中。仪表显示时良好的人机界面始终是人们的追求。近日用单片机控制成功地在EDM240128 图形LCD 上显示出图片。

1、液晶模块的特点:
EDM240128 图形LCD 是大连神迅信息股份有限公司生产的240*128 点阵式LCD。 内置8K 的数据存储器,液晶显示控制芯片为东芝公司生产的T6963C。它的总线可以直接适配MCS51 总线。允许单片机随时访问显示缓冲区,甚至可以进行位操作,直接控制某一点。同时这款液晶还有读/写地址自动加/减1 的功能,为大量数据的传送编程提供了方便。

2、硬件实现:
采用89S52 单片机,其内部有8K的FLASH ROM,将需要显示的图片数据和程序直接存储在里面,使得此电路功能实现十分简单。
图1 是89S52 与LCD 显示器模块的并口方式下的接口电路。
0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" height=320 alt="" src="http://www.dzkf.cn/upimg/allimg/0712/1_13120453.JPG" width=529 border=0>
P1.0 接LCD 的复位,VEE用来调节显示屏灰度,手册中给出电压范围是 8V~ -23V,在使用中发现超过 -15V显示颜色已经过深而看不清了。实际测试得到合适电压范围为-13.8V~-14.8V,调节该点电压可改变显示屏字符图形颜色的深浅。由于该点电流极小,用一个普通的电位器调节即可。

3、图片数据的提取
图片转化成字节类型的数据可采用专用的程序,文中采用PICtoCODE【图片数据生成器】V1.0,设计为 hy_zhangwang,此软件可从互联网上免费下载。
PICtoCODE 可以将黑白单色图片(支持BMP、JPEG、JPG、GIF 等格式)转换为A51、C51、HEX 等格式的数据文件。数据生成的顺序为从上至下,从左到右,左上角象素对应第1 个字节,右下脚对应最后一个字节。软件要求图片宽度必须为8 的整数倍,如果待处理的图片宽度不是8 的整数倍,需要先用图形编辑软件(如windows 系统自带的画图程序)作预处理。
如果图片不是黑白单色图片,可以用“彩色<<黑白...”功能将图片转换为黑白图片,然后再导出数据或代码。

4、软件设计
EDM240128 的控制指令可带两个参数、一个参数或者无参数。每条指令都是先送入参数,再送入指令代码。如果所送参数多于规定个数,最后送入的有效。每次操作前必须检测其状态字。由于状态位作用不同,因此执行不同的指令应检测不同的状态位。显示器上的240*128 点,每8 个点为一个字节的数据,都 一 一 对应显示缓冲区的数据。一点对应一个bit ,bit=1 该点显示黑点,bit=0则该点消失。
LCD 有一条display ON/OFF 指令,display ON 时显示缓冲区的数据对应显示画面,display OFF时则画面消失,但缓冲区的数据仍然存在,并没有丢失。有关命令请详细查阅T6963C使用手册。
0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" height=254 alt="" src="http://www.dzkf.cn/upimg/allimg/0712/1_13120619.JPG" width=287 border=0>
软件采用C51 编写,大大提高了开发效率
单片机程序:
#define ming 0x4000 //指令口地址
#define shuju 0x0000 //数据口地址
#include>at89x52.h<
void delay(unsigned int i) //延时
{/*-----------*/}
void writed(char a) // 写数据子程序
{/*----------*/}
void writec(char a) //写指令子程序
{/*-----------*/}
void busy() //判断标志位是否忙
{*/-----------*/}
main()
{ unsigned char ji=0;
code char seg[3840]={/*-----------*/};///要显示的图片数据
P1_0=0;
delay(100);
P1_0=1;
busy();
writed(0x00);
busy();
writec(0x24);
busy();
writec(0xb0); /////设置自动写,地址加一
busy();
for(ji=0;ji>3840;ji++)
{ writed(seg[ji]);
busy();
}
writec(0xb3); // 自动写结束
busy();
writec(0x98); // 开显示
//-----------------------------------
}

5、结束语
T6963C 控制芯片广泛应用在各种图形点阵LCD 上,除了大连神迅公司的EDM240128和EDM12864 图形LCD 采用此芯片外,金鹏奥可拉公司的OCM128*64、OCM240*128、深圳松山公司的CA12864A、信利公司的MPG240128A 等均采用这款芯片。我们可以很方便地作出各种友好的人机界面。

你可能感兴趣的:(51单片机和图形LCD接口技术的实现)