- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: Mit Taster 1 auswählen und Taster 2 bestäti. " Menü aus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.03.2006
    Beiträge
    48

    Mit Taster 1 auswählen und Taster 2 bestäti. " Menü aus

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    Hab heute ein 20*4 mit KS0076 Controller LCD zum laufen gebracht.

    ich wollt mir nen Menü Basteln bei dem ich mit Taster 1 auswähle und mit taster 2 Bestätige.

    Soweit bin ich gekommen.

    Code:
    '******************************************************
    'Projekt: Auswahl Menü
    '
    'Prozessor: ATMega 8
    '
    '
    'Hardware:
    'LCD-Display an Port B 20*4 LCD  Controller   KS0076
    
    '
    '05.04.06 Thorsten
    '
    '******************************************************
    
    '======================================================
    'System-Einstellungen
    '======================================================
    'Definition für Mega 8
    $regfile "m8def.dat"
    
    'Angabe der Taktfrequenz (1Mhz)
    $crystal = 1000000
    
    'Pin Config
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
    
    '======================================================
    'Konfigurationen
    '======================================================
    'Angabe der Display-Größe
    Config Lcd = 20 * 4
    Dim A As Byte
    
    '======================================================
    'Konfigurationen   Eingang
    '======================================================
    Config Portd.0 = Input                                      'Taster 1
    Config Portd.1 = Input                                      'Taster 2
    Config Portd.7 = Output                                     'Led 8 an Port D
    Config Portd.6 = Output                                     'Led 7 an Port D
    
    '======================================================
    'Initialisierungen
    '======================================================
    Portd.0 = 1
    Portd.1 = 1
    Portd.6 = 1
    Portd.7 = 1
    
    '======================================================
    'Hauptprogramm
    '======================================================
    'Den Cursor ausschalten
    Cursor Off
    
    'Text der ersten Zeile
    If Pind.0 = 0 Then
    Waitms 250
    Cls
    Locate 1 , 1
    Lcd "Led 7"
    'Text der zweiten Zeile
    Locate 2 , 1
    Lcd "Led 8"
    Wait 1
    
    Else
    Cls
    Cursor Off
    Locate 1 , 1
    Lcd "Led 7"
    'Text der zweiten Zeile
    Locate 2 , 1
    Lcd "Led 8"
    'Text der vierten Zeile
    Locate 4 , 1
    Lcd "Auswahl treffen"
    Wait 1
    
    End If
    
    End
    Wenn ich es so lasse tut sich gar nichts wenn ich den schalter umlege. Schreib ich den Code mit " DO" vor If und "LOOP" nach End if funktioniert es zwar aber mein Display flaker im Sekundentakt.

    Dann komme ich immer noch nicht weiter mit den 2 Tastern. Ich wollte es so haben das ich mit Taster 1 zwischen Led 7 und Led 8 auswählen kann ( vielleicht so das sich durch die auswahl der Text der Led inventiert)und mit Taster 2 dann die Auswahl bestätige und die jeweilige Led leuchtet. Ich komm da aber absolut nicht weiter.

    Kann da einer helfen.?

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    10.10.2005
    Ort
    Nähe Biberach a.d. Riss
    Alter
    54
    Beiträge
    44
    Also ich würd so vorgehen daß Du erstmal eine Led aus und einschalten kannst.
    Und erst wenn das funktioniert baust Du die nächste Funktion in Dein Programm ein.
    Mit anderen Worten: Nicht alle Funktionen auf einmal proggen sondern Schritt für Schritt einbauen.

    Ohne Do und Loop wird Dein Code nur einmal durchlaufen!
    Drum geht auch nix wenn du es weg lässt....

    Das flackern am LCD kriegste weg wenn Du Dein CLS nur dann sendest wenn sich auf dem Display was ändern soll.
    Ich mach das mit zb. nem Merkerbit.
    Im ersten Durchlauf isses noch 0, sowie einmal der Text gesendet wurde wird es gesetzt und und somit kein CLS mehr gesendet.
    Wenn ein neuer Text erscheinen soll mußt Du das Merkerbit vorher zurücksetzen. Bei Deinem Aufbau zb. würd ich 2 Merkerbits nehmen: Eines in der IF Bedingung und Eines in der ELSE Bedingung.
    Die IF Bedingung setzt das MB1 in der ELSE Bedingung zurück und die ELSE Bedingung das MB2 in der IF Bedingung.

    Jürgen

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35
    Hallo Luppi,
    wenn ich richtig verstanden habe, willst Du mit port d0 eine Auswahl treffen und mit d1 diese bestätigen. Ich habe das mal umgesetzt, was Du davon gebrauchen kannst mußt Du selbst wissen. Im Simulator läuft das Prog. wenn Du es aber auf den Chip brennst mußt Du wahrscheinlich die Abfragen von PortX.Y auf PinX.Y ändern, dieses Problem hatte ich auf jéden fall.

    Code:
     '******************************************************
    'Projekt: Auswahl Menü
    '
    'Prozessor: ATMega 8
    '
    '
    'Hardware:
    'LCD-Display an Port B 20*4 LCD  Controller   KS0076
    
    '
    '05.04.06 Thorsten  **** geändert 06.04.06 Rolf *******
    '
    '******************************************************
    
    '======================================================
    'System-Einstellungen
    '======================================================
    'Definition für Mega 8
    $regfile "m8def.dat"
    
    'Angabe der Taktfrequenz (1Mhz)
    $crystal = 1000000
    
    'Pin Config
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
    
    '======================================================
    'Konfigurationen
    '======================================================
    'Angabe der Display-Größe
    Config Lcd = 20 * 4
    Dim A As Byte
    
    '======================================================
    'Konfigurationen   Eingang
    '======================================================
    Config Portd.0 = Input                                      'Taster 1
    Config Portd.1 = Input                                      'Taster 2
    Config Portd.7 = Output                                     'Led 8 an Port D
    Config Portd.6 = Output                                     'Led 7 an Port D
    
    '======================================================
    'Initialisierungen
    '======================================================
    Portd.0 = 1
    Portd.1 = 1
    Portd.6 = 0
    Portd.7 = 0
    
    '======================================================
    'Hauptprogramm
    '======================================================
    'Den Cursor ausschalten
    Cursor Off
    Cls
    Do
    'Text der ersten Zeile
    If Portd.0 = 0 Then
       Locate 1 , 1
       Lcd "Led 7"
    Else
       Cursor Off
       Locate 1 , 1
       Lcd "Led 8"
    End If
    'Text der dritten Zeile
    Locate 3 , 1
    Lcd "Schalter ein = Led 7"
    'Text der vierten Zeile
    Locate 4 , 1
    Lcd "Schalter aus = led 8"
    If Portd.1 = 0 And Portd.0 = 0 Then
       Portd.6 = 1
       Portd.7 = 0
    End If
    If Portd.1 = 0 And Portd.0 = 1 Then
       Portd.6 = 0
       Portd.7 = 1
    End If
    Loop
    
    End

    Gruß
    Rolf

Berechtigungen

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

Labornetzteil AliExpress