Forum: Mikrocontroller und Digitale Elektronik Pollin-LCD TC1602A-09T(R)


von Udo (Gast)


Lesenswert?

Moin,

ich verzweifele gerade mit dem o.a. 2x16-Display.

Gegeben:
- AT Mega32, der das o.a. LCD im 4-bit-Modus ansteuern soll; alle 7 
LCD-Pins hängen an Port D, JTAG und SPIEN sind nicht gesetzt, int. Osc 4 
MHz
- AVR-GCC mit Fleurys LCD-Lib,
- Platine wurde x-mal überprüft und für i.O. befunden; LCD-Anschlüsse 
haben einwandfreien Kontakt zu den entsprechenden µC-Pins.
- Software funktionierte mit anderen LCD; z.B. die bei Reichelt und dem 
Pollin TC1602A-08.
- Habe aber leider keines dieser LCD zum Testen verfügbar.
- Mit demselben Ergebnis getestet mit 2 nagelneuen Mega32 und 2 
nagelneuen LCD.


Problem:
- LCD initialisiert offensichtlich nicht richtig (schaltet ev. nicht in 
den 4-Bit-Modus??).
- Nach dem Einschalten sind schwarze Klötze nur in der 1. Zeile zu 
erkennen, in der 2. Zeile nichts, Cursor blinkt an Position 0.
- Bis zu 16 Zeichen lassen sich einmalig schreiben, aber sie werden 
nicht korrekt dargestellt. Bei identischen Zeichen "aaaaaaa..." 
erscheint nur "oooo..." auf dem LCD, bei unterschiedlichen Zeichen 
"asdfgh..." nur oo<-o..", also ein o und ein Pfeil rechts.
- Bei einem weiteren Schreibbefehl (lcd_puts) tut sich nichts.
- Beim Positionieren mit lcd_gotoxy wird immer an die letzte Stelle 
(x=15) gesprungen und dort das Zeichen o dargestellt - unabhängig von 
den Parametern bei lcd_gotoxy.
- Manchmal wird bei unveränderter Software gar nichts dargestellt.

Hilfe ;-)

Danke und Gruß, Udo

von Oliver J. (skriptkiddy)


Lesenswert?

Deine Quellen wären ganz interessant um programmiertechnische Fehler 
auszuschließen.

von Udo (Gast)


Lesenswert?

Moin,

lcd.h und lcd.c von Peter Fleury bis auf die 100% korrekt definierten 
Ports und die nachfolgenden LCD-Einstellungen unverändert übernommen:

...
#define XTAL 4000000

// Use 0 for HD44780 controller, change to 1 for displays with KS0073 
controller.
#define LCD_CONTROLLER_KS0073   0

// @name  Definitions for Display Size
#define LCD_LINES           2
#define LCD_DISP_LENGTH    16
#define LCD_LINE_LENGTH  0x40
#define LCD_START_LINE1  0x00
#define LCD_START_LINE2  0x40
#define LCD_START_LINE3  0x14
#define LCD_START_LINE4  0x54
#define LCD_WRAP_LINES      0
...

LCD_WRAP_LINES hat keinen Einfluss auf das Verhalten. Auswahl vom KS0073 
führt leide4r auch zu nichts.
Timing stimmt; der µC läuft mit 4 MHz.

Main.c besteht nur aus ein paar LCD-Befehlen, die testweise variiert 
werden:

...
PORTD |= (1<<PORTD5);
lcd_init(LCD_DISP_ON);
//lcd_puts ("abb");
lcd_gotoxy (4,0);
//lcd_putc('s');
lcd_puts ("hoiut");
while(1);
...

Über PORTD5 wird das backlight eingeschaltet.
Die Wartezeit bis zum lcd_init nach Einschalten der Spannung hat 
zwischen 5 und 1000 ms keinen Einfluss auf das Verhalten.

Gruß, Udo

von g457 (Gast)


Lesenswert?

Zu lange Leitungen? Eigene oder fremde Einstreuungen? Zu wenige 
Kapazitäten verteilt? Wackelkontakt oder kalte Löstelle? Macht die 
Versorgungsspannung schlapp? Falls greifbar häng doch mal ein Oszi an 
die Leitungen.

von Udo (Gast)


Lesenswert?

Moin,

g457 schrieb:
> Zu lange Leitungen? Eigene oder fremde Einstreuungen? Zu wenige
> Kapazitäten verteilt?

1,5 m Flachbandkabel. Nichts 'Strahlendes' in der Nähe. Der µC hat seine 
Kapazitäten, der Wannenstecker für das LCD-Kabel auch.


