Ich möchte ein Testprogramm für von uns produzierte Siebensegmentanzeigen schreiben das nach der Fertigung die Funktion überprüft.
Die Anzeigen funktionieren nach einem Protokoll von Motorola MC14499.
Man muss 20 bit übergeben und mit einer Enable Leitung zuerst die anzeige zum Zuhören bewegen und dann die 20 Bit übertragen mit einem Clock als Dritte Leitung.
4 BIT sind für die Platzierung des Dezimalpunktes, 4 BIT für 7 Segment 1, 4 BIT für Siebensegment 2, 4 Bit für Siebensegment 3 und 4 BIT für Siebensegment 4. Alles zusammen 20 BIT. Das Protokoll und die Zuordnung kann man im Anhang sehen. Seiten 17 und 18.
Also wir haben DATA, CLOCK und ENABLE.
Das mit den Pegeln biege ich schon hin ob das dann 0 volt oder 24 Volt sein sollen an der Anzeige mit einem zusätzlichen Transistor oder nicht.
Nun das Problem. Ich bin sehr, sehr neu und es soll mein erstes halbernstes Projekt werden.
Der Arduino läuft am PC mit dem Seriellen Fenster.
Was soll es können:
1) und wichtigstes
Es soll zuerst der Dezimalpunkt von linken Display zum rechten display wandern um zu sehen dass die Led gehen und keine Kurzschlüsse zu anderen Leds haben.
Dann sollen von der ersten Anzeige (links) alle Segmente nacheinander Ein und wieder ausgehen um zu sehen ob die gehen und nicht mit anderen verbunden sind. Das wiederholt sich für alle 4 Siebensegmente.
2) Man soll über die Tastatur einen Wert eingeben können z.b.: 123.4 und das soll dann auf der Anzeige stehen.
Mein Problem ist nun (abgesehen von sowieso allem) wie krieg ich das in ein 20 Bit Datenwort, und kann man das dann mit dem shiftOut() von dem ich in Foren gelesen habe rausclocken.
Wäre echt dankbar für grundlegende hilfen um endlich mal den Knoten etwas wegzubekommen.
| Attachment | Size |
|---|---|
| diga4s.pdf | 711.58 KB |


vor 30 weeks 2 days
Hallo
Einen 20 Bit Datentypen gibt es nicht und du brauchst eigentlich auch nicht unbedingt einen. Es wäre zwar möglich ihn zu erstellen bringt aber in dem Zusammenhang mehr Aufwand als Nutzen, darum geh ich jetzt auch gar nicht weiter darauf ein.
Nimm einfach ein long das ist groß genug und die übrigen 12 Bit werden einfach ignoriert.
Das hilft nur leider nicht bei der Sache mit dem shiftOut() das ist nämlich nur für 8Bit Daten geschrieben.
Versuch mal wie die Anzeige darauf reagiert wenn du ihr 3 Byte mit dem shiftOut() fütterst. Im besten Fall ignoriert sie die letzten vier Bit und Zeigt was schönes an.
Meld dich wieder wenn du weißt ob es so hinhaut, sonst müssen wir uns was anderes einfallen lassen.
mfg
Spot
Login or register to post comments