Forum: Mikrocontroller und Digitale Elektronik Anstuerung eines Grafik LCDs. Fragen zu Display und Controller


von M. M. (mrmcchicken)



Lesenswert?

Hallo zusammen,
zu später Stunde wollte ich mich ein wenig mit einem Grafik LCD 
auseinander setzen welches ich vor kurzem auch hier im Forum internen 
Markt gekauft hab.
Es handelt sich um ein 320 * 240 Display. Die Bezeichnung lautet:
WG320240BX.
Das ist nun das erste mal, dass ich mich mit Grafik LCDs beschäftige, 
habe allerdings schon Erfahrung mit LCDs mit HD44780 Controller gemacht.

Bevor ich etwas auf dem Display ausgeben kann will ich aber erst mal ein 
wenig die Ansteuerung verstehen, nicht unbedingt eine Library kopieren 
und einfügen.
Also nun konkret zu meinen Fragen:
1. Laut Datenblatt des Displays (siehe Anhang) lässt sich das Display 
mit einem 6800 und 8080 Interface ansprechen. Ein wenig habe ich nun 
gegooglet und festgestellt, dass dies nur unterschiedliche Controller 
sind. Allerdings wird unterschiedlich bei der Ansteuerung verfahren. Ist 
es grundsätzlich egal mit welchem Interface ich verfahre? Weiterhin ist 
in der Spalte "Level" nichts dazu angegeben. Es steht lediglich 1:68, 
0:80 in der Zeile Beschreibung. Soll das nun bedeuten bei einer 1 ist 
das 6800 Interface zu benutzen und bei einer 0 das 8080 Interface? Ist 
es egal wann dieser Zustand vor dem senden von Befehlen erreicht wird?

2. Pin 15 steht für Chip select. Dieser ist bei 0 Aktiv.
Allerdings ist nur ein s1d13700 verbaut. Heißt das, ich kann den Pin 
dauerhaft auf 0 lassen, da ich keinen anderen Chip ansprechen will?

3. Im Datenblatt des s1d13700 ist von "System Address pins 1 - 15" die 
Rede. Diese werden im Datenblatt des Displays selber nicht erwähnt. Auf 
der Platine selber sind diese auch mit Vss verbunden. Das bedeutet nun, 
es ist "nur" eine indirekte Adressierung möglich richtig?
Wie funktioniert diese Adressierung nun? Was sind die unterscheide zur 
direkten?
Kann ich einfach, ähnlich wie bei dem HD44780 Controller einen Pin (hier 
A0) auf den Zustand für Befehle setzen, einen Befehl durch die 
Anschlüsse "Data bus line" schicken und mit "Enable" ist die Sache dann 
soweit gegessen? (würde dem 6800 Interface entsprechen richtig?)

4. Um ein LCD mit dem HD44780 Controller zu Initialisieren braucht es ja 
einige Unterschiedliche Bytes als Ausgabe. Im Datenblatt des s1d13700 
Controllers steht nun nur: "SYSTEM SET - Initializes device and display 
- Control Byte Value (40h) - No. of Bytes (8)"
Was soll nun ausgegeben werden um das Display zu Initialisieren? Was ist 
40h für eine Schreibweise und wofür steht es? Und was hat die Anzahl der 
Bytes damit zu tun? Leider kann ich hier gerade nicht besonders viel 
rein interpretieren.

5. Kurze Frage zum Schluss: Am Anfang des Datenblattes steht" Version: B 
- Page 6 - Modify Vdd-Vss 5V". Ich nehme mal an die gesamte Logik kann 
nun mi 5V betrieben werden richtig? Ich möchte ja nicht direkt das 
schöne Display grillen.

MfG

von S. R. (svenska)


Lesenswert?

Ganz spontan, allgemein und unkonkret:

1. Im 8080-Modus sind die Steuerleitungen "Read" und "Write", im 
6800-Modus sind sie "Direction" und "Enable". Wenn du die Ansteuerung 
per Hand machst, ist es egal, ansonsten solltest du das auswählen, was 
zu deinem verwendeten Controller passt - und dann den Modus-Auswahlpin 
entsprechend mit Vcc oder GND fest verdrahten.

2. Ja, du kannst Chip-Select dauerhaft aktivieren. Sinnvoller ist es 
aber, diesen Pin anzusteuern. Damit verhinderst du, dass der Baustein 
sich irgendwelche Störungen einfängt, wenn irgendwelche Pins gerade 
floaten oder so.

