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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.