LCD-controller met AVR
In de loop der jaren heb ik het een en ander bijelkaargespaard aan LCDs. Zoals sommige van jullie misschien wel weten zijn lang niet alle LCDs echter aan te sluiten: van de mooiere typen hebben de meesten geen controller en zijn er maar een paar via een alternatieve manier (vesa-poort) aan de praat te krijgen. Met dit apparaat heb ik weer een paar extra LCDs aan de praat kunnen krijgen. Ik deel deze info met jullie, misschien kan iemand er wat mee.
Ten eerste:
Dit project is niet voor yer olde beginner die zonder al te veel verstand van DRAMs, AVR's, spanning en stroom een LCD aan wil sluiten. Dit project is in een middagje inelkaargefietst; er zitten dus nog een redelijke hoeveelheid rough edges aan en ik heb geen zin om iedereen die wel een leuk LCD in z'n kast wil aan het handje te mee te nemen. Wat ik hier dan ook niet wil zien is:
• Kan dit LCD er ook mee werken? Dat kan je uit dit topic en het datasheet van je LCD halen. Lukt dat je niet, jammer, misschien gaat iemand nog wel es een makkelijke howto schrijven.
• Heeft iemand de datasheet/pinout van dit LCD? Gebruik Google, daarmee kan je veel datasheets / pinouts vinden. Van veel LCDs is die info echter gewoon niet aanwezig, sja, dan heb je pech gehad.
• Mijn LCD is anders. Kan je de firmware daarvoor aanpassen? Jahoor, mail me maar en dan breng ik een offerte uit.
Mijn excuses voor deze norse FAQ/regeltjes, maar ik wil dit topic graag op een hoog nivo houden.
Op wat voor LCDs werkt dit?
Nou, het werkt eigenlijk alleen maar 100% zeker op mijn eigen LCD
De kans is echter groot dat je je eigen LCD ook aan de praat kan krijgen zonder al te veel software-wijzigingen als:
• Je LCD controllerloos is
• Je LCD een 4-bits databus heeft
• Je de pinout, of beter, de datasheet van je LCD hebt.
• Je LCD 320x240 of kleiner is
• Je LCD monochroom is (zwart-[andere kleur])
Waarschijnlijk is het idee ook wel aan de praat te krijgen (met firmware-wijzigingen) als:
• Je LCD 1 of 2 bits aan databus heeft
• Je LCD 8bits aan databus heeft, je moet dan een 2e stukkie RAM toevoegen.
• Je LCD een ander formaat dan 320x200 heeft. Als je LCD groter is kan het wel zo zijn dat je refresh rate te laag gaat liggen en het display gaat flikkeren.
Het schema

En nee, ik doe nog steeds niet aan CAD-programma's om mijn schema's te ontwerpen.
Het schema bestaat uit niet meer dan een AVR en een 4-bits DRAM-chipje. Ik heb een bepaald Hynix-chipje gebruikt, maar je kan eigenlijk elk chipje wel gebruiken, zolang het ding een 4-bits databus heeft, minimaal 64kx4bit kan opslaan en Fast Page ondersteunt. Zie de datasheets van de chipjes die je kan vinden voor meer info. Als je een kleinere chip pakt mis je waarschijnlijk A8 en/of A9, da's niet erg.
Het geneuzel rond de BC550 kan je ook vervangen door een Siemens datakabel (zoals ik gedaan heb) of iets in de trand van een MAX232. Zolang het RS232->TTL-conversie kan doen is het OK.
Ow, en als je je afvraagt waar je in godsvredesnaam aan dat stukkie RAM komt: hier heb ik de mijne vandaan:

De meeste 30-pins simmetjes met minder dan 8 chipjes erop hebben wel compatibele chips erop zitten.
Plaatjes sturen naar het LCD
...gebeurt door middel van een serieele interface. Ik heb zelf een proggie geschreven om png'tjes richting het LCD te sturen, maar da's zo lelijk dat ik het niet ga uitbrengen. Het protocol is echter niet moeilijk: de serieele poort werkt op 115200 baud, 8 databits, 1 stopbit, geen parity. Het display word per regel herschreven: stuur eerst 0xA5, dan het regelnummer, dan 40 bytes aan data. Het uploaden van een compleet nieuw scherm duurt ongeveer een seconde, en helaas zie je het wel gebeuren. Het is wel een stuk mooier te maken door de volgorde van de lijnen aan te passen, zie dit filmpje voor een voorbeeld.
De firmware
...staat hier. Het is goed gedocumenteerd, je zou het dus redelijk simpel moeten kunnen aanpassen aan andere LCDs.
ToDo
Sja, ik zou graag wat dingen aan dit ontwerp anders zien:
• RAS is nu nog gedeeld met de HSYNC-lijn. Het kan zijn dat sommige LCDs dit niet snappen, vandaar dat ik die liever apart zou hebben.
• De -24V komt nu nog uit mijn voeding. Ik zou dit liever door middel van een boostconvertertje opbouwen.
Voor beide zaken heb ik echter een I/O-pinnetje nodig, wat ik in deze opstelling mis. Vandaar dat het hele project een dezer dagen waarschijnlijk naar een ATMega88 verhuist zal worden.
PICS!!!111