3. Ja, scheint als ob die Adresspins (außer A0) nicht rausgeführt sind. 
Wie man das indirekte Interface benutzt, steht in den Kapiteln 11 und 14 
der Epson-Dokumentation.

4. Die Darstellung 40h ist dasselbe wie 0x40 und du sollst, wenn du 
dieses Register mit indirekter Adressierung beschreibst, die acht Bytes 
für Register 0x00 bis 0x07 gleich als Parameter mitschicken.

Zitat: "The SYSTEM SET command is used to configure the S1D13700F01 for 
the display used and to exit power save mode when indirect addressing is 
used. The values from REG[00h] through REG[07h] are passed as parameters 
when the SYSTEM SET command is issued."

5. Ich würde Kapitel 5 (Electrical Characteristics) beachten, ehe ich da 
doof rumrate. Da steht, dass du 5V für die Logik benutzen sollst, und 
23.8V für das Display.

von Georg G. (df2au)


Lesenswert?

S. R. schrieb:
> 23.8V für das Display.

Die macht das Board selbst. Man braucht nur das übliche Kontrast Poti.

von M. M. (mrmcchicken)


Lesenswert?

Hallo. Danke euch soweit.
Ich habe mir einen kleinen Adapter gebastelt und das ganze mal 
angeschlossen. Soweit funkrioniert die Hintergrundbeleuchtung. Außerdem 
bekomme ich auch die Kontrastspannung von -23.8V.

Zu Punkt 4 hätte ich aber noch Fragen.
Auf der Seite 70 steht wie man das LCD initialisiert. Allerdings 
verstehe ich die Tabelle nicht ganz.
So wie ich das verstehe muss ich 9 Bytes ausgeben. Die Bytes selber 
werde auf Seite 103 erklärt.
Auf seite 69 steht, dass das Register 8 Bytes besitzt. Diese sind 
irgendwie durch nummeriert. Von C bis P8.
Sind C bis P8 nun Register womit ich parameter für die Initialisierung 
setzte? Wie kann ich ein bestimmtes Register (C bis P8) ansprechen?
Oder bin ich auf dem Holzweg?

MfG

: Bearbeitet durch User
von Ronny S. (phoenix-0815)


Lesenswert?

K. M. schrieb:
> Zu Punkt 4 hätte ich aber noch Fragen.
> Auf der Seite 70 steht wie man das LCD initialisiert. Allerdings
> verstehe ich die Tabelle nicht ganz.

Hallo,

lade Dir das mal und schaue es Dir an sollte alles drin sein was Du 
brauchst.

http://www.winstar.com.tw/service.php?lang=de&EID=7&ProID=83#inquiry

http://www.winstar.com.tw/download.php?DID=12


Gruß Ronny

von M. M. (mrmcchicken)


Lesenswert?

Ronny S. schrieb:
> K. M. schrieb:
>> Zu Punkt 4 hätte ich aber noch Fragen.
>> Auf der Seite 70 steht wie man das LCD initialisiert. Allerdings
>> verstehe ich die Tabelle nicht ganz.
>
> Hallo,
>
> lade Dir das mal und schaue es Dir an sollte alles drin sein was Du
> brauchst.
>
> http://www.winstar.com.tw/service.php?lang=de&EID=...
>
> http://www.winstar.com.tw/download.php?DID=12
>
> Gruß Ronny

Ah es gibt also doch Beispiel Code. Danke für den Hinweis!
Leider ist der Code für 8051 Controller.
Zum Glück Aber in Assembler, sollte also halbwegs gut
für AVR Controller übernommen/umgeschrieben werden können.

von M. M. (mrmcchicken)


Lesenswert?

Also ich habe mal heute versucht auf dem Display was auszugeben. Das 
funktioniert leider nicht. Also prinzipiell habe ich ab Seite 103
des Datenblattes die Tabelle bis zu der Ausgabe von "E" und "P" versucht 
in Code umzusetzen. Leider bekomme ich weder E oder P noch Cursor 
angezeigt.
Ich habe die Pins 7-14 mit den Pins 0 - 7 von PORTD verbunden.
Die Leitungen Enable, A0 etc. liegen auf PORTB. (siehe code)

