mikrocontroller.net

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


Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
 .NOLIST                      ; List-Output unterdrücken

; .INCLUDE <m8def.inc> 
; .include "C:\PROGRA~1\VMLAB\include\m8def.inc"
; .include "C:\PROGRA~1\AVR Tools\VMLAB\m8def.inc"
 .include "E:\Atmel\AVRStudio\m8def.inc"

 .equ F_CPU = 7372800                            ; Systemtakt in Hz

 .def temp = r22
 .def temp1 = r23
 .def temp2 = r24
 .def temp3 = r25        ; für Interrupt

 .LIST                        ; List-Output wieder aufdrehen
 .CSEG                        ; was nun folgt, gehört in den FLASH-Speicher

 ;------------------------------------------------------
 ;     Start Adresse 0000 /Interruptvektoren
 ;------------------------------------------------------
 .org 0x000
  rjmp Init      ; Interruptvektoren überspringen

 ;------------------------------------------------------
 ;     INITIALIZE
 ;------------------------------------------------------
INIT:
;Stack Pointer setzen
  ldi temp,high(RAMEND)
  out SPH,temp
  ldi temp,low(RAMEND)
  out SPL,temp


 rcall lcd_init


 ;------------------------------------------------------
 ;   HAUPTSCHLEIFE
 ;------------------------------------------------------
Hauptschleife:          



rjmp Hauptschleife


 ;------------------------------------------------------
 ;   Subroutinen / ISRs
 ;------------------------------------------------------


;****************************************************************
;*        LCD Display Routinen Version 04              *
;****************************************************************
;* Intitialisiert Display mit KS0063 oder kompatiblen           *
;* Controller und schreibt einen Text in das Display        *
;*                                *
;* Controller: Mega8  @ 8Mhz  (7,3...MHz)            *
;* Display:  LCD204B LED - Reichelt                          *
;* Das Programm steuert das LCD Display mit 4 BIT an!!           *
;****************************************************************
;
;********************************************************************
;*    Anschlussplan Display zum AVR                     *
;*------------------------------------------------------------------*
;*    Pin Belegung Display    : Pin Belegung RNMega8            *
;*------------------------------------------------------------------*
;* 1.  GND                : 01.  GND                   *
;* 2.  +5V            : 02.  +5V                  *
;* 3.  Vo Contrast        : 03. über 10k Poti auf +5V      *
;* 4.  RS Daten oder Code Input  : 04.  PC2                   *
;* 5.  R/W             : 05.  PD6                   *
;* 6.  Enable          : 06.  PC3                   *
;* 7.   DB0            : 07.    PB0                 *
;* 8.   DB1            : 08.   PB1                 *
;* 9.   DB2            : 09.   PB2                 *
;* 10.  DB3            : 10.   PB3                  *
;* 11.  DB4            : 11.   PD2 (not used)          *
;* 12.  DB5            : 12.   PD3 (not used)             *
;* 13.  DB6            : 13.   PD4 (not used)             *
;* 14.  DB7            : 14.   PD5 (not used)             *
;* 15. Anode  LED        : 17. +5V über Vorwiderstand R14  *
;* 16. Katode LED        : 18.  GND                   *
;********************************************************************

;------------------------------------------------------
;   Definierung der Steuerleitungen
;------------------------------------------------------
.equ  E  =  PC3          ; Enable Leitung
.equ  RW  =  PD6          ; Read / Write Leitung
.equ  RS  =  PC2          ; Befehlsleitung
.equ  Busy =  PD5          ; Busy Leitung   --> not available (4Bit-Modus)


;------------------------------------------------------------------------------------------
;   Definierung der Befehle
;------------------------------------------------------------------------------------------
.equ  lcdcheck   =  0b00110000        ; nur init; kein Konfigurationsbefehl
.equ  lcdon     =  0b00001111        ; LCD einschalten
.equ  lcdfunction =   0b00101100        ; nur init; Busbreite/LCD-Größe definieren
;                 |||||+ reserviert
;                 ||||+- reserviert
;                    |||+-- F  = 1: 5x10 dots  ; F  = 0: 5x8 dots
;                 ||+--- N  = 1: 2 lines    ; N  = 0: 1 lines
;                 |+---- DL = 0: 4bits    ; DL = 1: 8 bits
;            
;.equ  lcdshift   =  0b00000000
;                  S/C = 1 Display shift; S/C = 0 Cursor move
;                  R/L = 1 shift right; R/L = 0 shift left

