Forum: Mikrocontroller und Digitale Elektronik Eigene Zeichen bei LCD mit KS0073 für blöde


von Thomas M. (thomas1123) Benutzerseite


Lesenswert?

ich bräuchte mal für blöde erklärt wie das mit der erstellung, der 
eingabe und der verwendung der eigenen zeichen bei einem EA DIP204-4 mit 
KS0073 funktioniert.

ja ich habe das datenblatt gelesen und auch schon hier im forum gesucht 
aber aus beidem bin ich nicht schlau geworden.

meine bisherige vorgehensweise:

lcd im 4-bit mode initialiesieren // klappt inzwischen einwandfrei

dann rs auf 0 setzen // instruction mode
cgram adresse 0b01000000 on das display senden // erst die oberen 4 und 
dann die unteren 4 bit
rs auf 1 setzen // data mode
sende ich die 8 byte für mein zeichen das ich erstellen möchte
rs auf 0
clear lcd
rs auf 1
asci zeichen 0x00 darstellen // ab hier tut sich nixmehr und das display 
bleibt blank

währe vieleicht einer so nett und könnte mir mal ainen beispielcode (C) 
oder genaues ablaufschema aufzeigen ich hänge da jetzt schon seit 2 
tagen dran und krig es einfach nicht gebacken

mfg
thomas

von fubu1000 (Gast)


Lesenswert?

Datenblatt anhängen bitte??
Gruss

von TorstenS (Gast)


Lesenswert?

Hallo,

Bei mir funktioniert es wie im Datenblatt beschrieben.
Allerdings muss man einen Stolperstein beachten:
Die ASCII-Zeichen 0x00...0x07 stellen Steuerzeichen dar, die je nach 
Ausgabefunktion unerwünscht interpretiert werden können. 0x00 beendet 
z.B. einen C-String. Wenn die Ausgabefunktion mit C-Strings operiert und 
als erstes 0x00 ausgegeben werden soll, ist möglicherweise schon Schluss 
bevor es angefangen hat.
Mit einer Einzelzeichenausgabe sollte es aber klappen.

Tschüss
Torsten

von Thomas M. (thomas1123) Benutzerseite


Angehängte Dateien:

Lesenswert?

im anhang das vom controller und hier
http://www.lcd-module.de/deu/pdf/doma/dip204-4.pdf
das vom display an sich

mfg
Thomas

von Matthias (Gast)


Lesenswert?

1
// Typendefinition
2
typedef unsigned char byte;
3
typedef unsigned int  word;
4
5
// KS0073 DIP204 Sonderzeichen
6
byte code sonderzeichen[] = { // Beispiele für 8 Sonderzeichen
7
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
8
  0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,
9
  0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,
10
  0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,
11
  0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,
12
  0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
13
  0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
14
  0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F
15
};
16
17
18
// ***********************************************************************
19
// Definieren eines Sonderzeichen
20
// Übergabe: lcd_addr : Adresse
21
//           lcd_zeichen: Zeiger auf das 1. Byte der Zeichendefinition
22
// ***********************************************************************
23
void write_lcd_cg(byte lcd_addr, byte *lcd_zeichen) {
24
byte lcd_i;
25
  for(lcd_i = 0; lcd_i < 8; lcd_i++) {
26
    write_lcd(0x40 + lcd_addr * 8 + lcd_i,1); // CG RAM Adresse Set (01aa azzz)
27
    write_lcd(*lcd_zeichen,0);  // Data Write 8x Pixelzeile
28
    lcd_zeichen++;
29
  }
30
} 
31
32
// ***********************************************************************
33
// Definieren von 8 Sonderzeichen
34
// Übergabe:  lcd_zeichen: Zeiger auf das Zeichenfeld (8x8 Byte)
35
// ***********************************************************************
36
void write_lcd_cg_block(byte *sonderzeichenblock) {
37
byte lcd_i;
38
  for(lcd_i = 0; lcd_i < 8; lcd_i++) {
39
    write_lcd_cg(lcd_i, &sonderzeichenblock[lcd_i * 8]);
40
  }
41
} 
42
43
// ********************************************************************
44
// Hauptprogramm
45
// ********************************************************************
46
void main (void) {
47
  write_lcd_cg_block(sonderzeichen); // Sonderzeichen definieren
48
  write_byte_lcd(0); // Sonderzeichen 0-7 darstellen (aktuelle Kursorpos.)
49
  write_byte_lcd(1);
50
  write_byte_lcd(2);
51
  write_byte_lcd(3);
52
  write_byte_lcd(4);
53
  write_byte_lcd(5);
54
  write_byte_lcd(6);
55
  write_byte_lcd(7);
56
}

Für write_lcd und write_byte_lcd verwende Deine funktionierenden 
LCD-Ausgaberoutinen, es geht hier nur ums Prinzip.

von Alain F. (fox82)


Lesenswert?

Hallo Thomas Müller

Ich wäre auch an eigenen Zeichen interessiert. Funktioniert es bei dir 
jetzt? Hast du das Display auch wie in diesem Beitrag angeschlossen?

Beitrag "LCD EA DIP204-4 Initialisieren"

Falls ja, wäre es möglich den Code hier zu posten?

Das wäre super.
Wenn alles funktioniert, stelle ich auch mal alle Beiträge zusammen. 
Dann kann man das Display initialisieren, eigene Zeichen erstellen etc. 
Das wäre doch cool!

Danke und Gruss Alain

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.