Forum: Mikrocontroller und Digitale Elektronik Display "Displaytech 162" bringe ich nicht zum laufen


von Thomas S. (thomass)


Lesenswert?

@all,

ich versuche nun schon den ganzen Tag mein Display zum laufen zu 
bekommen.
Ich verwende die Routine von AVR-GCC Tutorial.
KIch habe das Display nur an 8 Datenpins angeschlossen und EN und RS von 
einem weiteren Port verwendet.
Ich denke es ist eine Kleinigkeit jedoch finde ich sie nicht.

Ich habe da Display wie folgt angeschlossen.

PB0 --> DB0
PB1 --> DB1
PB2 --> DB2
PB3 --> DB3
PB4 --> DB4
PB5 --> DB5
PB6 --> DB6
PB7 --> DB7
PE6 --> RS
GND --> R/W
PE7 --> E

Hier die LCD-Routine.h
1
void lcd_data(unsigned char temp1);
2
void lcd_string(char *data);
3
void lcd_command(unsigned char temp1);
4
void lcd_enable(void);
5
void lcd_init(void);
6
void lcd_home(void);
7
void lcd_clear(void);
8
void set_cursor(uint8_t x, uint8_t y);
9
 
10
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
11
 
12
#define F_CPU 16000000
13
#define __OPTIMIZE__
14
// LCD Befehle
15
 
16
#define CLEAR_DISPLAY 0x01
17
#define CURSOR_HOME   0x02
18
 
19
// Pinbelegung für das LCD, an verwendete Pins anpassen
20
 
21
#define LCD_PORT      PORTB    //Datenport PORTB Ausgang
22
#define LCD_DDR       DDRB    //Datenport PORTB Ausgang
23
#define LCD_COM_PORT  PORTE    //Steuerport
24
#define LCD_COM_DDR   DDRE    //Steuerport
25
#define LCD_RS        PE6    
26
#define LCD_EN        PE7
27
// DB0 bis DB7 des LCD sind mit DB0 bis DB7 des AVR verbunden

Die LCD-Routine.c hänge ich als Datei an.

Ich verwende AVR Studio,MEGA128 und ein Displaytech 162C BC BC Display 
von Reichelt.
Was ich auch mache nach dem einschalten ist eine Reihe schwarz und daran 
ändert sich auch nichts.

Ich bedanke mich schon mal für die Hilfe.

Thomas

von Thomas S. (thomass)


Angehängte Dateien:

Lesenswert?

ups Datei vergessen.

von Ernst (Gast)


Lesenswert?

1
   LCD_PORT &= 0x00;
2
   LCD_PORT |= temp1;               // setzen
Schaut schonmal falsch aus...
Müsste im 8-Bit Modus einfach LCD_PORT=temp1; sein.

Und auch mal die Initialisierung durchschauen, ob da das display nicht 
noch auf 4Bit umgeschaltet wird.

Warum überhaupt den 8Bit modus nehmen? Geschwindigkeit kanns ja nicht 
sein, sonst hättest du die R/W-Leitung mit angeschlossen um den Status 
zurücklesen zu können...

/Ernst

von Volker (Gast)


Lesenswert?

LCD_PORT &= 0x00;

   LCD_PORT |= temp1;               // setzen


ist ja dasselbe wie LCD_PORT = temp1;
Nur ein bisschen komplizierter :-)

Nee - die Maskierungssachen kannst du weglassen, wenn der komplette Port 
benutzt wird (PB0..PB7)

Volker

von Thomas S. (thomass)


Lesenswert?

@all,

ich sitze nun wieder vor meinem Display uns sehe wieder nur die untere 
Reihe der Anzeige schwarz.
Ich habe nun mal die 4 Bit Variante probiert hier vom AVR-GCC Tutorial.
Habe nur im Headerfile folgendes geändert
PORTD --> PORTB
DDRD  --> DDRB
PD*   --> PB*

und noch
1
#define __OPTIMIZE__

eingefügt da es Fehlermeldungen gegeben hat.

Display ist 100%ig richtig angeschlossen.

Programm zu uC geschickt und nichts passiert.

Was mache ich da falsch?!? :-)
Da es mein erster Versuch mit Display ist bin ich noch etwas unsicher, 
daher habe ich nun genau das Beispiel vom AVR-GCC Tutorial genommen.

Thomas

von Thomas S. (thomass)


Lesenswert?

@all,

ich habe nun mal das Programm mit hapsim getestet und dort läuft es ohne 
Probleme.
Das versteh ich nicht.
Mein Display hat einen KS0070B Controller aber der ist ja kompatible zu 
den im AVR-GCC Tutorial verwendeten Controller HD44780 steht da 
zumindest.
Verdrahtung habe ich nochmals geprüft ist OK.

An was kann es liegen ist das Display defekt?!?!?
Kann man das irgentwie testen?

Thomas

von Thomas S. (thomass)


Angehängte Dateien:

Lesenswert?

Hallo,

ich spreche anscheinend mit mir selbst aber was solls.

Ich habe mal das Oszi drangehängt und mir ist alles als normal 
vorgekommen.
RS geht auf low dann kommen Systemkomandos E geht dabei immer High --> 
Low nach der Initialisierung geht RS auf High 4x Datenübertragung E High 
--> Low danach RS wieder auf high eine Systemkommando (2Zeile) dann RS 
wieder High und E 12x High --> Low.

Ich denke das ist so richtig.
Das Display ist fast neu hatte es eigentlich noch nie in Betrieb daher 
kann ich nicht sagen ob es überhaupt funktioniert.
Jedoch dadurch das es nicht macht bin ich mir etwas unsicher.

Hatte schon mal jemand mit diesem Typ von Display Probleme es ist von 
Reichelt.

Ich hoffe jemand kann mir einen Rat geben.

Gruss und Danke

Thomas

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

> ich spreche anscheinend mit mir selbst aber was solls.

Weil es so unendlich langweilig ist den vermutlich wirklich schon 
tausendsten Thread "mein Display läuft nicht" zu lesen. Und alle glauben 
immer, sie hätten alles richtig gemacht. Nur, in 99% aller Fälle ist das 
Timing doch falsch (einschließlich falscher Taktquellen-Fuses) oder das 
Display ist doch falsch angeschlossen (einschließlich falscher 
Kontrasteinstellung).

Und da kann man aus der Ferne gar nichts machen. Reiß den Scheiß 
komplett auseinander, bau ihn sorgfältig neu zusammen. Ließ das 
Datenblatt (die Meisten sind sich zu fein dazu). Gehe die Software Zeile 
für Zeile durch, überprüfe die Befehle (Datenblatt ...) und rechne das 
Timing genau nach (Datenblatt ...).

All das wurde schon tausend Mal in anderen "mein Display läuft 
nicht"-Threads diskutiert.

von Thomas S. (thomass)


Lesenswert?

Hannes Jaeger wrote:
>> ich spreche anscheinend mit mir selbst aber was solls.
>
> Weil es so unendlich langweilig ist den vermutlich wirklich schon
> tausendsten Thread "mein Display läuft nicht" zu lesen.

Ich weis eigentlich nicht was langweilig sein sollte.
Wenn ich etwas schreibe dass etwas nicht richtig funktioniert dann habe 
ich schon einiges zuvor geprüft.
Ich weis ja nicht wie Du das so machst aber anscheinend erst schreiben 
das und dann prüfen.

> Und da kann man aus der Ferne gar nichts machen. Reiß den Scheiß
> komplett auseinander, bau ihn sorgfältig neu zusammen. Ließ das
> Datenblatt (die Meisten sind sich zu fein dazu). Gehe die Software Zeile
> für Zeile durch, überprüfe die Befehle (Datenblatt ...) und rechne das
> Timing genau nach (Datenblatt ...).

Zusammengebaut habe ich es schon einige Male und wenn Du alles richtig 
gelesen hättest dann wäre Dir aufgefallen das ich die Software schin mit 
HAPSIM getestet habe und diese läuft.
Die Zeiten hatte ich schon so langsam eingestellt, dass ich schon fast 
Kaffee hätte trinken können bei der LCDinit.

> All das wurde schon tausend Mal in anderen "mein Display läuft
> nicht"-Threads diskutiert.

Ich wollte eigentlich nur wissen ob mein verwendete Display compatible 
ist zu dem mit HD44780 Controller.
Es ist eben mein erster gehversuch mit einem Display.
Entschuldigung für die Frangen.

So das musste mal raus.
:-)

Ich habe heute beim C* ein neues gekauft und dieses eingesteckt und 
siehe dar es funktioniert.
Es lag am Display selbst, konnte eigentlich nur noch dies sein da ich 
schon alles andere überprüft hatte ohne den Scheis auseinanderzureißen.

Danke trotzdem an alle.

Thomas

von Thomas S. (thomass)


Angehängte Dateien:

Lesenswert?

Ach noch eins,

das Datenblatt von Conrad ist sehr dürftig ausgefallen. Nichts von wegen 
der Angabe von Wartezeiten etc.

Thomas

von Spess53 (Gast)


Lesenswert?

Hi

Nettes Teil da, in deinem Datenblatt.

Mfg Spess

von Thomas S. (thomass)


Lesenswert?

Hallo,

Nur billig ist anderst.
War jedoch die einzigste Möglichkeit heute noch zu testen.
Werde mir nachstes mal noch ein  Display zulegen damit mir das nicht 
nochmal passiert.

Thomas

von Horst W. (panzer4000)


Lesenswert?

Hallo !

habe das gleiche Problem mit den gleichen Teil.

Da ich aber von myAVR ein LCD habe was geht, habe ich jetzt aufgegeben.
Bei meinen LCD sind sobald ich Kontrast anschließe schwarze Balken in 
den Zeilen und ab und zu zuckt, aus welchen Grund auch immer die Anzeige 
mit dem Ergebnis keine verwertbare Zeichen.

von Aufsicht (Gast)


Lesenswert?

Dann hast Du bestimmt den Kontrast nicht richtig eingestellt. Nimm ein 
10k Poti gegen Masse und schraub mal dran rum, dann sollten die 
schwarzen Balken verschwinden.

von Michael U. (amiga)


Lesenswert?

Hallo,

nur am Rande: ein kurzer Blick ins Dateblatt des KS0070B zeigt mir, daß 
zumindest die Initialisierung merklich anders aussieht als beim HD44780.

Sollte sich twar in ein paar Minuten anpassen lassen, dürfte aber mit 
der Original-HD44780-Initfolge nicht laufen.

Der Rest sieht (auf den ersten Blick) identisch aus.

PS: Der Begriff "kompatibel" wird von Display-Anbietern sehr großzügig 
gehandhabt, wenn es auch 2x16 hat und die gleichen Anschlüsse, reicht 
das offenbar schon.

Andererseits heißt kompatibel aber auch nicht zwingend "direkt 
austauschbar".

Datenblätter sollte man möglichst zeitig lesen und vergleichen lernen. 
;-)

Gruß aus Berlin
Michael

von Matthias (Gast)


Lesenswert?

Auch wenn das Topic uhralt ist,
denke das es in zukunft auch mehrere interssieren wird, das Display ist 
ein wenig "stupide" die Dx pins sind genau invertiert. Also im klartext 
an D7 muss Pin0


PB0 --> DB7
PB1 --> DB6
PB2 --> DB5
PB3 --> DB4
PB4 --> DB3
PB5 --> DB2
PB6 --> DB1
PB7 --> DB0
PE6 --> RS
GND --> R/W
PE7 --> E

So (in vierpin config also nur DB7 bis DB4 belegt) und langsameren 
timings klappte es dann.

Hoffe viele gefrustete werden sich freuen. :-)

Grüße,
Matthias

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.