Kann mir jemand sagen ob ich irgendwelche offensichtlichen Fehler drin 
habe?
Das Kontrast Poti ist mit dem wiper auf V0, die anderen Seiten sind auf 
+5V und -23,8V.
1
.equ E = 0
2
.equ A0 = 1
3
.equ W_R = 4
4
.equ CS = 3
5
.equ RST = 5
6
.equ SEL = 2
7
8
.def temp = r16
9
10
ldi temp, 0xFF
11
out DDRD, temp
12
out DDRB, temp
13
14
sbi PORTB, SEL
15
cbi PORTB, RST
16
nop
17
nop
18
nop
19
sbi PORTB, RST
20
21
22
;------------------------------------------ initialisieren
23
24
ldi temp, 0x40
25
out PORTD, temp
26
rcall cmd
27
28
ldi temp, 0x38
29
out PORTD, temp
30
rcall dta
31
32
ldi temp, 0x87
33
out PORTD, temp
34
rcall dta
35
36
ldi temp, 0x07
37
out PORTD, temp
38
rcall dta
39
40
ldi temp, 0x3f
41
out PORTD, temp
42
rcall dta
43
44
ldi temp, 0x49
45
out PORTD, temp
46
rcall dta
47
48
ldi temp, 0x7f
49
out PORTD, temp
50
rcall dta
51
52
ldi temp, 0x80
53
out PORTD, temp
54
rcall dta
55
56
ldi temp, 0x00
57
out PORTD, temp
58
rcall dta
59
;----------------------------------- scroll
60
61
ldi temp, 0x44
62
out PORTD, temp
63
rcall cmd
64
65
ldi temp, 0x00
66
out PORTD, temp
67
rcall dta
68
69
ldi temp, 0x00
70
out PORTD, temp
71
rcall dta
72
73
ldi temp, 0x40
74
out PORTD, temp
75
rcall dta
76
77
ldi temp, 0x00
78
out PORTD, temp
79
rcall dta
80
81
ldi temp, 0x10
82
out PORTD, temp
83
rcall dta
84
85
ldi temp, 0x40
86
out PORTD, temp
87
rcall dta
88
89
ldi temp, 0x00
90
out PORTD, temp
91
rcall dta
92
93
ldi temp, 0x04
94
out PORTD, temp
95
rcall dta
96
97
ldi temp, 0x00
98
out PORTD, temp
99
rcall dta
100
101
ldi temp, 0x30
102
out PORTD, temp
103
rcall dta
104
;----------------------------------- HDOT SCR
105
106
ldi temp, 0x5a
107
out PORTD, temp
108
rcall cmd
109
110
ldi temp, 0x00
111
out PORTD, temp
112
rcall dta
113
114
;------------------------------------ OVLAY
115
116
ldi temp, 0x5b
117
out PORTD, temp
118
rcall cmd
119
120
ldi temp, 0x01
121
out PORTD, temp
122
rcall dta
123
124
;------------------------------------ Disp on/off
125
126
ldi temp, 0x58
127
out PORTD, temp
128
rcall cmd
129
130
ldi temp, 0x56
131
out PORTD, temp
132
rcall dta
133
134
135
;----------------------------------- CSRW
136
ldi temp, 0x46
137
out PORTD, temp
138
rcall cmd
139
140
141
ldi temp, 0x00
142
out PORTD, temp
143
rcall dta
144
145
146
ldi temp, 0x00
147
out PORTD, temp
148
rcall dta
149
150
;------------------------------- CSR Form
151
152
ldi temp, 0x5d
153
out PORTD, temp
154
rcall cmd
155
156
ldi temp, 0x04
157
out PORTD, temp
158
rcall dta
159
160
ldi temp, 0x86
161
out PORTD, temp
162
rcall dta
163
164
;------------------------------- Disp on off
165
166
ldi temp, 0x59
167
out PORTD, temp
168
rcall cmd
169
170
171
;------------------------------- CSR Dir
172
173
ldi temp, 0x4c
174
out PORTD, temp
175
rcall cmd
176
177
;----------------------------- MWrite
178
179
ldi temp, 0x42
180
out PORTD, temp
181
rcall cmd
182
183
ldi temp, 0x45
184
out PORTD, temp
185
rcall dta
186
187
ldi temp, 0x50
188
out PORTD, temp
189
rcall dta
190
191
192
193
loop:rjmp loop
194
195
196
197
cmd:
198
cbi PORTB, W_R
199
cbi PORTB, CS
200
sbi PORTB, A0
201
sbi PORTB, E
202
nop
203
nop
204
nop
205
nop
206
nop
207
cbi PORTB, E
208
ret
209
210
dta:
211
cbi PORTB, W_R
212
cbi PORTB, A0
213
cbi PORTB, CS
214
sbi PORTB, E
215
nop
216
nop
217
nop
218
nop
219
nop
220
cbi PORTB, E
221
ret

