Naja, so kompliziert braucht man nun nicht denken. Wenn man z.B.
USB nutzen will gibt es schöne USB2Seriell-Adapter, welche prima
für die serielle Ansteuerung in PB genutzt werden können.
Wegen LPT ist die Inpout32.DLL sehr praktisch, was dein Out oder Inp unter
PB wiederbelebt
Das mit den Schieberegistern ist einfach und günstig. Du hast acht Bits, die du
je nach Zahl, die gewünscht wird, setzen kannst. Mittels BCD-Treiber-ICS
werden nur über vier Bits eine Siebensegmentanzeige angesteuert. Über die
anderen vier Bits die Zweite. Ich habe mit meinem Simulator mal ein
Beispiel gemacht, wo man sehr schön sehen kann, wie diese
BCD-Codierung arbeitet.
Anstelle der zwei HEXeingabeelemente benutzt du dann über deinen Rechner
dann eben dieses Schieberegister. Programmieren musst du aber selbst in PB.
Die Schaltung sieht für das folgende Testprogramm so aus:
Hier die lauffähige Schalttafel. Leider kann ich die Schaltung dabei nicht
sichtbar machen. Aber im I-Net gibt es genug Beschreibungen über die
BCD-Codierung der vier Bits wie hier:
http://de.wikipedia.org/wiki/BCD-Code
www.falko-pure.de/Tests/Digital/BCD_Steuerung.zip
Über Reichelt.de bekommst du diese Sachen sehr günstig und man braucht
dazu nicht viel. Den einen Schaltplan für das Schieberegisteric 4094
hast du ja schon auf meiner HP gesehen.
Ein Beispielprogramm ist auch unter Purebasicprogramme
vorhanden, wie man mit der Seriellen Schnittstelle in PB das nutzen kann.
Musst eben nur noch das BCD im Schieberegister über zweimal vier Bits
verwalten, was eigentlich auch nicht so schwer sein sollte.
[Edit] Das Verständnis für BCD-Zahlensysteme hier nochmal als PB-Source.
Damit kannst du dann für das Schieberegister die erforderlichen acht Bits
erzeugen, die dann im Dekoder die richtigen Werte übermitteln.
Code: Alles auswählen
;Das BCD-System in ein Byte für zwei Ziffern
;4Bit - Werte einzelner Ziffern
Debug %0000 ;0
Debug %0001 ;1
Debug %0010 ;2
Debug %0011 ;3
Debug %0100 ;4
Debug %0101 ;5
Debug %0110 ;6
Debug %0111 ;7
Debug %1000 ;8
Debug %1001 ;9
Ausgabe.l = 19 ; Deine Zahl gleich 19, die nun in einzelne Zahlen aufgesplittet wird
BinVar.l=Val(Left(Str(Ausgabe),1)) ;Erste Zahl für Zehner
BinVar1.l=Val(Right(Str(Ausgabe),1));Zweite Zahl für Einer
;Binvar << 4 ; Schiebt erste Zahl auf Zehnerposition
;BinVar | BinVar1 ; Schreibt zweite Zahl auf Einerposition
BinVar << 4 | BinVar1 ; Abgekürzt sieht das ganze dann so aus
Debug RSet(Bin(Binvar),8,"0") ; hier wird nur die 0 auch auf dem 8. Bit angezeigt
;Fertig ist der Wert fürs Schieberegister in Verbindung mit dem 7SegDecoder :)
Gruß Falko