www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RE bit beim KS0073


Autor: KS0073 RE-Bit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

kann mir jemanden vielleicht erklären wie man beim KS0073 Controller den 
RE  Bit verstehen muss? Ich kann das Display initialisieren, 
addressieren und mit Text versehen oder nicht.
Ich schicke alle Commands folgendermassen rein:
RS, RW und RE sind 3 pins vom uC.
void write_cmd(unsigned char c)
{
DATA = c;         
RS = 0; 
RW = 0;            
DelayPORXLCD();
RE = 1;                     // Clock the command in
DelayPORXLCD();
RE = 0;
DelayPORXLCD();

return;
}


dann kommt:
write_cmd(0b000011101); //je nach dem was ich will

So kenne ich es von dem HD controller:
Der RE-Bit ist der Bit der zum Reinschieben der Befehle benutzt wird.

Jetzt: Im Datenblatt ist eine "Instructions Set" Tabelle wo die 
beliebiege Einstellungen beschrieben werden. Was dort RE=1 oder RE=0 
bedeutet ist mir rätselhaft. Ich dachte am Anfgan das hätte was mit dem 
Flankenwechsel beim Clocken zu tun... es passiert aber nichts wenn ich 
meine Befehle mit aufsteigender Flanke zum display reinschiebe.

Vielen Dank im Voraus,

Juan

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ergänzung:

Ich kann dann die Hälfte der Einstellungen nicht machen, weil ich nix 
mit den RE = 1 - Befehle anfangen kann.

Das ist mein Hauptproblem.

:)

danke,

Juan

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe jetzt nicht ganz, was da unklar ist, aber das Enable (das 
hier offensichtlich RE heißt, bei HD44780 heißt es einfach E) wird 
gesetzt, wenn die Daten an den Eingängen anliegen und muss dann für eine 
kurze Zeit (minimale Enable-Pulsbreite) auf High bleiben und wird dann 
wieder zurückgesetzt.

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RE = Enable beim KS0073.

Die Daten/Befehle die am Port DATA liegen, werden erst beim 
Flankenwechsel vom 0 auf 1 in den Controller geschoben. Oder verstehe 
ich das falsch?

Daher weiss ich nicht was die Info ENABLE = 0 oder ENABLE = 1 im 
Instruction Set bedeutet.

gruß,

J

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Juan (wieder ich) wrote:
> RE = Enable beim KS0073.
>
> Die Daten/Befehle die am Port DATA liegen, werden erst beim
> Flankenwechsel vom 0 auf 1 in den Controller geschoben. Oder verstehe
> ich das falsch?
Das verstehst Du im Prinzip richtig. Die Daten müssen aber schon am Port 
anliegen, wenn RE auf High geht. Und RE muss für eine gewisse Zeit High 
bleiben.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RE ist kein Pin am Display, sondern ein Bit das man
mit dem Function Set Befehl setzen oder löschen kann.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich glaube du bringst da etwas durcheinander. Es gibt das Pin E (nicht 
RE)
und es gibt das Bit RE (Extended function registers enable bit).

E hat die gleiche Funktion, wie bei anderen Text-LCDs. RE ermöglicht den 
Zugriff auf den erweiterten Registersatz.

MfG Spess

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Johannes,

Das heisst,

wenn ich meine Funktion so schreibe:
void write_cmd_re1(unsigned char c)
{
DATA = c;         
RS = 0; 
RW = 0;            
DelayPORXLCD();
RE = 0;                     // Clock the command in
DelayPORXLCD();
RE = 1;
DelayPORXLCD();


return;
}

sollte es funktionieren?

Da liegt mein Befehl schon am Port bevor ich von 0 auf 1 mit RE gehe. 
(Natürlich mit den entsprechenden Delays für die Zeiteinhaltung)

gruß,

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AAAACCCHHHSOO...

Das kann natürlich ganz richtig sein!

Vielen dank Speess!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger wrote:
> RE ist kein Pin am Display, sondern ein Bit das man
> mit dem Function Set Befehl setzen oder löschen kann.
Das sehe ich jetzt auch... Hab grad mal das Datenblatt durchgeblättert.

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt:

