-
        

Ergebnis 1 bis 3 von 3

Thema: Bacom LCD teilweise Aktualisieren

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.03.2011
    Beiträge
    54

    Bacom LCD teilweise Aktualisieren

    Anzeige

    Hallo zusammen.

    Mein RGB LED Fader ist soweit fertig.
    Hard und Software stehen. Allerdings habe ich noch ein lästiges
    Problem mit meinem LCD Display 20x4.
    Da ich den Fadingwert eines jeden Farbkanals angezeigt bekomme, möchte ich auch,
    das nur dieser aktualisiert wir. Das passiert alle 100ms.
    Nachteil ist das der Befehl "CLS" das gesamte Display löscht, und dadurch
    ein unangenehmes Flackern erzeugt.

    Ist es möglich nur Teilbereiche aktualisieren zu lassen,
    oder gibt es da eine andere Möglichkeit?

    Ich schicke den Quellcode noch mit und hoffe Ihr könnt mir weiter helfen

    Grüße Flo

    Code:
    
    
    $regfile = "m16def.dat"
    $crystal = 16000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
    Ddrb = &HFF
    Ddrd = &HFF
    Ddrc = &HFF
    
    Ddra = &H00
    
    Porta.3 = 1
    Porta.4 = 1
    Porta.5 = 1
    
    Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1
    Config Lcd = 20 * 4
    
    Enable Interrupts
    
    
    Dim Adc_rot As Word
    Dim Adc_grün As Word
    Dim Adc_blau As Word
    
    Dim Pwm_rot As Word
    Dim Pwm_grün As Word
    Dim Pwm_blau As Word
    
    Dim Status As Bit
        Status = 0
    
    Dim Zähler_rot As Integer
    Dim Zähler_grün As Integer
    Dim Zähler_blau As Integer
          Zähler_rot = 0
          Zähler_grün = 0
          Zähler_blau = 0
    
    Dim Plusminus_rot As Integer
       Plusminus_rot = 1
    Dim Plusminus_grün As Integer
       Plusminus_grün = 1
    Dim Plusminus_blau As Integer
       Plusminus_blau = 1
    
    Config Timer0 = Pwm , Compare Pwm = Clear Down , Prescale = 256
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    
    
    
    
    
    Do
    
    
    Debounce Pina.5 , 0 , Taster3 , Sub
    Debounce Pina.4 , 0 , Taster2 , Sub
    Debounce Pina.3 , 0 , Taster1 , Sub
    
    
    If Status = 0 Then
    
    Cls
    
       Locate 1 , 1
       Lcd "Motion Control @ RAU"
    
          Locate 2 , 1
          Lcd "<ROT>   "
          Locate 2 , 14
          Lcd " Fading"
    
    
          Locate 3 , 1
          Lcd "<GRUEN> "
          Locate 3 , 14
          Lcd " Fading"
    
    
          Locate 4 , 1
          Lcd "<BLAU>  "
          Locate 4 , 14
          Lcd " Fading"
    
         Adc_rot = Getadc(2)
         Adc_grün = Getadc(1)
         Adc_blau = Getadc(0)
    
    
          Locate 2 , 9
          Pwm_rot = Adc_rot / 4
          Lcd Pwm_rot
    
    
          Locate 3 , 9
          Pwm_grün = Adc_grün / 4
          Lcd Pwm_grün
    
          Locate 4 , 9
          Pwm_blau = Adc_blau / 4
          Lcd Pwm_blau
    
    
    
          Ocr0 = Pwm_rot
          Ocr1a = Pwm_grün
          Ocr1b = Pwm_blau
    
    
    
          If Adc_rot < 25 Then
          Adc_rot = 0
          End If
          If Adc_grün < 25 Then
          Adc_grün = 0
          End If
          If Adc_blau < 25 Then
          Adc_blau = 0
          End If
    
    Else
    
          Zähler_rot = Zähler_rot + Plusminus_rot
          If Zähler_rot = 85 Then Plusminus_rot = -1
          If Zähler_rot = 1 Then Plusminus_rot = 1
    
          Zähler_blau = Zähler_blau + Plusminus_blau
          If Zähler_blau = 170 Then Plusminus_blau = -1
          If Zähler_blau = 1 Then Plusminus_blau = 1
    
          Zähler_grün = Zähler_grün + Plusminus_grün
          If Zähler_grün = 255 Then Plusminus_grün = -1
          If Zähler_grün = 1 Then Plusminus_grün = 1
    
          Ocr0 = Zähler_rot
          Ocr1a = Zähler_grün
          Ocr1b = Zähler_blau
    
    End If
    
    
    Waitms 100
    
    Loop
    
    End
    
    
    Taster3:
    
       If Status = 0 Then
       Status = 1
       Else
       Status = 0
       End If
    
    Return
    
    Taster2:
    Return
    
    Taster1:
    Return

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Hallo!

    Ganz einfach: Wenn neuer Wert <> alter Wert dann aufs LCD schreiben.

    Und das Cls raus aus der Hauptschleife!!


    MfG

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    22.03.2011
    Beiträge
    54
    Hi

    Na klar.....
    Danke für den Tip

    Grüße Flo

Ähnliche Themen

  1. Bacom FOR NEXT mit GOSUB Fehler?
    Von dremler im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 17
    Letzter Beitrag: 18.08.2010, 21:50
  2. 8 bit D/A Wandler von C in Bacom
    Von Furtion im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 04.01.2008, 17:37
  3. Bacom und Datenfeld-Problem.
    Von Alicik im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 07.08.2006, 00:07
  4. LCD Anzeige aktualisieren
    Von Reinhard im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 25.10.2005, 11:17
  5. port aktualisieren
    Von ich bins im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 17.10.2005, 21:36

Berechtigungen

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