.equ  lcdclear   =  0b00000001    ; LCD löschen
.equ  lcdentry   =  0b00000110    ; bei Eingabe eines Zeichen den Cursor um 1 erhöhen
.equ  zeile2     =  0b11000000    ; Startadresse der zweiten Display Zeile  

;------------------------------------------------------------------------
;   Definition der Arbeitsregister
;------------------------------------------------------------------------
.def  up_temp1  =  r16          ; Arbeitsregister 1
.def  up_temp2  =  r17          ; Arbeitsregister 2
.def  up_temp3  =  r20          ; Arbeitsregister 3
.def  up_temp4  =  r21          ; Arbeitsregister 4
.def  tim1  =  r18          ; Timerregister 1
.def  tim2  =  r19          ; Timerregister 2
      
;------------------------------------------------------------------------
;   Befehle an das LCD Display
;------------------------------------------------------------------------

lcd_init:          ;*** Initialisierung des Displays ***

ldi  up_temp1,0b11111111        ;
  out  ddrb,up_temp1          ; Port B auf Ausgang setzten
  out  ddrc,up_temp1          ; Port C auf Ausgang setzten
  out  ddrd,up_temp1          ; Port D auf Ausgang setzten

  rcall   wait15ms          ; 15ms auf Display warten

  ldi  up_temp1,lcdcheck        ; LCD-check setzen (muß laut Hersteller 3x in das Steuerregister geschrieben werden )
  rcall  Befehl_an_LCD          ; Befehl senden
  rcall  wait15ms            ; 15ms+5ms warten
  ldi  up_temp1,lcdcheck        ; LCD-check setzen
  rcall  Befehl_an_LCD          ; Befehl senden
  ldi  up_temp1,lcdcheck        ; LCD-check setzen
  rcall  Befehl_an_LCD          ; Befehl senden
  
  rcall  lcd_on            ; Display einschalten
  rcall  lcd_clear          ; Display löschen
  rcall  lcd_cursor_rechts      ; Verhalten des Cursors festlegen

  rcall  text1            ; Text 1 senden (Begrüßungstext)
  rcall  text2            ; Text 2 senden  (Begrüßungstext)
  ret


lcd_on:            ;*** LCD einschalten ***
  ldi  up_temp1,lcdon        ; LCD einschalten
  rcall  Befehl_an_LCD      ; Befehl senden
  ret

lcd_clear:          ;*** Löschen des Displays ***
  ldi  up_temp1,lcdclear      ; LCD löschen
  rcall  Befehl_an_LCD      ; Befehl senden
  ret

lcd_cursor_rechts:      ;*** Steuerung des Cursors ***
  ldi  up_temp1,lcdentry      ; Entrymode setzten  
  rcall  Befehl_an_LCD      ; Befehl senden
   ret

lcd_textausgabe:      ;*** Sendet Text an das Display ***
  sbi  portc,RS          ; setzten BIT RS
  cbi  portd,RW          ; lösche BIT RW
  rcall  sende_Daten        ; Daten ausgeben
  rcall  wait5ms  
   ret
  

;------------------------------------------------------------------------
;   Hilfsprogramme für das Senden von Befehlen und Daten ans Display
;------------------------------------------------------------------------

Befehl_an_LCD:        ;Sendet Befehle an das Display
  cbi  portc,RS          ; lösche BIT RS  
  cbi  portd,RW          ; lösche BIT RW
  rcall  sende_Daten        ; Befehl ausgeben
  rcall  wait5ms  
  ret


  sende_Daten:        ;UP für Befehle/Text versenden
 ;sende high Nibble  
  mov up_temp3,up_temp1
  swap up_temp3
  andi up_temp3, 0b00001111
  out portD, up_temp3

  sbi  portc,E            ; setzten BIT E
  nop                ; kein Operation (warten)
  nop
  nop
  cbi  portc,E            ; lösche BIT E

 ;sende low Nibble
  andi up_temp1,0b00001111
  out portD, up_temp1

  sbi  portc,E            ; setzen BIT E
  nop                ; kein Operation (warten)
  nop
  nop
  cbi  portc,E            ; lösche BIT E
  ret


