Forum: Mikrocontroller und Digitale Elektronik [ AVR ] Probleme mit LCD-Display (KS0066)


von pacer (Gast)


Lesenswert?

Hallo,

ich versuche gerade mein Display um laufen zu bekommen, leider bisher 
ohne Erfolg. Eine 8Bit-Version hab ich auf VMLab zum laufen bekommen. 
Das Programm habe ich dann so geändert, dass es nur mit 4 Bit 
angesteuert wird.

Beim Debugging konnte ich keinen Fehler, feststellen. Das Programm macht 
genau das was es soll (zumindest den Registerinhalten nach). Allerdings 
bringt mir VMLab einen Fehler mit dem ich nichts anfangen kann:
DD_RAM adress out of valid range 103.

Nun weiß ich aber auch nicht ob das Display korrekt angeschlossen ist. 
Ausschließen kann ich den Fehler ja bis jetzt nicht.

Vielleicht könnte den Code ja mal jemand für mich testen...
1
 .NOLIST                      ; List-Output unterdrücken
2
3
; .INCLUDE <m8def.inc> 
4
; .include "C:\PROGRA~1\VMLAB\include\m8def.inc"
5
; .include "C:\PROGRA~1\AVR Tools\VMLAB\m8def.inc"
6
 .include "E:\Atmel\AVRStudio\m8def.inc"
7
8
 .equ F_CPU = 7372800                            ; Systemtakt in Hz
9
10
 .def temp = r22
11
 .def temp1 = r23
12
 .def temp2 = r24
13
 .def temp3 = r25        ; für Interrupt
14
15
 .LIST                        ; List-Output wieder aufdrehen
16
 .CSEG                        ; was nun folgt, gehört in den FLASH-Speicher
17
18
 ;------------------------------------------------------
19
 ;     Start Adresse 0000 /Interruptvektoren
20
 ;------------------------------------------------------
21
 .org 0x000
22
  rjmp Init      ; Interruptvektoren überspringen
23
24
 ;------------------------------------------------------
25
 ;     INITIALIZE
26
 ;------------------------------------------------------
27
INIT:
28
;Stack Pointer setzen
29
  ldi temp,high(RAMEND)
30
  out SPH,temp
31
  ldi temp,low(RAMEND)
32
  out SPL,temp
33
34
35
 rcall lcd_init
36
37
38
 ;------------------------------------------------------
39
 ;   HAUPTSCHLEIFE
40
 ;------------------------------------------------------
41
Hauptschleife:          
42
43
44
45
rjmp Hauptschleife
46
47
48
 ;------------------------------------------------------
49
 ;   Subroutinen / ISRs
50
 ;------------------------------------------------------
51
52
53
;****************************************************************
54
;*        LCD Display Routinen Version 04              *
55
;****************************************************************
56
;* Intitialisiert Display mit KS0063 oder kompatiblen           *
57
;* Controller und schreibt einen Text in das Display        *
58
;*                                *
59
;* Controller: Mega8  @ 8Mhz  (7,3...MHz)            *
60
;* Display:  LCD204B LED - Reichelt                          *
61
;* Das Programm steuert das LCD Display mit 4 BIT an!!           *
62
;****************************************************************
63
;
64
;********************************************************************
65
;*    Anschlussplan Display zum AVR                     *
66
;*------------------------------------------------------------------*
67
;*    Pin Belegung Display    : Pin Belegung RNMega8            *
68
;*------------------------------------------------------------------*
69
;* 1.  GND                : 01.  GND                   *
70
;* 2.  +5V            : 02.  +5V                  *
71
;* 3.  Vo Contrast        : 03. über 10k Poti auf +5V      *
72
;* 4.  RS Daten oder Code Input  : 04.  PC2                   *
73
;* 5.  R/W             : 05.  PD6                   *
74
;* 6.  Enable          : 06.  PC3                   *
75
;* 7.   DB0            : 07.    PB0                 *
76
;* 8.   DB1            : 08.   PB1                 *
77
;* 9.   DB2            : 09.   PB2                 *
78
;* 10.  DB3            : 10.   PB3                  *
79
;* 11.  DB4            : 11.   PD2 (not used)          *
80
;* 12.  DB5            : 12.   PD3 (not used)             *
81
;* 13.  DB6            : 13.   PD4 (not used)             *
82
;* 14.  DB7            : 14.   PD5 (not used)             *
83
;* 15. Anode  LED        : 17. +5V über Vorwiderstand R14  *
84
;* 16. Katode LED        : 18.  GND                   *
85
;********************************************************************
86
87
;------------------------------------------------------
88
;   Definierung der Steuerleitungen
89
;------------------------------------------------------
90
.equ  E  =  PC3          ; Enable Leitung
91
.equ  RW  =  PD6          ; Read / Write Leitung
92
.equ  RS  =  PC2          ; Befehlsleitung
93
.equ  Busy =  PD5          ; Busy Leitung   --> not available (4Bit-Modus)
94
95
96
;------------------------------------------------------------------------------------------
97
;   Definierung der Befehle
98
;------------------------------------------------------------------------------------------
99
.equ  lcdcheck   =  0b00110000        ; nur init; kein Konfigurationsbefehl
100
.equ  lcdon     =  0b00001111        ; LCD einschalten
101
.equ  lcdfunction =   0b00101100        ; nur init; Busbreite/LCD-Größe definieren
102
;                 |||||+ reserviert
103
;                 ||||+- reserviert
104
;                    |||+-- F  = 1: 5x10 dots  ; F  = 0: 5x8 dots
105
;                 ||+--- N  = 1: 2 lines    ; N  = 0: 1 lines
106
;                 |+---- DL = 0: 4bits    ; DL = 1: 8 bits
107
;            
108
;.equ  lcdshift   =  0b00000000
109
;                  S/C = 1 Display shift; S/C = 0 Cursor move
110
;                  R/L = 1 shift right; R/L = 0 shift left
111
112
.equ  lcdclear   =  0b00000001    ; LCD löschen
113
.equ  lcdentry   =  0b00000110    ; bei Eingabe eines Zeichen den Cursor um 1 erhöhen
114
.equ  zeile2     =  0b11000000    ; Startadresse der zweiten Display Zeile  
115
116
;------------------------------------------------------------------------
117
;   Definition der Arbeitsregister
118
;------------------------------------------------------------------------
119
.def  up_temp1  =  r16          ; Arbeitsregister 1
120
.def  up_temp2  =  r17          ; Arbeitsregister 2
121
.def  up_temp3  =  r20          ; Arbeitsregister 3
122
.def  up_temp4  =  r21          ; Arbeitsregister 4
123
.def  tim1  =  r18          ; Timerregister 1
124
.def  tim2  =  r19          ; Timerregister 2
125
      
126
;------------------------------------------------------------------------
127
;   Befehle an das LCD Display
128
;------------------------------------------------------------------------
129
130
lcd_init:          ;*** Initialisierung des Displays ***
131
132
ldi  up_temp1,0b11111111        ;
133
  out  ddrb,up_temp1          ; Port B auf Ausgang setzten
134
  out  ddrc,up_temp1          ; Port C auf Ausgang setzten
135
  out  ddrd,up_temp1          ; Port D auf Ausgang setzten
136
137
  rcall   wait15ms          ; 15ms auf Display warten
138
139
  ldi  up_temp1,lcdcheck        ; LCD-check setzen (muß laut Hersteller 3x in das Steuerregister geschrieben werden )
140
  rcall  Befehl_an_LCD          ; Befehl senden
141
  rcall  wait15ms            ; 15ms+5ms warten
142
  ldi  up_temp1,lcdcheck        ; LCD-check setzen
143
  rcall  Befehl_an_LCD          ; Befehl senden
144
  ldi  up_temp1,lcdcheck        ; LCD-check setzen
145
  rcall  Befehl_an_LCD          ; Befehl senden
146
  
147
  rcall  lcd_on            ; Display einschalten
148
  rcall  lcd_clear          ; Display löschen
149
  rcall  lcd_cursor_rechts      ; Verhalten des Cursors festlegen
150
151
  rcall  text1            ; Text 1 senden (Begrüßungstext)
152
  rcall  text2            ; Text 2 senden  (Begrüßungstext)
153
  ret
154
155
156
lcd_on:            ;*** LCD einschalten ***
157
  ldi  up_temp1,lcdon        ; LCD einschalten
158
  rcall  Befehl_an_LCD      ; Befehl senden
159
  ret
160
161
lcd_clear:          ;*** Löschen des Displays ***
162
  ldi  up_temp1,lcdclear      ; LCD löschen
163
  rcall  Befehl_an_LCD      ; Befehl senden
