Hallo Mikrocontroller.net Forum, nachdem ich mich durch euer AVR ASM Tutorial gekämpft habe und mich schon relativ gut mit den AVR µCs und ASM zurechtfinde, stehe ich nun vor meinem ersten großen Problem, und hoffe das mir hier jemand helfen kann. Ich versuche mit ASM im 8bit modus ein 4x20 LCD WH2004A anzusteuern, wenn das gut klappt möchte ich auf den 4 bit modus umsteigen. Allerdings stehe ich hier bereits vor mehreren Problemen. Das Display ist richtig angeschlosssen, DB0-DB7 an PB0-PB7 von meinem ATtiny2313. RS hängt an PD0 und E an PD1. RS liegt an GND. Ich füge in den Anhang meinen ASM code, ich habe versucht die 4bit Version aus dem Tutorial in eine 8 bit Version umzuändern. Da sind bestimmt noch fehler drinn, aber ich finde im Moment keine mehr... Nun zu meinem Problem: Das Display zeigt nur in zeile 1 und 3 gelbe Balken an. Der Shop(sureelectronics) in dem ich das Display erstanden habe schreibt HD44780 aber das Datenblatt zu der Produktbezeichnung die auf einem sticker auf der Rückseite war sagt KS0066. Was ist warscheinlicher? KS0066 oder? Kann mir jemand ein paar Lösungsvorschläge geben? Oder einen Denkanstoß oder soetwas? Danke im Vorraus... ArRaY edit Ich habe ganz vergessen hinzuzufügen, dass ich mich durch so alle threads mit betreff lcd gekämpft habe, aber irgendwie scheint nirgendswo die richtige lösung zu sein... Kontrastpoti vorhanden...
KS0066 muss imho bei 4 Zeilen anders init. werden - schau dir mal die lcd lib von perter fleury an, ist zwar C, aber da stehts drin... die gelben balken sind übrigens ein gutes zeichen, wenn es ein invertiertes disp ist! Klaus.
Schau mal ins Datenblatt der Controller. Da steht was von Wartezeiten während der Initialisierung. Ich kann sowas in deinem Code nicht erkennen. Irgendwie ist der ganze Code etwas merkwürdig:
1 | ldi temp3,25 |
2 | powerupwait: |
3 | |
4 | rcall delay5ms |
temp3 = r18 und das wird in delay5ms überschrieben.
1 | dec temp3 |
2 | brne powerupwait |
Die Schleife wird daher endlos laufen.
1 | ldi temp1,0b00011110 |
2 | out lcdport,temp1 |
3 | rcall lcd_enable ;1 |
4 | rcall lcd_enable |
Hier fehlen die oben angesprochenen Wartezeiten.
1 | ldi temp1,0b00000001 |
2 | rcall delay5ms <- Hier fehlt wohl ein rcall lcd_cmd |
3 | ldi temp1,0b00000110 |
4 | rcall lcd_cmd |
Vielen Dank für die Antwort, werde mich nun schnellstens daranmachen diese Fehler auszubügeln... Die Standart-4bitInit vom HD44780 in der Version aus dem Tutorial funktioniert schoneinmal, ich habe entsprechende c routinen gefunden, die funktionieren, und ich hoffe, dass nach den paar Änderungen auch die 8bit Methode geht. Vielen Dank nochmal, Joel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.