logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Lcd 6100 Bascom - obrócenie obrazu.

mrh 25 Kwi 2010 12:28 2544 5
REKLAMA
  • #1 8001065
    mrh
    Poziom 18  
    Mam lcd 6100 i mam problem, bo nie wiem jak obrócić obraz o 90° w prawo.
    Moje pytanie jest takie czy mógłby mi ktoś podpowiedzieć jak to mogę zrobić, najlepiej jak by to było w języku Bascom.
  • REKLAMA
  • REKLAMA
  • #3 8011784
    wicy
    Poziom 22  
    Też miałem mały problem z obróceniem tekstu o 90*.
    Da się to zrobić z biblioteką dołączoną do Bascoma ($lib "lcd-pcf8833.lbx").
    Mój działający program wygląda mniej więcej tak:
    Po inicjalizacji wyświetlacza:
    
    Inicjalizacja_lcd:
       Portc.7 = 0                                              'Inicjacja Reseta
       Waitms 50
       Portc.7 = 1
       Waitms 50
       Glcdcmd &H01                                             'software reset
       Glcdcmd &H11                                             'sleep out
       Glcdcmd &H03                                             'booster on
       Waitms 10
       Glcdcmd &H13                                             'normal mode on
       Glcdcmd &H21                                             'inversion on
       'Glcdcmd &HBA
       Glcdcmd &H36                                             'Mem_control
       Glcddata &B01110000
       Glcdcmd &H3A                                             'color
       Glcddata &B00000010
       Glcdcmd &H25                                             'contrast
       Glcddata 50
       Glcdcmd &H2A                                             'column adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H2B                                             'page adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H38                                             'iddle mode off
       Glcdcmd &H29                                             'display on
    Return
    

    w pętli głównej wywołuję
    
    Const Black = &B11111111
    Const Orange = &B00010011
    
    Do
       S1 = "tekst 1"
       S2 = "tekst 2"
       S3 = "tekst 3"
       Call Ltext(0 , 25 , S1 , Orange , Black)              'linia 1
       Call Ltext(0 , 45 , S2 , Orange , Black)              'linia 2
       Call Ltext(0 , 65 , S3 , Orange , Black)              'linia 3
    Loop
    

    gdzie S1..S3 to string 8 bo tyle znaków mieści się dla fontu "color16x16" i potrzebowałem tylko 3 wiersze.

    
    Sub Ltext(byval X As Byte , Y As Byte , S As String , Kolor As Byte , Tlo As Byte)
    Local Temps As String * 1
       For I = 1 To 8
          Temps = Mid(s , I , 1)
          Lcdat X , Y , Temps , Kolor , Tlo
          X = X + 16
       Next I
    End Sub
    
  • REKLAMA
  • #4 8014155
    mrh
    Poziom 18  
    Po skompilowaniu wyskoczyło mi 3 błędy.
    Mianowicie:

    
    - Incorrect number of parameters. The number of paramters must be [0],  
    - Invalid datatype[[0011] 0],
    - NEXT expected
    


    A mój kod wygląda tak:
    
    $lib "lcd-pcf8833.lbx"
    $regfile = "m8535.dat"
    $crystal = 8000000
    Config Graphlcd = Color , Controlport = Portb , Cs = 4 , Rs = 1 , Scl = 7 , Sda = 5
    
    Const Black = &B00000000
    Const Orange = &B11111000
    Dim S1 As String * 8
    Dim I As Byte
    Declare Sub Ltext
    
    Glcdcmd &H36                                            
    Glcddata &HD0                                            
    Glcdcmd &H25                                            
    Glcddata 73
    Glcdcmd &HBF
    Glcdcmd &H29
                                        
    Cls
    Do
       Cls
       S1 = "tekst 1"
       Call Ltext(0 , 15 , S1 , Orange , Black)
       Waitms 300             
    Loop
    
    Sub Ltext(byval X As Byte , Y As Byte , S As String , Kolor As Byte , Tlo As Byte)
    Local Temps As String * 8
       For I = 1 To 8
          Temps = Mid(s , I , 1 )
          Lcdat X , Y , Temps , Kolor , Tlo
          X = X + 16
       Next I
    End Sub
    
    
    $include "color16x16.font"
    
    
  • REKLAMA
  • #5 8014251
    wicy
    Poziom 22  
    Jeszcze zadeklaruj SUB.
    Declare Sub Ltext(byval X As Byte , Byval Y As Byte , Byval S As String , Byval Kolor As Byte , Byval Tlo As Byte)
  • #6 8025661
    wicy
    Poziom 22  
    Oto cały mój kod, wyświetlający poziomo 3 linie tekstu po 8 znaków (tyle mieści mi się w okienku obudowy).
    
    $lib "lcd-pcf8833.lbx"
    $regfile = "m16def.dat"
    $crystal = 8000000
    '$baud = 9600
    $hwstack = 128
    $swstack = 128
    $framesize = 40
    
    Declare Sub Ltext(byval X As Byte , Byval Y As Byte , Byval S As String , Byval Kolor As Byte , Byval Tlo As Byte)
    Declare Sub Pokaz(byval X As Byte , Byval Y As Byte , Byval Cyfra As Byte)
    
    'Config Graphlcd = Color , Controlport = Portc , Cs = 4 , Rs = 7 , Scl = 5 , Sda = 6
    Config Graphlcd = Color , Controlport = Portc , Cs = 0 , Rs = 7 , Scl = 1 , Sda = 6
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down
    
    '-- zmienne ogólne
    Dim I As Byte
    Dim X As Byte
    '-- zmienne lcd
    Dim S1 As String * 8
    Dim S2 As String * 8
    Dim S3 As String * 8
    
    '-- stałe kolorów wyświetlacza
    Const Blue = &B11111000
    Const Yellow = &B00000011
    Const Red = &B00011111
    Const Green = &B11100011
    Const Black = &B11111111
    Const White = &B00000000
    Const Brightgreen = &B0011111
    Const Darkgreen = &B00010100
    Const Darkred = &B11100000
    Const Darkblue = &B00000010
    Const Brightblue = &B00011111
    Const Orange = &B00010011
    
    Gosub Inicjalizacja_lcd
    Setfont Color16x16
    
    Cls
    Box(0 , 0) -(130 , 130) , Black
    
    Pwm1a = 200                                                 'to do wywalenia bo u mnie steruje podswietleniem LCD
    
    Do
       S1 = "Linia 1 "
       S2 = "Linia 2 "
       S3 = "Linia 3 "
       Call Ltext(0 , 27 , S1 , Green , Black)                  'linia 1
       Call Ltext(0 , 47 , S2 , Yellow , Black)                 'linia 2
       Call Ltext(0 , 67 , S3 , Red , Black)                    'linia 3
    Loop
    
    End
    
    Sub Ltext(byval X As Byte , Y As Byte , S As String , Kolor As Byte , Tlo As Byte)
    Local Temps As String * 1
       For I = 1 To 8
          Temps = Mid(s , I , 1)
          Lcdat X , Y , Temps , Kolor , Tlo
          X = X + 16
       Next I
    End Sub
    
    Inicjalizacja_lcd:
       Portc.7 = 0                                              'Inicjacja Reseta
       Waitms 50
       Portc.7 = 1
       Waitms 50
       Glcdcmd &H01                                             'software reset
       Glcdcmd &H11                                             'sleep out
       Glcdcmd &H13                                             'normal mode on
       Glcdcmd &H21                                             'inversion on
       Glcdcmd &H36                                             'Mem_control
       Glcddata &B01110000
       Glcdcmd &H3A                                             'color
       Glcddata &B00000010
       Glcdcmd &H25                                             'contrast
       Glcddata 1
       Glcdcmd &H2A                                             'column adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H2B                                             'page adres set
       Glcddata 0
       Glcddata 131
       Glcdcmd &H29                                             'display on
    Return
    
    $include "color16x16.font"
    

    Że wyświetlacz umieszczony jest poziomo musisz uwierzyć na słowo :) bo jest już wklejony. Oto zdjęcie (sorry, że poruszone) po uruchomieniu programu.
    Lcd 6100 Bascom - obrócenie obrazu.
REKLAMA