Dip204-4 Display

Gast #1369492
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
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.
Gast #1369695
>Problem, wenn RE aber wieder auf 0 zurückgesetzt wird, wird N auch
>geändert --> d.h. die Anzahl Zeilen..??

Nein, N wird nicht mehr beachtet wenn du auf
4 Zeilen umgeschaltet hast.
#1369708
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.