Hallo, ich bin noch Anfänger auf dem gebiet, bin gerade beim hineinschnuppern. Habe ein Problem mit der LCD-Ansteuerung unter GCC. Habe mir die LCD-Lib von Peter Fleury (http://www.mysunrise.ch/users/pfleury/) runtergeladen. Mein Display habe ich an PORTC vom 4433 gehängt (im 4-Bit-Modus). Allerdings, wie beim AVR-Tutorial habe ich den RW-Pin des LCDs auf GND und nicht an einen PortPin. In der Lib habe ich den Port geändert, brauche ich ich den RW vom LCD?? denn das Display macht keinen Mux, nur zwei schw. Balken. In dem Beispiel vom Tutorial in ASM gehts ohne Probleme.... Kann mir jemand weiterhelfen, vielen Dank im Voraus... Gruß Jens P.S.: Habe den Versuchsaufbau vom Tutorial deshalb geändert (LCD von PortD auf PortC, weil ich RS232-Daten auf meinem LCD ausgeben möchte.
hallo, ich bin zwar auch immer noch ein blutiger anfänger in diesem gebiet jedoch habe ich es hingekriegt mein 2x16-lcddisplay anzusteuern. es ist wie folgt angeschlossen: PB0 --> D4 PB1 --> D3 PB2 --> D2 PB3 --> D1 PB4 --> RS PB5 --> RW PB6 --> EN es funktioniert zwar noch nicht alles z.b. mit dem positionieren auf der ten zeile gibt es noch probleme abr zum initialisieren und zum text ausgeben geht's gruss fab
Hallo Jens, den RW brauchst Du nicht unbedingt. Es ist dann nur wichtig, lange genug zwischen zwei Kommandos zu warten, damit der LCD-Controller sich an den Anweisungen nicht verschluckt. Da es in Assembler geht, wird der Kontrast wohl noch richtig eingestellt sein, oder? Wenn nur zwei schwarze Balken zu sehen sind, liegt der Fehler vermutlich in der Routine zur Initialisierung des LCD. Vergleiche doch mal die beiden Init-Folgen in ASM und GCC. Wenn's nicht klappt, bitte nochmal melden, dann such ich meinen GCC-Quellcode heraus. Gruß Frank
Hallo Jens! Ich denke auch, dass es an der Initfolge liegt. Hatte am Anfang das selbe Problem. Bei mir war die erste Zeile komplett an und die zweite aus. Habe dann einen Zahlenverdreher in der Initfolge festgestellt. Axel
Ich habe seit langen auch das gleiche problem. Zuerst mit meinem HMPEG, dann über PC und jetzt auch direkt über den ATMEL. Bis jetzt habe ich 3 verschiedene LCD probiert und keines hat gefunzt. Bitte melden wenn ihr das Problem gelöt habt. PS: ich hätte gerne eure Version die SICHER funktioniert hat. Danke DUDE
habe für solche Sachen mir mal ein Datenblatt von Conrad gekauft, das beinhaltet u.a. folgenden Ablauf: 1. power on 2. warten >15ms 3. Funktionset (der wert hierfür ist bei 4 Bit 0x30) 4. warten > 4.1ms 5. Funktionset (der wert hierfür ist bei 4 Bit 0x30) 6. warten > 100 µs 7. Funktionset (der wert hierfür ist bei 4 Bit 0x30 8. warten > 4.1ms die befehlsfolge muß !!! 3 mal erfolgen, eineigen LCD reicht eimal auch schon aus. 9. Funktionset (der Wert: 0x38 für 2 zeilen und 0x37 für eine Zeile ) 10. Display an (der Wert: 0x3C ; 0x3D für blinkenden Cursor) 11. Display löschen (der Wert:0x01) 12. Entry mode set (der Wert:0x05) Das enable Signal sollte mind. 1ms lang sein, und die Pausen sollten eigehalten werden...
Habe das gestern nochmal verifiziert, folgende Ansteuerung sollte funktionieren: LCD ATMEL 1 -- GND 2 -- VCC 3 -- POTI (1:gnd 2:zum LCD 3:VCC) 4 PD1 RS Daten/Befehl 5 PD2 RW Lesen/Schrieben 6 PD3 E Enable 7 NC 8 NC 9 NC 10 NC 11 PB0 12 PB1 13 PB2 14 PB3 Initroutine: outp(0xff,DDRD);outp(0x00,PORTD); outp(0xff,DDRB);outp(0x00,PORTB); cbi(PORTD,PD2); cbi(PORTD,PD2); outp(0x03,PORTB);enLCD();delay(15); outp(0x03,PORTB);enLCD();delay(4); outp(0x03,PORTB);enLCD();delay(1); outp(0x02,PORTB);enLCD(); outp(0x02,PORTB);enLCD();outp(0x08,PORTB);enLCD(); outp(0x00,PORTB);enLCD();outp(0x0d,PORTB);enLCD(); outp(0x00,PORTB);enLCD();outp(0x01,PORTB);enLCD(); die Enable Routine: ------------------------ void enlcd(void) {delay(1);sbi(PORTD, PD3);delay(2);cbi(PORTD, PD3);delay(2);} die Delayroutine: --------------------- void delay (unsigned short count) {for(; count !=0 ; count--){timer0_stop();timer0_source(CK1024);timer0_start();while( inp(TCNT0) < 9 ){}}timer0_stop();} für das Delay muß "timer.h" eingebunden werden. Atmel: AT90S8515 LCD: Displaytech 204 A von Reichelt Elektronik (4*20)
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.