Archiv verlassen und diese Seite im Standarddesign anzeigen : lcd-menü
Bratwurst
16.09.2005, 18:42
Hallo,
Ich versuche mich jetzt schon geraume Zeit an einem einfachen Menü (darzustellen auf einem 16x4 LCD). Ich habe auch schon "etwas per taster durchschaltbares" auf die Beine gestellt bekommen, allerdings ist das noch sehr umständlich programmiert.
Könnt ihr mir eventuell einfach einmal ein Grundgerüst vorschlagen, wie man so etwas am ressurcensparendsten und ergonomisch lösen kann.
Ich bin für jedes Beispiel dankbar
mfg
Paul
Hallo!
Meine Standardlösung nutzt 3 Tasten: Rauf, Runter und Enter.
Im gezeigten Code wird dafür eine "Tastatur" an einem Analogport genutzt. Das Beuispiel muss man sich natürlich für die eigenen Bedürfnisse zurechtfummeln:
'Gerüst für Atmega 8 mit Menue - HR - AUGUST 2005
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
Enable Interrupts 'Interrupts erlauben
Config Adc = Single , Prescaler = Auto
Config Pinc.0 = Input 'Für analog_key
Keyboard Alias Pinc.0 'Aliasname
Config Pinb.0 = 1 'Ausgang
Beep Alias Pinb.0
Declare Function Analog_key() As Byte
Dim Taste As Byte
Dim Menue_current As Byte
'-------------------------------------------------------------------------------
Sound Beep , 400 , 450 'Bin wach -)
Cursor Off
Lcd " Menue Test"
Wait 3
'-------------------------------------------------------------------------------
Cls
Menue:
Menue_current = 0
Menue_1:
Taste = Analog_key()
Waitms 100
If Taste = 32 Then
Menue_current = Menue_current + 1
End If
If Taste = 33 Then
Menue_current = Menue_current - 1
End If
If Menue_current > 6 Then Menue_current = 1
If Menue_current < 1 Then Menue_current = 6
If Taste = 10 Then Goto Execute
'-------------------------------------------------------------------------------
Select Case Menue_current 'aktuelle Auswahl anzeigen
Case 1
Locate 1 , 1
Lcd " Fall 1 "
Case 2
Locate 1 , 1
Lcd " Fall 2 "
Case 3
Locate 1 , 1
Lcd " Fall 3 "
Case 4
Locate 1 , 1
Lcd " Fall 4 "
Case 5
Locate 1 , 1
Lcd " Fall 5 "
Case 6
Locate 1 , 1
Lcd " Fall 6 "
End Select
Taste = 255
Goto Menue_1
'-------------------------------------------------------------------------------
Execute: 'aktuellen Menuepunkt ausführen
Cls
Select Case Menue_current
Case 1
Cls
'Call 1
Cls
Case 2
Cls
'Call 2
Cls
Case 3
Cls
'Call 3
Cls
Case 4
Cls
'Call 4
Cls
Case 5
Cls
'Call 5
Cls
Case 6
Cls
'Call 6
Cls
End Select
Goto Menue_1
'-------------------------------------------------------------------------------
End 'Hauptprogramm Ende
'------------------------------------------------------------------------------
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Analog_key() As Byte
Local Ws As Word
Analog_key = 255
Start Adc
Ws = Getadc(0)
If Ws < 900 Then
Select Case Ws
Case 0 To 100
Analog_key = 32
Case 400 To 600
Analog_key = 33
Case 650 To 750
Analog_key = 10
End Select
Sound Beep , 400 , 450 'Quittungspiepser
End If
Waitms 100
End Function
'-------------------------------------------------------------------------------
'
'
'.... Hier folgen die durch das Menue aufgerufenen Subroutinen bzw. Funktionen
Grüße
Henrik
Bratwurst
17.09.2005, 18:56
Vielen Dank für das Beispiel !
Ich hab mir lieber mal eine Analogtastatur zurechtgefummel ;) Jetzt funktioniert das alles auch Prima.
Schönes Wochenende noch
spaceduck
24.11.2005, 12:23
mal ne Frage...
Was ist eine Analogtastatur? Wie soll sowas schaltungstechnisch aussehen mit den 3 Tasten?
Danke schon mal...
spaceduck
24.11.2005, 12:23
mal ne Frage...
Was ist eine Analogtastatur? Wie soll sowas schaltungstechnisch aussehen mit den 3 Tasten?
Danke schon mal...
mal ne Frage...
Was ist eine Analogtastatur? Wie soll sowas schaltungstechnisch aussehen mit den 3 Tasten?
Siehe direkt: http://www.henrik-reimers.de/control/tastaturen.htm
Ansonsten evtl. auch mal in die Wissensrubrik dieses Forums hineinspähen und sich ggf. auch http://www.henrik-reimers.de/control/avr/index.html reinziehen.
Grüße
Henrik
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.