von Ronny S. (phoenix-0815)


Lesenswert?

////////////////////////////////////////////////////////////////////////
// So hier nun auch nochmal in C ist selbst erklärend
//
// nicht schön aber er macht was er soll
//
// Viel Spaß damit !
//////////////////////////////////////////////////////////////////////// 
///
#ifndef SED133x
#define SED133x

#ifndef GLCD_WIDTH
#define GLCD_WIDTH         320
#endif

#ifndef GLCD_HEIGHT
#define GLCD_HEIGHT        240
#endif

#ifndef GLCD_CHAR_WIDTH
#define GLCD_CHAR_WIDTH    8
#endif

#ifndef GLCD_CHAR_HEIGHT
#define GLCD_CHAR_HEIGHT   8
#endif

#ifndef GLCD_RST
#define GLCD_RST           PIN_C3
#endif

#ifndef GLCD_RD
#define GLCD_RD            PIN_B5
#endif

#ifndef GLCD_WR
#define GLCD_WR            PIN_B1
#endif

#ifndef GLCD_CS
#define GLCD_CS            PIN_B2
#endif

#ifndef GLCD_A0
#define GLCD_A0            PIN_B4
#endif

#ifndef ON
#define ON                 1
#endif

#ifndef OFF
#define OFF                0
#endif

#define GLCD_TEXT_ADDR              0x0000
#define GLCD_GRAPHICS_ADDR          GLCD_WIDTH * GLCD_HEIGHT / 64
#define GLCD_GRAPHICS_ADDR_END      GLCD_GRAPHICS_ADDR + (GLCD_WIDTH * 
GLCD_HEIGHT / 8)

#if GLCD_CHAR_WIDTH < 9
   #define GLCD_CR (GLCD_WIDTH/8 - 1)
#else
   #define GLCD_CR (GLCD_WIDTH/4 - 2)
#endif
#define TGLCD_COMMAND   output_high(GLCD_A0);
#define TGLCD_DATA      output_low(GLCD_A0);

int8 glcd_readByte();
void glcd_sendByte(int8 data);
void glcd_fillScreen(int1 color);
void glcd_fillScreenText(char c);
void setCursorAddress(int16 addr);
void glcd_pixel(int16 x, int16 y, int1 color);
int8 getData(int16 addr);
void glcd_sendCMD(int8 cmd);

void glcd_systemSetup();
void glcd_scrollSetup();
void glcd_overlaySetup();
void glcd_power(int1 mode);
void glcd_cursorDirection(int8 dir);
void glcd_cursorForm(int8 width, int8 height);
void setData(int16 addr, int8 data);

#define GLCD_CMD_SYSTEM          0x40  // General system settings
#define GLCD_CMD_SLEEP           0x53  // Enter into standy mode
#define GLCD_CMD_DISP_OFF        0x58  // Turn the display off
#define GLCD_CMD_DISP_ON         0x59  // Turn the display on
#define GLCD_CMD_SCROLL          0x44  // Setup text and graphics 
address regions
#define GLCD_CMD_CSR_FORM        0x5D  // Set cursor size
#define GLCD_CMD_CSRDIR_RIGHT    0x4C  // Cursor moves right after write 
to display memory
#define GLCD_CMD_CSRDIR_LEFT     0x4D  // Cursor moves left after write 
to display memory
#define GLCD_CMD_CSRDIR_UP       0x4E  // Cursor moves up after write to 
display memory
#define GLCD_CMD_CSRDIR_DN       0x4F  // Cursor moves down after write 
to display memory
#define GLCD_CMD_CGRAM_ADDR      0x5C  // Configure character generator 
RAM address
#define GLCD_CMD_HDOT_SCR        0x5A  // Set horizontal scroll rate
#define GLCD_CMD_OVERLAY         0x5B  // Configure how layers overlay
#define GLCD_CMD_SET_CSR_ADDR    0x46  // Set the cursor address
#define GLCD_CMD_GET_CSR_ADDR    0x47  // Read the cursor address
#define GLCD_CMD_DISPLAY_WRITE   0x42  // Write to display memory
#define GLCD_CMD_DISPLAY_READ    0x43  // Read from display memory

