lcd1602.c
if ((devFD = LCD1602Init()) == -1)
if (LCD1602Clear(devFD) == -1)
if (LCD1602DispLines(devFD, " B&G Char LCD", "--by FriendlyARM") == -1)
LCD1602DeInit(devFD);
lib/pcf8574.c
EXPORT int LCD1602Init()
{
clearLastError();
int devFD;
if ((devFD = pcf8574Init()) == -1) {
setLastError("Fail to init pcf8574");
return -1;
}
usleep(1000*15);
if (pcf8574WriteCmd4(devFD, 0x03 << 4) == -1) {
return -1;
}
usleep(100*41);
if (pcf8574WriteCmd4(devFD, 0x03 << 4) == -1) {
return -1;
}
usleep(100);
if (pcf8574WriteCmd4(devFD, 0x03 << 4) == -1) { // 8位数据总线
return -1;
}
if (pcf8574WriteCmd4(devFD, 0x02 << 4) == -1) { // 4位数据总线
return -1;
}
if (pcf8574WriteCmd8(devFD, 0x28) == -1) { // 4位数据总线,显示2行,5x7
return -1;
}
if (pcf8574WriteCmd8(devFD, 0x0c) == -1) { // 显示开,无光标
return -1;
}
usleep(2000);
if (pcf8574WriteCmd8(devFD, 0x06) == -1) { // 光标右移,显示屏不移动
return -1;
}
if (pcf8574WriteCmd8(devFD, 0x02) == -1) { // 光标复位
return -1;
}
usleep(2000);
return devFD;
}