LCD i 4-bitars interface mode, irriterande
LCD i 4-bitars interface mode, irriterande
Har lekt några dagar med en 2x16 teckens LCD, styrd från en MCU. LCDn heter YJ-162A och har en KS0066U controller. 44780 kompatibel antar jag. Den fungerar fint. Jag kan skriva text både i 8 och 4 bitars interface mode. Jag tänkte köra den i 4-bitars interface mode via ett skiftregister för att spara på I/O pinnarna på MCUn.
Från power-up är LCDn i 8-bitrs mode och man börjar initieringen med att sätta den i 4-bitars mode. Det här fungerar fint det också. Vad som irriterar mig är att när jag resettar MCUn nästa gång, vilket ju händer ganska ofta när jag debuggar koden i MCUn, utan att ta bort strömmen till LCDn, då är ju LCDn redan i 4-bitars mode och den nya initieriengen går åt skogen. Vad som händer är att initieringskoderna misstolkas så att LCDn bara använder 1 textrad.
Är det här ett känt fenomen? Finns det nåt sätt att komma runt det? Dvs oberoende av om LCD redan är i 8 eller 4 bitars mode, få initieringen korrekt. Och ja, jag är för lat för att knäppa av strömmen till LCDn för varje reset.
Från power-up är LCDn i 8-bitrs mode och man börjar initieringen med att sätta den i 4-bitars mode. Det här fungerar fint det också. Vad som irriterar mig är att när jag resettar MCUn nästa gång, vilket ju händer ganska ofta när jag debuggar koden i MCUn, utan att ta bort strömmen till LCDn, då är ju LCDn redan i 4-bitars mode och den nya initieriengen går åt skogen. Vad som händer är att initieringskoderna misstolkas så att LCDn bara använder 1 textrad.
Är det här ett känt fenomen? Finns det nåt sätt att komma runt det? Dvs oberoende av om LCD redan är i 8 eller 4 bitars mode, få initieringen korrekt. Och ja, jag är för lat för att knäppa av strömmen till LCDn för varje reset.
Om det är en Hitachi-standard modul så uppfattar jag databladet som att man skall kunna göra en softreset. Har aldrig provat att göra det i 4-bit mode eftersom jag inte har använt det läget någon gång, så reservation för att det inte går då.
Reset görs genom att skriva ett reset-kommando 3 gånger och med viss väntan mellan varje gång. Kommandot är utformat så det skall tokas rätt oavsett i vilken mode displayen står. Läs i databladet och prova.
Reset görs genom att skriva ett reset-kommando 3 gånger och med viss väntan mellan varje gång. Kommandot är utformat så det skall tokas rätt oavsett i vilken mode displayen står. Läs i databladet och prova.
Jag ser inget i HD44780 kommandona som skulle hindra att
man från 4-bits mode sätter om den till 8-bits mode, men jag
ser i och för sig inte varför man skulle behöva göra det).
Dessutom, eftersom att sätta om den till 4-bits mode är en
av de första saker man gör i alla fall (före övrigt "initiering"),
vad är det som inte fungerar ?
man från 4-bits mode sätter om den till 8-bits mode, men jag
ser i och för sig inte varför man skulle behöva göra det).
Dessutom, eftersom att sätta om den till 4-bits mode är en
av de första saker man gör i alla fall (före övrigt "initiering"),
vad är det som inte fungerar ?
Jag gissar på att problemet är att han inte väntar de rätta tiderna mellan reset-kommandona, eller helt har missat denna del av initieringen.
Posta init-koden, det är bästa sättet att kunna få ett tydligt och exakt svar på vad som har blivit fel.
Posta init-koden, det är bästa sättet att kunna få ett tydligt och exakt svar på vad som har blivit fel.
Senast redigerad av Marta 25 mars 2007, 13:06:22, redigerad totalt 1 gång.