Forum: Mikrocontroller und Digitale Elektronik 2313 mit LCD Display


von Johann Meier (Gast)


Lesenswert?

Hallo,

hat schon mal jemand ein 16*2 LCD Display an nen 2313 Atmel gehängt?

Ich habe gerade eine Testschaltung aufgebaut und komme nicht mehr
weiter. Krieg einfach keinen Text auf das Display.


Das LCD hängt mit den Datenleitungen an PB4..PB7
Die Steuersignale kommen wie folgt
PB0--> PIN4 (LCD)
PB1--> PIN5 (LCD)
PB2--> PIN6 (LCD)

Hier mein Code....
---------------------------------------------------------------------

$regfile = "2313def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 ,
Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0


Config Lcd = 16 * 2
Config Portb = Output
Reset Portb.1                                               Initlcd


Cursor On
Cls

Lcd "Test"
----------------------------------------------------------------

Vielleicht hat ja jemand eine Idee....

von Sebastian (Gast)


Lesenswert?

Hab keine Ahnung von Atmels, daher 'ne vielleicht blöde Frage: Was ist
das für eine Programmiersprache?!

von Nik Bamert (Gast)


Lesenswert?

@Sebastian
Ich glaube es ist Bascom.

@Johann Meier
Was zeigt denn das Display an?
-nichts
-schwarze klötzchen auf der ersten Zeile
-schwarze klötzchen auf beiden Zeilen
-Wirre Zeichen
......

Nik

von Nik Bamert (Gast)


Lesenswert?

..hab noch was vergessen; was hängt denn an Portb.1 ?

von Markus (Gast)


Lesenswert?

$regfile = "2313def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 ,
Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0


Config Lcd = 16 * 2
Cursor On
Cls

Lcd "Das ist ein Test"
Lowerline
Lcd "blablabla"

End


So klappt´s!

von Johann Meier (Gast)


Lesenswert?

@ Sebastian:
ja das ist Bascom Basic

@Nik:
das Display zeigt nichts an.
an PB1 hängt R/W vom LCD Display



@ Markus:
Was ist an deinem Code anders?
Aber ich probiers mal.

von Johann Meier (Gast)


Lesenswert?

@ Markus:
Habs probiert, läuft auch nicht.


Was mir noch aufgefallen ist: wenn ich das Display angeschlossen habe,
kann ich den Chip nicht programmieren. Abgesteckt gehts dann schon.
Aber es sollte ja kein Problem sein, wenn man an die
SCK/MISO/MOSI-Leitungen Peripherie hängen hat oder?

von Johann Meier (Gast)


Lesenswert?

@Nik:
ich hab mal den KontrastPin (Pin 3) des Display auf GND gelegt, wie im
Tutorial beschrieben.--> jetzt seh ich in der ersten Zeile schwarze
Kästchen.

von Nik Bamert (Gast)


Lesenswert?

@johann

Das bedeutet(die erste Reihe mit schwarzen Kästchen), dass die
Initialisierung falsch gelaufen ist. Ansonsten solltest du zwei Reihen
mit dunklen Kästchen sehen. Bei mir funktioniert das Programmieren
übrigens auch wenn das Display angeschlossen ist.(Ich habs auch an den
Programmieranschlüssen. Dann werden jedoch einige wirre Zeichen
angezeigt.  Aber wenn das so ist, wie funktionierts denn, wenn du den
Programmier Adapter wegnimmst? Wenn er in der Schaltung drinn ist,
würde ich es einfach mal versuchen, indem du das Display an einem
anderen Port anschliesst.

Nik

von Johann Meier (Gast)


Lesenswert?

@ alle

jetzt gehts:

Die schwarzen Kästchen kommen nur wenn ich das Programmbeispiel von
Markus einspiele.

Mein Problem war anscheinen nur der Kontrast (Schäm)

Was nur noch nervt ist, das ich mit angeschlossenem Display nicht
programmieren kann.

@ Ník:
hast du die Programmieranschlüsse direkt mit dem Display verbunden oder
noch nen PullUp oder Pulldown Widerstand eingebaut?

von Sebastian (Gast)


Lesenswert?

Normalerweise sollte eine feste Verdrahtung 1a klappen. In die Ports des
µC fliesst so ein geringer Strom rein, dass der LCD-Controller
praktisch nicht belastet wird und high und low eigentlich stabil sein
sollten.

von Markus (Gast)


Lesenswert?

Ich hab nur:

Config Portb = Output
Reset Portb.1                                               Initlcd

rausgeschmissen, das war unnötig (macht Bascom allein) und ein End
eingefügt.
Habs in Hardware getestet und es funktioniert.
RW hast Du auf GND gelegt?

Kann es sein, dass Dein Display eine negative Kontrastspannung braucht
und Du deswegen nichts siehst.

von Chris (Gast)


Lesenswert?

Hallo,

"Was nur noch nervt ist, das ich mit angeschlossenem Display nicht
programmieren kann."

Bei Versuchssschaltungen und wenn irgendwas nicht funktioniert, ist es
immer günstig, wenn man das LCD über Widerstände ansteuert z.B. 1kOhm.
Dann macht es nichts, wenn das LCD mal selbst Daten "sendet". Es gibt
dann keine Überlastung der Ausgänge und das Programmieren müßte auch
mit angeschlossenem LCD klappen.

GRuß

von Johann Meier (Gast)


Lesenswert?

@ALLE:
Vorab danke für die vielen Antworten....Hier wird einem immer sehr
schnell und zuverlässig geholfen!!!!


@Markus:

RW hab ich mit PortB1 vom AVR verbunden.
Das hab ich so von einer zuverlässigen Schaltung mit nem AT908035er
übernommen. Ich hab auch die Konfiguration in der Software nur auf die
geänderten Ports des 2313 umgeschrieben.

Wieso auf Ground??? Ich kenn die Funktion nicht so genau, aber braucht
der Controller keinen Signalwechsel auf dieser Leitung??



@Chris:
Werd ich mal probieren. Vielleicht liegts am Dongle?? Ich hab mir
selber einen gebaut. Die bekannte Schaltung für die parallele
Schnittstelle mit nem 74... er Chip dazwischen. Läuft auf dem o.g.
Testboard mit dem 8035er ohne Probleme

Warum hängt man die Widerstände dann nur zum Probieren rein?

Meinst du die Widerstände in alle Steuerleitungen zum Display oder nur
zwischen die Ports mit den Programmierleitungen? Hmm.. wahrscheinlich
nur in die "heissen" Leitungen ;)

von Chris (Gast)


Lesenswert?

Hallo,

"Meinst du die Widerstände in alle Steuerleitungen zum Display"

wenn ich im Programm experimentieren möchte oder eine unerprobte
Schaltung aufgebaue, habe ich es lieber, wenn in ALLEN Leitungen
zwischen µC und LCD Widerstände drin sind. Der Wert ist
Geschmackssache, sollte aber 5V/0,02A = 270 Ohm nicht unterschreiten.
Bei zu großen Werten (etliche Kiloohm) werden die Daten nicht mehr
korrekt übertragen.
Die Widerstände können dauerhaft drin bleiben, wenn es mal
funktioniert. Bei einem Einzelstück spielt das keine Rolle.
Der Sinn ist der, daß im Fall wenn das LCD irrtümlich auf LESEN
geschaltet wurde, es einige PINs auf Ausgang schaltet und dann die
Ausgänge des LCDs gegen die Ausgänge des µC arbeiten, wobei
schlimmstenfalls einer der beiden kaputt geht. Bei LCD-Preisen >10Euro
sicher unangenehm.

Gruß

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Bau Deine Schaltung mal so wie im Bild um.
Tu es einfach und benutze den Code den ich Dir gepostet habe.
Bascom fragt RW nicht ab, wartet einfach so lange bis die Zeit beim
Init vergangen ist.
Macht also einfach so lange "nop", bis Zeit wie im LCD-Manual
beschrieben vorbei ist.

von Johann Meier (Gast)


Lesenswert?

@Chris

Hab jetzt in die Ansteuerleitungen (SCK/MISO/MOSI) nach dem Abgriff zum
Programmieradapter 1,5k Widerstände reingelötet. Jetz klappt auch das
Programmieren mit angeschlossenem Display. Danke noch mal für den Tip.

@Markus

Deinen Vorschlag werd ich auch ausprobieren, wenn ich wieder mehr Zeit
habe. Schon aus reinem Interesse. Momentan muss ich meine Software
schreiben, damit ich mit meinem Projekt weiterkomme.

Gruß an alle die mir geholfen haben.....
Johann

von Alexander Arndt (Gast)


Lesenswert?

Hallo,

hatte gleichen Stress, RW nicht an direkt GND, sondern an I/O-Pin und
dann Probleme beim Programmieren mit AVR910 und AVR-Prog, RW direkt an
GND und alles ist i.O

Gruss
A. arndt

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.