其实这个不难吧,要先8位总线,然后在换成4位,才可以,必须先8后4.给你一个51的例子,自己移到430吧。
#ifndef __LCD1602_4_H__
#define __LCD1602_4_H__
#define lcdrs p26
#define lcden p27
#define input P0
void write_com(uchar com)
{
//高四位数据输入
lcdrs=0;
input=com&0xf0;
delay(8);
lcden=1;
delay(8);
lcden=0;
//低四位数据输入
lcdrs=0;
input=com<<4;
delay(8);
lcden=1;
delay(8);
lcden=0;
}
void write_data(uchar date)
{
//高四位数据输入
lcdrs=1;
input=date&0xf0;
delay(8);
lcden=1;
delay(8);
lcden=0;
//低四位数据输入
lcdrs=1;
input=date<<4;
delay(8);
lcden=1;
delay(8);
lcden=0;
}
void write_8_com(uchar com)
{
//八位数据输入
lcdrs=0;
input=com;
delay(8);
lcden=1;
delay(8);
lcden=0;
}
void LCD1602init()
{
write_8_com(0x20);//在八位模式下设置四位模式
//四位模式初始化
write_com(0x28);
write_com(0x0c);
write_com(0x01);
write_com(0x06);
write_com(0x80);
}
#endif
|