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

剩下来的都是些软件的问题。首要进行对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来代表擦除
好了,我相信你应该可以做液晶项目的开发了。
|