void glcd_init(int1 mode)
{
   // Initialze some pins
   output_high(GLCD_RST);
   output_high(GLCD_CS);
   output_high(GLCD_RD);
   output_high(GLCD_WR);

   glcd_systemSetup();
   glcd_scrollSetup();
   glcd_overlaySetup();
   glcd_power(OFF);
   glcd_cursorForm(4, 6);
   glcd_fillScreen(OFF);
   glcd_fillScreenText(' ');
   glcd_power(mode);
   glcd_cursorDirection(GLCD_CMD_CSRDIR_RIGHT);
}

void glcd_pixel(int16 x, int16 y, int1 color)
{
   int8  data;
   int16 addr;

   // Calculate the byte address containing the pixel
   addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8);

   // Read the byte of data at the address
   data = getData(addr);

   // Turn the pixel on or off
   if(color == ON)
      bit_set(data, 7 - x%8);
   else
      bit_clear(data, 7 - x%8);

   // Write the new data byte to display memory
   setData(addr, data);
}


// Purpose:    Initialize the display environment
void glcd_systemSetup()
{
   glcd_sendCMD(GLCD_CMD_SYSTEM);          // Setup the system
   TGLCD_DATA                              // Set for data
   glcd_sendByte(0x30);                    // No offset
   glcd_sendByte(0x7F + GLCD_CHAR_WIDTH);  // Set character width
   glcd_sendByte(GLCD_CHAR_HEIGHT - 1);    // Set character height
   glcd_sendByte(GLCD_CR);                 // Display line address range
   glcd_sendByte(0x2F);                    // TC/R
   glcd_sendByte(GLCD_HEIGHT - 1);         // Number of lines per frame
   glcd_sendByte(GLCD_CR + 1);             // Horizontal address range 
LSB (APL)
   glcd_sendByte((GLCD_CR + 1) / 0xFF);    // Horizontal address range 
MSB (APH)
}

void glcd_scrollSetup()
{
   // Currently setup for a text and graphics layer
   glcd_sendCMD(GLCD_CMD_SCROLL);              // Setup scrolling
   TGLCD_DATA                                  // Set for data
   glcd_sendByte(GLCD_TEXT_ADDR);              // SAD1L
   glcd_sendByte(GLCD_TEXT_ADDR / 0xFF);       // SAD1H
   glcd_sendByte(GLCD_HEIGHT - 1);             // SL1
   glcd_sendByte(GLCD_GRAPHICS_ADDR);          // SAD2L
   glcd_sendByte(GLCD_GRAPHICS_ADDR / 0xFF);   // SAD2H
   glcd_sendByte(GLCD_HEIGHT - 1);             // SL2
   glcd_sendByte(0x00);                        // SAD3L
   glcd_sendByte(0x00);                        // SAD3H
   glcd_sendByte(0x00);                        // SAD4L
   glcd_sendByte(0x00);                        // SAD4H

   glcd_sendCMD(GLCD_CMD_HDOT_SCR);            // Horizontal scroll rate
   TGLCD_DATA                                  // Set for data
   glcd_sendByte(0x00);                        // Horizontal pixel shift 
is 0
}

void glcd_overlaySetup()
{
   // Currently setup for a single graphics layer
   glcd_sendCMD(GLCD_CMD_OVERLAY);              // Text / graphic 
overlay mode
   TGLCD_DATA                                   // Set for data
   glcd_sendByte(0x09);                         // Area 1 text, others 
graphics
                                                // Text XOR Graphics
}

void glcd_power(int1 mode)
{
   if(mode == ON)
   {
      glcd_sendCMD(GLCD_CMD_DISP_ON);           // Turn the display on
   }
   else
   {
      glcd_sendCMD(GLCD_CMD_DISP_OFF);          // Turn the display off
   }

   TGLCD_DATA                                   // Set for data
   glcd_sendByte(0x14);
}

void glcd_cursorDirection(int8 dir)
{
   glcd_sendCMD(dir);
}

void glcd_cursorForm(int8 width, int8 height)
{
   glcd_sendCMD(GLCD_CMD_CSR_FORM);             // Cursor form and size
   TGLCD_DATA                                   // Set for data
   glcd_sendByte(width);
   glcd_sendByte(0x80 + height);
}

screen

void glcd_fillScreen(int1 color)
{
   int16 i;

   setCursorAddress(GLCD_GRAPHICS_ADDR);
   glcd_sendCMD(GLCD_CMD_DISPLAY_WRITE);
   TGLCD_DATA

   for(i = GLCD_GRAPHICS_ADDR; i < GLCD_GRAPHICS_ADDR_END; ++i)
   {
      glcd_sendByte(0xFF * color);
   }
}

