Forum: Mikrocontroller und Digitale Elektronik LCD mit HD44780 Treiber hat keine Displayausgabe trotz Signalen


von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein Problem mit einem 2x16 LCD Display.

Auf einem alten Roboterboard läuft ein Program ab auf dem auch ein LCD 
angeschlossen ist, funktioniert ganz normal. Ein zusätzlich bestelltes 
Display funktioniert ebenso auf diesem Board.

Nun, jetzt hab ich einen Teil des Roboterboards in das Layout eines 
neuen Boards übernommen (selber Controller, selbes Program).
Auf dem neuen Board läuft das Program auch wunderbar ab, nur das Display 
zeigt in der 1. Zeile nur die 16 Rechtecke an, die 2. Zeile ist frei. 
Das passiert bei beiden Displays.

Ich habe mit dem Logikanalyzer alle Signale getestet, es sind genau die 
selben Signale die am Display-Stecker angekommen, trotzdem funktioniert 
das Display nicht. (Vesorgung in beiden Fällen 5V)

Ich weiß gerade nicht so recht wo ich noch ansetzen soll, für ein paar 
Ideen wäre ich hilfreich.

von Peter D. (peda)


Lesenswert?

Trenn mal den Kurzschluß zwischen den Ausgängen des 4094 auf (Pin9, 10).


Peter

von Andreas (Gast)


Lesenswert?

Leider keine Änderungen, trotzdem Danke.

von Detlev T. (detlevt)


Lesenswert?

Andreas schrieb:
> nur das Display
> zeigt in der 1. Zeile nur die 16 Rechtecke an, die 2. Zeile ist frei.

Das kenne ich, wenn der Kontrast (Poti) nicht richtig eingestellt ist.

von Michael D. (etzen_michi)


Lesenswert?

Detlev T. schrieb:
> Andreas schrieb:
>> nur das Display
>> zeigt in der 1. Zeile nur die 16 Rechtecke an, die 2. Zeile ist frei.
>
> Das kenne ich, wenn der Kontrast (Poti) nicht richtig eingestellt ist.

Das kenne ich, wenn nicht (richtig) initialisiert wurde.

Hast du zufällig noch ein Programm dazu?

von Andreas (Gast)


Lesenswert?

Also am Kontrast, sowie an der Hintergrundbeleuchtung habe ich schon 
geregelt, aber da tut sich nix - außer eben der Kontrast.

Ich tippe mittlerweile auch auf eine Initialisierungs oder 
"Hochfahr-Angelegenheit" denn ich habe jetzt in die main schleife ganz 
am Anfang ein Delay reingebaut mit 5s. Und vor diesem delay kommt auch 
schon die besagte Anzeige.



Das komische ist, das genau dieses Program auf dem alten robo-board ja 
läuft, der einzige unterschied sind (evtl.) die Fusebits die ich auf 
diesem Board nicht kenne, und auf meinem neuen eingestellt habe. Vll 
hier an der Waitzeit nach dem booten "herumprobieren?

Hier ist n noch bisschen Käse drin, aber man sieht ja mal etwas.

1
int main(void){  
2
    struct ds1307_time_t calender;
3
  initRP6Control();
4
  i2c_init();                           // initialize I2C library
5
  configTimer1();
6
  mSleep(5000);                                        
7
   showScreenLCD("  Workstation  ", "  Version 2.3  ");
8
  mSleep(1000);
9
  clearLCD();                           // Clear the whole LCD Screen
10
    
11
12
  while(1){
13
  
14
    taskButtons(getPressedKeyNumber());                //Abfrage der Buttons
15
                
16
    if (update_EEPROM==1){incOperatingMinutes();}          //passiert jede Minute
17
  
18
    if (updateLCD==1){  taskLCD(displaymode,minutes, seconds);}    //jede Sekunde oder bei relevantem Tastendruck, display schreiben                    
19
              
20
    setUVLight(startbit_surf,getPressedKeyNumber());         //setzt den Output für die Arbeitsflächen Dekontamination
21
22
    //calender muss immer(und nur) hier den aktuellen wert von rtc haben
23
    calender=read_calender;
24
    if ((calender.seconds==0)&&
25
        (calender.minutes==set_daily_start[1])&&
26
        (calender.hours==set_daily_start[2])&&
27
        (set_daily_start[3]==1)) {
28
    startbit_surf=1;
29
    }
30
  }
31
}

von Peter D. (peda)


Lesenswert?

Ich würds mal mit einem init_lcd() probieren.


Peter

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas schrieb:
> showScreenLCD("  Workstation  ", "  Version 2.3  ");
>   mSleep(1000);
>   clearLCD();                           // Clear the whole LCD Screen
Ich hätte da jetzt irgendwo irgendwas in die Richtung InitLCD() 
erwartet...

EDIT: Naja, immerhin Zweiter... ;-)

von Andreas (Gast)


Lesenswert?

Kommando zurück und Danke!

ich habe tatsächlich das LCD nicht initialisiert, verstehe zwar grad 
nicht warum es auf dem anderen board dann geht, aber muss wohl mit den 
Software-ständen durcheinandergekommen sein.

Nochmals Merci!

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.