Hallo liebes Mikrocontroller.net Team! Da ich hier schon einmal rasch Hilfe bekommen habe, versuche ich es bei meinem nächsten Problem wieder hier. (dieses Problem ist aber etwas komplexer) Ich habe einen ATmega32 und will damit einen LCD12864 im 4-Bit Modus ansteuern. Da es hier verschiedene gibt, hänge ich ein Bild der Vorder- und Rückseite an. Die Pinbelegung ist wie folgt: PC0-3 DB4-7 PC4 RS PC5 RW PC6 E Nun zum Code: Ich habe 2 verschiedene "Quellcode-Pakete" für den LCD. Der erste ist von meinem Betreuungslehrer und ist bei weitem nicht so aufwändig wie das 2te Paket. Es funktioniert aber nicht. Man kann nichts auf dem LCD ausgeben. Datei: Paket 1.zip Das zweite Paket habe ich aus dem Internet. Das Programm hat Herr Peter Fleury zusammengeschrieben. Ich habe es so weit es mir möglich ist an meine Bedürfnisse angepasst. Der Großteil übersteigt aber mein Wissen. Datei: Paket 2.zip Mit diesem Programm funktioniert die Kommunikation mit dem Display teilweise. wenn man z.B. folgenden Code schreibt: 1) printLcd(0,0,"01Hallo78901234567890"); //(x,y,"....") springt der Cursor nach 16 Zeichen in der ersten gleich in die dritte und nicht in die zweite Zeile des LCDs. 2) printLcd(0,0,"Hallo"); delay(1000); printLcd(1,1, "lieber"); delay(100); printLcd(2,2, "LCD"); delay(100); printLcd(3,3,"Display"); delay(3000); lcd_clrscr(); Schaut das Bild auf dem LCD so aus: ________________ |HaliLCDisplay | | | | | | | ****************** Meine Vermutung ist, dass die Parameter für Spalten und Speicheraddressen in der header Datei nicht richtig eingestellt sind. Ich bin aber nicht fähig, den Fehler selber zu finden, da ich noch zu wenig Erfahrung mit dem Thema habe. Ich bitte nun jemanden, der sich gut mit dem Thema auskennt, über den Code zu schauen und Fehler auszubessern. Über was ich mich auch freuen würde, wäre ein Link zu anderen Versuchen für 4Bit Modus auf dem LCD, die sicher mit meiner Hardware funktionieren. Mit freundlichen Grüßen, Martin
Interessant, daß da überhaupt was kommt. Die Bezeichnung klingt nach einem Grafikdisplay mit 128x64 Pixeln und die Pinbeschriftung passt nicht zu hd44780-Displays, die haben kein Vout und kein RST.
Ich würde sagen das ist ein 20x4 TextLCD, also ein vierzeiliges mit 20 Buchstaben pro Reihe. Also KEIN 128x64 Pixel Grafikdisplay. Das könnte auch schon die Erklärung sein, warum das nicht klappt ;)
Das 12864 auf dem Aufkleber deutet aber eher auf ein Grafikdisplay hin. http://minhdanh2002.blogspot.de/2013/11/experimenting-with-st7920-128x64.html PSB ist für den Serialmodus. Handbuch ! http://www.lcd-module.de/eng/pdf/zubehoer/st7920_chinese.pdf
:
Bearbeitet durch User
Vielen Dank Dennis! Ich habe heute den ganzen Tag gearbeitet, hab mir aber schon deinen ersten Link angesehen und werde morgen gleich losprogrammieren und ausprobieren.
Zwei Fragen hab ich noch: 1) Mit welchem Pin am LCD verbinde ich "LCD_REST" Quellcode? Mit dem Reset Pin oder mit R/W? 2) Da die Initialisierung nicht mit meinem µC zusammenpasst, hab ich sie so umgeschrieben: #define LCDPORT PORTC #define LCD_RS 4 #define LCD_EN 6 #define LCD_REST 5 #define LCD_DB4 0 #define LCD_DB5 1 #define LCD_DB6 2 #define LCD_DB7 3 RS, EN und REST setzen ist kein Problem. Nur bei den Datenbits weiß ich nicht weiter. Diese werden im Code so gesetzt: LCD_DB4 = (command & (1 << 4)) >> 4; LCD_DB5 = (command & (1 << 5)) >> 5; LCD_DB6 = (command & (1 << 6)) >> 6; LCD_DB7 = (command & (1 << 7)) >> 7; Wie muss ich alse DB4-7 definen oder wie muss ich das Programm umschreiben, damit es funktioniert?
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.