wie spreche ich mein RE bit an? Irgendwo muss es definiert werden.
Wenn es kein PIN am Display oder uC ist, dann was ist es? (RW und RS 
sind auch pins am uC)

gruß,

Juan

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist was Holger geschrieben hatte...
ich habs überlesen!

Danke Holger!

Juan

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

Bewertung
0 lesenswert
nicht lesenswert
RE Bit ist ein Bit der "Function Set". Dein Bsp. kann so nicht 
funktionieren, um aber dabei zu bleiben musst Du bei DATA = c; bereits 
das RE-Bit in die c-Variable integriert haben. (vor der Ausgabe!)

Durch das RE-Bit werden mehr Funktionen, die der KS0073 hat, erst 
möglich.

Anlage Datenblatt, das solltest Du erst mal lesen...

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias,

Das Datenblatt habe ich gelesen. Ich glaube, RE mit einem Pin des 
Displays zu verwechseln ist nicht schwer wenn der direkt neben den 
anderen 2 wichtige pins des displays steht. RE und E für enable können 
auch verwechselt werden. Daher mein thread.

"Datenblatt, das solltest Du erst mal lesen..." hättest du dir sparen 
können.


Jetzt an den Rest:

vielen Dank,

wie kann ich jetzt meine Wörter Blinken lassen.

ich habe mein RE bit im Function Set enablet, dann mit RE = 1 habe ich 
im function set  BE = 1 gesetzt. Die Data die danach zum display schicke 
blinkt aber nicht.

Geht das so?

gruß.

Juan

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bsp. für DIP204 (4x20Zeichen)
// ***********************************************************************
// Blinkposition auf dem LCD-Displays setzen / Blinken ein/ausschalten
// Übergabe: lcd_x : Spalte (0...SPALTEN_MAX-1)
//           lcd_y : Zeile  (0...ZEILEN_MAX-1)
//           lcd_blink :   0 - Blinken/Cursor aus
//                         1 - Blinken an
//                         2 - Cursor  an
// ***********************************************************************
void blink_lcd(uchar lcd_x, uchar lcd_y, uchar lcd_blink) {
uchar lcd_offset;
  if (lcd_x > (SPALTEN_MAX - 1)) lcd_x = 0;
  if (lcd_y > (ZEILEN_MAX  - 1)) lcd_y = 0;
  switch (lcd_y) {
    case 0:  lcd_offset = 0x80; break;   // Zeile 1
    case 1:  lcd_offset = 0xA0; break;   // Zeile 2 
    case 2:  lcd_offset = 0xC0; break;   // Zeile 3
    case 3:  lcd_offset = 0xE0; break;   // Zeile 4 
    default: lcd_offset = 0x80;          // Zeile>4
  };
  write_lcd(lcd_x +l cd_offset,1);       // Blinkposition setzen
  if (lcd_blink == 1) write_lcd(0x0D,1); // Blinken ein
  if (lcd_blink == 2) write_lcd(0x0E,1); // Cursor ein
}


Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

@ Matthias: Es geht um TEXT Blinken, nicht um CURSOR Blinken

>Ich glaube, RE mit einem Pin des Displays zu verwechseln ist nicht schwer >wenn 
der direkt neben den...

Doch, wenn man weiß, das RW von Read/Write und RS von Register Select 
kommt und die Funktion kennt.

>ich habe mein RE bit im Function Set enablet, dann mit RE = 1 habe ich
>im function set  BE = 1 gesetzt.

???????. Kann es sein, das du etwas chaotisch veranlagt bist?

MfG Spess

Autor: Juan (wieder ich) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne... ich bin eigentlich ganz ordentlich.
Bin ein bisschen im stress nur...

Ich mache den text über eine clear-and-write Schleife mit einfachen 
Delays blinken. Ich weiss man kann einzelne ASCII Chars entweder 
blinkend oder fest darstellen... ich weiss aber nicht ob das mit ganzen 
Strings, über einen einfachen Displaybefehl geht.

gruß,

Juan

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.