Hallo Zusammen,
ich wollte mal einen Zähler programmieren der Impulse zählt.Die werden dann auf einen Display anzeigt. (Der Zähler funktioniert wie der von Hengstler Tico 734)
http://www.hengstler.com/gfx/file/sh..._7_2734007.pdf
Leider ist der originale Zähler viel zu groß für mich. Deshalb wollte ich ein 8 x 2 LCD Display für meine Anwendung nehmen. Vielleicht könnt Ihr mir mit der Programmierung auf die Sprünge helfen, bin da ein Anfänger drin. Der Zähler soll hoch und runter zählen können. Und durch einen Voreingestellter Wert, soll ein Ausgang gesetzt werden. Das durchsteppen durch die Zählermenüs soll mit einer Auswahltaste geschehen. Eine Reset Taste setzt den Zähler auf 0.
Hab da schon was programmiert (den Zähler, Up):
Code:
'Display Anschluss (Display 2 x 8)
' Rs = PortD.0
' RW = Port Auf Masse
' E = PortD.2
'Db4 = PortD.4
'Db5 = PortD.5
'Db6 = PortD.6
'Db7 = PortD.7
'Eingänge // Ausgang
'"Eingang" Impuls vom Sensor = PortC.3
'"Eingang" mit der Taste wird die Zählart gewählt 'AUSWAHL' = PortC.0
'"Eingang" mit der Taste wird der Wert im Display auf 0 gesetzt'RESET' = PortC.1
'"Ausgang" Port wird gesetzt,wenn der voreingestellte Zählwert erreicht ist = PortC.2
'Auswahlmöglichkeiten mit der Taste 'AUSWAHL'
'Count-up (bei jedem Impuls zählt der Zähler immer um 1 hoch)
'Count-do (der gezählte Wert von Count-up wird bei jedem Impuls bis nach 0 immer um 1 runtergezählt)
'Count-Pr (hier kann man einen Wert einstellen, wird der erreicht wird der Ausgang gesetzt)
'Funktion der Taste 'Reset'
'Im Count-up und Count-do Betrieb wird der Zähler auf 0 gesetzt
'Im Count-Pr Betrieb dient die Taste zum durch steppen der 8 Stellen. Und mit der Taste Auswahl wird der Wert von 0-9 gesteppt.
'initialisierung
'$sim 'sim Modus
$regfile = "m8def.dat"
$crystal = 8000000
Config Portc.0 = Input 'Taste Auswahl
Config Portc.1 = Input 'Taste Reset
Config Portc.3 = Input 'Impuls
Config Portc.2 = Output 'Ausgang
Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.2 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcd = 16 * 2
Taste_auswahl Alias Portc.0
Taste_reset Alias Portc.1
Ausgang Alias Portc.2
Impuls Alias Portc.3
Dim Count_up As Bit
Dim Count_down As Bit
Dim Count_preset As Bit
Dim X As Byte
Dim Flag As Byte
'-----Startbildschirm für 2 Sekunden------
Cls
Locate 1 , 1
Lcd "Counter "
Wait 2
'-----------------------------------------
'-----Hauptprogramm----------------
'---------------------------------
'Subroutinen
'-----Count-up-----------------
Count_up:
Cls
Cursor Off
Locate 1 , 1
Lcd "Count-up"
Locate 2 , 8
Lcd "0"
Do
If Pinc.3 = 0 Then
Incr X
Locate 1 , 1
Lcd "Count-up"
Locate 2 , 8
Lcd X
While Pinc.3 = 0
Wend
End If
Loop
End
'--------------------------
'------Count-down----------
Count_down:
Locate 1 , 1
Lcd "Count-do"
Return
'--------------------------
'------Count-preset--------
Count_preset:
Locate 1 , 1
Lcd "Count-pr"
Return
'--------------------------
Meine Probleme:
- Zählt der Zähler > 9 dann verschwindet z.B bei der 10 die 0. Und auf den Zähler steht dann eine 1?
- Wie kann ich den Wert mit der Reset Taste wieder auf 0 setzen?
- Wie kann ich den Wert speichert, wenn die Spannung ausgeschaltet wird?
Hat Jemand eine Idee wie ich den Zähler rückwärts laufen könnte (Zähler down). Der Wert soll von Zähler Up übernommen werden. Und wie ich eine Vorwahlzahl einstellen könnte?
mfg
Marius
Lesezeichen