Forum: Mikrocontroller und Digitale Elektronik AVR Displayansteuerung


von AVR Interessierter (Gast)


Lesenswert?

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 ...

von M. B. (freiberger77)


Lesenswert?

Hast du schon mal den Anschluß des 7805 geprüft ?
Das sieht mir etwas seltsam aus.
Es sollten auch ca 5V rauskommen, und keine 6,3V

von Michael U. (amiga)


Lesenswert?

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

von AVR Interessierter (Gast)


Lesenswert?

@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?

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.