PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitte um Hilfe



Xeus
30.12.2004, 14:37
Hallo
Ich lass über einen m8 ein signal zählen, und über drei 7 Segmentnzeigen anzeigen.
Das Problem ist, das der Zähler bis jetzt nur bis 9 zählt, weil ich pro Anzeige nur eine Stelle anzeigen lassen kann.
Wie schaffe ich es, das die zweite anzeige mit benutzt wird, wenn die zahlt zweistellig wird,usw.??



Gosub Max7219_setup
Main:

Disp_num = 3 ' Ausgabe Digit
Disp_data = Wr1 ' Zähler var
Gosub Disp_write




' setup max7219 config. registers
Max7219_setup:
Disp_num = &H0C : Disp_data = 0 ' Shutdown On
Gosub Disp_write
Disp_num = 9 : Disp_data = &B0011_0111 ' Decode "B" For 1st 6
Gosub Disp_write
Disp_num = &H0A : Disp_data = &H0F ' Brightness Full
Gosub Disp_write
Disp_num = &H0B : Disp_data = 7 ' # Digits 8
Gosub Disp_write
Disp_num = &H0F : Disp_data = 0 ' Test Off
Gosub Disp_write
Disp_num = &H0C : Disp_data = 1 ' Shutdown Off
Gosub Disp_write
Return

' Sends data to the Max7219 display driver
Disp_write:
Disable Interrupts
Reset Ser_data
Reset Ser_clk
Reset Disp_en
Shiftout Ser_data , Ser_clk , Disp_num , 1
Shiftout Ser_data , Ser_clk , Disp_data , 1
Set Disp_en
Enable Interrupts
Return




Schon mal Danke für die Hilfe,
xeus

x-ryder
30.12.2004, 16:44
sooooo:


Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte

Dim I As Word
Dim Temp As Byte
Dim Temp2 As Byte
Dim Temp3 As Byte
Dim Temp4 As Byte

I = 255

N1 = I / 100

Temp2 = N1 * 100
Temp = I - Temp2
N2 = Temp / 10

Temp2 = N1 * 100
Temp3 = N2 * 10
Temp4 = Temp2 + Temp3
Temp = I - Temp4
N3 = Temp

das musste einbinden

I: deine zahl
N1: erste Stelle
N2: zweite Stelle
N3: dritte Stelle

und dann lässte im main jeweils auf der passenden stelle n1, n2 und n3 ausgeben

Martin

Xeus
30.12.2004, 17:08
Erstmal Danke, für deine Hilfe

aber wie muß ich das in mein Prog einbauen?
mein disp zeigt mir 068 an
und es werden nur die hunderterstellen gezählt, und die auch nur bis zwei.
>Ich glaub da hab ich irgentwie was falsch gemacht





Sub 7seg
D1 = Wr1 / 100

Seg2 = D1 * 100
Seg1 = Wr1 - Seg2
D2 = Seg1 / 10

Seg2 = D1 * 100
Seg3 = D2 * 10
Seg4 = Seg2 + Seg3
Seg1 = Wr1 - Seg4
D3 = Seg1

Gosub Max7219_setup
Main:

Disp_num = 3 ' ( 0 - 7 ) digit#
Disp_data = D3

Disp_num = 2 ' ( 0 - 7 ) digit#
Disp_data = D2
' (0 - 15 ) number to display.
Disp_num = 1 ' ( 0 - 7 ) digit#
Disp_data = D1

Gosub Disp_write




' setup max7219 config. registers
Max7219_setup:
Disp_num = &H0C : Disp_data = 0 ' Shutdown On
Gosub Disp_write
Disp_num = 9 : Disp_data = &B0011_0111 ' Decode "B" For 1st 6
Gosub Disp_write
Disp_num = &H0A : Disp_data = &H0F ' Brightness Full
Gosub Disp_write
Disp_num = &H0B : Disp_data = 7 ' # Digits 8
Gosub Disp_write
Disp_num = &H0F : Disp_data = 0 ' Test Off
Gosub Disp_write
Disp_num = &H0C : Disp_data = 1 ' Shutdown Off
Gosub Disp_write
Return

' Sends data to the Max7219 display driver
Disp_write:
Disable Interrupts
Reset Ser_data
Reset Ser_clk
Reset Disp_en
Shiftout Ser_data , Ser_clk , Disp_num , 1
Shiftout Ser_data , Ser_clk , Disp_data , 1
Set Disp_en
Enable Interrupts
Return
End Sub