微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 12864液晶深入学习笔记_1

12864液晶深入学习笔记_1

时间:11-28 来源:互联网 点击:
Createdon:2012-8-30

Author:zhangbin

学习笔记

for12864

redesignedbyzhangbin

2012-08-30

versions:12_08_01

这是我对12864的学习笔记,12864液晶功能很全面,使用起来也很方便,能够满足一般的研究和工程应用的需求。

下面我就对几个方面讲述一下我对它学习过程中的一些体会。我会尽量全面的介绍,并且会主要针对一些特殊的应用和一些我认为要特别注意的地方进行较为详细的说明。而对于那些较为固定的,常用的方面会简略一些。

其中的不管串行模式还是并行模式,对液晶的写指令,写数据,读操作等这些基本的操作都是一些比较固定的,基础的东西。我认为只要能够看懂,并且能够在不同的处理器上移植就够了,没有必要非要自己对着手册时序图写出来。因为有人已经写好了,而且工作稳定,我们只要在它的基础上学会应用就可以了。现在是知识爆炸时期,知识,信息迅速膨胀,我们要学会使用已有的成果,然后在这个基础上自己再进行开发应用的研究。我们不必一定要从底层开始把别人已经做的很成熟的东西再做一遍,这样不但效率不高,而且我们一般人的精力也不允许。

好了,不说废话了,下面就开始介绍,当然,那些基础层面的东西我也会介绍的。

下面所涉及到的程序,是针对msp430g2553的,都是我已经调通的,可以直接应用。

一,12864的介绍

1,液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。

2,常用的12864液晶内部都是使用ST7920控制器。

1),ST7920提供8位元,4位元及串行三种微处理器控制方式,大陆常用的是8位元和串行控制方式。

2),ST7920可以控制显示字母,数字符号,中文字型和自定义的图画。可以用来显示图形,演示动画,绘制曲线等。

3),字符显示RAM(DDRAM)

ST7920的字符显示RAM(DDRAM)最多可以控制16字元*4行,LCD的显示范围为16字元*2行。

这里要注意,其实ST7920的DDRAM每一行可以控制16个汉字的,共有4行。但是LCD的每行只能显示8个字符,为了显示观察的方便,在lcd制作的过程中,是将DDRAM的其中两行拆分开成四行,然后在lcd上显示,也即是DDRAM只用到了一半。

lcd的显示字符的坐标地址如下表:

汉字显示坐标

Line180H81H82H83H84H85H86H87H

Line290H91H92H93H94H95H96H97H

Line388H89H8AH8BH8CH8DH8EH8FH

Line498H99H9AH9BH9CH9DH9EH9FH

从上表不难看出,其中第一行和第三行是DDRAM中的同一行拆分来的,同理24行也是DDRAM中的同一行拆分而来的。

了解了这一点就不难理解下面程序中在换行显示时,要认为手动地指定下一行的地址。例如:如果第一行显示完了,下面的数据我要接着显示在第二行,这样才符合人观察的习惯,那么我就要在换第二行显示之前要手动地把显示地址切换到第二行。要不然的话,第一行显示完了,地址会自动增加,就会显示到第三行上去,这样的话我们观察起来就不自然了。程序实例会在下面涉及到的。

4),中文字库ROM(CGROM)

内置的是GB2312码简体中文字库,共提供了8192个16*16点的中文字型。

5),半宽字型ROM(HCGROM)

提供126个16*8点半字宽的字母符号字型。

6),图画显示RAM(GDRAM)

提供64*256位元的GDRAM

其中我们常用的RAM就是上面所提到的,还有一些CGRAM,IRAM这些我们不经常使用,就不再介绍了。

上面介绍的DDRAM控制显示汉字,字符。GDRAM控制显示图画,上电后,默认DDRAM是打开的,控制液晶显示。GDRAM默认不打开,它里面的数据是随机的,如果此时打开了GDRAM的话,lcd会同时受到DDRAM和GDRAM的控制,由于GDRAM中的数据是随机的,所以会显示乱码。所以在使用GDRAM之前要先清除里面的随机数据。

清除GDRAM的函数如下:

voidClear_GDRAM(void)//清除GDRAM中的的随机数据。因为上电后GDRAM中的数据是随机的,如果不清除而直接打开GDRAM显示时,会显示乱码

//所以在局部使用GDRAM显示图形时,要先清除随机数据。如果是全局使用GDRAM,即整个lcd屏全部设置显示数据,则可以

//不必清除,因为新数据会把随机数据给覆盖掉

{

uchari,j,k;

wr_lcd(comm,0x34);//打开扩展指令集操作GDRAM是扩展指令集

i=0x80;

for(j=0;j32;j++)

{

wr_lcd(comm,i++);

wr_lcd(comm,0x80);

for(k=0;k16;k++)

{

wr_lcd(dat,0x00);//写入空字符,就相当于清零

}

}

i=0x80;

for(j=0;j32;j++)

{

wr_lcd(comm,i++);

wr_lcd(dat,0x88);

for(k=0;k16;k++)

{

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top