LCD weigert sich seine Pflicht zu tun

OP #658418
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
#658463
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.
OP #658476
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?
Gast #658501
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
#658715
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.
OP #658824
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?
Gast #658896
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
OP #659891
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?
OP #659933
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.
Gast #660107
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
OP #660701
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?
#660733
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.

...
OP #660751
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
Gast #660863
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
OP #660937
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren