- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: Screens wechseln mit 2 Taster (oder mit einem Taster)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.10.2008
    Beiträge
    12

    Screens wechseln mit 2 Taster (oder mit einem Taster)

    Anzeige

    E-Bike
    Ich möchte Zwischen Screens welchseln können mit 2 Tasten (hoch / runter) oder nur mit einem Taster der durch die Screens wechselt.

    Gibt es dazu irgendwo ein Beispiel ?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Etwas mehr Informationen wären schon hilfreich. Was meinst du mit Screen? Wie sieht deine Hardware aus? Wie sieht dein bisheriges Programm aus?

    Grüße
    Thomas

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.10.2008
    Beiträge
    12
    Ich habe den ATMEGA32
    Mit Screen meine ich zb.

    1 Screen

    Hauptmenu mit 4 Sensoren auswertungen

    2 Screen

    - 1. Sensor in Großen Buchstaben

    3 Screen

    - 2. Sensor mit Balkenanzeige

    usw. bis ich nach 4 Screens wieder beim ersten ankomme.

    Bis jetzt sieht mein Programm so aus das ich 4 Einzelne Programme für die Sensoren habe.

    Diese möchte ich in eins verpacken und auf einem Atmega laufen lassen.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Wo werden diese "Screens" ausgegeben? Auif einem Text-Display, Graphik-Display, Monitor, Fernseher, über RS232, etc.?

    Bitte etwas mehr Infos!

    Grüße
    Thomas

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.10.2008
    Beiträge
    12
    Achso ja sorry .

    das ganz soll einfach auf einem LCD 4*20 ausgegeben werden.

    Ganz einfach gesagt ist es eine Anzeige für Tempratur / Druck Fühler.

    Wie gesagt ich möchte zwischen den einzelnen Programmen Springen können.

    Die ausgabe der Fühler funktioniert schon auf dem Display nur nicht zusammen sondern muss immer jedes mal den Atmega neu beschreiben.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Okay, jetzt wäre es noch vorteilhaft, wenn du deine Software posten würdest.

    Sonst wird das mit dem Helfen leider nix.

    Gruß
    Thomas

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.10.2008
    Beiträge
    12
    1. Code fürs Hauptmenü
    Code:
    'ATMEGA CONFIG'
    '-------------'
    $regfile = "m32def.dat"
    '$lib "lcd.lib"
    $crystal = 4000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    $sim
    'LCD CONFIG'
    '----------'
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcdbus = 4
    
    
    
    
    '---------------'
    Ktemp = 0.488758553274682
    Temp_word = Getadc(1)
    For I = 1 To 19
    Ad1 = Getadc(1)
    Tempcalc = Tempcalc + Ad1
    Next
    Tempcalc = Tempcalc / 20                                    '
    Tempout = Tempcalc * Ktemp
    If Pinb.1 = 0 Then
    Locate 3 , 1
    Lcd "temp.:"
    Locate 3 , 14
    Lcd Fusing(tempout , "#.##") ; Chr(0)
    End If
    
    
    '---------------'
    Druck = 0.004887585533
    Druck_word = Getadc(2)
    Waitms 50
    
                              '
    
    Druckout = Druck_word * Druck
    Druckout = Druckout - 1.808
    Druckout = Druckout / 0.20
    
    
    Home
    Locate 4 , 1
    Lcd "druck:"
    Locate 4 , 13
    Lcd Fusing(druckout , "#.##'")
    Locate 4 , 18
    Lcd "Bar"
    'End If
    Locate 4 , 17
    Lcd Chr(1)
    
    
    Loop
    End
    2. ´Code für Druck
    Code:
    'ATMEGA CONFIG'
    '-------------'
    $sim
    $regfile = "m32def.dat"
    '$lib "lcd.lib"
    $crystal = 4000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    'LCD CONFIG'
    '----------'
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcdbus = 4
    
    'Symbole'
    '-------'
    Deflcdchar 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15
    Deflcdchar 1 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
    Deflcdchar 2 , 0 , 0 , 0 , 0 , 16 , 24 , 28 , 30
    Deflcdchar 3 , 31 , 31 , 31 , 31 , 30 , 28 , 24 , 16
    Deflcdchar 4 , 16 , 24 , 28 , 30 , 31 , 31 , 31 , 31
    Deflcdchar 5 , 15 , 7 , 3 , 1 , 0 , 0 , 0 , 0
    Deflcdchar 6 , 31 , 31 , 31 , 31 , 0 , 0 , 0 , 0
    Deflcdchar 7 , 30 , 28 , 24 , 16 , 0 , 0 , 0 , 0
    
    Declare Sub Lcdbig
    Dim Lcdbigspalte As Byte , Lcdbigzahl As Byte
    Dim Druck As Word
    Dim Druck_str As String * 4 , Tmp As String * 1
    Dim A As Byte , B As Byte
    Do
    
    
    Cls
    
    Druck = Getadc(1)
    Druck_str = Str(druck)
    Locate 1 , 1
    Lcd "Druck:"
    Locate 2 , 1
    Lcd "b"
    Lcdbigspalte = 10
    Lcdbigzahl = druck
    If Druck < 10 Then B = 1
    If Druck > 9 Then B = 2
    If Druck > 99 Then B = 3
    If Druck > 999 Then B = 4
    
    For A = 1 To B
    If A > 1 Then Lcdbigspalte = Lcdbigspalte + 3
    Tmp = Mid(druck_str , A , 1)
    Lcdbigzahl = Val(tmp)
    Lcdbig
    Next
    
    Waitms 50                                                   ' wait 1
    Loop
    
    Sub Lcdbig
    
      ' Zeile 1
      Locate 1 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 1 : Lcd Chr(0) ; Chr(1) ; Chr(32)
        Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 3 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 4 : Lcd Chr(1) ; Chr(32) ; Chr(32)
        Case 5 : Lcd Chr(1) ; Chr(1) ; Chr(1)
        Case 6 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 7 : Lcd Chr(1) ; Chr(1) ; Chr(1)
        Case 8 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 9 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      End Select
    
      ' Zeile 2
      Locate 2 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(3)
        Case 3 : Lcd Chr(32) ; Chr(0) ; Chr(3)
        Case 4 : Lcd Chr(255) ; Chr(1) ; Chr(255)
        Case 5 : Lcd Chr(255) ; Chr(1) ; Chr(2)
        Case 6 : Lcd Chr(255) ; Chr(1) ; Chr(2)
        Case 7 : Lcd Chr(32) ; Chr(0) ; Chr(3)
        Case 8 : Lcd Chr(255) ; Chr(1) ; Chr(255)
        Case 9 : Lcd Chr(255) ; Chr(1) ; Chr(255)
      End Select
    
      ' Zeile 3
      Locate 3 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 2 : Lcd Chr(255) ; Chr(32) ; Chr(32)
        Case 3 : Lcd Chr(32) ; Chr(5) ; Chr(4)
        Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(255)
        Case 5 : Lcd Chr(32) ; Chr(32) ; Chr(255)
        Case 6 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 7 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 8 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 9 : Lcd Chr(32) ; Chr(32) ; Chr(255)
      End Select
    
      ' Zeile 4
      Locate 4 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 1 : Lcd Chr(6) ; Chr(6) ; Chr(6)
        Case 2 : Lcd Chr(6) ; Chr(6) ; Chr(6)
        Case 3 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(6)
        Case 5 : Lcd Chr(6) ; Chr(6) ; Chr(7)
        Case 6 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 7 : Lcd Chr(32) ; Chr(6) ; Chr(32)
        Case 8 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 9 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      End Select
    End Sub

    3.Code für TEMP
    Code:
    'ATMEGA CONFIG'
    '-------------'
    $sim
    $regfile = "m32def.dat"
    '$lib "lcd.lib"
    $crystal = 4000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    'LCD CONFIG'
    '----------'
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcdbus = 4
    
    'Symbole'
    '-------'
    Deflcdchar 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15
    Deflcdchar 1 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
    Deflcdchar 2 , 0 , 0 , 0 , 0 , 16 , 24 , 28 , 30
    Deflcdchar 3 , 31 , 31 , 31 , 31 , 30 , 28 , 24 , 16
    Deflcdchar 4 , 16 , 24 , 28 , 30 , 31 , 31 , 31 , 31
    Deflcdchar 5 , 15 , 7 , 3 , 1 , 0 , 0 , 0 , 0
    Deflcdchar 6 , 31 , 31 , 31 , 31 , 0 , 0 , 0 , 0
    Deflcdchar 7 , 30 , 28 , 24 , 16 , 0 , 0 , 0 , 0
    
    Declare Sub Lcdbig
    Dim Lcdbigspalte As Byte , Lcdbigzahl As Byte
    Dim temp As Word
    Dim temp_str As String * 4 , Tmp As String * 1
    Dim A As Byte , B As Byte
    Do
    
    
    Cls
    
    temp = Getadc(1)
    temp_str = Str(druck)
    Locate 1 , 1
    Lcd "temp:"
    Locate 2 , 1
    Lcd "b"
    Lcdbigspalte = 10
    Lcdbigzahl = temp
    If temp< 10 Then B = 1
    If temp> 9 Then B = 2
    If temp> 99 Then B = 3
    If temp > 999 Then B = 4
    
    For A = 1 To B
    If A > 1 Then Lcdbigspalte = Lcdbigspalte + 3
    Tmp = Mid(temp_str , A , 1)
    Lcdbigzahl = Val(tmp)
    Lcdbig
    Next
    
    Waitms 50                                                   ' wait 1
    Loop
    
    Sub Lcdbig
    
      ' Zeile 1
      Locate 1 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 1 : Lcd Chr(0) ; Chr(1) ; Chr(32)
        Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 3 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 4 : Lcd Chr(1) ; Chr(32) ; Chr(32)
        Case 5 : Lcd Chr(1) ; Chr(1) ; Chr(1)
        Case 6 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 7 : Lcd Chr(1) ; Chr(1) ; Chr(1)
        Case 8 : Lcd Chr(0) ; Chr(1) ; Chr(2)
        Case 9 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      End Select
    
      ' Zeile 2
      Locate 2 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(3)
        Case 3 : Lcd Chr(32) ; Chr(0) ; Chr(3)
        Case 4 : Lcd Chr(255) ; Chr(1) ; Chr(255)
        Case 5 : Lcd Chr(255) ; Chr(1) ; Chr(2)
        Case 6 : Lcd Chr(255) ; Chr(1) ; Chr(2)
        Case 7 : Lcd Chr(32) ; Chr(0) ; Chr(3)
        Case 8 : Lcd Chr(255) ; Chr(1) ; Chr(255)
        Case 9 : Lcd Chr(255) ; Chr(1) ; Chr(255)
      End Select
    
      ' Zeile 3
      Locate 3 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 2 : Lcd Chr(255) ; Chr(32) ; Chr(32)
        Case 3 : Lcd Chr(32) ; Chr(5) ; Chr(4)
        Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(255)
        Case 5 : Lcd Chr(32) ; Chr(32) ; Chr(255)
        Case 6 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 7 : Lcd Chr(32) ; Chr(255) ; Chr(32)
        Case 8 : Lcd Chr(255) ; Chr(32) ; Chr(255)
        Case 9 : Lcd Chr(32) ; Chr(32) ; Chr(255)
      End Select
    
      ' Zeile 4
      Locate 4 , Lcdbigspalte
      Select Case Lcdbigzahl
        Case 0 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 1 : Lcd Chr(6) ; Chr(6) ; Chr(6)
        Case 2 : Lcd Chr(6) ; Chr(6) ; Chr(6)
        Case 3 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(6)
        Case 5 : Lcd Chr(6) ; Chr(6) ; Chr(7)
        Case 6 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 7 : Lcd Chr(32) ; Chr(6) ; Chr(32)
        Case 8 : Lcd Chr(5) ; Chr(6) ; Chr(7)
        Case 9 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      End Select
    End Sub
    Kann sein das nun ein kleiner fehler im Programm ist aber das sollte ja nichts mit den Screens zu tun haben

Berechtigungen

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

12V Akku bauen