screen

void glcd_fillScreenText(char c)
{
   int16 i;

   setCursorAddress(GLCD_TEXT_ADDR);
   glcd_sendCMD(GLCD_CMD_DISPLAY_WRITE);
   TGLCD_DATA

   for(i = GLCD_TEXT_ADDR; i < GLCD_GRAPHICS_ADDR; ++i)
   {
      glcd_sendByte(c);
   }
}

void glcd_sendByte(byte data)
{
   output_d((data));
   output_low(GLCD_CS);
   delay_cycles(1);
   output_low(GLCD_WR);
   delay_cycles(2);
   output_high(GLCD_WR);
   output_high(GLCD_CS);
}

int8 glcd_readByte()
{
   byte data;
   set_tris_d(0xFF);
   output_low(GLCD_CS);
   delay_cycles(1);
   output_low(GLCD_RD);
   delay_cycles(2);
   data = input_d();
   output_high(GLCD_RD);
   output_high(GLCD_CS);

   return data;
}

int8 getStatus()
{
   int8 status;
   TGLCD_DATA
   output_low(GLCD_CS);
   output_low(GLCD_RD);
   delay_us(1);
   status = input_d();
   output_high(GLCD_RD);
   output_high(GLCD_CS);

   return status;
}

int16 getCursorAddress()
{
   int16 addr;

   glcd_sendCMD(GLCD_CMD_GET_CSR_ADDR);
   TGLCD_DATA
   *(int8*)(&addr    ) = glcd_readByte();  // Read low part
   *(int8*)(&addr + 1) = glcd_readByte();  // Read high part

   return addr;
}

void setCursorAddress(int16 addr)
{
   glcd_sendCMD(GLCD_CMD_SET_CSR_ADDR);
   TGLCD_DATA
   glcd_sendByte(*(int8*)(&addr    ));
   glcd_sendByte(*(int8*)(&addr + 1));
}

int8 getData(int16 addr)
{
   setCursorAddress(addr);
   glcd_sendCMD(GLCD_CMD_DISPLAY_READ);
   TGLCD_DATA
   return glcd_readByte();
}

void setData(int16 addr, int8 data)
{
   setCursorAddress(addr);
   glcd_sendCMD(GLCD_CMD_DISPLAY_WRITE);
   TGLCD_DATA
   glcd_sendByte(data);
}

void glcd_sendCMD(int8 cmd)
{
   TGLCD_COMMAND
   glcd_sendByte(cmd);
}

#endif

von Ronny S. (phoenix-0815)


Lesenswert?

Sorry wollte das eigentlich noch ändern und den Code anhägen.
Eventuell könnte das bitte mal ein Mod machen, Danke.
Gruß Ronny

von M. M. (mrmcchicken)


Lesenswert?

Ronny S. schrieb:
> Sorry wollte das eigentlich noch ändern und den Code anhägen.
> Eventuell könnte das bitte mal ein Mod machen, Danke.
> Gruß Ronny

Leider nicht ganz für jemanden der kaum C kann.
Kannst du mir evtl. sagen an welche Pins die Datenleitungen 
angeschlossen werden? Irgendwie finde ich die Info nirgends.

Bei meinem Assembler Code habe ich noch den Stackpointer richtig 
gesetzt, da sonst das Programm gar nichts gemacht hat. Allerdings 
bekomme ich immer noch nichts angezeigt.

von Ronny S. (phoenix-0815)


Lesenswert?

Hallo,
also habe dann auch mal extra die Boardsuche genutzt um Dir hier weiter 
zu helfen.

Beitrag "[v] LCDs 320x240 s/w, 6 Zoll, Touch, inkl Controller"

Gruß Ronny

von M. M. (mrmcchicken)


Lesenswert?

Ich bin leider nicht wirklich fit in C deshalb verstehe ich den Code nur 
teilweise. Außerdem wollte ich erst nur ein oder zwei Zeichen ausgeben.
Kann mir evtl sagen wieso mein ASM Code nicht funktioniert?
Ich habe am Anfang noch den Stackpointer gesetzt und einen kleinen Delay 
eingefügt. Etwa 500µs.
Mir ist außerdem aufgefallen, dass der Pegel am SEL Pin auf wenige mV 
abfällt wenn dieser mit dem Display verbunden ist? Kann das so stimmen?
Es fließen 77mA!

MfG

: Bearbeitet durch User
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.