RE bit beim KS0073

Gast #949133
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.
1
void write_cmd(unsigned char c)
2
{
3
DATA = c;         
4
RS = 0; 
5
RW = 0;            
6
DelayPORXLCD();
7
RE = 1;                     // Clock the command in
8
DelayPORXLCD();
9
RE = 0;
10
DelayPORXLCD();
11

12
return;
13
}


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
#949138
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.
Gast #949140
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
#949149
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.
Gast #949152
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
Gast #949155
Lesenswert?

Hallo Johannes,

Das heisst,

wenn ich meine Funktion so schreibe:
1
void write_cmd_re1(unsigned char c)
2
{
3
DATA = c;         
4
RS = 0; 
5
RW = 0;            
6
DelayPORXLCD();
7
RE = 0;                     // Clock the command in
8
DelayPORXLCD();
9
RE = 1;
10
DelayPORXLCD();
11

12

13
return;
14
}

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ß,
Gast #949171
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...
Angehängte Dateien:
Gast #949206
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
Gast #949443
Lesenswert?

Bsp. für DIP204 (4x20Zeichen)
1
// ***********************************************************************
2
// Blinkposition auf dem LCD-Displays setzen / Blinken ein/ausschalten
3
// Übergabe: lcd_x : Spalte (0...SPALTEN_MAX-1)
4
//           lcd_y : Zeile  (0...ZEILEN_MAX-1)
5
//           lcd_blink :   0 - Blinken/Cursor aus
6
//                         1 - Blinken an
7
//                         2 - Cursor  an
8
// ***********************************************************************
9
void blink_lcd(uchar lcd_x, uchar lcd_y, uchar lcd_blink) {
10
uchar lcd_offset;
11
  if (lcd_x > (SPALTEN_MAX - 1)) lcd_x = 0;
12
  if (lcd_y > (ZEILEN_MAX  - 1)) lcd_y = 0;
13
  switch (lcd_y) {
14
    case 0:  lcd_offset = 0x80; break;   // Zeile 1
15
    case 1:  lcd_offset = 0xA0; break;   // Zeile 2 
16
    case 2:  lcd_offset = 0xC0; break;   // Zeile 3
17
    case 3:  lcd_offset = 0xE0; break;   // Zeile 4 
18
    default: lcd_offset = 0x80;          // Zeile>4
19
  };
20
  write_lcd(lcd_x +l cd_offset,1);       // Blinkposition setzen
21
  if (lcd_blink == 1) write_lcd(0x0D,1); // Blinken ein
22
  if (lcd_blink == 2) write_lcd(0x0E,1); // Cursor ein
23
}
Gast #949453
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
Gast #952155
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren