@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
voidlcd_data(unsignedchartemp1);
2
voidlcd_string(char*data);
3
voidlcd_command(unsignedchartemp1);
4
voidlcd_enable(void);
5
voidlcd_init(void);
6
voidlcd_home(void);
7
voidlcd_clear(void);
8
voidset_cursor(uint8_tx,uint8_ty);
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
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
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
@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
@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
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
> 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.
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
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
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.
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.
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
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