www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmierung Lcd Display mit einem C8051F124 von Silabs


Autor: mikromaster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mikromaster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste mal deinen ganzen code.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mikromaster (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kay Servatius (mikromaster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Display wird über einen DC DC wandler versorgt der von 3.3 auf 5V 
Spannungversorgung hochpuscht, also daran sollte es nicht liegen.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Kay Servatius (mikromaster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, danke habt mir echt geholfen Lcd Display geht jetzt

gruß Kay

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.