FDA (21.02.2007 13:19, просмотров: 2225)
Кто работал с индикатором "EM6125 COG Module"? Никак не могу вывести на него информацию. Подключил по следующей схеме:
1 - SDA
2 - SCL
3 - +9В
4 - +5В
5 - GND
6 - GND
7 - +5В
8 - +5В
9 - GND
10 - RES
Пример инициализации взял из какого-то примера для MSP430:
// Command constant
const int CONTBYTE_INITIALIZATION0 = 0x80; // 1000 0000b
const int DATABYTE_INITIALIZATION0 = 0x98; // 1001 1000b
const int CONTBYTE_INITIALIZATION1 = 0x81; // 1000 0001b
const int DATABYTE_INITIALIZATION1 = 0x00; // 0000 0000b
const int CONTBYTE_INITIALIZATION2 = 0x82; // 1000 0010b
const int DATABYTE_INITIALIZATION2 = 0x00; // 0000 0000b
const int CONTBYTE_INITIALIZATION3 = 0x83; // 1000 0011b
const int DATABYTE_INITIALIZATION3 = 0xAA; // VLCD Register
const int CONTBYTE_INITIALIZATION4 = 0x84; // 1000 0100b
const int DATABYTE_INITIALIZATION4 = 0x80; // 1000 0000b - 4x booster
const int CONTBYTE_TEST0 = 0xA0;
const int CONTBYTE_TEST1 = 0xA8;
const int CONTBYTE_TEST2 = 0xB0;
const int CONTBYTE_TEST3 = 0xB8;
const int WRITE_DDRAM_1BYTE = 0xC0; // 1100 0000b
const int WRITE_DDRAM_BYTES = 0x40; // 0100 0000b
const int BANK = 10;
const int COLUMN = 101;
char i, j;
char BinaryReverse8 (char b)
{
char i, r = 0;
for (i = 0; i <= 7; i++)
if (b & (1 << i)) r |= (1 << (7 - i));
return r;
}
void InitLCD (void)
{
StartI2C();
PutI2C(BinaryReverse8(CONTBYTE_INITIALIZATION0));
PutI2C(BinaryReverse8(DATABYTE_INITIALIZATION0));
PutI2C(BinaryReverse8(CONTBYTE_INITIALIZATION1));
PutI2C(BinaryReverse8(DATABYTE_INITIALIZATION1));
PutI2C(BinaryReverse8(CONTBYTE_INITIALIZATION2));
PutI2C(BinaryReverse8(DATABYTE_INITIALIZATION2));
PutI2C(BinaryReverse8(CONTBYTE_INITIALIZATION3));
PutI2C(BinaryReverse8(DATABYTE_INITIALIZATION3));
PutI2C(BinaryReverse8(CONTBYTE_INITIALIZATION4));
PutI2C(BinaryReverse8(DATABYTE_INITIALIZATION4));
PutI2C(BinaryReverse8(CONTBYTE_TEST0));
PutI2C(BinaryReverse8(0));
PutI2C(BinaryReverse8(CONTBYTE_TEST1));
PutI2C(BinaryReverse8(0));
PutI2C(BinaryReverse8(CONTBYTE_TEST2));
PutI2C(BinaryReverse8(0));
PutI2C(BinaryReverse8(CONTBYTE_TEST3));
PutI2C(BinaryReverse8(0));
StopI2C();
}
......
void main (void)
{
...
InitLCD();
// Пытаюсь заполнить весь экран чёрным
StartI2C();
PutI2C(BinaryReverse8(WRITE_DDRAM_BYTES));
for (j = 0; j <= BANK ; j++)
for (i = 0; i <= COLUMN; i++)
PutI2C(0xFF);
StopI2C();
}
В итоге на экране появляется просто мусор. Пишу я для PIC18F2520.