Ich bin ehrlich gesagt gerade ein bisschen am Verzweifeln. Ich habe
meine Routinen jetzt folgendermaßen:
Ich habe jetzt die Werte von Spess übernommen für die Homeadressen.
1 | // 0x0000 = 0
|
2 | GLCD_Daten (0x00); // Grapic home address (low)
|
3 | GLCD_Daten (0x00); // ...(high)
|
4 | GLCD_Befehl (0x42); // ...
|
5 |
|
6 | GLCD_Daten (0x1E); // Graphic area set (low)
|
7 | GLCD_Daten (0x00); // ...(high)
|
8 | GLCD_Befehl (0x43); // ...
|
9 |
|
10 | // 0x1700 = 5888
|
11 | GLCD_Daten (0x00); // Text home adress (low)
|
12 | GLCD_Daten (0x17); // ...(high)
|
13 | GLCD_Befehl (0x40); // ...
|
14 |
|
15 | GLCD_Daten (0x1E); // Text area set (low)
|
16 | GLCD_Daten (0x00); // ...(high)
|
17 | GLCD_Befehl (0x41); // ...
|
18 |
|
19 | // Weiteres
|
20 | GLCD_Befehl (0x80); // Mode set (OR)
|
21 | GLCD_Befehl (0x9C); // Display mode (Grafik und Text)
|
22 |
|
23 |
|
24 | Speicher_Loeschen(); // Den gesamten Speicher löschen
|
Speicher löschen ruft nacheinander diese beiden Funktionen auf, welche
den gesamten Inhalt des RAMs löschen sollen indem sie 0en hinein
schreiben:
1 | void Grafik_Speicher_Loeschen(void)
|
2 | {
|
3 | unsigned int i;
|
4 |
|
5 | Speicher_Adresse(0x0000);
|
6 |
|
7 | for(i=0; i<(0x16FF); i++)
|
8 | {
|
9 | GLCD_Daten(0);
|
10 | }
|
11 | GLCD_Position(1,1);
|
12 | }
|
1 | void Text_Speicher_Loeschen(void)
|
2 | {
|
3 | unsigned int i;
|
4 |
|
5 | Speicher_Adresse(0x1700);
|
6 |
|
7 | for(i=0x1700; i<(0xFFFF); i++)
|
8 | {
|
9 | GLCD_Daten(0);
|
10 | }
|
11 | GLCD_Position(1,1);
|
12 | }
|
Eigentlich habe ich mir vorgestellt, dass nun das Display leer ist. Aber
Pustekuchen =( es ist voller Müll.
So sieht meine Routine aus um zu einer bestimmten Speicheradresse zu
springen. Im Prinzip ist es die selbe wie hier:
http://www.mikrocontroller.net/attachment/highlight/16188
Nur leicht geändert, da meine Ausgabe-Funktionen mit 8 Bit arbeiten.
Also habe ich die 16 Bit Adresse in zwei 8 Bit Variablen gewandelt und
übertrage diese einzeln. Erst Low, dann High.
1 | void Speicher_Adresse (unsigned int Adresse)
|
2 | {
|
3 | unsigned char Low;
|
4 | unsigned char High;
|
5 |
|
6 | Low = Adresse&255;
|
7 | Adresse=Adresse>>8;
|
8 | High = Adresse&255;
|
9 |
|
10 | GLCD_Daten(Low);
|
11 | GLCD_Daten(High);
|
12 | GLCD_Befehl(0x24);
|
13 | }
|
>Hast du den Anfang des Grafikspeichers berücksichtigt. Das Byte links
>oben ist Grafik Home.
Das verstehe ich nicht, was meinst du damit?
Nabend