50%-ig LCD
Postat: 9 maj 2008, 08:23:09
Hej!
Min OLED display dog, förmodligen pga kortis. Därför köpte jag en 4*20 från Fractronics men jag får bara text på rad 1 och 3. Om jag gör en loop som skriver på alla addresser från 0x0 till 0x60 så blir det text på rad 1 från adress 0 till 0x13. Address 0x14 till 0x27 ger text på rad tre som förväntat men övriga adresser så händer ingenting.
Initieringen ser ut som följer
void hd44780_init(void)
{
HD44780_DDR = _BV(HD44780_RS) | _BV(HD44780_RW) | _BV(HD44780_E)
| HD44780_DATABITS;
_delay_ms(40); /* 40 ms needed for Vcc = 2.7 V */
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
_delay_ms(4.1);
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
_delay_ms(0.1);
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
hd44780_outnibble(HD44780_FNSET(0, 1, 0) >> 4, 0);
hd44780_wait_ready();
hd44780_outcmd(HD44780_FNSET(0, 1, 0));
hd44780_wait_ready();
hd44780_outcmd(HD44780_DISPCTL(0, 0, 0));
hd44780_wait_ready();
}
Finns det ngt mer som behöver initieras eller?
/Erik
Min OLED display dog, förmodligen pga kortis. Därför köpte jag en 4*20 från Fractronics men jag får bara text på rad 1 och 3. Om jag gör en loop som skriver på alla addresser från 0x0 till 0x60 så blir det text på rad 1 från adress 0 till 0x13. Address 0x14 till 0x27 ger text på rad tre som förväntat men övriga adresser så händer ingenting.
Initieringen ser ut som följer
void hd44780_init(void)
{
HD44780_DDR = _BV(HD44780_RS) | _BV(HD44780_RW) | _BV(HD44780_E)
| HD44780_DATABITS;
_delay_ms(40); /* 40 ms needed for Vcc = 2.7 V */
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
_delay_ms(4.1);
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
_delay_ms(0.1);
hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);
hd44780_outnibble(HD44780_FNSET(0, 1, 0) >> 4, 0);
hd44780_wait_ready();
hd44780_outcmd(HD44780_FNSET(0, 1, 0));
hd44780_wait_ready();
hd44780_outcmd(HD44780_DISPCTL(0, 0, 0));
hd44780_wait_ready();
}
Finns det ngt mer som behöver initieras eller?
/Erik