2x m5219B, hef4060bp

Gast #1149348
Lesenswert?

Hallo,

hoffe der Beitrag ist noch nicht zu alt.
Ich habe mir auch den Tacho aus dem Kadett GSI zugelegt.
Auf der Platine sind zwei LCD-Controller m5219B in Reihe geschaltet, 
genau wie es im Datenblatt beschrieben wird. Der hef4060bp erzeugt den 
Takt den die LCD-Controller brauchen.
Herausgeführt sind sechs Anschlüsse.
VDD, GND, CLOCK, DATA IN, LOAD und BLANK.
Laut Datenblatt des Controllers liegen 5V Betriebsspannung im normalen 
Bereich.
Nun kann man die Daten seriell in den Controller schieben. Dabei hat 
DATA IN den entsprechenden Wert und wird mit der steigenden Flanke von 
CLOCK übernommen. Wobei die Ausgänge der ersten sieben Sebmente nicht 
angeschlossen sind.
Nachdem man die Daten in den Controller geschrieben hat kann man mit 
einem Impuls auf LOAD die Daten an den internen Latch schicken und somit 
anzeigen.
Was mich jetzt wundert ist, dass der Pin ALL ON auf der Platine auf 
Masse liegt. Im Datenblatt steht das wenn dieser Pin high ist die 
Segmente angesteuert werden. Der BLANK Anschluss ist herausgeführt und 
führt bei high dazu das auf dem Display nichts angezeigt wird. ALL ON 
ist vorrangig über BLANK.
Beim Ausprobieren rührt sich am Display auch nicht.
Habe BLANK auf high und mal auf low gesetzt, ändert aber nichts am 
Ergebnis.
Hab hier mal den Code:
1
.include "m8def.inc"
2

3
.equ maxVal = 48
4
.equ load = 1
5
.equ dataIn = 2
6
.equ clock = 3
7
.def temp = r16
8
.def max = r17
9
.def i = r18
10

11
;PortB als Ausgang
12
ldi temp, 0xFF
13
out DDRB, temp
14
;alle Ausgänge low
15
ldi temp, 0x00
16
out PORTB, temp
17

18
ldi max, maxVal
19
ldi i, 0
20

21
sbi PORTB, dataIn
22
;48 mal high in Controller laden
23
loop1:
24
sbi PORTB, clock
25
cbi PORTB, clock
26
inc i
27
cp max, i
28
brne loop1
29

30
ldi max, maxVal
31
ldi i, 0
32

33
cbi PORTB, dataIn
34
;48 mal low in Controller laden
35
loop2:
36
sbi PORTB, clock
37
cbi PORTB, clock
38
inc i
39
cp max, i
40
brne loop2
41
;Werte in Latch übernehmen
42
sbi PORTB, load
43
cbi PORTB, load
44

45
loop3:
46
rjmp loop3

Die Mindestzeiten zur Ansteuerung werden eingehalten da der Mega8 mit 
1MHz läuft. Werde demnächst mal mit dem Oszi überprüfen ob der hef4060bp 
arbeitet.
Ich komme jetzt nicht drauf wo der Fehler liegt und hoffe das Ihr mir 
weiterhelfen konnt.

Grüße
Angehängte Dateien:
Gast #1153876
Lesenswert?

Habe heute mal den HEF4060BP durchgemessen. Er funktioniert so wie er 
soll. Gibt einen Takt von ~84Hz an die LCD-Controller.

Bin jetzt soweit das ich fast glaube dass das Timing meiner Ansteuerung 
nicht ganz passt.

Kann dazu jemand etwas sagen?

Auf Seite 4 des Datenblatts stehen die minimalen Zeiten die die Signale 
anstehen müssen.
Bei meiner Ansteuerung liegen die signale 1µs an, das ist doppelt so 
lang wie gefordert.
Meine Clockfrequenz zum einladen der Daten liegt bei 0,5MHz mit Duty = 
50%, die Maximale Frequenz liegt bei 1MHz.

Also liege ich innerhalb der Anforderungen. Werde daraus nicht schlau.

Zu dem ALL ON Signal habe ich herausgefunden das es wohl nur zum 
Segmenttest dient, also zur Ansteuerung nicht benötigt wird.
#1350885
Lesenswert?

;)

Ich habe vorgestern auch das alles rausbekommen.

(wusste garnicht dsa hier jemand auch sowas machen will...)

Habe mal auf die schnelle eine Lib mit demo geschrieben.

Nur zwei segmente des mittleren Digits habe ich nicht richtig.

Ansonsten funktioniert die Ansteuerung durch ATMega8 für :

Tankanzeige,
VoltMeter,
Kühlmitteltemp,
Öldruck,
Tacho digit 1+3 (digit 1 kann nur 1,2 oder garnichts anzeigen)

und der DZM.

Bei Digit 2 habe ich einen Fehler im Mapping.

Ansonsten geht alles.

Wenn ich das heute Abend gefixt habe,
stell ich den Source mal in die Codesammlung.

Grüße
  an die OpelFahrer ;)
...und die anderen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren