Hallo liebe Gemeinde! Ich habe ( wie schon 1000 Andere vor mir ) ein Problem mit meinem LCD. Display : von Display Elektronik GmbH DEM 20485 SYH-LY LCD-Controller KS0066 (4x20) Microcontroller : ATMega32 Programmiergerät : AVR Evaluations-Board (Version2.0.1) Programmiert in : C (AVR Studio / PonyProg) Ich sitze seit ca. 14 Tagen an diesem LCD und bekomme es nicht zum Laufen. Habe diverse Tutorials, Beiträge gelesen... (nix hilft) Hat Jemand Erfahrungen mit der Hardware??? Kann mir Jemand mit einem Tip weiterhelfen? Bei Interesse schicke ich alle Codes etc.. Bin für alle Tips dankbar! Vielen Dank im Voraus.
Schaltplan wäre nett. Was geht denn nicht ? Versuchs mal mit einer 44870 Lib. Der Kontroller ist kompatibel.
Hallo Pete K. Das geht ja schnell hier... Schaltplan : Genau so ist mein LCD mit dem ATMega32 verdrahtet... http://www.s-jordan.de/index.php?page=display Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken... (Initialisierung klappt) Meine Vermutung ist, dass etwas mit der Frequenz des Microcontrollers nicht stimmt??? Ich habe keine Ideen mehr...
Hi >Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken... >(Initialisierung klappt) Nö. Zeigt nur an, das das LCD (wahrscheinlich) noch funktioniert. Nach erfolgreicher Initialisierung sind die Balken weg. Ohne, daß du etwas mehr bekanntgibst, wirst du wahrscheinlich kaum Hilfe erwarten können. MfG Spess
Hallo. OK spess53! Bloß wo soll ich anfangen. Ich werde alles bekannt geben, was Du möchtest. Ich fange am Besten bei den Fuses an. ( ATmega32 ) - So habe ich meine Fuses gesetzt. (Dateianhang) Hoffe ich habe den Beitrag richtig verstanden... http://www.mikrocontroller.net/articles/AVR_Fuses Falls weitere Informationen benötigt werden, ich gebe alles Preis, bloß ich möchte erstmal nicht unnötig das Forum zumüllen... Danke euch
Hängt das LCD an Port C? JTAG deaktivieren! >Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken... >(Initialisierung klappt) Eher ein Zeichen, das die Initialisierung nicht klappt.
Hi
>Genau so ist mein LCD mit dem ATMega32 verdrahtet...
Dort steht aber z.B. nur Px... Wo hast du das an deinem Controller
konkret angeschlossen?
Von welchem Programm stammen die Fuses-Einstellungen?
MfG Spess
Ich habe das LCD am PORTB. Ich bin schon alles mehrmals durchgegangen (Aschluss etc) Am portC (eher unwichtig) ist eine lichtschranke angeschlossen. Wenn die Lichtschranke verdeckt ist, geht eine LED für 5s an (auch port C). Parallel dazu geht die LCD Beleuchtung an... das klappt (hat ja auch nichts mit der Initialisierung zu tun) Gruss
P.S. Die Fuses habe ich mit PonyProg eingestellt. Ich habe bedenken, ob die Zeiten bei der Initialisierung korrekt sind??? Das kann wiederum auf die Fuses zurückzuführen sein... ..... void display_init(unsigned char eingangsport) { switch(eingangsport) { case 'A': zeiger_auf_port=&PORTA; DDRA=0xFF; break; case 'B': zeiger_auf_port=&PORTB; DDRB=0xFF; break; case 'C': zeiger_auf_port=&PORTC; DDRC=0xFF; break; case 'D': zeiger_auf_port=&PORTD; DDRD=0xFF; break; } power=1; *zeiger_auf_port |= (1<<LCD_PW); wait_10_millisek(); *zeiger_auf_port = (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); wait_10_millisek(); *zeiger_auf_port = (1<<LCD_D1)|(1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // 4-bit Mode *zeiger_auf_port= (1<<LCD_D1)|(1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW); wait_500_mikrosek(); *zeiger_auf_port= (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // RE=1 *zeiger_auf_port = (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW); wait_500_mikrosek(); *zeiger_auf_port= (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // RE=1 *zeiger_auf_port = (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW); wait_500_mikrosek(); *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // 4-Zeilen Mode *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); *zeiger_auf_port= (1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW); wait_500_mikrosek(); *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // RE=0 *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW); *zeiger_auf_port= (1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); *zeiger_auf_port= (1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW); wait_10_millisek(); *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN); // Display Ein, Cursor Aus, Cursor Nicht-Blinkend *zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW); *zeiger_auf_port= (0<<LCD_D0)|(1<<LCD_D1)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<< LCD_EN); *zeiger_auf_port= (0<<LCD_D0)|(1<<LCD_D1)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW); wait_10_millisek(); clear_display(); } .....
Hi Jetzt muss ich dir leider sagen, das meine Kenntnisse bezüglich PonyProg als auch C mehr oder weniger rudimentär sind. Von PonyProg weiss ich nur, das es da einen 'umgekehrten' Zusammenhang zwischen 'Häkchen' und Fuse gibt. MfG Spess
kein problem. Trotzdem vielen Dank. ich werde mir doch lieber neues LCD kaufen. Bekomme dieses Ding einfach nicht zum Laufen. Liebe Grüsse
Doktere seit zwei Monaten dran rum. Mein Ergebnis: im Anhang Versuch es doch auch mal. Gruß gustav... Da sind noch ein paar bugs drin. OK. Aber: die Sequenz muß lauten: Hex30 Hex28 Hex28 Hex01 Hex02 Hex06 Hex0E Ende Initialisierung zweizeilig
Hallo Karl B. Im Assembler und in Bascom ist es kein Problem. Was ich bezwecke ist eher eine LCD Ansteuerung in C. Initialisierung etc. Ich danke Dir trotzdem für Deine Mühe. Liebe Grüsse
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.