164
  ret
165
166
lcd_cursor_rechts:      ;*** Steuerung des Cursors ***
167
  ldi  up_temp1,lcdentry      ; Entrymode setzten  
168
  rcall  Befehl_an_LCD      ; Befehl senden
169
   ret
170
171
lcd_textausgabe:      ;*** Sendet Text an das Display ***
172
  sbi  portc,RS          ; setzten BIT RS
173
  cbi  portd,RW          ; lösche BIT RW
174
  rcall  sende_Daten        ; Daten ausgeben
175
  rcall  wait5ms  
176
   ret
177
  
178
179
;------------------------------------------------------------------------
180
;   Hilfsprogramme für das Senden von Befehlen und Daten ans Display
181
;------------------------------------------------------------------------
182
183
Befehl_an_LCD:        ;Sendet Befehle an das Display
184
  cbi  portc,RS          ; lösche BIT RS  
185
  cbi  portd,RW          ; lösche BIT RW
186
  rcall  sende_Daten        ; Befehl ausgeben
187
  rcall  wait5ms  
188
  ret
189
190
191
  sende_Daten:        ;UP für Befehle/Text versenden
192
 ;sende high Nibble  
193
  mov up_temp3,up_temp1
194
  swap up_temp3
195
  andi up_temp3, 0b00001111
196
  out portD, up_temp3
197
198
  sbi  portc,E            ; setzten BIT E
199
  nop                ; kein Operation (warten)
200
  nop
201
  nop
202
  cbi  portc,E            ; lösche BIT E
203
204
 ;sende low Nibble
205
  andi up_temp1,0b00001111
206
  out portD, up_temp1
207
208
  sbi  portc,E            ; setzen BIT E
209
  nop                ; kein Operation (warten)
210
  nop
211
  nop
212
  cbi  portc,E            ; lösche BIT E
213
  ret
214
215
216
; **** Zeitschleifen ****
217
218
wait50us:
219
  ldi  tim1, (F_CPU * 50 / 3 / 1000000)
220
 wait51:                ; Schleife benötigt 3 Taktzyklen        
221
  dec  tim1            
222
  brne   wait51        
223
ret                
224
225
wait150us:
226
  rcall wait50us
227
  rcall wait50us
228
  rcall wait50us
229
ret
230
231
wait5ms:
232
  ldi  tim2,100
233
 wait5:
234
  rcall  wait50us
235
  dec  tim2
236
  brne  wait5
237
ret
238
239
wait15ms:
240
  rcall  wait5ms
241
  rcall  wait5ms
242
  rcall  wait5ms
243
ret
244
245
246
; **** Definierung der Texte mit Position ****
247
text1:
248
249
  ldi  up_temp4,14        ; entspricht der Länge der ersten Zeichenkette in Tabelle1
250
  ldi  zl,low(tabelle1*2)    ; Zeige auf Z-Pointer Lowbyte von Tabelle1
251
  ldi  zh,high(tabelle1*2)    ; Zeige auf Z-Pointer Highbyte von Tabelle1
252
 loop_msg1:
253
  lpm              ; lade R0 mit Wert auf der der Z-Pointer zeigt
254
  mov  up_temp1,r0        ; kopiere R0 in up_temp1
255
  rcall  lcd_textausgabe      ; Daten senden
256
;  adiw    zl:zh,1       ; Z-Pointer + 1
257
  adiw    zl,1       ; Z-Pointer + 1
258
 no_carry1:
259
  dec  up_temp4        ; up_temp4 - 1
260
  brne  loop_msg1      ; vergleiche auf Null, wenn nich springe
261
  ret
262
  
263
text2:
264
  ldi  up_temp1,zeile2      ; setzte Cursor in zweite Zeile (Anfang)
265
  rcall  Befehl_an_LCD    ; Befehl senden
266
267
  ldi  up_temp4,16        ; entspricht der Länge der ersten Zeichenkette in Tabelle1
268
  ldi  zl,low(tabelle2*2)    ; Zeige auf Z-Pointer Lowbyte von Tabelle1
269
  ldi  zh,high(tabelle2*2)    ; Zeige auf Z-Pointer Highbyte von Tabelle1
270
loop_msg2:
271
  lpm              ; lade R0 mit Wert auf der der Z-Pointer zeigt
272
  mov  up_temp1,r0        ; kopiere R0 in up_temp1
