mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Initialisierung Display EA DIP204-4 (KS0073)


Autor: Thomas Wyschkony (thomas-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

auch auf die Gefahr hin, dass das Thema bereits irgendwo abgehandelt 
ist, ich habe neben der Forensuche auch Google bemueht, leider 
erfolglos, erlaube ich mir hier, ein paar Details zur Initialisierung 
o.g. Displays zu erfragen (bevor ich noch durchdrehe)

Mir geht es darum, ein Display mit KS0073 so zu initialisieren, dass es 
mit 4 Bit angesteuert wird und 4 Zeilen darstellt (muss aber 
zwischendrin auch mal auf 2 Zeilen und zurueck eingestellt werden)

Ich habe mehrere Routinen im Netz gefunden und keine keine davon 
funktioniert bei mir, deshalb ein paar detailierte Fragen:

1. Wenn ich auf 4Bit-Uebertragung umschalte, dann lege ich ja das 
Bitmuster 0010 xxxx an D7-D0 an (die unteren 4 Bit sind ja nicht 
aufgelegt also ist deren Zustand erstmal egal... oder nicht). Wenn ich 
nun den Pin E kurz auf 1 lege, erwartet da der Controller danach das 
untere Nibble an D7-D4 (xxxx) oder den naechsten Befehl, welcher ja dann 
4Bit-maessig abgearbeitet wird?

2. In vielen Beispielen ist die Rede davon, dass man vor dem 
Initialisieren das Display loeschen soll. "Clear Display" ist folgendes 
Bitmuster: 0000 0001. Wie soll ich das an den Controller bringen, wenn 
D3-D0 nicht aufgelegt sind und sich der Controller im 8-Bit-Modus 
befindet?

3. Was hat es mit dem RE-Bit auf sich? In der Befehlstabelle ist es wie 
ein Pin aufgefuehrt, allerdings kommt es auch im "Function Set" vor. Wie 
ist mit diesem Bit zu verfahren? Nach laengerem Ueberlegen verstehe ich 
das so, dass es mit dem "Function Set" gesetzt werden muss, um dann 
anderswo zur Verfuegung zu stehen. Ganz dahinter gestiegen bin ich 
jedoch nicht.

Ueber sachdienliche Hinweise freue ich mich sehr,

vielen Dank schonmal im Voraus,

Thomas

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
überlege mal wie man 8 bit daten über 4bit interface senden kann
......ich geb dir nen tip ... nacheinander !!

die steuerleitungen bestimmen ob gerade ein befhel oder ob Daten 
gesendet werden ... woher soll der LCD controller das auch wissen wenn 
man es ihm nicht sagt
Enable sagt den LCD ebenso das jetz die daten übernommen werden können 
...


aber da sieht man mal das programmieren doch was anderes ist als sich 
quelltexte zu suchen und den mist per copy und paste zusammenzuklatschen

Autor: Thomas Wyschkony (thomas-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>überlege mal wie man 8 bit daten über 4bit interface senden kann
......ich geb dir nen tip ... nacheinander !!

Das ist mir schon klar. Allerdings befindet sich der Controller nach 
meinem Verstaendnis zunaechst im 8 Bit-Modus. Meine erste Frage war, was 
er nach dem ersten E erwartet. Das untere Nibble oder wird dieses 
Kommando noch im 8 Bit-Modus abgearbeitet, also das untere Nibble 
verworfen?

>die steuerleitungen bestimmen ob gerade ein befhel oder ob Daten
gesendet werden ..

Ist mir auch klar. Als Steuerleitungen sind mir RS und R/W bekannt und 
auch verdrahtet. Das RE-Bit kenne ich dagegen nicht.

>Enable sagt den LCD ebenso das jetz die daten übernommen werden können

Ja

>aber da sieht man mal das programmieren doch was anderes ist als sich
quelltexte zu suchen und den mist per copy und paste zusammenzuklatschen

Deshalb habe ich auch detailierte Fragen gestellt und nicht nach einem 
Quellcode gefragt...

Trotzdem Danke

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und auch bei LCDs hilft http://sprut.de/electronic/lcd/index.htm.

Für die Umschaltung auf den 4-bit Modus werden nur die oberen 4 Bit 
benötigt (0010 ----). Die unteren 4 Bit liest das LCD zwar ein, solange 
es noch im 8 bit Modus ist. Die haben aber dann keine Bedeutung. Bei 
manchen LCD must du die unteren 4 Bit auch mit GND verbinden.

Das RE-Bit ist ein Sofwarebit. Es muss erst mit einem Befehl gesetzt 
werden. Danach gelten dann die Befehle mit gesetztem RE-Bit. Solange bis 
du es wieder zurücksetzt. Zuhause habe ich auch eine Init für dieses 
LCD. Allerdings in PIC-Assembler.

Autor: Thomas Wyschkony (thomas-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

der Link ist sehr interessant, danke dafuer :)

Allerdings fehlt mir darin vermutlich das wichtigste:
>Der Controllerchip KS0073
>...
>4-Bit-Initialisierung
>Die Initialisierung des 4-Bit-Datenbus-Modes weicht etwas vom
>HD44780-Standard ab.

Mist, vielleicht ist genau das mein Problem? Genau hier stelle ich 
naemlich bei den Befehlstabellen keinen Unterschied fest...

Zum Rest Deiner Antwort tausend Dank, das bringt mich weiter und das mit 
dem RE-Bit ist nun auch verstaendlicher ;-)

Wenn jetzt noch jemand mehr zu den zitierten Abweichungen haette... 
super

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich such heute abend mal meine Init raus. Ich glaube mich zu erinnern, 
dass man das RE-Bit einschalten musste um in den 4-Zeilen Mode zu 
kommen. Auch wenn es PIC-Assembler ist, kannst du den Initroutinen 
entnemen, wann welches Byte zum LCD geschickt wird und welche Pausen 
dazwischen sind. Damit solltest du eigentlich weiter kommen.

Autor: derKoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..aus meinen Versuchen mit dem Init von Displays kann ich sagen dass es 
meistens ein Timing-Problem ist wenns nicht klappt. Mach einfach paar 
längere Pausen zwischen den einzelnen Befehlen (zwischen den 2 Nibbles 
natürlich nicht nötig) - die kannst du wenns läuft ja schrittweise 
wieder verringern. Die Abfrage des BusyFlags, wann das Display fertig 
fürs nächste Kommando ist, funktioniert bei manchen Displays auch nicht 
richtig -> das Flag wird einige ms zu früh gesetzt...  da gabs auch 
schon mal einen Thread dazu. => Also während des Inits FESTE Timings 
verwenden...

Autor: Thomas Wyschkony (thomas-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nochmals vielen Dank, vielleicht bekomme ich ja heute noch das erste 
Zeichen auf mein verd.... Display ;-)

Ich fasse mal kurz zusammen:

Das erste Kommando wird auf jeden Fall wie 8 Bit abgearbeitet. Will ich 
also das RE-Bit einschalten muss ich folgendes senden:

Kommando 1: 0010 0000 E (Wird auf 4 Bit umgeschalten)
Kommando 2: 0010      E (oberes Nibble des zweiten Kommandos, nochmal 4 
Bit Modus)
Kommando 2: 0100      E (unteres Nibble, RE-Bit gesetzt)

Das mit dem RE-Bit ist auch klar, ich muss es, sofern benoetigt mit 
einem extra Kommando setzen oder loeschen.

Die Timing-Geschichte ist auch ein guter Hinweis, da werde ich auch mal 
handeln.

Na, dann schau ma mal... dann seh ma scho... nochmals vielen Dank

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;LCD_Port                     DATA     P2
;LCD_EN                       BIT      LCD_Port.4
;LCD_RW                       BIT      LCD_Port.5
;LCD_RS                       BIT      LCD_Port.6
;LCD_Backlight                BIT      LCD_Port.7
;LCD_D4                       BIT      LCD_Port.0
;LCD_D5                       BIT      LCD_Port.1
;LCD_D6                       BIT      LCD_Port.2
;LCD_D7                       BIT      LCD_Port.3

LCD_INIT:

   CALL  LCD_Pause_15ms
   MOV   A,#30h
   CALL  LCD_Intialisieren
   CALL  LCD_Pause_4ms
   MOV   A,#30h
   CALL  LCD_Intialisieren
   CALL  LCD_Pause_4ms
   MOV   A,#30h
   CALL  LCD_Intialisieren
   CALL  LCD_Pause_4ms
   MOV   A,#20h                    ; Ab hier 4-Bit Modus eingestellt
   CALL  LCD_Intialisieren
   CALL  LCD_Pause_4ms
   MOV   A,#_LCD_Schnitstellenbreite
   CALL  LCD_Komando
   MOV   A,#_LCD_AUS
   CALL  LCD_Komando
   MOV   A,#_LCD_Loeschen
   CALL  LCD_Komando
   CALL  LCD_Pause_15ms
   MOV   A,#_LCD_ReturnHome
   CALL  LCD_Komando
   MOV   A,#_LCD_Betriebsart
   CALL  LCD_Komando
   MOV   A,#_LCD_EIN
   CALL  LCD_Komando
RET

Hier mal ein kleiner Auszug wie mans machen könnte!

LCD_Intialisieren sendet nur das Highbyte von 30h.
LCD_Komando gibt das im Akku stehende Zeichen im 4-Bit-Modus aus.
Also Highbyte wird zu erst gesendet dann das Lowbyte.

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.