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.
Trenn mal den Kurzschluß zwischen den Ausgängen des 4094 auf (Pin9, 10). Peter
Leider keine Änderungen, trotzdem Danke.
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.
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?
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 | }
|
Ich würds mal mit einem init_lcd() probieren. Peter
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... ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.