; **** Zeitschleifen ****

wait50us:
  ldi  tim1, (F_CPU * 50 / 3 / 1000000)
 wait51:                ; Schleife benötigt 3 Taktzyklen        
  dec  tim1            
  brne   wait51        
ret                

wait150us:
  rcall wait50us
  rcall wait50us
  rcall wait50us
ret

wait5ms:
  ldi  tim2,100
 wait5:
  rcall  wait50us
  dec  tim2
  brne  wait5
ret

wait15ms:
  rcall  wait5ms
  rcall  wait5ms
  rcall  wait5ms
ret


; **** Definierung der Texte mit Position ****
text1:

  ldi  up_temp4,14        ; entspricht der Länge der ersten Zeichenkette in Tabelle1
  ldi  zl,low(tabelle1*2)    ; Zeige auf Z-Pointer Lowbyte von Tabelle1
  ldi  zh,high(tabelle1*2)    ; Zeige auf Z-Pointer Highbyte von Tabelle1
 loop_msg1:
  lpm              ; lade R0 mit Wert auf der der Z-Pointer zeigt
  mov  up_temp1,r0        ; kopiere R0 in up_temp1
  rcall  lcd_textausgabe      ; Daten senden
;  adiw    zl:zh,1       ; Z-Pointer + 1
  adiw    zl,1       ; Z-Pointer + 1
 no_carry1:
  dec  up_temp4        ; up_temp4 - 1
  brne  loop_msg1      ; vergleiche auf Null, wenn nich springe
  ret
  
text2:
  ldi  up_temp1,zeile2      ; setzte Cursor in zweite Zeile (Anfang)
  rcall  Befehl_an_LCD    ; Befehl senden

  ldi  up_temp4,16        ; entspricht der Länge der ersten Zeichenkette in Tabelle1
  ldi  zl,low(tabelle2*2)    ; Zeige auf Z-Pointer Lowbyte von Tabelle1
  ldi  zh,high(tabelle2*2)    ; Zeige auf Z-Pointer Highbyte von Tabelle1
loop_msg2:
  lpm              ; lade R0 mit Wert auf der der Z-Pointer zeigt
  mov  up_temp1,r0        ; kopiere R0 in up_temp1
  rcall  lcd_textausgabe      ; Daten senden
;  adiw    zl:zh,1       ; Z-Pointer + 1
  adiw    zl,1       ; Z-Pointer + 1
 no_carry2:
   dec  up_temp4        ; up_temp4 - 1
  brne  loop_msg2      ; vergleiche auf Null, wenn nicht springe
ret

tabelle1:

.db  "please wait..."

tabelle2:

.db  "system coming up"

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

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

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Datenblatt vergessen...

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(

Autor: Michael K. (kichi)
Datum:

Bewertung
0 lesenswert
nicht 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).

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

Bewertung
0 lesenswert
nicht 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...

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

Bewertung
0 lesenswert
nicht lesenswert
hier nochmal das vollständige Datenblatt für den KS0066 Controller

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat wirklich niemand dieses Display :-(

Autor: Alan (Gast)
Datum:

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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alan,
wollte mal fragen ob du schon aufgegeben hast?!

Gruß, pacer

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Probier mal Power-Up-Wartezeit 30ms vielleicht hilft des...
Tobi

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich auch schon ausprobiert, mittlerweile hab ich ein Delay von 45ms 
eingebaut.

Autor: Jens (Gast)
Datum:

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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
4bit oder 8bit Modus? Oder schon beides probiert?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab beides schon versucht! Leider ohne Erfolg.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Kauft euch doch des 
http://www.myavr.de/shop/article.php?artDataID=15&... 
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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jens, poste doch mal deinen Code für 8Bit

Autor: Atter See (attersee)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja mach das

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

Bewertung
0 lesenswert
nicht lesenswert
Hi,
mit disem Initialisierungsrutine habe ich es hinbekommen

Gruß

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

Bewertung
0 lesenswert
nicht lesenswert
und hier der lcd-routines.h Datei

Autor: Mario S. (Firma: ckzey) (ems)
Datum:

Bewertung
0 lesenswert
nicht 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

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.