HDSP2000 LED-Anzeige

M@rco

Neues Mitglied
30. Juli 2011
30
0
0
Sprachen
  1. BascomAVR
  2. ANSI C
Hallo,

ich habe ein HDSP2000LP hier liegen und möchte es ansteuern (nur Zahlen). Allerdings gibt das Datenblatt (siehe Anhang) wenig her und auch im Internet sind die Angeben eher rar.
Was ich bis jetzt habe: Die Displays bestehen aus je vier 5x7 Matrizen. Die 5 Spalten werden je über einen Pin angesteuert, die Zeilen müssen seriell gesendet werden. Und genau da komme ich nicht weiter. Das Display hat außerdem interne Schieberegister.

Hat schonmal jemand mit so einer Anzeige gearbeitet? Ich würde mich über jede Hilfe freuen.

Gruß Marco
 

Anhänge

  • HDSP200x_new.pdf
    420,6 KB · Aufrufe: 11
Hi Marco,

Allerdings gibt das Datenblatt (siehe Anhang) wenig her und auch im Internet sind die Angeben eher rar.
Was ich bis jetzt habe: Die Displays bestehen aus je vier 5x7 Matrizen. Die 5 Spalten werden je über einen Pin angesteuert, die Zeilen müssen seriell gesendet werden. Und genau da komme ich nicht weiter. Das Display hat außerdem interne Schieberegister.
steht doch alles im Datenblatt (das sag ich jetzt so einfach :rolleyes:) ...

Das wichtigste zuerst ...

"Figure 4. Block Diagram"

Dann dieses hier ...

"Figure 1. Timing Characteristics"

und das Bildchen auf der ersten Seite rechts mit den Pinbelegungen.

Bei "Serial Data Input" schiebst du die Daten über "Clock" rein. Ganz normales Schieberegister. Das nächste Display hängst du mit seinem "Serial Data Input" an das "Serial Data Output" des vorherigen. Die hängen also nachher in einer Schlange hintereinander. Alle "Clock" Pins zusammengeschaltet. Datenbit am "Serial Data Input" anlegen und am "Clock" nen negativer Puls um das Bit ins Schieberegister zu übernehmen. Ob das jetzt bei der fallenden oder steigenden Flanke des Impulses übernommen wird ist erstmal egal.

Mit dem Eingang "Blanking Control" machst du es an/hell (High/1) oder aus/dunkel (Low/0).

Die Organisation der Bit des Schieberegisters ist auch auf Bild4 zu sehen ...
Display 1 - Reihe 1
Display 1 - Reihe 2
Display 1 - Reihe 3
Display 1 - Reihe 4
Display 1 - Reihe 5
Display 1 - Reihe 6
Display 1 - Reihe 7
Display 2 - Reihe 1
...
Display 4 - Reihe 6
Display 4 - Reihe 7

Die Spalteneingänge sind auch zu sehen und wie sie an die Displaystellen geführt werden.

Darum mag ich diese Blockschaltbilder in den Datenblättern so gerne und weise immer darauf hin.

Es ist eine ganz normale Matrixanzeige. Du hast lediglich die Schieberegister bereits drin. OK .. die Organisation der Pixel ist etwas komisch. Das läßt sich allerdings über Software problemlos ansteuern.

Was du darauf anzeigst (Text, Zahlen, Herzchen, ...) hängt nur von deinem selbst gebastelten oder zusammengeklauten :cool: Zeichensatz ab.

Funktion ...

- Alle Pixeldaten der ersten Spalte ins Schieberegister
- erste Spalte aktivieren/anschalten
- etwas Zeit vergehen lassen
- erste Spalte aus
- Alle Pixeldaten der zweiten Spalte ins Schieberegister
- zweite Spalte aktivieren/anschalten
- etwas Zeit vergehen lassen
- zweite Spalte aus
- usw ...

Ist garnicht kompliziert :cool:

Du mußt lediglich noch nen paar Treiberstufen für die Spaltenleitungen dazubasteln. Da die Spalten mit der Anode verbunden sind, würde ich nen UDN2981 Source-Treiber empfehlen. Muß man nur noch sehen wie es mit der Strombegrenzung für die LEDs aussieht. Müßte man das Datenblatt mal etwas eingehender durchlesen. Scheint aber alles drin zu sein.

Gruß
Dino
 
Danke für deine schnelle und ausführliche Antwort, Dino!

Da bin ich wohl etwas blind gewesen. Scheint wirklich nicht so problematisch zu sein. Ich kann mittlerweile auch etwas anzeigen. Jetzt fehlt mir nur noch ein Zeichensatz für 0 bis 9 ;) Aber das krieg ich noch irgendwie hin :)
 
Hallo,

heute habe ich mal wieder weitergemacht. Ich hatte auch gleich eine Zahl auf dem ersten Digit (wie gewollt) stehen. Allerdings zeigen die anderen Digits auch etwas an. Die gewünschte Zahl steht wie geplant im ersten Digit, aber die anderen zeigen etwas undefiniertes an.
Mir ist jetzt nicht ganz klar, was da abläuft.

