-
        

Ergebnis 1 bis 6 von 6

Thema: Zähler mit Vorwahl

  1. #1

    Zähler mit Vorwahl

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240
    Hi Marius,

    es gibt sicherlich einige Leute hier die dir helfen wollen. Allerdings wäre ein Schaltplan eventuell ganz gut =)

    Wie hast du das mit der Auswahltaste realisiert? Einfach ein Taster bei dem ich draufdrücke und der "Soll-Wert" erhöht sich dann immer um eins oder wie?

    Den Wert Rückwärts laufen lassen... hmm entweder einfach per Umschalter.

    Wofür brauchst du es denn? Der Beschreibung nach will stu vielleicht eine Trafowickelmaschine bauen? (ist nur ne vermutung) oder willst du einfach umdrehungen zählen? Das würde ich mit ein paar Lichtschranken am Anker realisieren. Das Zählt dann je nach Laufrichtung gleich hoch oder runter...

    Gruß
    Felix

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240
    ooh ich lese es gerade.... sorry wegen der frage mit der Auswahltaste...

    Naja ich hab gerade ein wenig in der Hilfe von Bascom studiert und jetzt kann ich endlich daten in den EEPROM speichern *freu* ist ja wirklich mehr als einfach. Aber leg erst einmal einen schaltplan dazu ab

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    zu deiner 10 in der anzeige:
    die 10 wird in die 8 spalte geschrieben ,also die 1 in die 8te und
    0 in die neunte -> die du aber leider nicht hast (display 2x8 zeichen).

    also setzte den locate auf 7 und schon hast du 10 angezeigt.

    mike

  5. #5
    Hallo Felix, ich wollte damit Typenschilder zählen. Der Schaltplan ist ganz einfach. Display , der Controller, und zwei Tasten. Aber ich mach den morgen mal fertig. Wollte erstmal alles auf den STK500 ausprobieren.

    Hallo Mike, das mit der Stelle hab ich schon herausgefunden, nur leider, wenn der Wert 8 stellig ist dann muss ich ganz am Anfang (links) meine Zahl setzen. Das sieht nicht so toll aus. Gibt es ein Befehl? Wenn die 9 (99,999...) erreicht ist, dann schreibe das nächste Ergebnis um eine Stelle weiter?

    Danke für eure Hilfe...

    Marius

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    shiftlcd, schaue dir mal in der hilfe von Bascom den befehl an.

    mike

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •