Forum: Mikrocontroller und Digitale Elektronik LCD weigert sich seine Pflicht zu tun


von Christoph E. (gluema)


Lesenswert?

Hab aus dem Tutorial das Programm weiter unten genommen den m8def.inc 
durch m16def.inc getauscht, da ich einen mega16 nehme und in 
Microprozessor mit Ponyprog reingebrannt und alles ok aber dann sollte 
auf dem Display Test stehen machts aber nich sondern sind immernoch die 
beiden Balken zu sehen. Port D is bei dem Mega 16 auch genommen worden. 
Sieht jemand was da falsch läuft?ich benutze das Pollin Board V2.0 und 
das LCD is das Wintek  WD-C2704M-1HNN
.include "m16def.inc"

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18


           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten 
RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten 
RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen

           ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 'e'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 's'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 't'     ; Zeichen anzeigen
           rcall lcd_data

loop:
           rjmp loop

.include "lcd-routines.asm"            ; LCD-Routinen werden hier 
eingefügt

von Thomas O. (tarzanwiejane)


Lesenswert?

Die Sau die.
Balken -> Display uninitialisiert.
Haste die Warteschleifen an deinen Quarz/Frequenz angepasst? Laenger 
geht immer kuerzer geht nimmer. Also lieber zuviel warten als zuwenig.

cu Tarzanwiejane

von Christoph E. (gluema)


Lesenswert?

ch wollte erstmal den quarz im microcontroller nehmen oder ist das 
gänzlich unmöglich dass er das richtig anziegt? der läuft doch mit 1Mhz 
also müsste doch langsam genug sein

von reiner1967 (Gast)


Lesenswert?

Hallo Christoph,

hast Du berücksichtigt, daß dieses Display 2 Controller hat?

Gruß, Reiner

von Johannes M. (johnny-m)


Lesenswert?

Christoph Erstmalegal wrote:
> ch wollte erstmal den quarz im microcontroller nehmen
Es gibt keinen "Quarz im Mikrocontroller"! Da ist ein RC-Oszillator 
drin!!

> oder ist das gänzlich unmöglich dass er das richtig anziegt? der läuft doch > 
mit 1Mhz also müsste doch langsam genug sein
Der interne RC-Oszi ist nur dann kritisch, wenn man sehr genaues Timing 
benötigt (z.B. bei asynchroner serieller Datenübertragung). Das ist bei 
Dir nicht der Fall, also sollte es daran schonmal nicht liegen. Für das 
Display kannst Du problemlos den internen RC-Oszillator benutzen.

von Christoph E. (gluema)


Lesenswert?

reiner1967 wrote:
> Hallo Christoph,
>
> hast Du berücksichtigt, daß dieses Display 2 Controller hat?
>
> Gruß, Reiner

Ja aber ich wollte erstmal nur die obere Hälfte nehmen also nur E1 um 
erstmal überhaupt irgendwas zu sehen und mich dann Schritt für Schritt 
vorzutasten. haut die initialisierung denn nicht über den code hin?

von reiner1967 (Gast)


Lesenswert?

Hallo Christoph,

der Code sollte schon tun, wenn er aus dem Tutorial ist. Bei dem 
Pollin-Board geht doch die RS232-Schnittstelle auf Port D des MEGA32. 
Stecken da evtl. noch die Jumper?

Gruß, Reiner

von Christoph E. (gluema)


Lesenswert?

ich benutze beim pollin board die Rs-232 -ISP schnittstelle und da gibt 
es keine jumper

von Christoph E. (gluema)


Lesenswert?

liegt es vielleicht daran dass das programm vom tutorial für den mega 8 
geschrieben wurde und ich nur die .include umgeändert habe in 
m16def.inc?

von Johannes M. (johnny-m)


Lesenswert?

Christoph Erstmalegal wrote:
> liegt es vielleicht daran dass das programm vom tutorial für den mega 8
> geschrieben wurde und ich nur die .include umgeändert habe in
> m16def.inc?
Da Du offensichtlich keine Interrupts benutzt und der Code nicht zu lang 
für die relativen Sprungbefehle sein dürfte, sollte es kein Problem 
sein, wenn alles richtig angeschlossen ist. Wenn Du allerdings 
Interrupts benutzen willst oder der Code eine gewisse Größe 
überschreitet, dann knallts.

von reiner1967 (Gast)


Lesenswert?

Das Board hat zwei RS232-Schnittstellen, eine davon für den ISP. Die 
andere geht über die Jumper JP1 und JP2 an den Port D. Wenn diese Jumper 
gesteckt sind, dürfte es Probleme geben.

von Christoph E. (gluema)


Lesenswert?

aber ponyprog sagt mir doch dass es richtig übertragen wurde das ist es 
ja was mich wundert. hab jetzt mal die jumper weg gemacht und es 
funktioniert immernoch nicht. irgendwie wird das dislay nicht 
initialisiert. hilft es wenn ich die anlötung vom display an 
microcontroller euch mal sage?