> Wackelkontakt oder kalte Löstelle?

Zigfach geprüft, auch nachgelötet.


> Macht die Versorgungsspannung schlapp?

Superstabil, keine Störungen.


> Falls greifbar häng doch mal ein Oszi an die Leitungen.

Hätte ich auch selbst draufkommen können...

Am LCD liegen dieselben Signale an wie am µC. Beim Schreiben eines 
Zeichens in einer while-loop (1 Mhz-Takt) zeigen  RS, Rw, E ein recht 
sauberes Rechteck mit leichten Überschwingern an den Flanken. D4 bis D7 
sehen dagegen ziemlich wüst aus; irgendwie ein Rechteck mit überlagerten 
Signalen mit verwaschenen Flanken. Ich mag aber nicht ausschließen, dass 
hier mein 25 Jahre altes Voltcraft-Billig-Oszi an seine Grenzen stößt.

Gruß, Udo

von Oliver J. (skriptkiddy)


Lesenswert?

Hast du mal versucht die Delays in Peter Fleurys lcd_init - Routine zu 
vergrößern? Kann ja sein das dein Display etwas länger braucht.

1
 
2
    
3
    delay(4992);         /* delay, busy flag can't be checked here */
4
   
5
    /* repeat last command */ 
6
    lcd_e_toggle();      
7
    delay(64);           /* delay, busy flag can't be checked here */
8
    
9
    /* repeat last command a third time */
10
    lcd_e_toggle();      
11
    delay(64);           /* delay, busy flag can't be checked here */
12
13
    /* now configure for 4bit mode */
14
    LCD_DATA0_PORT &= ~_BV(LCD_DATA0_PIN);   // LCD_FUNCTION_4BIT_1LINE>>4
15
    lcd_e_toggle();
16
    delay(64);           /* some displays need this additional delay */

Würde auch mal ein kürzeres Kabel versuchen, wenn das nicht funzt.

von spess53 (Gast)


Lesenswert?

Hi

>1,5 m Flachbandkabel.

Das ist sehr sportlich.

>D4 bis D7 sehen dagegen ziemlich wüst aus; irgendwie ein Rechteck mit
>überlagerten Signalen mit verwaschenen Flanken.

Wundert mich nicht.

MfG Spess

von Udo (Gast)


Lesenswert?

Moin,

danke für die Hinweise.

Mit den Delays hatte ich schon kräftigst herumgespielt; keine Besserung.

Das mit dem Kabel werde ich noch zusätzlich testen. Allerdings hatte ich 
damit bei gleicher Hardware und gleicher Ansteuerung sowie anderen LCD 
(inkl. Pollin TC1602A-08) bislang keine Probleme. Bei mir und anderen 
läuft diese Installation mit bis 2 m Länge unproblematisch im Auto, 
wobei das Flachbandkabel in meinem Fall 1x durch das Kabelgewühl des 
zentralen Sicherungskastens und neben einer PWM-Leistungsverkabelung 
verlegt wurde. Ich muss allerdings zugeben, dass es mich schon gewundert 
hat, dass das dauerhaft (nun schon 3 Jahre) funktioniert ;-)

Es sind zudem nur die Datenbits D4-D7 betroffen. Da tut sich ja, wenn 
ich die Ansteuerung richtig verstanden habe, etwas mehr auf der Leitung 
als bei RW, RS und E. Letztere sind ja sauber.


Gruß, Udo

von Udo (Gast)


Lesenswert?

Moin,

es funktioniert nun; mit unveränderter Software und leicht geänderter 
Hardware.

Es war das Kabel. Allerdings nicht die Länge (funktioniert im Moment mit 
den 1,5 m (- 2 cm) einwandfrei), sondern ein 'minimaler Kurzschluss' 
zwischen 2 Adern des Flachbandkabels im Bereich des Steckers. Muss wohl 
wegen einer Ungenauigkeit beim Pressen des Steckers passiert sein.

Entdeckt wegen des Hinweises auf ein zu langes Kabel. Kurzes versucht -> 
funktioniert -> langes seziert -> 2 cm gekürzt und neu verpresst -> 
läuft.

Die Signale D4-7 sehen immer noch nicht besser aus. Liegt wohl mehr an 
dem alten Oszi. Was mich zum nächsten Thema bringt:
Kann mir jemand ein gutes digitales Oszi empfehlen?
Nee, ok, war ein Scherz ;-)

Danke für die Hilfe und Gruß,
Udo

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.