Gast
#4197485
Hallo zusammen, ich habe vor Kurzem begonnen Mikrocontroller zu programmieren (ATMega 32-16PU) und hab die letzten Tage damit verbracht einen "Treiber" für KnightBright 16 Segment LED Anzeigen zu basteln. Mein Ansatz war alles möglichst einfach zu halten um eine große Flexibilität zu erreichen. Ausserdem habe ich einen Mikrocontroller das letzte Mal im Studium gesehen geschweige denn angefasst :D Mein Programm erlaubt 3 verschiedene Verwendungen: Man kann im Quellcode per say(char[]) einen oder mehrere strings festlegen die dann mit beliebiger Geschwindigkeit angezeigt werden. Man kann aber auch den ATMega auf Port A (Active High - mit 10kOhm pull-down) mit so gut wie Allem was 5V gibt ansteuern. Zur Not auch mit ein paar Kabelresten zwischen VCC und den Pins. Wenn man an Port A ein ASCII-Zeichen in Binär anlegt wird es auf der Segmentanzeige angezeigt. Im Moment allerdings nur A-Z und 0-9 sowie @ und * - allerdings kann man Groß- und Kleinbuchstaben anlegen sie werden aber beide als Großbuchstaben angezeigt. Das bringt schon mal die Anzahl der benötigten Pins von 16 auf 7 und man könnte mit einem anderen ATMega32 oder einem Arduino oder sonst etwas mehrere Displays steuern. Möchte/kann man noch weniger Pins nutzen oder man mag eigene Zeichen nutzen können auch die Segmente einzeln angesteuert werden indem man PA7 eine 1 anlegt und mit PA0-PA3 in Binär die Segmentnummer anlegt wobei Segment A 0000, Segment B 0001, usw darstellt. Das sind dann 5 anstatt 16 Pins - wenn man auch noch auf das "Leerzeichen" verzichten kann und PA7 mit einem Jumper nach VCC überbrückt braucht man nur noch 4 Pins. Ich habe den Quellcode übrigens so gehalten dass man die Ausgangspins zu den verschiedenen Segmenten des Displays leicht ändern kann falls man eine andere Pinbelegung möchte. In meinem Aufbau habe ich einfach Port B an die ersten 8 und Port D an die anderen 8 Pins des Displays gehängt. Zur allgemeinen Belustigung habe ich noch ein Foto meines Aufbaus und eine schematische Zeichnung der Schaltung angehängt. Vielleicht ist das ja irgendwie für andere Anfänger nützlich - selbst wenn es nur als schlechtes Beispiel taugt :D Fragen beantworte ich gerne. Ich habe versucht den Code zu kommentieren ich hoffe das hilft ein wenig. Konstruktive Kritik sehr willkommen.



