Wie schon einige zuvor, komme ich mit der Ansteuerung des Grafik-Display
DataVision DG-16080-11
(http://www.pollin.de/shop/shop.php?cf=suche_ergebnis.php&S_TEXT=lcd-modul&btn_submit=Suchen&ts=0)
nicht weiter. Trotz der bisherigen Beitraege zu diesem Display, kann ich
das Display nicht korrekt ansteuern.
Der verwendete µC ist ein ATMega8515L, der beim bekannten STK500 dabei
ist. Die Pinbelegung wurde mehrfach geprueft:
1: GND
2: +5V
,-----------------, 3: +12,2V
| | 4: PB0
| TP-Anschluss -> |-| 5: PB1
| |-| 6: PB2
| 1 .......... 20 | 7-14: PORTD
'-----------------' 15: GND
16: +5V
17-20: NC
Das Merkwuerdige ist das scheinbar zufaellige Verhalten des Displays.
Manchmal sieht man einen schwarzen, senkrechten Streifen auf der linken
Seite, meistens jedoch nichts. Nichts im Sinne von unangeschlossen in
der Verpackung liegend.
Die Versorgungsspannungen sind meiner Meinung nach stabil. Allerdings
laeuft das STK500 unabhaengig von der POWER-Schalterstellung. Wenn der
Schalter auf "aus" ist, messe ich +6,3V am Ausgang des 7805 (s.u.) und
das STK500 wird nahe des LM317M (STK500) ziemlich warm.
+12,2V
>-------x----------x-----------------------
| | |
STK500 7805--------| Display(+12V)
| | Display(+5V) |
>-------x----------x---------x-------------
GND
Anbei der Quelltext:
1
.include "m8515def.inc"
2
3
.equ RS = PB0
4
.equ RW = PB1
5
.equ E = PB2
6
.equ B = PD7
7
; DB0...DB7 PORTD
8
; Takt ~3,6MHz
9
; AVR Studio Version 4.14.589
10
11
; Interruptvektoren
12
.org 0x0000
13
rjmp start
14
reti reti reti reti
15
reti reti reti reti
16
reti reti reti reti
17
reti reti reti reti
18
reti reti
19
20
.org 0x0013
21
start:
22
; Stack initialisieren
23
ldi r16, low(ramend)
24
out spl, r16
25
ldi r16, high(ramend)
26
out sph, r16
27
28
; PORTB, PORTD als Ausgang
29
ser r20
30
out DDRB, r20
31
out DDRD, r20
32
sbi PORTB, RS
33
cbi PORTB, RW
34
cbi PORTB, E
35
36
; LCD initalisieren
37
eor r20, r20 ; Grafikmodus
38
ldi r21, 0x32
39
rcall LCD_Anweisung
40
ldi r20, 1 ; Bits/Byte
41
ldi r21, 8-1
42
rcall LCD_Anweisung
43
ldi r20, 2 ; Bytes/Zeile
44
ldi r21, 160/8-1
45
rcall LCD_Anweisung
46
ldi r20, 3 ; Zeilenanzahl
47
ldi r21, 80-1
48
rcall LCD_Anweisung
49
ldi r20, 8 ; Startadresse (lower)
50
eor r21, r21
51
rcall LCD_Anweisung
52
ldi r20, 9 ; Startadresse (upper)
53
eor r21, r21
54
rcall LCD_Anweisung
55
56
ldi r20, 10 ; Cursoradresse (lower)
57
eor r21, r21
58
rcall LCD_Anweisung
59
ldi r20, 11 ; Cursoradresse (upper)
60
eor r21, r21
61
rcall LCD_Anweisung
62
ldi r16, 80
63
w1:
64
ldi r17, 160/8
65
w2:
66
ldi r20, 12 ; schreiben
67
ldi r21, 255
68
rcall LCD_Anweisung
69
dec r17
70
brne w2
71
dec r16
72
brne w1
73
74
fertig:
75
rjmp fertig
76
77
78
79
LCD_Anweisung:
80
/*
81
Befehl r20
82
Daten r21
83
geaendert r22
84
*/
85
push r22
86
87
eor r22, r22
88
out DDRD, r22
89
sbi PORTB, RW
90
sbi PORTB, RS
91
busy:
92
sbi PORTB, E
93
nop
94
in r22, PIND
95
cbi PORTB, E
96
sbrc r22, 7
97
rjmp busy
98
99
cbi PORTB, RW
100
ser r22
101
out DDRD, r22
102
out PORTD, r20
103
sbi PORTB, E
104
nop
105
cbi PORTB, E
106
107
cbi PORTB, RS
108
out PORTD, r21
109
sbi PORTB, E
110
nop
111
cbi PORTB, E
112
113
pop r22
114
ret
Gebrauchen koennte ich sowas wie einen Hinweis auf die Ursache ...
Hallo,
ich frage mich gerade, wie Du auf die 12V an Pin 3 kommst, das ist Vee,
die kommt an den Schleifer eines Einstellreglers für den Kontrast.
Dieser liegt zwischen GND und Pin 17, -10V, die das Display erzeugt...
Außerdem: Du weißt aber, daß das STK500 am Eingang einen
Brückengleichrichter hat und die Netzteilbuchse nicht direkt mit GND des
STK500 verbunden ist?
Irgendwas schließt Du also kurz mit solch einer BEschaltung, abhängig
davon, welchen Anschluß der Netzteilbuchse Du mit GND verbindest.
Das muß nicht stören, aber wenn der Schalter in der GND-Leitung liegt
sind die Verhältnisse bei offenem Schalter ziemlich undefiniert und
evtl. ungesund für irgendwelche Komponenten.
Gruß aus Berlin
Michael
@Marco B.
--------------------------------
+12,2V | |
>-------x-------7805------- |
| | | Display(+12V)
STK500 | Display(+5V) |
| | | |
>-------x---------x-------x-------------
GND
_
@Michael U.
Das Datenblatt sagt mir jedenfalls was anderes (power supply for lcd).
Außerdem messe ich am Pin17 -2,3V gegen GND. Der Brueckengleichrichter
ist mir schon bekannt, jedoch weiß ich jetzt nicht genau warum ich etwas
kurzschließen wuerde.
_
Waere das Programm soweit in Ordnung oder gibt es was Grundlegendes zu
bemaengeln, sofern man das ohne die genaue Kenntnis der Außenbeschaltung
des µC sagen kann? Ansonsten, was sollte ich denn hardwaremaeßig
aendern, damit ich irgendwann zu einem funktionierendem etwas komme?