So hier mal der Code Quick und Dirty. (BASCOM)
Soll nur als Demo gelten,
Verbesserungen sind unabdingbar, soll nur die Funktion des multiplexens verdeutlichen.
Natürlich wäre es viel eleganter wenn zunächst eine Segment decodierung erfolgen würden, welcher man einen Zahlenwert in den erforderlichen Binärcode fertig umsetzt.
Dies wäre ein Paradebeispiel für eine Funktion (man übergibt was und bekommt dafür was abderes zurück.
Code:
' Multiplex Anzeige
'
' 4 Stellige 7-Segment Multiplexanzeige ansteuern
' Simple Version
'
' Segmente werden übder die Aliase gesetzt (bitte anpassen)
' Pulsdauer über die Konstante Pulsdauer veränderbar
Segment_a Alias Portb.0
Segment_b Alias Portb.1
Segment_c Alias Portb.2
Segment_d Alias Portb.3
Segment_e Alias Portb.4
Segment_f Alias Portb.5
Segment_g Alias Portb.6
Segment_dp Alias Portb.7
Const Pulsdauer = 100000
Dim X As Byte
Do
'Darstellung 0
Set Segment_a
Set Segment_b
Set Segment_c
Set Segment_d
Set Segment_e
Set Segment_f
Reset Segment_g
Pulseout Portb , 0 , Pulsdauer
'Darstellung 1
Reset Segment_a
Set Segment_b
Set Segment_c
Reset Segment_d
Reset Segment_e
Reset Segment_f
Reset Segment_g
Pulseout Portb , 0 , Pulsdauer
'Darstellung 2
Set Segment_a
Set Segment_b
Reset Segment_c
Set Segment_d
Set Segment_e
Reset Segment_f
Set Segment_g
Pulseout Portb , 0 , Pulsdauer
'Darstellung 3
Set Segment_a
Set Segment_b
Set Segment_c
Set Segment_d
Reset Segment_e
Reset Segment_f
Set Segment_g
Pulseout Portb , 0 , Pulsdauer
Loop
End
Du hast nur ein Problem nicht bedacht.
Verwende nicht die RXD und TXD Leitungen für die Dekaden,
oder wie willst du was darstellen?
Irgendwie müssen doch noch Werte übergeben werden (RS232).
Oder soll das ein Zähler werden?
Lesezeichen