Forum: Mikrocontroller und Digitale Elektronik EA DIP128-6 LCD Ansteuerprobleme (Wo liegt der Fehler im Code?)


von Sascha B. (bruegae)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe ein kleines Ansteuerprogroblem mit meinem 128x64 Pixel Display. 
Ich wähle die Spalte und Zeile aus und schreibe dann 3 Register mit den 
Werten 00000000, 11111111 und 10101010 in das Display. Für jedes der 3 
Register wird auch etwas angezeigt, aber etwas völlig willkürliches wie 
mir scheint. Das was angezeigt wird, ist aber jedes Mal gleich.
Datenbaltt vom Display: 
http://www.lcd-module.de/deu/pdf/grafik/dip128-6.pdf
Ich habe mal in den Anhang ein Foto vom Display gemacht und hier ist 
mein Code:

;PORTC = D0-D7
;PD6 = R/W
;PD5 = D/I
;PD4 = RES
;PD3 = E2
;PD2 = E1
.include "m644def.inc"

; Stack initialisieren
ldi r16, LOW(RAMEND)
out SPL, r16
ldi r16, HIGH(RAMEND)
out SPH, r16

;I/O Ports konfigurieren
ldi r16, 255
out DDRA, r16 ; Port A Ausgang
out DDRB, r16 ; Port B Ausgang
out DDRC, r16 ; Port C Ausgang
out DDRD, r16 ; Port D Ausgang

reset:

rcall delay
rcall delay
rcall delay

start:
cbi PORTD,6 ;write
cbi PORTD,5 ;instruction
ldi r16,0b00111111
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2




;wähle x 0
cbi PORTD,6 ;write
cbi PORTD,5 ;instruction
ldi r16,0b010111000
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2

;wähle y 0
cbi PORTD,6 ;write
cbi PORTD,5 ;instruction
ldi r16,0b01000000
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2




;write data
cbi PORTD,6 ;write
sbi PORTD,5 ;data
ldi r16,0b00000000
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2

;write data
cbi PORTD,6 ;write
sbi PORTD,5 ;data
ldi r16,0b11111111
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2

;write data
cbi PORTD,6 ;write
sbi PORTD,5 ;data
ldi r16,0b10101010
out PORTC,r16
sbi PORTD,2
rcall delay
cbi PORTD,2


jmp start





delay:

push r19
push r18
push r17
ldi r19,1
miniwt3:
ldi r18,5
miniwt2:
ldi r17,255
miniwt1:
dec r17
cpi r17,0
brne miniwt1
dec r18
cpi r18,0
brne miniwt2
dec r19
cpi r19,0
brne miniwt3
pop r17
pop r18
pop r19
ret



Bitte helft mir! Danke schonmal.
mfg bruegae

von Sascha B. (bruegae)


Lesenswert?

Ein Beispielcode für den KS 0107/8 bzw. HD 61202/3 würde mir auch schon 
viel helfen! Ich finde keines...

von Matthias L. (Gast)


Lesenswert?

>cbi PORTD,6 ;write
>sbi PORTD,5 ;data

Tue hier erstmal die Bitnamen eintragen. Die hier:
;PD6 = R/W
;PD5 = D/I
;PD4 = RES
;PD3 = E2
;PD2 = E1

Dann kan man sich das ja mal ansehen

von dummy (Gast)


Lesenswert?

>Ein Beispielcode für den KS 0107/8 bzw. HD 61202/3 würde mir auch schon
>viel helfen! Ich finde keines...

Was bist du denn für ein Volldepp?

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Ich habe dir mal ein paar Routinen aus einer alten Datei von mir 
zusammenkopiert. Ist aber vor 9 Jahren das letzte mal benutzt worden.
War für den 61202.
Überprüfe mal deine Verdrahtung.

MfG Spess

von Sascha B. (bruegae)


Angehängte Dateien:

Lesenswert?

Ich hab mir spess53's Code angesehen, aber ich kann da nur erkennen, 
dass es da fast genauso funktiniert wie bei mir. Ob ich den enable Pin 
nun auf 0 setze bevor man die Daten anlegt oder hinterher, sollte ja 
wohl egal sein.
Ich hab im Anhang mal man den Code, wie gewünscht, mit erweiterten 
Kommentaren angefügt.

edit: Verkabelung überprüft, musst stimmen!

von holger (Gast)


Lesenswert?

;PORTC = D0-D7
;PD6 = R/W
;PD5 = D/I
;PD4 = RES
;PD3 = E2
;PD2 = E1

Der KS108 hat einen Enable Pin.
Ein 128x64 Display hat zwei CS Pins.
Einer von den drei fehlt hier.

von spess53 (Gast)


Lesenswert?

Hi

>Ob ich den enable Pin nun auf 0 setze bevor man die Daten anlegt oder >hinterher, 
sollte ja wohl egal sein.

Auf S.3 des Datenblattes ist ein Timingdiagramm. Daran kannst du dich 
halten oder nicht.

>dass es da fast genauso funktiniert wie bei mir.

Nein. Mein Code hat damals funktioniert. Deiner nicht.

Mal abgesehen davon, würde ich es heute auch nicht mehr so machen. Ich 
benutze schon seit längerem generell die BUSY-Flag-Abfrage. Das 
Delay-Gedödel habe ich mir schon lange abgewöhnt.

MfG Spess

von holger (Gast)


Lesenswert?

>Der KS108 hat einen Enable Pin.
>Ein 128x64 Display hat zwei CS Pins.
>Einer von den drei fehlt hier.

Uuups, vergiss es. Datenblatt nicht gelesen :(

von Sascha B. (bruegae)


Lesenswert?

Ich glaube ich habe jetzt die Quelle des Problems entdeckt. Wenn ich bei 
dem Vorgang, bei dem man die Pixel direkt anspricht und ihnen sagt 
welchen Zustand sie einnehmen sollen (;write data) kann ich die äußeren 
beiden Bits verändern und die Anzeige passt sich entsprechend an. Bei 
den inneren 4 übrigen kann ich hinschreiben was ich will und nichts 
ändert sich.
Ich habe schon einen anderen Controller (atmega 644) draufgesteckt, aber 
das Problem besteht immernoch. Scheint also ein Problem des Displays zu 
sein????

von spess53 (Gast)


Lesenswert?

Hi

Klingt nach JTAG-Fuse.

MfG Spess

von Sascha B. (bruegae)


Lesenswert?

Jeha! geht!! Danke!!! Wenn du mir jetzt noch sagst wie du darauf 
gekommen bist, bin ich glücklich :)

von spess53 (Gast)


Lesenswert?

Hi

Als du die vier Bit erwähnt hast. Plus PortC. Du bist nicht der Erste, 
und mit Sicherheit nicht der Letzte, dem das passiert ist

MfG Spess

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.