Forum: Mikrocontroller und Digitale Elektronik RAM Löschen bei Nokia Display!


von dewe (Gast)


Lesenswert?

Hallo,

Ich bin dabei ein Nokia 3310 Display anzusteuern. Funktioniert auch 
mittlerweile, dass ich irgendwelche Pixel setze.

Doch jetzt habe ich den folgenden COde eingespielt und ab dem Display 
CLEAR macht das DIsplay nicht weiter. ALso die init Methode wird 
aufgerufen, die Kommandos werden alle gesendet(das letzte KOmmando ist 
ALL ON; wird auch ausgeführt) und dann würde das CLEAR RAM kommen, doch 
das funktioniert nicht. Ich sehe auf dem Display das die 1. Zeile nicht 
gesetzt ist, aber sonst bleibt das display schwarz.

Hat jemand vielleicht eine Idee woran das liegen könnte??

Danke schon im Voraus!!

mfg

Hier mal der COde:
1
#include<18F4680.h>
2
#use delay (clock=20000000)
3
#fuses HS, NOWDT, NOPROTECT, NOLVP
4
5
#include<stdlib.h>
6
#include<stdio.h>
7
8
void init_spi();
9
void init_lcd();
10
void write_data(int8 data);
11
void write_command(int8 command);
12
void write_data(int8 data);
13
void write_zeichen();
14
void clear_ram();
15
void goto_xy(int8 x, int8 y);
16
17
void main (void) {
18
   init_spi();
19
   init_lcd();
20
   
21
   write_zeichen();
22
     
23
   while(true) { }
24
}
25
26
void init_spi() {
27
   setup_spi(SPI_MASTER | SPI_CLK_DIV_16);
28
}
29
30
void init_lcd() {
31
   output_high(PIN_D2);  //COMMAND MODE: D/C -> 1
32
   output_high(PIN_D3);  // SCE- Chip disabled
33
   delay_us(100);
34
35
   //Display reset
36
   output_high(PIN_B0); // RES  
37
   delay_us(0.5);
38
   output_low(PIN_B0); // RES  
39
   delay_ms(20);
40
   output_high(PIN_B0); // RES  
41
  
42
   delay_us(100);
43
   
44
   write_command(0x21);   // Enhanced mode
45
   write_command(0x90);   //Vop
46
   write_command(0x13);   //bias
47
   write_command(0x20);   //normalmode
48
   write_command(0x09);   //All on
49
50
   clear_ram();   //clear RAM
51
52
   write_command(0x08);   // mod control blank change (all off)
53
   write_command(0x0c);   // mod control normal change
54
}
55
56
void write_data(int8 data) {
57
   output_high(PIN_D2);  //COMMAND MODE: D/C -> 1
58
   delay_us(100);
59
60
   output_low(PIN_D3);   // chip enabled
61
   delay_us(100);   
62
   spi_write(data);
63
   output_high(PIN_D3);   // chip disabled
64
   delay_us(100);
65
}
66
67
void write_command(int8 command) {
68
   output_low(PIN_D2);  //COMMAND MODE: D/C -> 0
69
   delay_us(100);
70
71
   output_low(PIN_D3);   // chip enabled
72
   delay_us(100);   
73
   spi_write(command);
74
   output_high(PIN_D3);   // chip disabled
75
   delay_us(100);
76
}
77
78
void write_zeichen() {
79
   goto_xy(0,0);
80
   write_data(0xAA);
81
   write_data(0xFF);
82
   write_data(0xAA);
83
   write_data(0xFF);
84
   write_data(0xAA);
85
   write_data(0xFF);
86
   write_data(0xAA);
87
}
88
89
void clear_ram() {
90
   int8 i;
91
   
92
   goto_xy(0,0);
93
   for (i=504; i>0; i--) {
94
     write_data(0x00);
95
  }
96
}
97
98
void goto_xy(int8 x, int8 y) {
99
   write_command(0x40|(y&0x07));   // Y axe initialisation: 0100 0yyy
100
   write_command(0x80|(x&0x7f));   // X axe initialisation: 1xxx xxxx
101
}

von dewe (Gast)


Lesenswert?

Hallo,

Ich habe das mit dem Display RAM löschen gelöst. Ich habe einfach ein 
kleines delay in die for - Schleife eingebaut. jetzt dürfte das mit dem 
löschen funktionieren.

Leider tritt jetzt ein anderes Problem auf:

Ich habe eine Funktion write_zeichen(int8 data) geschrieben die 
irgendwelche Pixel setzen soll, doch diese werden nie angezeigt.

Hat jemand eine Idee was ich falsch gemacht haben könnte??

Danke schon im Voraus!

mfg

von dewe (Gast)


Lesenswert?

Hallo ich bins scho wieder!!

Ich war ein bisschen zu voreilig. Die RAM clear Funktion funktioniert 
doch noch nicht.

mfg

von iCarly (Gast)


Lesenswert?

A wa

von dewe (Gast)


Lesenswert?

??

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