273
  rcall  lcd_textausgabe      ; Daten senden
274
;  adiw    zl:zh,1       ; Z-Pointer + 1
275
  adiw    zl,1       ; Z-Pointer + 1
276
 no_carry2:
277
   dec  up_temp4        ; up_temp4 - 1
278
  brne  loop_msg2      ; vergleiche auf Null, wenn nicht springe
279
ret
280
281
tabelle1:
282
283
.db  "please wait..."
284
285
tabelle2:
286
287
.db  "system coming up"

von Michael U. (amiga)


Lesenswert?

Hallo,

ich habe nur überflogen...
Befehl an LCD: natürlich müssen die Befehle genau wie die Daten auch im 
4Bit-Mode gesendet werden.

Beim Init: die 0x30 werden nicht als 2 Nibble Befehl gesendet, es wird 
nur das H-Nibble, also 0xf0 angelegt und mit E-Clock übergeben. Das 
Display ist zu dieser Zeit noch im 8-Bit-Mode und ignoriert nur die 
unteren 4 Bit.

Irgendwie habe ich die Umschaltung in den 4 Bit-Mode wohl übersehen?

0x30
E-Clock
0x30
E-Clock
0x30
E-Clock
0x20 -> Schaltet 4 Bit ein
E-clock

0x28 4Bit-Mode, ab HIER als Befehl H-/L-Nibble senden!

Wartezeiten beachten.

Das wichtigste zuletzt: Im 4 Bit-Mode werden D4...D7 des Displays für 
die Daten benutzt...

PS: gilt alles für HD44780, andere "kompatible" Controller können 
abweichen

PPS: habe geradde ins KS0066 Datenblatt geschaut, die Initialisierung 
sieht dort am Anfang merklich anders aus als beim HD44780...

Gruß aus Berlin
Michael

von holger (Gast)


Lesenswert?

Leider hast du die falschen DBx Leitungen vom Display
angeschlossen. Sieh ins Datenblatt wie es richtig gemacht wird.

von pacer (Gast)


Lesenswert?

Stimmt, hab ich auch gerade gemerkt, dass ich nicht in den 4Bitmodus 
schalte.
hab jetzt nach dem LCD-Check folgende Zeilen eingesetzt:

  ldi up_temp1,lcdfunktion
  rcall  Befehl_an_LCD

Danke für den Tip mit den Datenleitungen, da werde ich gleich nochmal 
nachschauen...

von pacer (Gast)


Lesenswert?

hmm, das mit den Dateneleitungen kann ich nicht finden, vielleicht 
kannst du mir mal einen Link geben zu einem Datenblatt wo das drinsteht. 
Ich hab das nur von der Reichelt Seite.

von pacer (Gast)


Lesenswert?

Soo, ich habe inzwischen das vollständige Datenblatt gefunden. Die 
Einwände waren alle soweit richtig. Nur eins habe ich noch nicht 
verstanden. In der Initialisierungsphase (siehe angehängtes Datenblatt), 
muss ich dann trotzdem das Low-Nibble übertragen oder wird nur das High 
Nibble übertragen?

