PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zählerfunktion Dezimal auf LCD



GAGI
28.09.2007, 09:20
hallöchen erstmal!

ich habe das MyAVR USB Board mit dem LCD AddOn und bin noch nen
frischling in sachen AVR!

habe schon mit diesem teil herumexperimentiert
aber mit variablen komme ich nicht weiter!
statische sachen wie leds blinken oder was aufm LCD anzeigen
lassen ist kein problem

und zwar möchte ich, wenn ich auf einen taster auf dem board drücke,
das er mir in einer zählerfunktion das auf dem LCD Dezimal darstellt!

z.B.: 1mal drücken = Auf LCD 1
nocheimal drücken = Auf LCD 2
nocheimal drücken = Auf LCD 3
nocheimal drücken = Auf LCD 4
nocheimal drücken = Auf LCD 5
u.s.w......


hätte da vieleicht einer nen kleines Prog. für Bascom oder ähnliches???

würde mich sehr über antworten und oder anregungen freuen!
Alles kann, nichts muss!

Rofo88
28.09.2007, 11:33
Nur so zum Denkanstoß. Das Einlesen des Tasters macht man mit Debounce um das Tastenprellen wegzubekommen. Kannst ja mal in der Hilfe danach schaune.


Dim X As Word


If Pina.0 = 1 Then
Incr X
Locate 1 , 1
Lcd X
endif

GAGI
29.09.2007, 16:04
ich glaube das ist ganzschön komplieziert für nen anfänger
nen punktezähler zu programmieren!

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

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Cursor Off
Cls
Config Lcd = 16 * 2
Config Portd = Output
Waitms 1000
Config Pinc.0 = Input

Dim X As Byte

Do
If Pinc.0 = 1 Then Incr X
Locate 1 , 10
Lcd X

Loop
End

so sieht mein prog. aus,
er zählt schön vor sich her,
ohne auf den taster zu höhren!
ich weiß nichtmehr was ich machen soll!

Rofo88
29.09.2007, 16:33
Da ist jetzt die Frage wie dein Tasteranschluß aussieht. Schaltet der gegen Masse oder gegen VCC? Sind da Pullup/Pulldown-Widerstände drann?

Das nächste Problem was Du bekommen wird ist das er wenn Du den Taster einmal drückst die Schleife mehrfach durchläuft und damit "schneller" zählt als Du willst.

Christopher1
29.09.2007, 16:35
Schreib mal den Code das nächste mal in den Code Tags.
Hast du einen externen Pullup dran ?
Hier mal mein Code, weiß nicht ob der stimmt.


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

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Config Lcd = 16 * 2
Cursor Off
Config Portd = Output
Config Pinc.0 = Input
Portc.0 = 1
Dim X As Byte
Cls

Do
If Pinc.0 = 0 Then Incr X
Locate 1 , 10
Lcd X

Loop
End

GAGI
29.09.2007, 17:46
vielen dank für dein prog. !

jetzt zählt er wenn man auf det taster drückt!
das nächste problem ist nun dass er solange weiterzählt bis man den taster wieder los lässt!

hat einer ne idee?

ICH_
29.09.2007, 17:53
$regfile = "m8def.dat"
$crystal = 3686400

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Config Lcd = 16 * 2
Cursor Off
Config Portd = Output
Config Pinc.0 = Input
Portc.0 = 1
Dim X As Byte
Cls

Do
If Pinc.0 = 0 Then
Incr X
Locate 1 , 10
Lcd X
do
loop while pinc.0 = 0
end if
Loop
end


Ungetestet weil kein BASCOM da aber so irgendwie.

GAGI
29.09.2007, 18:13
danke, aber der meckert an den - loop while pinc.0 = 0 -
mit UNTIL und LOOP EXPECTED herun und das ENDIF will er auch nicht haben!

ICH_
29.09.2007, 18:16
dann eben:

while pinc.0 = 0
wend

...

Christopher1
29.09.2007, 18:30
$regfile = "m8def.dat"
$crystal = 3686400

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Config Lcd = 16 * 2
Cursor Off
Config Portd = Output
Config Pinc.0 = Input
Portc.0 = 1
Dim X As Byte
Cls

Do
If Pinc.0 = 0 Then
Incr X
Locate 1 , 10
Lcd X
While Pinc.0 = 0
Wend
end if
loop
End

GAGI
29.09.2007, 18:47
Vielen dank an Rofo88, Christopher1 und ICH_!!!!

es funzt!

nochmal vielen DANK!!!!