RobbyMartin
29.12.2010, 17:59
Hallo
ich wollte ein kleines Menü auf einem LCD erstellen mit 3 Unterpunkten (km/h; t pro Umdrehung; Drehzahl[wie oft sich die Achse gedreht hat])
Nun alles schön und gut ich kann per Interrupt zwischen den 3 Sachen wechseln und sie abwechselnd auf dem lcd anzeigen lassen, jetzt möchte ich mit dem anderen interrupt eingang den aktuellen punkt bestätigen und wieder in die main rutine springen, doch dies klappt leider nicht. :'(
Auch weiß ich noch nicht wie ich den ausgabe wert ändern soll also zB von km/h auf drehzal
hat jemand eine idee oder gibt es vielleicht eine möglichkeit das menü einfacher zu gestalten ??
'Martin Gluch
'grüne LED PD0
'Taster PD2 und PD3
'Sensor PB0
'LCD PC
'
'----------------------------------------------------------
$regfile = "m8def.dat" ' Inizialiesierung Microkontroller
$crystal = 3686400 ' Quarz Frequenz
Declare Sub Keypressed
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4 ' LCD Konfiguierung
Cursor Off ' Cursor auf dem LCD Ausblenden
Deflcdchar 0 , 32 , 32 , 32 , 32 , 12 , 16 , 16 , 31 ' Fahrrad Modul 1
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 30 , 8 , 30 ' Fahrrad Modul 2
Deflcdchar 2 , 7 , 9 , 17 , 17 , 18 , 16 , 8 , 7 ' Fahrrad Modul 3
Deflcdchar 3 , 4 , 18 , 9 , 8 , 8 , 8 , 16 , 32 ' Fahrrad Modul 4
Deflcdchar 4 , 9 , 9 , 10 , 10 , 31 , 2 , 1 , 32 ' Fahrrad Modul 5
Deflcdchar 5 , 28 , 18 , 9 , 5 , 29 , 1 , 2 , 28 ' Fahrrad Modul 6
On Icp1 Oncapture ' Interrupt Routine deklarieren
On Int0 Onmenue
On Int1 Onenter
Dim Wcapture As Long 'Variablen Declaration
Dim Geschw As Single 'Variablen Declaration
Dim Endgeschw As Single 'Variablen Declaration
Dim Menuepunkt As Integer
Menuepunkt = 0
Ddrb.0 = 0 ' Pin PB0 Eingang (Sensor + r. Taster)
Portb.0 = 1 ' PullUp von Pin PB0 aktivieren
Ddrb = &B00000001 ' Pin DB0 Ausgang (LED)
Portd = &B00001100
Mcucr = &B00001010
Gicr = &B11000000
'\/Begrüßungsbildschirm\/
Cls
Locate 1 , 1
Lcd "Fahrradtacho"
Locate 2 , 1
Lcd "Version 1.0"
Locate 1 , 14
Lcd Chr(0)
Locate 1 , 15
Lcd Chr(1)
Locate 2 , 13
Lcd Chr(2)
Locate 2 , 14
Lcd Chr(3)
Locate 2 , 15
Lcd Chr(4)
Locate 2 , 16
Lcd Chr(5)
Waitms 1500
Cls
Locate 1 , 1
Lcd "----------------"
Locate 2 , 3
Lcd "Martin Gluch"
Waitms 2000
Cls
'/\Begrüßungsbildschirm/\
Tccr1a = &B00000000
Tccr1b = &B10000101
Timsk.ticie1 = 1
Sreg.7 = 1
Main:
Goto Main
Oncapture:
Timer1 = Timer1 - Capture1
Wcapture = Capture1
Wcapture = Wcapture \ 3.600
'Wcapture = Wcapture \ 1000
Geschw = 2.03 / Wcapture ' 2,03 durch beliebigen Reifenumfang ersetzen
Endgeschw = Geschw * 360
Endgeschw = Endgeschw * 10
Cls
Locate 1 , 2
Lcd Chr(0)
Locate 1 , 3
Lcd Chr(1)
Locate 2 , 1
Lcd Chr(2)
Locate 2 , 2
Lcd Chr(3)
Locate 2 , 3
Lcd Chr(4)
Locate 2 , 4
Lcd Chr(5)
Locate 1 , 6
Lcd Endgeschw
Locate 1 , 12
Lcd " km/h "
Locate 2 , 6
Lcd "M. Gluch"
Return
Return
Onmenue:
Cls
Locate 1 , 1
Lcd "Menue"
If Menuepunkt = 0 Then
Locate 2 , 1
Lcd "km/h"
End If
If Menuepunkt = 1 Then
Locate 2 , 1
Lcd "Zeit/U"
End If
If Menuepunkt = 2 Then
Locate 2 , 1
Lcd "Drehzahl"
End If
Menuepunkt = Menuepunkt + 1
If Menuepunkt = 3 Then
Menuepunkt = 0
End If
Return
Onenter:
Return
Dies soll ein Fahrrad tacho werden die ganz normale Geschwindigkeitsmessung funktioniert auch doch das MEnü als besonderer Hingucker funktioniert leider noch nicht.
Gruß
Martin
ich wollte ein kleines Menü auf einem LCD erstellen mit 3 Unterpunkten (km/h; t pro Umdrehung; Drehzahl[wie oft sich die Achse gedreht hat])
Nun alles schön und gut ich kann per Interrupt zwischen den 3 Sachen wechseln und sie abwechselnd auf dem lcd anzeigen lassen, jetzt möchte ich mit dem anderen interrupt eingang den aktuellen punkt bestätigen und wieder in die main rutine springen, doch dies klappt leider nicht. :'(
Auch weiß ich noch nicht wie ich den ausgabe wert ändern soll also zB von km/h auf drehzal
hat jemand eine idee oder gibt es vielleicht eine möglichkeit das menü einfacher zu gestalten ??
'Martin Gluch
'grüne LED PD0
'Taster PD2 und PD3
'Sensor PB0
'LCD PC
'
'----------------------------------------------------------
$regfile = "m8def.dat" ' Inizialiesierung Microkontroller
$crystal = 3686400 ' Quarz Frequenz
Declare Sub Keypressed
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4 ' LCD Konfiguierung
Cursor Off ' Cursor auf dem LCD Ausblenden
Deflcdchar 0 , 32 , 32 , 32 , 32 , 12 , 16 , 16 , 31 ' Fahrrad Modul 1
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 30 , 8 , 30 ' Fahrrad Modul 2
Deflcdchar 2 , 7 , 9 , 17 , 17 , 18 , 16 , 8 , 7 ' Fahrrad Modul 3
Deflcdchar 3 , 4 , 18 , 9 , 8 , 8 , 8 , 16 , 32 ' Fahrrad Modul 4
Deflcdchar 4 , 9 , 9 , 10 , 10 , 31 , 2 , 1 , 32 ' Fahrrad Modul 5
Deflcdchar 5 , 28 , 18 , 9 , 5 , 29 , 1 , 2 , 28 ' Fahrrad Modul 6
On Icp1 Oncapture ' Interrupt Routine deklarieren
On Int0 Onmenue
On Int1 Onenter
Dim Wcapture As Long 'Variablen Declaration
Dim Geschw As Single 'Variablen Declaration
Dim Endgeschw As Single 'Variablen Declaration
Dim Menuepunkt As Integer
Menuepunkt = 0
Ddrb.0 = 0 ' Pin PB0 Eingang (Sensor + r. Taster)
Portb.0 = 1 ' PullUp von Pin PB0 aktivieren
Ddrb = &B00000001 ' Pin DB0 Ausgang (LED)
Portd = &B00001100
Mcucr = &B00001010
Gicr = &B11000000
'\/Begrüßungsbildschirm\/
Cls
Locate 1 , 1
Lcd "Fahrradtacho"
Locate 2 , 1
Lcd "Version 1.0"
Locate 1 , 14
Lcd Chr(0)
Locate 1 , 15
Lcd Chr(1)
Locate 2 , 13
Lcd Chr(2)
Locate 2 , 14
Lcd Chr(3)
Locate 2 , 15
Lcd Chr(4)
Locate 2 , 16
Lcd Chr(5)
Waitms 1500
Cls
Locate 1 , 1
Lcd "----------------"
Locate 2 , 3
Lcd "Martin Gluch"
Waitms 2000
Cls
'/\Begrüßungsbildschirm/\
Tccr1a = &B00000000
Tccr1b = &B10000101
Timsk.ticie1 = 1
Sreg.7 = 1
Main:
Goto Main
Oncapture:
Timer1 = Timer1 - Capture1
Wcapture = Capture1
Wcapture = Wcapture \ 3.600
'Wcapture = Wcapture \ 1000
Geschw = 2.03 / Wcapture ' 2,03 durch beliebigen Reifenumfang ersetzen
Endgeschw = Geschw * 360
Endgeschw = Endgeschw * 10
Cls
Locate 1 , 2
Lcd Chr(0)
Locate 1 , 3
Lcd Chr(1)
Locate 2 , 1
Lcd Chr(2)
Locate 2 , 2
Lcd Chr(3)
Locate 2 , 3
Lcd Chr(4)
Locate 2 , 4
Lcd Chr(5)
Locate 1 , 6
Lcd Endgeschw
Locate 1 , 12
Lcd " km/h "
Locate 2 , 6
Lcd "M. Gluch"
Return
Return
Onmenue:
Cls
Locate 1 , 1
Lcd "Menue"
If Menuepunkt = 0 Then
Locate 2 , 1
Lcd "km/h"
End If
If Menuepunkt = 1 Then
Locate 2 , 1
Lcd "Zeit/U"
End If
If Menuepunkt = 2 Then
Locate 2 , 1
Lcd "Drehzahl"
End If
Menuepunkt = Menuepunkt + 1
If Menuepunkt = 3 Then
Menuepunkt = 0
End If
Return
Onenter:
Return
Dies soll ein Fahrrad tacho werden die ganz normale Geschwindigkeitsmessung funktioniert auch doch das MEnü als besonderer Hingucker funktioniert leider noch nicht.
Gruß
Martin