www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD (HD44780) wie krieg ich da ein Zeichen rein? =)


Autor: Claudio H. (Firma: BLS-Electronics) (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche gerade ein LCD mit dem KS0066 Controller mittels 3-Wire
also
Schieberegister anzusteuern....

Nun sind ein paar fragen aufgetaucht:

1. Ist die Pause zwischen den Enabled Flanken kritisch?
bzw. ist es schlimm wenn sie länger dauert als üblich oder ist länger
egal?

2. Mir ist klar wie man Befehle an das LCD sendet, ich habe jedoch
nirgends einen hinweis darauf gefunden, wie man ein Zeichen
an das LCD sendet... Könnte mir da jemand den ablauf posten? Danke!


Jo, das waren eigentlich schon meine fragen

Danke schonmal

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist Kitzlich.

Aber bestimmt nicht Unmöglich!

Autor: Claudio H. (Firma: BLS-Electronics) (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit kitzlich?

Ich weiss das es geht, aber ich weiss nicht in welcher form man
dem LCD ein Zeichen übergeben muss

Ich denke mal

RS muss High sein

aber was kommt an D0 - D7 ??

Autor: SF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt des KS0066, und das findest du durch Googlen, sind wie bei 
solchen Datenblättern üblich, auch Tabellen über das Timing 
(AC-Charachteristics) bei verschiedenen Betriebsspannungen angegeben. 
Etwas tiefer ist ein nettes Diagramm, das die Bedeutung der 
verschiedenen angegebenen Zeiten erleutert. Da steht nur was von 
minnimalen Zeiten, die eingehalten werden müssen. Nichts von maximalen 
Zeiten. Bei 5V, zum Beispiel, darf der E-Impuls nicht kürzer als 230ns 
sein und sich nicht schneller als alle 500ns wiederholen. Länge Pausen 
müssten deshalb eigentlich unkritisch sein, es sei den der Chip hat noch 
merkwürdige, im Datenblatt undokumentierte, Eigenarten.

Der Chip versteht aber kein 3-Wire Protokoll. Das ist dann wohl eine 
zusätzliche Hardware (das Schieberegister) von dir.

RS muss 1 sein und an D0-D7 kommt der ASCII-Code des Zeichens, das du 
ausgeben willst. Vorraussetzung ist natürlich, das der Chip vorher 
richtig initialisiert worden ist.

Der Chip ist übrigens HD44780 kompatibel(=ein Nachbau). Und für den 
finden sich massig Programmierbeispiele im Netz.

Autor: Claudio H. (Firma: BLS-Electronics) (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok

Danke für deine Info...

Ich weiss, das der KS0066 kein 3-Wire Protokoll versteht, deshalb auch 
das schieberegister... =)

Das mit dem ASCII Code wollte ich wisse :D

Danke!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Claudio H. (Firma: BLS-Electronics) (hedie)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Link

Ich habe mir den code bis jetz jedoch schon geschrieben....

Leider macht er nicht das was er soll....


Es zeigt kein A an... im anhang ist mein C Code für die Ansteuerung....
Ich wäre sehr froh, wenn in sich jemand kurz anschauen könnte :D

Mein PORT: PORTB
Meine Pins:

PB0 => Enable
PB1 => RS
PB2 => CLK des Schieberegisters

RS ist zugleich mit dem Eingang des Registers verbunden....

So wollte ich das LCD verwenden:
#include <avr/io.h> 
#include "control.c"


int main(void)
{
  DDRB = 0Xff;
  PORTB = 0;
  
  while(1)
  {
    initialize();
    A();
    while(1);
  }
}

Doch leider nix auf dem LCD

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt keine Lust, jeder Deiner Schieberoutinen zu kontrollieren.
Mach Dir erstmal ne Funktion, die ein Byte rausschiebt und dann übergibt 
einfach die entsprechenden Bytes.

Und hau die 1ms zwischen den Taktflanken raus oder hast Du das 
Schieberegister mit Relais aufgebaut.
Normale HC-Logik brauchen kein Delay, langsame 4000-er CMOS ~1µs.

Der Enable-Puls sollte ~1µs sein und danach die im Datenblatt 
angegebenen Wartezeiten (~50µs bei Datenbytes, ~2ms bei Display-Clear).


Peter

Autor: Oliver Gerlach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Thema Zeichen reinladen: Bei meinem HD44780 mache ich das so:
LcdCommand(0x40);    // first cgram address
LcdStringFL(man0,8);
Die zweite Funktion lädt ein String vom Flash ins Display. Wenn man den 
Display mit obigem Befehl vorher sagt, daß er ins CG schreiben soll, ist 
jedes Byte des Strings eine Zeile des Zeichens. Bei einer Zeichenhöhe 
von 8 Zeilen braucht man also 8 byte. Der einzige Witz ist also wirklich 
der Befehl 0x40 (bzw. auch jede andere Adresse). Der Befehl heißt im 
Datenblatt vom LCD 162C (reichelt) "SET CG RAM ADDRESS". Steht auf der 
Seite P.5. Hoffe, das hilft.
Grüße,
Oliver

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles über LCD-Ansteuerung wurde HIER schon 500x geschrieben.
Eher 600x.
Alles!
Ohne Ausnahme!
Ausführlich!

WIESO jetzt schon wieder von vorne?
WIESO?

Jochen Müller

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was meinst du mit kitzlich?

>Ich weiss das es geht, aber ich weiss nicht in welcher form man
>dem LCD ein Zeichen übergeben muss

>Ich denke mal

>RS muss High sein

>aber was kommt an D0 - D7 ??

ich meine das Timeing zur init des LCD!

Wenn da irgendwas drin ist, was Du  nicht "voraus gesehen hast",
läuft das LCD nicht!

Trotzdem versuche es und stelle das Ergebnis bitte
allen hier zur Verfügung.

Danke Carsten

Autor: C. Hediger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wies ausschaut wirds aber nicht klappen.... :(

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.