Mal der Fall für nur eine Zeile:
Ich schiebe erstmal 28Bit (nur Nullen) rein, damit das Display "leer" ist. dann schiebe ich 7Bit entsprechend meiner Font rein und schalte die Spalte ein. Dann warte ich und schalte die Spalte aus. Dann ist die nächste Zeile dran.

Zum Verständnis: Ich muss seriell 28Bit rüberschieben. Bit 1-7 sind für Digit1, Bit 8-14 für Digit2, usw. Wenn ich jetzt aber eine 28Bit-Kette rüberschiebe, dann wird zwar das Richtige angezeigt, allerdings treten Verschiebungen auf. Wie wenn zwischendurch noch ein paar Nullen ins Schieberegister kommen.

Wo liegt denn der Fehler? Kann es sein, dass es nur wegen meiner (zugegebenermaßen schrottigen quick&dirty-) Routine mit wait zu den Fehlern kommt?

Gruß Marco

Hier ma noch der Test-Code:
Code:
$regfile = "m8def.dat"
$crystal = 1000000

Ddrc = &B11111111

Dim X As Byte , Y As Byte , U As Byte , V As Byte , W As Byte , T As Byte

T = Lookup(1 , Spalte1)                      'es soll eine 1 auf Digit1 angezeigt werden
U = Lookup(1 , Spalte2)
V = Lookup(1 , Spalte3)
W = Lookup(1 , Spalte4)
X = Lookup(1 , Spalte5)

Y = &B0000000000000000000000000000

Do

Shiftout Portb.3 , Portb.5 , Y

Portc.0 = 1                                    'PortC.0 bis PortC.4 sind die Spalten 1 bis 5
Shiftout Portb.3 , Portb.5 , T
Waitms 2
Shiftout Portb.3 , Portb.5 , Y
Portc.0 = 0

Shiftout Portb.3 , Portb.5 , Y

Portc.1 = 1
Shiftout Portb.3 , Portb.5 , U
Waitms 2
Shiftout Portb.3 , Portb.5 , Y
Portc.1 = 0

Shiftout Portb.3 , Portb.5 , Y

Portc.2 = 1
Shiftout Portb.3 , Portb.5 , V
Waitms 2
Shiftout Portb.3 , Portb.5 , Y
Portc.2 = 0

Shiftout Portb.3 , Portb.5 , Y

Portc.3 = 1
Shiftout Portb.3 , Portb.5 , W
Waitms 2
Shiftout Portb.3 , Portb.5 , Y
Portc.3 = 0

Shiftout Portb.3 , Portb.5 , Y

Portc.4 = 1
Shiftout Portb.3 , Portb.5 , X
Waitms 2
Shiftout Portb.3 , Portb.5 , Y
Portc.4 = 0

Loop

End

Spalte1:
Data &B0111110 , &B0000000 , &B1000010 , &B0100001 , &B0011000 , &B0100111 , &B0111100 , &B0000001 , &B0110110 , &B0000110

Spalte2:
Data &B1010001 , &B1000010 , &B1100001 , &B1000001 , &B0010100 , &B1000101 , &B1001010 , &B1110001 , &B1001001 , &B1001001

Spalte3:
Data &B1001001 , &B1111111 , &B1010001 , &B1000101 , &B0010010 , &B1000101 , &B1001001 , &B0001001 , &B1001001 , &B1001001

Spalte4:
Data &B1000101 , &B1000000 , &B1001001 , &B1001011 , &B1111111 , &B1000101 , &B1001001 , &B0000101 , &B1001001 , &B0101001

Spalte5:
Data &B0111110 , &B0000000 , &B1000110 , &B0110001 , &B0010000 , &B0111001 , &B0110000 , &B0000011 , &B0110110 , &B0011110
 
Hi,

hast du mal dran gedacht das dir SchiftOut 8Bit rüberschiebt und deine zwar angegebenen 7Bit Binärwerte im Prozessor auch mit 8Bit verarbeitet werden?

Nur weil du nur die letzten 7Bit angibst, wird es intern nicht mit 7Bit verarbeitet :p

Das ist ein 8Bit-Prozessor mit 8Bit-Registern. Denk dir also mal bei jedem Wert das vorderste Bit als Null. Dann weißt du wo es herkommt.

Entweder du bastelst die Bits beim rausschieben so zusammen das du bei 28Bit dann das nächste Vielfache von 8 (also 32Bit = 4x8Bit) rausschiebst wobei 4Bit hinten aus der Anzeige rausfallen oder du baust dir ne Routine die von dem 8Bit-Wert immer nur 7Bit rausschiebt (evtl per Software) oder du findest einen Befehl bei dem du angeben kannst wieviel Bit er rausschieben soll.

Gruß
Dino
 
Ohhh neeeeiiinnn :rolleyes: hätt ich eigentlich auch wissen müssen. Danke!
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)