www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik KS007x CGRAM Adressen


Autor: Björn R. (sushi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo... Also die DDRAm Adressen hab ich jetzt zuhauf gefunden. Ich 
bräuchte aber mal die Adressen vom CGRAM meines Display Moduls. In einem 
Buch habe ich für den HD4470 die folgenden Adressen gefunden:

zeichen  Adresse
0        0x40
1        0x48
2        0x50
3        0x58
4        0x60
5        0x68
6        0x70
7        0x78

Damit funktioniert die Sache auch, nur dass die zeichen durcheinander 
und teilseise nicht vollständig sind.

Ich nehme also an, mein Display hat keinen HD4470 sondern einen KS007x 
oder sowas. Nur dafür finde ich nirgendwo die Adressen. Auf ausprobieren 
hab ich keine Lust, und das Datenblatt, da steht irgendwas ganz anderes 
drin? Oder ich bin zu blöd es zu lesen, oder ich hab noch n ganz anderen 
Display controller. Die normale Ausgabe auf dem Display funktioniert 
aber wie am Schnürchen(mit dem Code aus dem GCC-Tutorial).

hier noch ein Codeschnipsel:

lcd_command(0b0001|0x40);
  for(i=0;i<8;i++)
    lcd_data(bug[0][i]);
  lcd_command(0b0001|0x48);
  for(i=0;i<8;i++)
    lcd_data(bug[1][i]);
  lcd_command(0b0001|0x56);
  for(i=0;i<8;i++)
    lcd_data(bug[2][i]);
  lcd_command(0b0001|0x64);
  for(i=0;i<8;i++)
    lcd_data(bug[3][i]);
  lcd_command(0b0001|0x72);
  for(i=0;i<8;i++)
    lcd_data(bug[4][i]);
  lcd_command(0b0001|0x80);
  for(i=0;i<8;i++)
    lcd_data(bug[5][i]);
  lcd_clear();

Damit gedenke ich die zeichen an den Controller zu übermitteln. Die 
Adressen sind jetzt schon wieder andere, weil ich halt dioch noch ein 
bischen rumexperimentiert habe...

in bug[x][y] sind meine 6 zeichen gespeichert.

Danke schonmal...

Update: Da das erste Zeichen bei benutzung von 0x40 als Startadresse 
genau um eine zeile nach unten verschoben aufgetaucht ist, dachte ich 
mir, ich versuchs einfach mal mit 0x39... Jetzt mag er das aber 
anscheinend gar nicht, da spinnt das ganze Display...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Zu Schreiben in den CG-Ram gibt es ein extra Kommando: 0b01xxxxxx.

>0b0001|0x40

Was soll das sein?

MfG Spess

Autor: Björn R. (sushi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist der befehl, um die CGRAM-Adresse zu setzen...
0001xxxx laut diesem Artikel: 
http://www.mikrocontroller.net/articles/HD44780

hatte das so verstanden, erst die Adresse setzen, dann die 8 Bytes 
senden, die das Zeichen beschreiben.

Der Befehl den du gepostet hast, wird doch durch lcd_data umgesetzt, und 
ist der gleiche, der auch fürs DDRAM benutzt wird...

Wie gehts richtig? ;-)
Danke, Björn.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Dann sieh dir die Tabelle mal richtig an. Die ersten beiden Nullen 
gehören zu RS und RW. Abgesehen davon muss man Binärzahlen ausschreiben. 
Also
z.B.  0b01000000|$48. Der CG-Ram fängt übrigens bei Null an und nicht 
bei 40H. Du musst also mit 'lcd_command(0b01000000)' die CG-Ramadresse 
setzen und danach deine Bitmuster reinschaufeln.

MfG Spess

Autor: Björn R. (sushi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok das mit dem ausschreiben war mir klar, aber nicht aufgefallen... Und 
das andere auch nicht. Klingt vernünftig. Die frage nach der 
Startadresse wäre dann auch geklärt. mal gucken, sollte ich wohl jetzt 
mal zum laufeen bringen! Danke! ich schreib, wenns geklapopt hat!

Edit: leider überhaupt nicht...
lcd_command(0b01000000);
  for(j=0;j<6;j++)
  {
    for(i=0;i<8;i++)
      lcd_data(bug[j][i]);
  }
  lcd_clear();

War doch so gemeint, oder?
Kommt nur Müll bei raus.. Das dritte und vierte zeichen sind komplett 
schwarz, bei den anderen nur vereinzelte Pixel...

Edit 2: ich bin etwas zu überhastet... funktioniert doch. Man sollte nur 
den Code neu compilen bevor man ihn in den AVR brennt ;-)

DANKE fürs Brett vorm kopf wegnehmen!!!

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>War doch so gemeint, oder?

Eigentlich ja. Meine Assemblerroutine prinzipiell genau so aufgebaut.

MfG Spess

Autor: Björn R. (sushi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, danke, funktioniert jetzt perfekt...

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.