In de loop der jaren heb ik het een en ander bijelkaargespaard aan LCDs. Zoals sommige van jullie misschien wel weten zijn lang niet alle LCDs echter aan te sluiten: van de mooiere typen hebben de meesten geen controller en zijn er maar een paar via een alternatieve manier (vesa-poort) aan de praat te krijgen. Met dit apparaat heb ik weer een paar extra LCDs aan de praat kunnen krijgen. Ik deel deze info met jullie, misschien kan iemand er wat mee.
Ten eerste:
Dit project is niet voor yer olde beginner die zonder al te veel verstand van DRAMs, AVR's, spanning en stroom een LCD aan wil sluiten. Dit project is in een middagje inelkaargefietst; er zitten dus nog een redelijke hoeveelheid rough edges aan en ik heb geen zin om iedereen die wel een leuk LCD in z'n kast wil aan het handje te mee te nemen. Wat ik hier dan ook niet wil zien is:
• Kan dit LCD er ook mee werken? Dat kan je uit dit topic en het datasheet van je LCD halen. Lukt dat je niet, jammer, misschien gaat iemand nog wel es een makkelijke howto schrijven.
• Heeft iemand de datasheet/pinout van dit LCD? Gebruik Google, daarmee kan je veel datasheets / pinouts vinden. Van veel LCDs is die info echter gewoon niet aanwezig, sja, dan heb je pech gehad.
• Mijn LCD is anders. Kan je de firmware daarvoor aanpassen? Jahoor, mail me maar en dan breng ik een offerte uit.
Mijn excuses voor deze norse FAQ/regeltjes, maar ik wil dit topic graag op een hoog nivo houden.
Op wat voor LCDs werkt dit?
Nou, het werkt eigenlijk alleen maar 100% zeker op mijn eigen LCD
• Je LCD controllerloos is
• Je LCD een 4-bits databus heeft
• Je de pinout, of beter, de datasheet van je LCD hebt.
• Je LCD 320x240 of kleiner is
• Je LCD monochroom is (zwart-[andere kleur])
Waarschijnlijk is het idee ook wel aan de praat te krijgen (met firmware-wijzigingen) als:
• Je LCD 1 of 2 bits aan databus heeft
• Je LCD 8bits aan databus heeft, je moet dan een 2e stukkie RAM toevoegen.
• Je LCD een ander formaat dan 320x200 heeft. Als je LCD groter is kan het wel zo zijn dat je refresh rate te laag gaat liggen en het display gaat flikkeren.
Het schema
En nee, ik doe nog steeds niet aan CAD-programma's om mijn schema's te ontwerpen.
Het schema bestaat uit niet meer dan een AVR en een 4-bits DRAM-chipje. Ik heb een bepaald Hynix-chipje gebruikt, maar je kan eigenlijk elk chipje wel gebruiken, zolang het ding een 4-bits databus heeft, minimaal 64kx4bit kan opslaan en Fast Page ondersteunt. Zie de datasheets van de chipjes die je kan vinden voor meer info. Als je een kleinere chip pakt mis je waarschijnlijk A8 en/of A9, da's niet erg.
Het geneuzel rond de BC550 kan je ook vervangen door een Siemens datakabel (zoals ik gedaan heb) of iets in de trand van een MAX232. Zolang het RS232->TTL-conversie kan doen is het OK.
Ow, en als je je afvraagt waar je in godsvredesnaam aan dat stukkie RAM komt: hier heb ik de mijne vandaan:
De meeste 30-pins simmetjes met minder dan 8 chipjes erop hebben wel compatibele chips erop zitten.
Plaatjes sturen naar het LCD
...gebeurt door middel van een serieele interface. Ik heb zelf een proggie geschreven om png'tjes richting het LCD te sturen, maar da's zo lelijk dat ik het niet ga uitbrengen. Het protocol is echter niet moeilijk: de serieele poort werkt op 115200 baud, 8 databits, 1 stopbit, geen parity. Het display word per regel herschreven: stuur eerst 0xA5, dan het regelnummer, dan 40 bytes aan data. Het uploaden van een compleet nieuw scherm duurt ongeveer een seconde, en helaas zie je het wel gebeuren. Het is wel een stuk mooier te maken door de volgorde van de lijnen aan te passen, zie dit filmpje voor een voorbeeld.
De firmware
...staat hier. Het is goed gedocumenteerd, je zou het dus redelijk simpel moeten kunnen aanpassen aan andere LCDs.
ToDo
Sja, ik zou graag wat dingen aan dit ontwerp anders zien:
• RAS is nu nog gedeeld met de HSYNC-lijn. Het kan zijn dat sommige LCDs dit niet snappen, vandaar dat ik die liever apart zou hebben.
• De -24V komt nu nog uit mijn voeding. Ik zou dit liever door middel van een boostconvertertje opbouwen.
Voor beide zaken heb ik echter een I/O-pinnetje nodig, wat ik in deze opstelling mis. Vandaar dat het hele project een dezer dagen waarschijnlijk naar een ATMega88 verhuist zal worden.
PICS!!!111
[ Voor 20% gewijzigd door Sprite_tm op 16-12-2005 14:44 ]
Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog