PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD mit Navigation



Blacksun91
25.09.2010, 15:58
Hallöle,
Ich versuche mich grad daran eine Navigation für ein LCD - Display zu programmieren. Mit dem Hauptnavigation hat das soweit geklappt und ich kann zwischen Menupunkten herumswitchen. Nun möchte ich, dass wenn ich einen Punkt anwähle und den Taster eines Drehencoder drücke ich in eine weitere Navigation komme. Dabei möchte ich aber den Taster nicht permanent gedrückt halten um in diesem Menu zu bleiben. Leider hab ich keine Ahnung oder keine weitere Idee wie ich dies anstelle. Zurzeit sieht der Quellcode so aus:




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


Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2



Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input

Dim Links_boolean As Byte
Dim Rechts_boolean As Byte
Dim Ec_wert As Byte
Dim Menu As Byte
Dim Untermenu As Byte



Links_boolean = 0
Rechts_boolean = 0
Ec_wert = 0
Menu = 0
Untermenuwert = 0

Declare Sub Untermenu


Initlcd

Cursor Off


Main:
Do

Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
Debounce Pinc.5 , 0 , Untermenu , Sub

If Links_boolean = 1 Then
Incr Menu
Links_boolean = 0
End If


If Rechts_boolean = 1 Then
Decr Menu
Rechts_boolean = 0
End If


If Menu > 7 Then Menu = 0

Select Case Menu
Case 0:
Cls
Locate 1 , 1
Lcd "Home"

Case 2:
Cls
Locate 1 , 1
Lcd "LED"

Case 4:
Cls
Locate 1 , 1
Lcd "Rolllaeden"

Case 6:
Cls
Locate 1 , 1
Lcd "Licht Haus"


End Select

Loop



Sub Untermenu:


Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)


If Links_boolean = 1 Then
Incr Untermenu
Links_boolean = 0
End If


If Rechts_boolean = 1 Then
Decr Untermenu
Rechts_boolean = 0
End If


If Untermenu > 3 Then Untermenu = 0


If Menu = 0 Then

Select Case Untermenu
Case 0:
Cls
Locate 1 , 1
Lcd "Home Untermenu"

Case 2:
Cls
Locate 1 , 1
Lcd "Home Untermenu2"
End Select
End If
End Sub


Links:
Incr Links_boolean
Return

Rechts:
Incr Rechts_boolean
Return


End




Besonders bei dem Debouncen und der Subroutine bin ich mir noch unsicher wie das geht. Vielleicht könnt ihr mir ja helfen :)

Mfg Blacksun

Edit: Ich bin auch dankbar bei Tipps zur Quellcodeverkürzung oder Quellcodeumgestaltung