mikrocontroller.net

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


Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt anhängen bitte??
Gruss

Autor: TorstenS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
// Typendefinition
typedef unsigned char byte;
typedef unsigned int  word;

// KS0073 DIP204 Sonderzeichen
byte code sonderzeichen[] = { // Beispiele für 8 Sonderzeichen
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
  0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,
  0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,
  0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,
  0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,
  0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
  0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
  0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F
};


// ***********************************************************************
// Definieren eines Sonderzeichen
// Übergabe: lcd_addr : Adresse
//           lcd_zeichen: Zeiger auf das 1. Byte der Zeichendefinition
// ***********************************************************************
void write_lcd_cg(byte lcd_addr, byte *lcd_zeichen) {
byte lcd_i;
  for(lcd_i = 0; lcd_i < 8; lcd_i++) {
    write_lcd(0x40 + lcd_addr * 8 + lcd_i,1); // CG RAM Adresse Set (01aa azzz)
    write_lcd(*lcd_zeichen,0);  // Data Write 8x Pixelzeile
    lcd_zeichen++;
  }
} 

// ***********************************************************************
// Definieren von 8 Sonderzeichen
// Übergabe:  lcd_zeichen: Zeiger auf das Zeichenfeld (8x8 Byte)
// ***********************************************************************
void write_lcd_cg_block(byte *sonderzeichenblock) {
byte lcd_i;
  for(lcd_i = 0; lcd_i < 8; lcd_i++) {
    write_lcd_cg(lcd_i, &sonderzeichenblock[lcd_i * 8]);
  }
} 

// ********************************************************************
// Hauptprogramm
// ********************************************************************
void main (void) {
  write_lcd_cg_block(sonderzeichen); // Sonderzeichen definieren
  write_byte_lcd(0); // Sonderzeichen 0-7 darstellen (aktuelle Kursorpos.)
  write_byte_lcd(1);
  write_byte_lcd(2);
  write_byte_lcd(3);
  write_byte_lcd(4);
  write_byte_lcd(5);
  write_byte_lcd(6);
  write_byte_lcd(7);
}

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

Autor: Alain F. (fox82)
Datum:

Bewertung
0 lesenswert
nicht 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

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.