Здравствуйте!
К микроконтроллеру подключён дисплей Winstar WDX0006-TGH по интерфейсу i2c.
Для инициализации дисплея написаны следующие функции:
//Старт.
void i2c_start()
{
UCB0CTL1 |= UCTR + UCTXSTT;
while (!(IFG2 & UCB0TXIFG));
IFG2 &= ~UCB0TXIFG;
}
//Запись байта.
void i2c_write(unsigned char data)
{
UCB0TXBUF = data;
while (!(IFG2 & UCB0TXIFG));
IFG2 &= ~UCB0TXIFG;
}
//Стоп.
void i2c_stop()
{
UCB0CTL1 |= UCTXSTP;
while(UCB0STAT & UCBBUSY);
}
void lcd_init()
{
i2c_start();
i2c_write(0x00); //Контрольный байт.
i2c_write(0x21); //MX=0, MY=0, PD=0, H1=0, H0=1.
i2c_write(0x12); //Bias=1/68.
i2c_write(0x0C); //DO=1.
i2c_write(0xFF); //VOP=max.
i2c_write(0x20); //MX=0, MY=0, PD=0, H1=0, H0=0.
i2c_write(0x05); //PRS=1.
i2c_write(0x0C); //Normal mode.
i2c_write(0x40); //Set Y.
i2c_write(0x80); //Set X.
i2c_stop();
}
Контроллер дисплея на команды инициализации реагирует,
например, можно менять яркость. А вот на команды записи в память
никакой реакции:
//Очистка дисплея:
i2c_start();
i2c_write(0x40); //Контрольный байт.
for(int i=0;i<918;i++)
{
i2c_write(0x00);//Записываем нули.
}
i2c_stop();
Может быть кто-нибудь подскажет в чём ошибка?
Прилагаю описание на контроллер дисплея.