Hallo,
ich habe mir ein Grafikdisplay von Pollin gekauft Bestnr. 120424.
Bezeichnung TG12864B-03 komp. zu KS0108.
Nun sitze ich schon seit Tagen vor meinem Programm um das Display
anzusteueren. Leider gibt das Ding nichts von sich. Ich kann den
Kontrast einstellen, aber ein paar Punke darzustellen, dass habe ich
nicht geschafft. Display ist laut dem Datenblatt von Pollin richtig
angeschlossen. Verbindungen habe ich mehrmals nach geprüft.
Ich schicke euch mein Listing. Vielleicht sieht einer mein Denkfehler,
oder ist das Display defekt? PS: Busybit werte ich noch nicht aus, und
warte lieber.
Listing:
; Grafik_LCD mit KS0108 (Display von Pollin)
;
.include "m8515def.inc"
;
; PIN7 D0 -> PD0
; PIN8 D1 -> PD1
; PIN9 D2 -> PD2
; PIN10 D3 -> PD3
; PIN11 D4 -> PD4
; PIN12 D5 -> PD5
; PIN13 D6 -> PD6
; PIN14 D7 -> PD7
;
; Definition Ports
;
.equ DI = PB0 ;H=Daten L=Instruction Pin4
.equ RW = PB1 ;H=Data read L=Data write Pin5
.equ E = PB2 ;Enable Pin6
.equ CS1 = PB3 ;H= Left side Pin15
.equ CS2 = PB4 ;H= Right side Pin16
.equ RST = PB5 ;L= Reset Pin17
.equ BF = PD7 ;H= int.op. L= ready Pin14
;
; Display Befehle
;
.equ DSP_ON = 0b00111111 ;Display ein
.equ DSP_OFF = 0b00111110 ;Display aus
.equ LINE = 0b11000000 ;Start_linie
.equ X_POS = 0b10111000 ;Page (0-7)
.equ Y_POS = 0b01000000 ;Y-address (0-63)
;
; Register Bezeichnungen
;
.def Zahl = r0
.def temp = r16
.def delay = r17
.def delay2 = r18
.def delay3 = r19
;
;
;
.cseg
.org 0x00 ; Startadresse
;
; Stack festlegen
;
ldi temp,0x5F
out SPL,temp
ldi temp,0x02
out SPH,temp
;
; Ports initialisieren
;
ldi temp,0b11111111 ;
out DDRB,Temp ; PortB ist Ausgang
out DDRD,Temp ; PortD ist Ausgang
;
; Start Test
;
start: rcall wait
;
;
sbi PortB,RST ; RESET auf 5V setzen
rcall wait
rcall DSP_L ; Linke Seite aktivieren
rcall wait
rcall DSP_AN ; Display an
rcall ST_LINE
rcall X_
rcall Y_
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
ldi temp,0b01010101
rcall DATEN
ldi temp,0b10101010
rcall DATEN
;
ENDE: rjmp ENDE
;
DSP_AN: rcall WDI
ldi temp,DSP_ON
out PortD,temp ; Display ein
rcall Enable ; Daten werden vom Display übernommen
Ret
;
DSP_L: sbi PortB,CS1 ; CS1 an (linke Seite)
cbi PortB,CS2 ; CS2 aus
Ret
;
DSP_R: cbi PortB,CS1 ; CS1 aus
sbi PortB,CS2 ; CS2 an (rechte Seite)
Ret
DSP_B: sbi PortB,CS1 ;
sbi PortB,CS2 ;
Ret
;
ST_LINE: rcall WDI
ldi temp,LINE
out PortD,temp ; Anfangsline Y=0
rcall Enable ; Daten werden vom Display übernommen
Ret
;
X_: rcall WDI
ldi temp,X_POS
out PortD,temp ; X Position 0
rcall Enable ; Daten werden vom Display übernommen
Ret
;
Y_: rcall WDI
ldi temp,Y_POS
out PortD,temp ; Y Position 0
rcall Enable ; Daten werden vom Display übernommen
Ret
;
WDD: cbi PortB,RW ; 0= Schreiben Daten schreiben
(W)rite(D)isplay(D)ata
sbi PortB,DI ; 1= Daten
Ret
;
WDI: cbi PortB,RW ; 0= Schreiben Instr.schreiben
(W)rite)(D)isplay(I)nstr.
cbi PortB,DI ; 0= Instruktion
Ret
;
DATEN: rcall WDD ; Daten werden ans Display gesendet
out PortD,temp
rcall Enable
Ret
;
;
ENABLE: rcall wait
sbi PortB,E ; LCD /enable (freigabe) ÜBERNAHME BEI FALLENDER
FLANKE
nop
nop
rcall wait
cbi PortB,E ; Übernahme
nop
nop
rcall wait
sbi PortB,E ; Enable auf 1, damit Daten gelesen werden können
ret
;
; Warteschleife
;
Wait: ldi Delay3,20
loop2: ldi Delay2,255
loop1: ldi Delay,255
loop: dec delay
brne loop
dec delay2
brne loop1
Wait2: dec delay3
brne loop2
ret
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.