www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tasterzustand halten und auf LCD anzeigen - Bascom


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe mir vor kurzem bei Pollin ein LCD bestellt. Dieses habe ich 
angeschlossen und es zeigt auch das an, was ich will.
Habe jetzt ein kleinen Programm geschrieben, mit dem ich den Zustand des 
Portb.0 abfrage und damit eine LED schalte. Gleichzeitig steht auf dem 
Display in Zeile 2: "LED 1 ist ein" oder eben "LED 1 ist aus"
Auch das Funktioniert wunderbar. Nun möchte ich aber einen Taster 
verwenden und beim drücken soll die LED angehen und anbleiben, bei 
erneutem drücken ausgehen. Ich habe mit dem Toogle befehl zwar kleine 
Erfolge erzielt (ohne LCD), aber die LED macht beim schalten was sie 
will. Mal geht sie an, mal wird sie bei gedrücktem Taster bloß dunkler 
und geht aber nach loslassen nicht aus sondern bleibt an usw...
Den Taster schalte ich gegen Masse und die internen Widerstände sind 
aktiviert, das solte doch eigentlich als Entprellung genügen oder?
Ich habe gelesen, das es einen Befehl names Debounce gibt, der eine 
Subroutine in gang setzt. Mir isr allerdings nicht ganz klar, wie ich 
den Befehl in meinen Programm einsetze. Könntet ihr mal mit 
drüberschauen?

Das ist jetz das Programm was ich aktuell zusammengekriegt habe. Es 
schlatet die LED, aber nur so lange wie ich den Taster gedrückt halte.
Hatte jetzt auch schon diesen Debounce Befehl an verschieden Stellen 
eingesetzt, aber es will nicht so recht klappen :( Wo müsste der Befehl 
hin und was müsste alles drin stehen?

 $regfile = "m8def.dat"
 $crystal = 16000000

 Config Pinb.0 = Input
 Portb.0 = 1
 Config Portb.1 = Output
 Config Lcd = 20 * 2
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 Config Lcdbus = 4
 Cursor Off

Do
 Locate 1 , 1
 Lcd "Hallo Welt"
 If Pinb.0 = 0 Then
 Locate 2 , 1
 Lcd "LED 1 ist ein"
 Else
 Locate 2 , 1
 Lcd "LED 1 ist aus"
 End If
 If Pinb.0 = 0 Then
 Portb.1 = 0
 Else
 Portb.1 = 1
 End If
Loop
End

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

es klappt nun doch. Habe jetzt die Subroutine Schalten unter den Befehl 
Loop geschrieben und den Befehl Debounce in die Zeile unter Hallo Welt. 
Dann habe ich noch die Ports etwas angepasst. Jetzt gehts.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.