Hoi mensen
Ik heb een vraagje:
Wij zijn dus bezig met een personenteller te maken. Nou zijn de printplaatjes al af maar nu het programmeren nog.
Ik heb al een deel geprogrammeerd maar nu weet ik niet hoe ik mijn 7 segment displays aan moet sluiten.
er zitten ook nog 4094 tussen.
we gebruiken een 89C2051 en ik gebruik bascom om te programmeren.
op poort p3.1 zit de strobe
op poort p3.3 zit de data
op poort p3.4 de clock
op poort 1.7 als er een 1 op staat dan moet ie optellen(zoals te zien in programma) bij rust niet.
op poort 1.6 moet in aftrekken bij rust niet.
op poort 1.5 zit de reset.
hoe kan ik het beste de 7 segment displays programmeren met een schuifregister er in?
Alvast bedankt!
-----------------------------------------------------------
Dim Bteller As Byte
Dim Bingave As Byte
Bteller = 00
Do
P1.5 = 1
P1.7 = 0
P1.6 = 0
If P1.7 = 1 And P1.6 = 0 Then
Bteller = Bteller + 1
Print "persoon binnen " ; Bteller
Waitms 50
P1.5 = 0
Waitms 10
End If
If P1.6 = 1 And P1.7 = 0 Then
Bteller = Bteller - 1
If Bteller = 255 Then
Bteller = 0
End If
Print "persoon weg " ; Bteller
Waitms 50
P1.5 = 0
Waitms 10
End If
Loop
End
-----------------------------------------------------------
bestudeer de datasheet van de 4094.
Maak een array om de 7 seg. displ. te besturen. Dus een array die bij het getal 1 naar de juiste binaire waarde verwijst.enz. voor getal 2.
Maak een functie flow diagram, dan krijg je beter overzicht over wat je moet proggen.
Schrijf dan de sub-routines die de funkties gaan uitvoeren. ( de schift registers besturen)
Ik heb het nu zo gedaan maar blijkbaar werkt dit ook niet. Wat doe ik hier fout?
bascom proggie:
Dim Bteller As Byte
Dim Bingave As Byte
Dim A As Byte , C As Byte , D As Byte , E As Byte , F As Byte , G As Byte
Dim H As Byte , I As Byte , J As Byte , K As Byte , L As Byte
Bteller = 00
Do
P1.5 = 1
P1.7 = 0
P1.6 = 0
If P1.7 = 1 And P1.6 = 0 Then
Bteller = Bteller + 1
Waitms 50
P1.5 = 0
Waitms 10
End If
If P1.6 = 1 And P1.7 = 0 Then
Bteller = Bteller - 1
If Bteller = 255 Then
Bteller = 0
End If
Waitms 50
P1.5 = 0
Waitms 10
End If
If Bteller = 99 Then
Bteller = 00
End If
'***********Display aansturing***************************'
Select Case Bteller
Case 0 : C = 63
Shiftin P3.3 , P3.4 , C , 1
Case 1 : D = 6
Shiftin P3.3 , P3.4 , D , 1
Case 2 : E = 91
Shiftin P3.3 , P3.4 , E , 1
Case 3 : F = 79
Shiftin P3.3 , P3.4 , F , 1
Case 4 : G = 102
Shiftin P3.3 , P3.4 , G , 1
Case 5 : H = 109
Shiftin P3.3 , P3.4 , H , 1
Case 6 : I = 125
Shiftin P3.3 , P3.4 , I , 1
Case 7 : J = 7
Shiftin P3.3 , P3.4 , J , 1
Case 8 : K = 127
Shiftin P3.3 , P3.4 , K , 1
Case 9 : L = 111
Shiftin P3.3 , P3.4 , L , 1
End Select
Loop
End