Hallo, Ich habe ein Problem ein Lcd Display anzusteuern mit einem C8051F124 Mikrokontroller von Silabs. Das Display(GDM1602A) bsitzt ein KS0066U Controller. Ich habe einfach ein Problem das Display richtig zu Initialisieren da es außer der Funktion Funktion Set (Display Modus wählen 1 Zeilig oder 2 Zeilig u.s.w.) keine weiteren Operationen ausführt. Desweitern nimmt das Display die Befehle nur Binär an, also durch setzen jedes einzelnen Pins DB7-DB0.Wäre net wenn da mir jemand weter helfen könnte, bräuchte hier vieleicht einfach mal ein C-Code Beispiel mit allen Programmroutinen auch mit einer String ausgabe, Danke im Vorraus.
mikromaster schrieb: > Desweitern nimmt das Display die Befehle nur Binär an, also > durch setzen jedes einzelnen Pins DB7-DB0. Erklär das mal bitte genauer. > Ich habe einfach ein Problem das Display richtig zu > Initialisieren da es außer der Funktion Funktion Set (Display Modus > wählen 1 Zeilig oder 2 Zeilig u.s.w.) keine weiteren Operationen > ausführt. Woran erkennst du das? Schau mal auf Seite 26 im Datenblatt [1] zum ks0066 nach. Da steht haarklein beschriben, wie man ein Diplay mit einem solchen Conroller initialisert. [1] http://www.lcd-module.de/eng/pdf/zubehoer/ks0066.pdf Gruß Skriptkiddy
Ja also das display erscheint zu anfang wenn ich es in betrieb nehme mit einer hellen Zeile und einer Dunklen Zeile. Das heist es ist Standart mäßig in 1 Zeilen Modus, 5x11, 8Bit Betrieb. Nach Function set aktiviert es zumindestens Zwei Zeilen aber sonst gar, kein curser blinken und die weitern standard einstellungen die ich in meiner Init Funktion einstelle werden nicht übernommen. Die signale sind auch Ok,sie liegen auch wie ich sie einstelle am display an und somit ist es ein rein Software techniches Problem. Um an das Display Befehle zu senden setze ich jeden bin einzelnd Z.B. so : void lcd_Init(void){ LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; wait_ms(30);//wait beginn DB0 = 0;//Set Function DB1 = 0; DB2 = 1; DB3 = 1; DB4 = 1; DB5 = 1; DB6 = 0; DB7 = 0; LCD_EN = 1; zeit_s(3); LCD_EN = 0; DB0 = 0;//Entry Mode DB1 = 0; DB2 = 0; DB3 = 0; DB4 = 0; DB5 = 1; DB6 = 1; DB7 = 1; LCD_EN = 1; zeit_s(3); LCD_EN = 0; DB0 = 0;//Display on/cursor Blinkt DB1 = 0; DB2 = 0; DB3 = 0; DB4 = 1; DB5 = 1; DB6 = 1; DB7 = 1; LCD_EN = 1; zeit_s(3); LCD_EN = 0; Da es in Hexadezimal nicht Funktioniert und die signale an den port Pins nicht richtig anliegen so z.B.: LCD_RS = 0; LCD_RW = 0; P6 = 0x01H //clear Display LCD_EN = 1; zeit_s(3); LCD_EN = 0; oder ist die Zeitschleife vieleicht mau, es steckt hinter zeit_s nur eine simple for Schleife die aber lange genug zählt um die mindest zeiten für die datenübernahme eizuhalten.
Die SiLabs MCUs sind bis auf wenige Ausnahmen 3V Controller. Dein Display ist wie ich annehme ein 5V-LCD, oder? Wie hast du die Pegelkonvertierung vorgenommen? Ralf
mikromaster schrieb: > eine simple for Schleife die aber lange genug zählt um die mindest > zeiten für die datenübernahme eizuhalten. Ist die im Assembler-Code noch enthalten? Je nach Optimierungs-Level werden leere Schleifen gerne rausoptimiert. Für Keil und Raisonance fügt man _nop_(); in die Schleife ein, für SDCC asm nop endasm; > einer hellen Zeile und einer Dunklen Zeile. Das heist es ist Standart > mäßig in 1 Zeilen Modus, 5x11, 8Bit Betrieb. So verhalten sich meine Displays, wenn sie nicht initialisiert wurden... unn tschuess Bernhard
Hier der Ganze Quellcode es Handelt sich um ein Steuerungsprogramm für einen Asynchronmotor der über einen Frequenzumrichter gesteuert wird. Áuf meinen Mikrokontroller läuft ein von mir erzeugtes Programm was Drehzahl,Frequenz und Spannung einstellt sowie die Drehzahl erfasst und die über ein Lcd Display anzeigt.
Mein Display wird über einen DC DC wandler versorgt der von 3.3 auf 5V Spannungversorgung hochpuscht, also daran sollte es nicht liegen.
> Mein Display wird über einen DC DC wandler versorgt der von 3.3 auf 5V > Spannungversorgung hochpuscht, also daran sollte es nicht liegen. Das ist aber nur die Hälfte. HAST du eine Pegelkonvertierung für die Datenleitungen des Displays oder nicht? Bzw. akzeptiert das Display die Pegel des Controllers als High-Pegel? Wenn nicht brauchst du mindestens Pull-Ups nach 5V und die Ausgänge des Controllers müssen auf Open-Drain konfiguriert werden! Ralf
Ja, danke habt mir echt geholfen Lcd Display geht jetzt gruß Kay
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.