Dip204-4 Display

Gast #1369492
Lesenswert?

hallo
benutze das display dip204-4 (20Spalten / 4Zeilen)

habe ein problem mit den adressierung der zeilen. laut datenblatt wäre 
es: 0x00
0x20
0x40
0x60

jedoch funktioniert dies nicht ganz...

zweites problem ist, nach spalte 13 springt es automatisch auf zeile 2!

kann jemand helfen?

im anhang der code fürs display..

initialisierung bin ich auch nicht ganz sicher obs stimmt?!

kontroller ist ks0073 und nicht hd44780

gruss
Angehängte Dateien:
Gast #1369506
Lesenswert?

Wenn du dir die Speicherzuweisung im Datenblatt des KS0073 ansiehst, 
wirst du merken das er nur 24 Zeichen speichert ( ohne Extenion ) -> 24 
/ 2 -> 12, dh. das die 2. Zeile ab Speicherstelle 13 beginnt, da für 2 
Zeilen nur ein KS0073 verwendet wird.
#1369708
Lesenswert?

Hallo,

RE schaltet den Registersatz um. Schau Dir die Liste mal an, es gibt 
fast überall Bedeutungen mit RE = 1 und RE = 0.

Also RE in seinem Register auf 1, zusammen mit den Werten für DL, N, BE, 
LP setzen.
Den Kram in den Extended Registern einstellen und am Schluß
das Register mit RE = 0 und passendem DL, N, DH, REV setzen.
Wenn NW auf 1 ist (4 Zeilen) wird laut Datenblatt N sowieso ignoriert.

Gruß aus Berlin
Michael
Gast #1372211
Lesenswert?

denke meine initialisierung ist jetzt richtig:

void lcd_init(void)
 {
  delay_ms(40);
  RS=RW=0;

  lcd_send(0b00101100,1);  //function set --> RE=1!
  delay_us(50);
  lcd_send(0b00001001,1);  //extended function set
  delay_us(50);
  lcd_send(0b00100000,1);  //function set --> RE=0!
  delay_us(50);
  lcd_send(0b00100000,1);  //function set in 4-Bit Mode
  delay_us(50);
  lcd_send(0b00001100,1);  //Display On-Off Control
  delay_us(50);
  lcd_send(0b00000001,1);  //Display Clear
  delay_ms(2);
  lcd_send(0b00000110,1);
 }


jedoch klappt es immer noch nicht mit den 4-Zeilen. Nach zeile 0 springt 
es automatisch auf zeile 2 und nicht auf zeile 1. Die Zeilen 1 und 3 
sind sozusagen unbrauchbar!



Hier noch die lcd_send() funktion:

void lcd_send(int8 value, int1 four)
 {
 delay_cycles(1);
 EN=1;
 D7=bit_test(value,7);
 D6=bit_test(value,6);
 D5=bit_test(value,5);
 D4=bit_test(value,4);
 delay_cycles(1);
 EN=0;            //Oberes Nibble senden
 delay_cycles(1);
 if(four)
  {
  EN=1;
  D7=bit_test(value,3);
  D6=bit_test(value,2);
  D5=bit_test(value,1);
  D4=bit_test(value,0);
  delay_cycles(1);
  EN=0;
  }
 delay_us(30);
 }

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