-         

Ergebnis 1 bis 4 von 4

Thema: Kontrast einstellen am DOGM

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    11.09.2005
    Beiträge
    47

    Kontrast einstellen am DOGM

    Anzeige

    Hi,

    ich hab lange gesucht, aber ich checks nicht, wie ich bei nem DOGM den Kontrast einstellen kann. Mein Disp hängt an d4=PB.1 .... d7=PB.4, E = PB.5, RS = PB.6

    Kann mir das irgendwer erklären?

    Grüße

    42

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    35
    Beiträge
    318
    Hi forty,

    in einem anderen Forum hatten welche das gleiche problem. Hier mal ein Code der funktionieren sollte.

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000 ' 1MHz (You can use any clock).
    
    $hwstack = 32
    $swstack = 16
    $framesize = 40
    
    Declare Sub SetContrast5V4bit(Byval Contrast_value As Byte)
    Dim Lcd_contrast As Byte
    
    Config Lcdpin = Pin , Db4 = PortC.0 , Db5 = PortC.1 , Db6 = PortC.2 , Db7 = PortC.3 , E = PortC.4 , Rs = PortC.5
    Config Lcd = 16 * 2 , Chipset = Dogm162v5
    Cursor Off Noblink
    Cls
    
    LCD "Contrast 0-63"
    Waitms 2000
    
    For Lcd_contrast = 0 to 63
    
       Call SetContrast5V4bit(Lcd_contrast)
       ' You can also use a constant, example, Call SetContrast5V4bit(10)
    
       Cls
       LCD "Contrast: " ; Lcd_contrast
       Waitms 2000
    
    Next Lcd_contrast
    
    Do
       !nop
    Loop
    
    End
    
    ' =============================================
    
    Sub SetContrast5V4bit(Byval Contrast_value As Byte)
    
       ' This subroutine will set the contrast of an LCD module EA DOGM162.
       ' The LCD module MUST be connected to 5V and use the 4-bit mode.
       ' This code works with the pins specified in "Config Lcdpin". If you
       ' change the pins in "Config Lcdpin", this code will still work because
       ' we use the Bascom internal routine to send the command to the LCD.
       ' The LCD contrast is a value between 0 and 63. The value passed to
       ' this subroutine is a byte. If the passed value is greater than 63,
       ' the passed value will be limited to 63. Note also that it is very
       ' likely that only a limited range of the 64 possible values will
       ' produce a valid contrast setting on the LCD, so your main program
       ' will have to limit the used minimum and maximum values.
       '
       ' Do not use this subroutine if the LCD is connected to 3.3V!
       ' This code disables the internal voltage booster which must be used
       ' when the LCD is connected to 3.3V.
    
       Local Ins_P_I_Contr_set As Byte
       Local Ins_Contr_Set As Byte
    
       If Contrast_value > 63 Then
          Contrast_value = 63       ' We limit the value to 63
       Endif
    
       ' The 6 bits of the contrast value are sent to the Sitronix
       ' ST7036 controller chip with two distinct instructions.
       ' First the passed contrast value will be mapped into two bytes.
       ' The upper nibble of the byte is used to define the instruction.
       ' The lower nibble of the byte is used for the parameters of the
       ' instruction. The contrast value will be mapped into the lower
       ' nibble of these two bytes.
       '==========================================
    
       ' Map C3, C2, C1, C0 into the instruction "Contrast Set".
    
       Ins_Contr_Set = Contrast_value
       ' Clear the upper nibble, keep C3, C2, C1 and C0 into the lower nibble.
       Ins_Contr_Set = Ins_Contr_Set AND &B00001111 'Clear upper nibble
       ' Add the value C3, C2, C1 and C0 to the instruction value.
       Ins_Contr_Set = Ins_Contr_Set + &B01110000
    
       '==========================================
    
       ' Map C5 and C4 into the instruction "Power/ICON control/Contrast Set".
    
       Ins_P_I_Contr_set = Contrast_value
       'Shift Right four times, so that C5 C4 will go in position Bit1 and Bit0.
       'Bit7, Bit6, Bit5, Bit4, Bit3, Bit2 will be 0 after the shift operations.
       Shift Ins_P_I_Contr_set , Right , 4
       ' Add the value C5 and C4 to the instruction value.
       Ins_P_I_Contr_set = Ins_P_I_Contr_set + &B01010000
       '                                             ^---- 0=ICON Off
       '                                              ^--- 0=Booster Off (5V)!
       '==========================================
    
       ' Now we send 4 instructions to the LCD
    
       '==========================================
       _temp1 = &B00101001 'Instruction "Function Set" select instruction table 1
       '-------------^------------ = DL (Interface 8/4 bits). 0=4-bit interface.
       '--------------^----------- = N (Number of lines). 1=two lines. Must be 1
       '---------------^---------- = DH (Double height font). 1=DH. Must be 0
       '----------------^--------- = IS2 (Instruction table select). Must be 0
       '-----------------^-------- = IS1 (Instruction table select). Must be 1
       !rCall _Lcd_control ' Send the instruction to the LCD
       '==========================================
       _temp1 = Ins_Contr_Set  ' Instruction "Contrast Set"
       !rCall _Lcd_control ' Send the instruction to the LCD
       '==========================================
       _temp1 = Ins_P_I_Contr_set ' Instruction "Power/ICON/Contrast Set"
       !rCall _Lcd_control ' Send the instruction to the LCD
       '==========================================
       _temp1 = &B00101000 'Instruction "Function Set" select instruction table 0
       '-------------^------------ = DL (Interface 8/4 bits). 0=4-bit interface.
       '--------------^----------- = N (Number of lines). 1=two lines. Must be 1
       '---------------^---------- = DH (Double height font). 1=DH. Must be 0
       '----------------^--------- = IS2 (Instruction table select). Must be 0
       '-----------------^-------- = IS1 (Instruction table select). Must be 0
       !rCall _Lcd_control ' Send the instruction to the LCD
       '==========================================
    
    End Sub
    ' -------
    mfg Kay

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Läuft das mit den original Bascom Rooutinen? Dann gibts dafür ein Kommando: LCDCONTRAST und CONFIG LCD.
    Ansonsten schau mal hier: http://www.lcd-module.de/eng/pdf/grafik/dogm128e.pdf

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    Ich hab diesen Code getestet mit meinem DogM Display. Bis zu den ersten 10 Kontrastwerten wird die Darstellung zunehmend sichtbarer jedoch dann springt der Kontrast pro Schritt wild herum (mal besser mal schlechter lesbar). falls jemand einen besseren Code hätte wäre ich dankbar.

    Man kann aber auch mit dem defaultwert leben.

Berechtigungen

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