von pacer (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, Datenblatt vergessen...

von Michael U. (amiga)


Lesenswert?

Hallo,

das ist eben das Schöne an Datenblättern... ;-((
Ich habe meine Sourcen hier jetzt nicht greifbar, ich vermute aber mal 
ja, beides bei diesem Controller. Er scheint beim ersten H-Nibble sofort 
in den 4Bit-Mode gesetzt zu werden, ganz sicher bin ich aber jetzt auch 
nicht.

Ich kann sonst nur heute abend mal nachschauen.

Gruß aus Berlin
Michael

von pacer (Gast)


Lesenswert?

Soo, hab mir nochmal das Datenblatt von Reichelt angeschaut LCD204B und 
musste folgendes feststellen:
das Display hat zwei Kontroller KS0063, diese sind an einen Kontroller 
KS0066 angeschlossen. Der Text für die Initialisierungsroutine ist aber 
für das KS0076B geschrieben. Für welchen Kontroller soll ich denn die 
Initialisierungsroutine schreiben?

Jetzt, sitze ich schon 3 Tage an diesem bescheidenen Display und bin 
immer noch nicht schlauer :-(

von M. K. (kichi)


Lesenswert?

Schreib die Initialisierung für den Controller, der auch tatsächlich 
bestückt ist. Das wird dann wohl der KS0066 sein...

Die KS0063 sind nur Treiber um die du dich nicht kümmern brauchst (und 
auch nicht kannst).

von pacer (Gast)


Angehängte Dateien:

Lesenswert?

Soo, ich habe jetzt nochmal  eine Initroutine für das KS0066 wie es im 
Datenblatt steht geschrieben. Vielleicht wäre mal jemand so nett und 
könnte das Programm für mich ausprobieren.

Ansonsten würde ich mich freuen, wenn sich jemand erbarmen würde und mir 
die Initroutine für das Reicheltdisplay (lcd 204b led) zukommen lassen 
würde. Ich bekomms nicht gebacken.

Danke...

von pacer (Gast)


Angehängte Dateien:

Lesenswert?

hier nochmal das vollständige Datenblatt für den KS0066 Controller

von pacer (Gast)


Lesenswert?

Hat wirklich niemand dieses Display :-(

von Alan (Gast)


Lesenswert?

Doch, ich habe es und schaffe es nicht in C zum Laufen zu kriegen.

von pacer (Gast)


Lesenswert?

Hmm, dann sind wir schon zu zweit. Blöderweise kann ich zur Zeit noch 
nicht in C programmieren. Wie steuerst du dein Display an? Im Moment bin 
ich auf 8 Bit gegangen um soviele Fehlerquellen wie möglich 
auszuschließen.

Aber wie du ja aus meinen Beiträgen herausgelesen hast, bin ich mit 
meinem Latein am Ende. Vielleicht ist nicht mal ein KS0066 drauf?!

von pacer (Gast)


Lesenswert?

Hallo Alan,
wollte mal fragen ob du schon aufgegeben hast?!

Gruß, pacer

von Tobi (Gast)


Lesenswert?

Hi
Probier mal Power-Up-Wartezeit 30ms vielleicht hilft des...
Tobi

von pacer (Gast)


Lesenswert?

Habe ich auch schon ausprobiert, mittlerweile hab ich ein Delay von 45ms 
eingebaut.

von Jens (Gast)


Lesenswert?

Hi,
hab das gleiche Display und bekomme es unter C ebenfalls nicht zu 
laufen.

von pacer (Gast)


Lesenswert?

4bit oder 8bit Modus? Oder schon beides probiert?

von Jens (Gast)


Lesenswert?

Hab beides schon versucht! Leider ohne Erfolg.

von Tobi (Gast)


Lesenswert?

Hi
Kauft euch doch des 
http://www.myavr.de/shop/article.php?artDataID=15&search=LCD&searchSprache[]=de 
des hab ich au! Ich find des is gut erklärt obs funktioniert kann ich 
nicht sagen weil ich mein MyAVR-Board nicht programmiert bekomme 
(irgenteine .sys Datei ist nicht korrekt installiert :-( )
Tobi

von pacer (Gast)


Lesenswert?

Hallo Jens, poste doch mal deinen Code für 8Bit

von Atter S. (attersee)


Lesenswert?

Seit Tagen verfolge ich diese Beiträge, weil ich ebenfalls ein Problem 
mit der Initialisierung eines KS0066 habe / hatte. Es handelt sich um 
ein 16x1 Display AV1611BNBW-WJ, gekauft bei Conrad Electronic. Die 
Ansteuerung erfolgt 4-bittig von einem PIC16F876A mit den Routinen aus 
dem Beispiel ‚Tastatur & LCD-Display’ von der Sprut Homepage.
Ich benutze den Assembler von MPLAB DIE V8.02.

Ich machte einen sehr sauberen Hardwareaufbau und simulierte die 
Software, die relativ viel Mathematik Routinen enthält, sehr gründlich. 
Die Enttäuschung war groß, als bei der Inbetriebnahme das Display – 
abgesehen von der Hintergrundbeleuchtung – dunkel blieb. Was mich 
allerdings wunderte, war, dass die Signale, die ich an den diversen 
Ausgängen und IC’s mit dem Oszilloskop ansah, Sinn machten. Mein 
Verdacht fiel schnell auf Kompatibilitätsprobleme zwischen dem Hitachi 
44780 und dem KS0066 Controller, nachdem ich in den diversen Foren las, 
dass es zwischen den beiden doch gewisse kleinere Unterschiede im Timing 
und in der Initialisierungssequenz gebe. So verbiss ich mich in die 
Inkompatibilität, machte Messungen, Tests und kam schließlich zur 
Erkenntnis, dass das Display defekt sein müsste.

Wiederholt las ich die FAQ’s in den Hitachi Unterlagen. Schließlich fiel 
mir im Datenblatt auf, dass die LC Driving Voltage mit Vdd-V0 bezeichnet 
wird. Das ergab für mich keinen Sinn. Der typische Wert ist mit 4,5 V 
angegeben. Ich hatte in meiner Schaltung eine Serienschaltung 
R-Einstellregler-R so dimensioniert, dass der Bereich von 4.1 V bis 4.7 
V (bezogen auf Vss) mit dem Einstellregler überstrichen werden kann. Und 
hier lag das Problem. Die Spannung ist nämlich nicht auf Masse bezogen, 
sondern offensichtlich auf Vdd. Die Begrenzungswiderstände des 
Einstellreglers ausgekreuzt und das Display zeigte das an, was es 
sollte.

Kurzum, es handelte sich um kein Kompatibilitätsproblem zwischen 44780 
und KS0066.

Ich schreibe dies, weil ich vermute, dass ich nicht der Einzige bin, der 
in diese Falle tappt.

Grüße,

Johann

von pacer (Gast)


Lesenswert?

Hallo Johann,

so ganz verstanden habe ich das jetzt nicht. Wie hoch, bezogen auf Masse 
(Vss), ist die Spannung die du an Vdd-V0 angelegt hast?

Gruß, pacer

von Martin (Gast)


Lesenswert?

Hallo,

hat sich das Problem gelöst? ich habe ein LCD mit dem selben 
eigenschaften also en 4x20 mit KS0066 von Displaytech, habe ihn gerade 
mit WinAVR (kein Assembler sonder C) am laufen bekommen :-) sollte 
jemand interesse haben poste ich hier die Initialisierungsrutine.

Gruß
Martin

von Gast (Gast)


Lesenswert?

Ja mach das

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
mit disem Initialisierungsrutine habe ich es hinbekommen

Gruß

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

und hier der lcd-routines.h Datei

von Mario S. (Firma: ckzey) (ems)


Lesenswert?

Hallo Leute!!
Hatte das gleiche Problem mit dem LCD204B (Reichelt).
Hier die 4Bit LCD_INI.





//---------- Portrichtung einstellen --------------------

void lcd_port_ini ()
{
  DDRC = 0x3F;    // setze Portrichtung (1 = Ausgang): 0011 1111
}
//--------- Display LED204B (KS0066) initialisieren ------------------
void lcd_ini ()
//void lcd_set204B_4bit ()
{
  delay_ms(40);      // Warten > 30 ms
//------------ Function set ------------------------

  lcd_port_ini ();    // setze Portrichtung (1 = Ausgang): 0011 1111

    PORTC = 0x02;      // 4-Bit Modus aktivieren (B 0010 0000)
  lcd_flash_e ();        // Datenübernahme
  delay_ms(6);      // 6 sicherheitshalber warten da wir BUSY nicht 
überprüfen können

    PORTC = 0x02;
  lcd_flash_e ();
  delay_ms(6);      // 6

  PORTC = 0x02;      // 4-Bit Modus aktivieren
  lcd_flash_e ();
  delay(50);        //50

//------------
//  8-4-2-1
//  N-F-x-x
//------------
//   N = 0 (1-line mode) (+0)
//     = 1 (2-line mode) (+8)
//   F = 0 (Display off) (+0)
//     = 1 (Display on)  (+4)

  PORTC = 0x0E;      //2+8+4=14 = E
  lcd_flash_e ();
  delay(50);        //50

//-------------   Display ON/OFF Control ----------
//  8-4-2-1
//  1 D C B
//------------
//   D = 0 (display off) (+0)
//     = 1 (display on ) (+4)
//   C = 0 (cursor off ) (+0)
//     = 1 (cursor on  ) (+2)
//   B = 0 (blink off  ) (+0)
//     = 1 (blink on   ) (+1)

  PORTC = 0x00;
  lcd_flash_e ();
  delay(50);        //50

  PORTC = 0x0C;      //8+4
  lcd_flash_e ();
  delay(50);        //50
//-------------- Display löschen ------------------------

  PORTC = 0x00;
  lcd_flash_e ();
  delay(1600);      //2000

  PORTC = 0x01;
  lcd_flash_e ();
  delay(1600);      //2000

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.