www.mikrocontroller.net

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

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum: 05.05.2008 22:56

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: 06.05.2008 00:39

Datenblatt anhängen bitte??
Gruss
Autor: TorstenS (Gast)
Datum: 06.05.2008 07:29

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: 06.05.2008 14:43
Dateianhang: KS0073.pdf (923,2 KB, 36 Downloads)

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: 06.05.2008 15:12

// 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 Fuchs (fox82)
Datum: 05.06.2008 23:35

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net