- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: lcd-menü

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.08.2005
    Beiträge
    9

    lcd-menü

    Anzeige

    Powerstation Test
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    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:

    Code:
    '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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.08.2005
    Beiträge
    9
    Vielen Dank für das Beispiel !
    Ich hab mir lieber mal eine Analogtastatur zurechtgefummel Jetzt funktioniert das alles auch Prima.

    Schönes Wochenende noch

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.03.2005
    Beiträge
    25
    mal ne Frage...

    Was ist eine Analogtastatur? Wie soll sowas schaltungstechnisch aussehen mit den 3 Tasten?

    Danke schon mal...

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.03.2005
    Beiträge
    25
    mal ne Frage...

    Was ist eine Analogtastatur? Wie soll sowas schaltungstechnisch aussehen mit den 3 Tasten?

    Danke schon mal...

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Zitat Zitat von spaceduck
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen