mikrocontroller.net

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


Autor: Sascha Brügmann (bruegae)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Brügmann (bruegae)
Datum:

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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Brügmann (bruegae)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :(

Autor: Sascha Brügmann (bruegae)
Datum:

Bewertung
0 lesenswert
nicht 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????

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Klingt nach JTAG-Fuse.

MfG Spess

Autor: Sascha Brügmann (bruegae)
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.