von Johannes M. (johnny-m)


Lesenswert?

Neuer ATMega16? Display zufällig an Port C angeschlossen (zumindest 
teilweise)? JTAGEN-Fuse noch programmiert?

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Hier hast Du ein kleines Programm, mit dem Du erst mal die oberen 2 
Zeilen ansteuern kannst.

MfG Paul

von Christoph E. (gluema)


Lesenswert?

is aber bascom bekomm ich das auch mit ponyprog in den prozesssor 
gebrannt?und as genau muss ich mit der .bas datei machen? genaue 
anleitung bitte wie gesagt bin anfänger

von Paul Baumann (Gast)


Lesenswert?

Das ist der sogenannte Quelltext. Den habe ich Dir gesandt, damit Du 
dort drin eventuell das Programm an die Anschlußbelegung Deines Displays 
anpassen kannst. Wenn das dann für Dich stimmt, muß das Programm 
kompiliert werden, d.h es muß eine .hex-Datei erzeugt werden, die Du 
dann mit Ponyprog auf den Atmega übertragen mußt.
Dazu kannst Du Dir bei:

http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54

die Demo-Version von BASCOM laden.

Wenn Bascom gestartet ist, legst Du dort drin eine neue Datei an und 
kopierst meinen Beispielcode dort hinein. Wenn Du dann auf "Compile"
gehst, wird Dir die .hex_Datei erzeugt, die Du dann wie gewohnt in den
MC übertragen kannst.

MfG Paul

von Christoph E. (gluema)


Lesenswert?

Paul Baumann wrote:
> Das ist der sogenannte Quelltext. Den habe ich Dir gesandt, damit Du
> dort drin eventuell das Programm an die Anschlußbelegung Deines Displays
> anpassen kannst. Wenn das dann für Dich stimmt, muß das Programm
> kompiliert werden, d.h es muß eine .hex-Datei erzeugt werden, die Du
> dann mit Ponyprog auf den Atmega übertragen mußt.
> Dazu kannst Du Dir bei:
>
> 
http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54
>
> die Demo-Version von BASCOM laden.
>
> Wenn Bascom gestartet ist, legst Du dort drin eine neue Datei an und
> kopierst meinen Beispielcode dort hinein. Wenn Du dann auf "Compile"
> gehst, wird Dir die .hex_Datei erzeugt, die Du dann wie gewohnt in den
> MC übertragen kannst.
>
> MfG Paul
ok habs heute ausprobiert und keine änderung. wie gesgat meine leitungen 
sind an port D angeschlossen ist das denn ok weil du irgendwas mit Port 
c schreibst aber oben

hab es heute mal ausprobiert und alle C-Pors auf meine D-ports 
umgestellt. im LCd dispaly tut sich immernoch nichts aber nun blinken 
beide LEDs auf dem Board gleichzeitig im abstand von 500ms denk ich mal 
und der piezo lautsprecher piept dabei. is das nun eine fehlfunktion 
oder gewollt?

von Simon K. (simon) Benutzerseite


Lesenswert?

Du weißt aber schon, dass du die Steuerleitungen (CE1, CE2, RW, RS) auch 
ansteuern, sowie anschließen musst, an den Mikrocontroller? Und im 
Quelltext muss auch angepasst werden welche Leitung an welchem Pin 
hängt.

von Christoph E. (gluema)


Lesenswert?

Simon Küppers wrote:
> Du weißt aber schon, dass du die Steuerleitungen (CE1, CE2, RW, RS) auch
> ansteuern, sowie anschließen musst, an den Mikrocontroller? Und im
> Quelltext muss auch angepasst werden welche Leitung an welchem Pin
> hängt.

ich bin der meinung ich hab es richtig. hmm ich schreibe heute abend 
nochmal genau was ich wo vom microcontroller ans display angeschlossen 
habe.

von Paul Baumann (Gast)


Lesenswert?

Ganz grünau! :-)
Poste erst mal, WIE Du das Display angeschlossen hast. Es müssen 
mindestens
10 Leitungen vom Display belegt sein, (ohne Beleuchtung), damit es etwas 
wird. Vorher brauchen wir gar nicht weiter zu raten. ;-)

MfG Paul

von Christoph E. (gluema)


Lesenswert?

also so richtig hab ich es dann doch noch niht verstanden hab ich den 
eindruck. wie ich nutze den code
1 Vss Masse Masse Gnd
'2 Vdd + 5v Betriebsspannung + 5v
'3 Vo 0 .. 1 , 5v( -2.. -5v) Displayspannung(kontrast)
'4 Rs H / L Register Select
'5 R/W H / L H : Read / L : Write
'6 E H Enable
'7 D0 H / L Datenleitung 0(lsb)
'8 D1 H / L Datenleitung 1
'9 D2 H / L Datenleitung 2
'10 D3 H / L Datenleitung 3
'11 D4 H / L Datenleitung 4
'12 D5 H / L Datenleitung 5
'13 D6 H / L Datenleitung 6
'14 D7 H / L Datenleitung 7(msb)
'15 (optional) ? LED+ - Pluspol der LED-Beleuchtung
'16 (optional) ? LED- - Minuspol der LED-Beleuchtung
'$sim
$regfile = "m16def.dat"
$crystal = 16000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = PortD.5 , Db6 = PortD.6 , 
Db7 =  PortD.7 , E = PortD.3 , Rs = PortD.2
Config Lcdbus = 4                                           'LCD im 
4-Bit Modus

Config PortD.1 = Output                                     'RW an Port 
D.1
PortD.1 = 0                                                 'RW auf L 
legen
Initlcd
Do
  Cls
  Locate 1 , 3
  Lcd "Guck och nur"
  Locate 2 , 4
  Lcd "es klappt!"
  Waitms 500
  Cls
Loop

so soll laut datenblatt des Wintek WD-C2704M-1HNN angesteuert werden
1 GND                                       9 D1
2 VDD +5V ± 5%                              10 D2
3 VO (ca. 0…4V Kontrasteinstellung)         11 D3
4 RS                                        12 D4
5 R/W                                       13 D5
6 E1 (Controller obere Displayhälfte)        14 D6
7 E2 (Controller untere Displayhälfte)       15 D7
8 D0

und wo soll nun was angeschlossen werden?

von Hannes L. (hannes)


Lesenswert?

Ich vermute, Du hast zuviele Baustellen gleichzeitig. Vielleicht 
solltest Du weniger "benutzen" sondern mehr versuchen zu "verstehen". 
Dazu müsstest Du aber erstmal etwas kleiner anfangen. Ehe das LCD dran 
ist, solltest Du in Hardware und der von Dir verwendeten 
Programmiersprache einigermaßen sattelfest sein.

...

von Christoph E. (gluema)


Lesenswert?

Hannes Lux wrote:
> Ich vermute, Du hast zuviele Baustellen gleichzeitig. Vielleicht
> solltest Du weniger "benutzen" sondern mehr versuchen zu "verstehen".
> Dazu müsstest Du aber erstmal etwas kleiner anfangen. Ehe das LCD dran
> ist, solltest Du in Hardware und der von Dir verwendeten
> Programmiersprache einigermaßen sattelfest sein.
>
> ...

das ist richtig und die zugehörigen tele wie 7 segment anzeige sind 
schon bestellt minklusive lochrasterplatine für sauberen aufbau und 
weniger fehler. nur bis dahin wollte ich einfach mal so sehen ob es mit 
dem lcd klappt. das ist dann sozusagen richtige motivation das 
auszureizen

von Paul Baumann (Gast)


Lesenswert?

Also gut, da will ich mal sehen:
Pin 1 an Masse
Pin 2 an +5V
Pin 3 an den Schleifer eines 10K-Potentiometers
eine Seite des Potis an Masse
die andere an +5V (zur Kontrasteinstellung)
Pin 4 an PortD.2
Pin 5 an PortD.1
Pin 6 an PortD.3
Pin 7 bis 11 freilassen
Pin 12 an PortD.4
Pin 13 an PortD.5
Pin 14 an PortD.6
Pin 15 an PortD.7

Da dieses Display 2 Controller hat, hat es auch 2 Enable-Eingänge (E1 
und E2) Im Moment ist jetzt nur der erste im Gange und es werden dadurch 
auch nur die ersten beiden Zeilen angesteuert. So, da löte mal.

MfG Paul

von Christoph E. (gluema)


Lesenswert?

Paul Baumann wrote:
> Also gut, da will ich mal sehen:

> Da dieses Display 2 Controller hat, hat es auch 2 Enable-Eingänge (E1
> und E2) Im Moment ist jetzt nur der erste im Gange und es werden dadurch
> auch nur die ersten beiden Zeilen angesteuert. So, da löte mal.
>
> MfG Paul

und das programm kann so bleiben?

von Paul Baumann (Gast)


Lesenswert?

Na freilich, oder was denkst Du, warum ich mir die Mühe mache, die 
Anschlussbelegung auf Deine Codeänderung anzupassen?! ;-)

MfG Paul

von Christoph E. (gluema)


Lesenswert?

Paul Baumann wrote:
> Na freilich, oder was denkst Du, warum ich mir die Mühe mache, die
> Anschlussbelegung auf Deine Codeänderung anzupassen?! ;-)
>
> MfG Paul

ok danke dir vielmals nen kühles blondes hinstell nun hast du 
feierabend verdient

von bas_ratte (Gast)


Lesenswert?

las das cls mal weg das löscht den ganzen bildschirm

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.