LCD液晶屏显示(字符)

其实数字和汉字的电路是一样的,只是软件的初始化时有些不同,我们可以按下面的方法来连接电路:




剩下来的都是些软件的问题。首要进行对LCD的初始化
#define cwadd1 XBYTE[0x8000]
#define cradd1 XBYTE[0x8100] //根据下表及上面的连接图确定地址
#define dwadd1 XBYTE[0x8200]

PIN NO. SYMBOL LEVEL FUNCTION
1 Vss 0V Power supply(GND)
2 VDD 5.0V Power supply
3 Reset L Reset Signal
4 D/I H/L

H: Display data

L: Instruction code

5 R/W H/L

H: Data/status read

L: Data/instruction write

6 E H, H/L Chip enable signal
7---14 DB0-DB7 H/L Data bus line
15 LED+ - Power Supply for LED Back Light +
16 LED- - Power Supply for LED Back Light -
17 Nc - No connect
18 Nc - No connect
19 Nc - No connect
20 Nc - No connect

                                表1
void int_()
{
wcode(0x38);//写入控制字
wcode(0x01);
wcode(0x06);
wcode(0x0c);

void wcode(unsigned char c)
{
busy(); //判断只有不忙时才能写入,也就是读来一个字节,只到最高位为0时才能继续向下进行
cwadd1=c;
}

控制字具体含义见下表2

                       表2


下面再介绍一下最常用的液晶屏的特征,一行可以写入20个字符(10个汉字)可以写入4行,每行的首地址为:

第一行首地址--->0x80
第二行首地址--->0xc0
第三行首地址--->0x94
第四行首地址--->0xd4


了解了这些就可以在相应的位置上写入数据了。

写数据前首先要定位
void pr1()
{
busy();
cwadd1=com; //com就是要写入的地址
}

接下来写入数据
void pr2()
{
busy();

dwadd1=data1; //data1要写入的值注意是对应的ASCII码中的值,如下表3所示
//com=dwadd1;
}

                          表3


如写入'A'就是把0x41写入dwadd1 即dwadd1=0x41;
如果整屏的擦除可用 cwadd1=0x01
如果仅几个字符的擦除则可用在要擦位置的开始处可始写入0x20来代表擦除

好了,我相信你应该可以做液晶项目的开发了。