Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

LCD Nokia + ATmega8 + BASCOM

zupcia 27 Dec 2006 14:22 9055 17
  • #1
    zupcia
    Level 10  
    Witam
    Mam prośbę czy mógłby mi ktoś pomóc w napisaniu programu pod Atmege 8 w Bacomie obsługującego wyświetlacz z Nokii 3310. Prosze o jak najprostrzy (łopatologiczny) opis jak się do tego zabrać :/ jeżeli ma ktoś jakieś przykładowe programy to tez bym prosił o udostępnienie ich z opisem co i jak.
    Z góry dziękuje i pozdrawiam
  • #3
    zupcia
    Level 10  
    dzięki M.S. jednak ten programik jest napisany pod ATmega128L a ja nie bardzo wiem jak go przerobić pod ATmege8 :( jeżeli wiesz jak tego dokonać to bardzo proszę o pomoc
  • #4
    M. S.
    Level 34  
    W końcu chciałeś przykład. Nie zauważyłeś też, że wpisałem w program $regfile = "m8def.dat". Program zajmuje prawie całą MEGĘ8 ale jest to demonstracja, którą można uprościć.
  • #5
    zupcia
    Level 10  
    sorki miałem plik o takiej samej nazwie juz wczesniej sciągnięty i nie ten co trzeba wgrałem do Bascoma :( mój błąd sory
    czy mógłbyś mi napisać pod które z tych wyprowadzeń :

    Config Pinb.0 = Output
    Config Pinb.2 = Output
    Config Pinb.1 = Output
    Config Pinb.3 = Output
    Config Pinb.5 = Output

    mam podpiąć odpowiednie końcówki wyświetlacza
    Pozdro i dzięki :)
  • #8
    zupcia
    Level 10  
    niestety dalej mi się nie odpala :/ tak mam podłączony LDC do klocka:
    Config Pinb.0 = Output 'DC
    Config Pinb.2 = Output 'SCE
    Config Pinb.1 = Output 'RST

    Config Pinb.3 = Output 'SDIN
    Config Pinb.5 = Output 'SCK

    i nic się nie dzije :(

    mam rownież mały problem z PonyProgiem tzn. podczas ładowania hexa do klocka zapis staje na kilku procętach puźniej rusza dalej i po weryfikacji wyskakuje błąd :/ prosze o jakąś rade
  • #10
    zupcia
    Level 10  
    M.S. dzięki za linka trochę poczytałem i coś takiego skleciłem:
    Code:

    $regfile = "m8def.dat"
    $crystal = 8000000


    Dim A As Byte


    ' -------- Konfiguracja SPI
    Config Portd = Output
    Config Spi = Soft , Din = Portd.4 , Dout = Portb.4 , Ss = None , Clock = Portb.3
    Spiinit


    ' -------- Konfiguracja Portu C do komunikacji z LCD
    Lcd_sclk Alias Portc.3
    Lcd_sdin Alias Portc.4
    Lcd_dc Alias Portc.2
    Lcd_sce Alias Portc.1
    Lcd_rst Alias Portc.0


    ' ------- odpalenie LCD

    Reset Lcd_sce
    Waitms 50
    Reset Lcd_dc
    Waitms 50
    Reset Lcd_sdin
    Waitms 50
    Reset Lcd_sclk
    Wait 50
    Reset Lcd_rst
    Waitms 50
    Set Lcd_rst


    ' ------  Konfiguracja rejestrow LCD
    A = &H21                                                    'Komendy rozszerzone
    Shiftout Portb.4 , Portb.3 , A
    A = &HC8                                                    'Vop kontrast
    Shiftout Portb.4 , Portb.3 , A
    A = &H06                                                    'temperatura
    Shiftout Portb.4 , Portb.3 , A
    A = &H13                                                    'Multiplex 1:48
    Shiftout Portb.4 , Portb.3 , A
    A = &H20                                                    'Komendy standardowe, adresowanie poziome
    Shiftout Portb.4 , Portb.3 , A
    A = &H0C                                                    'Tryb standardowy
    Shiftout Portb.4 , Portb.3 , A




    ' ------  Zerowanie LCD

    A = &H40                                                    'zerowanie licznika wierszy
    Shiftout Portb.4 , Portb.3 , A
    A = &H80                                                    'zerowanie licznika kolumn
    Shiftout Portb.4 , Portb.3 , A

    ' ----- Wyswietlenie na LCD





    End                                                        'end program



    niestety mam 2 małe problemy które mnie przerastają :/
    1. nie wiem czy to dobrze napisałem choć BASCOM nie pokazał żadnych błędów :)
    2. czy ktoś mógłby mi powiedzieć (napisać) jak wysłać jakikolwiek znak na wyświetlacz bo niestety wiele czytając nie jestem w stanie sobie z tym poradzić po prostu tego nie czaje :/ wiec proszę niech mnie ktoś "łopatologicznie" oświeci

    pozdrawiam i dzięki
  • #12
    zupcia
    Level 10  
    hej przy pomocy programu ze stronki http://maxparadys.w.interia.pl/LPH7779_cz2_pliki/NOKIA_1.1.txt skleciłem poniższy program:
    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    ' -------- konfiguracja SPI
    Config Portd = Output                                       'communication port to LCD
    Config Spi = Soft , Din = Portd.0 , Dout = Portd.4 , Ss = None , Clock = Portd.3

    ' --------  piny LCD
    'Sclk(2) Portd.3
    'Sdin(3) Portd.4
    'D / C(4) Portd.5
    'Sce(5) Portd.6
    'Reset(8) Portd.7

    ' ------- Zmienne globalne
    Dim Txloc As Byte , Tyloc As Byte , Yy As Byte , Xx As Byte , Tout As Byte

    ' ------- Stałe dla ustawien LCD
    Const Extcmd = &H21                                         'extended command mode
    Const Contrmid = &HC8                                       'LCD contract medium level(after Extcmd)
    Const Tempcomp2 = &H06                                      'temperature compensation (after Extcmd)
    Const Bias48 = &H13                                         'bias 1:48 for LCD (after Extcmd)
    Const Normcmd = &H20                                        'normal command mode
    Const Lcdinv = &H0D                                         'inverted LCD screen(after Normcmd)
    Const Lcdnorm = &H0C                                        'normal LCD screen(after Normcmd)
    Const Lcdxaddr0 = &H80                                      'set X addr of RAM to 0(after Normcmd)
    Const Lcdpdown = &H24                                       'LCD in power down mode
    Const Lcdact = &H20                                         'LCD in active mode

    ' ------- Deklaracje procedur
    Declare Sub Tcmd(byval Tlcdcmd As Byte)
    Declare Sub Tlcdinit
    Declare Sub Tcls
    Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Declare Sub Tprintf(byval Tstring As String)
    Declare Sub Tshowpic



    ' ------- Program Główny ----------------------------

    Tlcdinit

    Main_loop:

    Tcls
    'Tlocate 0 , 0
    'Tprintf "  EGYPT DEMO"
    'Tlocate 0 , 2
    'Restore Egypt
    'Tshowpic
    'Wait 5

    Tcls
    Tlocate 0 , 0
    Tprintf "abcdefghijklmnopqrstuvwxyz"
    Wait 1

    Tlocate 0 , 2
    Tprintf "ABCDEFGHIJKLMNPQRSTUVWXYZ"
    Wait 1

    Tlocate 0 , 4
    Tprintf "0123456789šćęłńó??żŁ??Ż^[]{}"
    Wait 5

    'Tcmd Lcdinv
    'Wait 5
    'Tcmd Lcdnorm
    'Wait 1

    End                                                         'end program


    ' ------ Tcmd(Tlcdcmd) -----     START
    Sub Tcmd(byval Tlcdcmd As Byte)
    Reset Portd.5                                               'command mode
    Spiout Tlcdcmd , 1
    Set Portd.5                                                 'data mode
    End Sub

    ' ------ Tlcdinit ------       START
    Sub Tlcdinit
    Spiinit
    Reset Portd.6                                               'LCD enable
    Reset Portd.7                                               'RESET LCD display
    Set Portd.7                                                 '
    Tcmd Extcmd                                                 'look into
    Tcmd Contrmid                                               '"LCD commands constants"
    Tcmd Tempcomp2                                              'section
    Tcmd Bias48                                                 '
    Tcmd Normcmd                                                '
    Tcmd Lcdnorm                                                '
    Tcls                                                        '
    End Sub

     ' -------- Tcls -------        START
    Sub Tcls
    Local Tword As Word
    Tcmd Normcmd
    Tcmd Lcdnorm
    Tcmd Lcdxaddr0
    Tout = 0
    For Tword = 0 To 503                                        '84x6 times sends 0 to clear LCD
      Spiout Tout , 1
    Next
    End Sub

    ' -------- Tgphloc(Txglc , Tyglc) ---------         START
    Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Reset Portd.5                                               'command mode
    Tout = Tyglc + &H40                                         'sets 0-5 Y-addr of RAM
    Spiout Tout , 1
    Tout = Txglc * &H06                                         'sets 0-13 X-addr of RAM
    Tout = Tout + &H80
    Spiout Tout , 1
    Set Portd.5                                                 'data mode
    End Sub

    ' --------- Tlocate(Txloc, Tyloc) --------    START
    Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Txloc = Txlc
    Tyloc = Tylc
    Tgphloc Txloc , Tyloc
    End Sub

    ' --------- Tprintf(Tstring) --------    START
    Sub Tprintf(tstring As String)
    Local Tsub As Word , Tword As Word , Tchr As String * 1
    For Xx = 1 To Len(tstring)
     Tchr = Mid(tstring , Xx , 1)
     Select Case Tchr
      Case " " : Tsub = 0
      Case "a" : Tsub = 1
      Case "b" : Tsub = 2
      Case "c" : Tsub = 3
      Case "d" : Tsub = 4
      Case "e" : Tsub = 5
      Case "f" : Tsub = 6
      Case "g" : Tsub = 7
      Case "h" : Tsub = 8
      Case "i" : Tsub = 9
      Case "j" : Tsub = 10
      Case "k" : Tsub = 11
      Case "l" : Tsub = 12
      Case "m" : Tsub = 13
      Case "n" : Tsub = 14
      Case "o" : Tsub = 15
      Case "p" : Tsub = 16
      Case "q" : Tsub = 17
      Case "r" : Tsub = 18
      Case "s" : Tsub = 19
      Case "t" : Tsub = 20
      Case "u" : Tsub = 21
      Case "v" : Tsub = 22
      Case "w" : Tsub = 23
      Case "x" : Tsub = 24
      Case "y" : Tsub = 25
      Case "z" : Tsub = 26
      Case "A" : Tsub = 27
      Case "B" : Tsub = 28
      Case "C" : Tsub = 29
      Case "D" : Tsub = 30
      Case "E" : Tsub = 31
      Case "F" : Tsub = 32
      Case "G" : Tsub = 33
      Case "H" : Tsub = 34
      Case "I" : Tsub = 35
      Case "J" : Tsub = 36
      Case "K" : Tsub = 37
      Case "L" : Tsub = 38
      Case "M" : Tsub = 39
      Case "N" : Tsub = 40
      Case "O" : Tsub = 41
      Case "P" : Tsub = 42
      Case "Q" : Tsub = 43
      Case "R" : Tsub = 44
      Case "S" : Tsub = 45
      Case "T" : Tsub = 46
      Case "U" : Tsub = 47
      Case "V" : Tsub = 48
      Case "W" : Tsub = 49
      Case "X" : Tsub = 50
      Case "Y" : Tsub = 51
      Case "Z" : Tsub = 52
      Case "0" : Tsub = 53
      Case "1" : Tsub = 54
      Case "2" : Tsub = 55
      Case "3" : Tsub = 56
      Case "4" : Tsub = 57
      Case "5" : Tsub = 58
      Case "6" : Tsub = 59
      Case "7" : Tsub = 60
      Case "8" : Tsub = 61
      Case "9" : Tsub = 62
      Case "š" : Tsub = 63
      Case "ć" : Tsub = 64
      Case "ę" : Tsub = 65
      Case "ł" : Tsub = 66
      Case "ń" : Tsub = 67
      Case "ó" : Tsub = 68
      Case "?" : Tsub = 69
      Case "?" : Tsub = 70
      Case "ż" : Tsub = 71
      Case "Ł" : Tsub = 72
      Case "?" : Tsub = 73
      Case "?" : Tsub = 74
      Case "Ż" : Tsub = 75
      Case "^" : Tsub = 76
      Case "[" : Tsub = 77
      Case "]" : Tsub = 78
      Case "{" : Tsub = 79
      Case "}" : Tsub = 80
      Case Else : Goto Exit_case
     End Select
     Restore Ascii
     Set Portd.5
     Tsub = Tsub * 6
     If Tsub <> 0 Then
      For Tword = 1 To Tsub                                     'shift to character pointer
      Read Tout                                                 'Tsub times
      Next
     End If
      For Yy = 1 To 6                                           'printing character loop
      Read Tout : Spiout Tout , 1                               '6x8 bits
      Next
    Exit_case:
    Next
    End Sub

    '  ------- D A T A -------     START
    Ascii:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H30 , &H4A , &H4A , &H52 , &H7C , &H00 , &H3F , &H48 , &H44 , &H44,
    Data &H38 , &H00 , &H38 , &H44 , &H44 , &H44 , &H28 , &H00 , &H38 , &H44 , &H44 , &H48 , &H7F , &H00 , &H38 , &H54,
    Data &H54 , &H54 , &H18 , &H00 , &H00 , &H04 , &H7E , &H05 , &H00 , &H00 , &H0C , &H52 , &H52 , &H4A , &H3C , &H00,
    Data &H7F , &H08 , &H04 , &H04 , &H78 , &H00 , &H00 , &H44 , &H7D , &H40 , &H00 , &H00 , &H00 , &H40 , &H44 , &H3D,
    Data &H00 , &H00 , &H7F , &H20 , &H10 , &H28 , &H44 , &H00 , &H00 , &H41 , &H7F , &H40 , &H00 , &H00 , &H7C , &H04,
    Data &H18 , &H04 , &H7C , &H00 , &H7C , &H08 , &H04 , &H04 , &H78 , &H00 , &H38 , &H44 , &H44 , &H44 , &H38 , &H00,
    Data &H7C , &H14 , &H24 , &H24 , &H18 , &H00 , &H18 , &H24 , &H24 , &H14 , &H7C , &H00 , &H7C , &H04 , &H04 , &H08,
    Data &H00 , &H00 , &H08 , &H54 , &H54 , &H54 , &H20 , &H00 , &H04 , &H3F , &H44 , &H40 , &H00 , &H00 , &H3C , &H40,
    Data &H40 , &H40 , &H3C , &H00 , &H1C , &H20 , &H40 , &H20 , &H1C , &H00 , &H3C , &H40 , &H30 , &H40 , &H3C , &H00,
    Data &H44 , &H28 , &H10 , &H28 , &H44 , &H00 , &H0C , &H50 , &H50 , &H48 , &H3C , &H00 , &H44 , &H64 , &H54 , &H4C,
    Data &H44 , &H00 , &H7C , &H12 , &H11 , &H12 , &H7C , &H00 , &H7F , &H49 , &H49 , &H49 , &H36 , &H00 , &H3E , &H41,
    Data &H41 , &H41 , &H22 , &H00 , &H7F , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H49 , &H49 , &H49 , &H41 , &H00,
    Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00 , &H3E , &H41 , &H49 , &H49 , &H3A , &H00 , &H7F , &H08 , &H08 , &H08,
    Data &H7F , &H00 , &H00 , &H41 , &H7F , &H41 , &H00 , &H00 , &H20 , &H41 , &H41 , &H41 , &H3F , &H00 , &H7F , &H08,
    Data &H14 , &H22 , &H41 , &H00 , &H7F , &H40 , &H40 , &H40 , &H40 , &H00 , &H7F , &H02 , &H04 , &H02 , &H7F , &H00,
    Data &H7F , &H04 , &H08 , &H10 , &H7F , &H00 , &H3E , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H09 , &H09 , &H09,
    Data &H06 , &H00 , &H3E , &H41 , &H51 , &H61 , &H7E , &H00 , &H7F , &H09 , &H19 , &H29 , &H46 , &H00 , &H06 , &H49,
    Data &H49 , &H49 , &H30 , &H00 , &H01 , &H01 , &H7F , &H01 , &H01 , &H00 , &H3F , &H40 , &H40 , &H40 , &H3F , &H00,
    Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00 , &H7F , &H20 , &H10 , &H20 , &H7F , &H00 , &H63 , &H14 , &H08 , &H14,
    Data &H63 , &H00 , &H03 , &H04 , &H78 , &H04 , &H03 , &H00 , &H61 , &H51 , &H49 , &H45 , &H43 , &H00 , &H3E , &H51,
    Data &H49 , &H45 , &H3E , &H00 , &H00 , &H42 , &H7F , &H40 , &H00 , &H00 , &H42 , &H61 , &H51 , &H49 , &H46 , &H00,
    Data &H22 , &H41 , &H49 , &H49 , &H36 , &H00 , &H18 , &H14 , &H12 , &H7F , &H10 , &H00 , &H27 , &H45 , &H45 , &H45,
    Data &H39 , &H00 , &H3E , &H49 , &H49 , &H49 , &H32 , &H00 , &H61 , &H11 , &H09 , &H05 , &H03 , &H00 , &H36 , &H49,
    Data &H49 , &H49 , &H36 , &H00 , &H26 , &H49 , &H49 , &H49 , &H3E , &H00 , &H30 , &H4A , &H4A , &HD2 , &H7C , &H00,
    Data &H38 , &H44 , &H46 , &H45 , &H28 , &H00 , &H38 , &H54 , &H54 , &HD4 , &H18 , &H00 , &H00 , &H49 , &H7F , &H44,
    Data &H00 , &H00 , &H7C , &H08 , &H06 , &H05 , &H78 , &H00 , &H38 , &H44 , &H46 , &H45 , &H38 , &H00 , &H08 , &H54,
    Data &H56 , &H55 , &H20 , &H00 , &H44 , &H64 , &H56 , &H4D , &H44 , &H00 , &H44 , &H64 , &H55 , &H4C , &H44 , &H00,
    Data &H10 , &H7F , &H44 , &H42 , &H40 , &H00 , &H04 , &H4A , &H4B , &H4A , &H30 , &H00 , &H62 , &H56 , &H4B , &H46,
    Data &H42 , &H00 , &H61 , &H59 , &H49 , &H4D , &H43 , &H00 , &H7E , &H43 , &H41 , &H43 , &H7E , &H00 , &H00 , &H00,
    Data &H00 , &H7F , &H7F , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H00,
    Data &H7F , &H7F , &H7F , &H7F , &H7F , &H00


    trochę się udało bo wyświetlacz odpala lecz niestety nie wyświetla tego czego pragnę zapala się tylko 5 pixeli i to wszystko :/ czy ktoś wie gdzie tkwi błąd ???? prosze o pomoc[/code]
  • #13
    zupcia
    Level 10  
    Witam
    mam pytanko czy mógłby sprawdzić mi poniższy kod bo w BASCOMIE nie ma błędów jednak po wgraniu do klocka nie dziala :/ i nie mam zielonego pojęcia dlaczego. Jeżeli ktoś wie to niech mi napisze co robie nie tak jak trzeba
    Pozdro
    Code:


    $regfile = "m8def.dat"
    $crystal = 8000000

    ' -------- konfiguracja SPI
    'Config Portd = Output                                       'communication port to LCD
    'Config Spi = Soft , Din = Portd.0 , Dout = Portd.4 , Ss = None , Clock = Portd.3
    Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1


    Config Pinb.5 = Output
    Config Pinb.7 = Output
    Config Pinb.6 = Output
    Config Pinb.4 = Output
    Config Pinb.3 = Output

    ' --------  piny LCD
    Res Alias Portb.6
    Cs Alias Portb.4
    Dc Alias Portb.3

    'Sclk(2) Portd.3
    'Sdin(3) Portd.4
    'D / C(4) Portd.5
    'Sce(5) Portd.6
    'Reset(8) Portd.7

    ' ------- Zmienne globalne
    Dim Txloc As Byte , Tyloc As Byte , Yy As Byte , Xx As Byte , Tout As Byte

    ' ------- Stałe dla ustawien LCD
    Const Extcmd = &H21                                         'extended command mode
    Const Contrmid = &HC8                                       'LCD contract medium level(after Extcmd)
    Const Tempcomp2 = &H06                                      'temperature compensation (after Extcmd)
    Const Bias48 = &H13                                         'bias 1:48 for LCD (after Extcmd)
    Const Normcmd = &H20                                        'normal command mode
    Const Lcdinv = &H0D                                         'inverted LCD screen(after Normcmd)
    Const Lcdnorm = &H0C                                        'normal LCD screen(after Normcmd)
    Const Lcdxaddr0 = &H80                                      'set X addr of RAM to 0(after Normcmd)
    Const Lcdpdown = &H24                                       'LCD in power down mode
    Const Lcdact = &H20                                         'LCD in active mode

    ' ------- Deklaracje procedur
    Declare Sub Tcmd(byval Tlcdcmd As Byte)
    Declare Sub Tlcdinit
    Declare Sub Tcls
    Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Declare Sub Tprintf(byval Tstring As String)
    Declare Sub Tshowpic



    ' ------- Program Główny ----------------------------

    Tlcdinit

    Main_loop:

    Tcls

    Tcls
    Tlocate 0 , 0
    Tprintf "0123456789"
    Wait 1

    End                                                         'end program


    ' ------ Tcmd(Tlcdcmd) -----     START
    Sub Tcmd(byval Tlcdcmd As Byte)
    Reset Dc                                                    'command mode
    Spiout Tlcdcmd , 1
    Set Dc                                                      'data mode
    End Sub

    ' ------ Tlcdinit ------       START
    Sub Tlcdinit
    Spiinit
    Reset Cs                                                    'LCD enable
    Reset Res                                                   'RESET LCD display
    Set Res                                                     '
    Tcmd Extcmd                                                 'look into
    Tcmd Contrmid                                               '"LCD commands constants"
    Tcmd Tempcomp2                                              'section
    Tcmd Bias48                                                 '
    Tcmd Normcmd                                                '
    Tcmd Lcdnorm                                                '
    Tcls                                                        '
    End Sub

     ' -------- Tcls -------        START
    Sub Tcls
    Local Tword As Word
    Tcmd Normcmd
    Tcmd Lcdnorm
    Tcmd Lcdxaddr0
    Tout = 0
    For Tword = 0 To 503                                        '84x6 times sends 0 to clear LCD
      Spiout Tout , 1
    Next
    End Sub

    ' -------- Tgphloc(Txglc , Tyglc) ---------         START
    Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Reset Dc                                                    'command mode
    Tout = Tyglc + &H40                                         'sets 0-5 Y-addr of RAM
    Spiout Tout , 1
    Tout = Txglc * &H06                                         'sets 0-13 X-addr of RAM
    Tout = Tout + &H80
    Spiout Tout , 1
    Set Dc                                                      'data mode
    End Sub

    ' --------- Tlocate(Txloc, Tyloc) --------    START
    Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Txloc = Txlc
    Tyloc = Tylc
    Tgphloc Txloc , Tyloc
    End Sub

    ' --------- Tprintf(Tstring) --------    START
    Sub Tprintf(tstring As String)
    Local Tsub As Word , Tword As Word , Tchr As String * 1
    For Xx = 1 To Len(tstring)
     Tchr = Mid(tstring , Xx , 1)
     Select Case Tchr

      Case "0" : Tsub = 53
      Case "1" : Tsub = 54
      Case "2" : Tsub = 55
      Case "3" : Tsub = 56
      Case "4" : Tsub = 57
      Case "5" : Tsub = 58
      Case "6" : Tsub = 59
      Case "7" : Tsub = 60
      Case "8" : Tsub = 61
      Case "9" : Tsub = 62

      Case Else : Goto Exit_case
     End Select
     Restore Ascii
     Set Dc
     Tsub = Tsub * 6
     If Tsub <> 0 Then
      For Tword = 1 To Tsub                                     'shift to character pointer
      Read Tout                                                 'Tsub times
      Next
     End If
      For Yy = 1 To 6                                           'printing character loop
      Read Tout : Spiout Tout , 1                               '6x8 bits
      Next
    Exit_case:
    Next
    End Sub

    '  ------- D A T A -------     START
    Ascii:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H30 , &H4A , &H4A , &H52 , &H7C , &H00 , &H3F , &H48 , &H44 , &H44,
    Data &H38 , &H00 , &H38 , &H44 , &H44 , &H44 , &H28 , &H00 , &H38 , &H44 , &H44 , &H48 , &H7F , &H00 , &H38 , &H54,
    Data &H54 , &H54 , &H18 , &H00 , &H00 , &H04 , &H7E , &H05 , &H00 , &H00 , &H0C , &H52 , &H52 , &H4A , &H3C , &H00,
    Data &H7F , &H08 , &H04 , &H04 , &H78 , &H00 , &H00 , &H44 , &H7D , &H40 , &H00 , &H00 , &H00 , &H40 , &H44 , &H3D,
    Data &H00 , &H00 , &H7F , &H20 , &H10 , &H28 , &H44 , &H00 , &H00 , &H41 , &H7F , &H40 , &H00 , &H00 , &H7C , &H04,
    Data &H18 , &H04 , &H7C , &H00 , &H7C , &H08 , &H04 , &H04 , &H78 , &H00 , &H38 , &H44 , &H44 , &H44 , &H38 , &H00,
    Data &H7C , &H14 , &H24 , &H24 , &H18 , &H00 , &H18 , &H24 , &H24 , &H14 , &H7C , &H00 , &H7C , &H04 , &H04 , &H08,
    Data &H00 , &H00 , &H08 , &H54 , &H54 , &H54 , &H20 , &H00 , &H04 , &H3F , &H44 , &H40 , &H00 , &H00 , &H3C , &H40,
    Data &H40 , &H40 , &H3C , &H00 , &H1C , &H20 , &H40 , &H20 , &H1C , &H00 , &H3C , &H40 , &H30 , &H40 , &H3C , &H00,
    Data &H44 , &H28 , &H10 , &H28 , &H44 , &H00 , &H0C , &H50 , &H50 , &H48 , &H3C , &H00 , &H44 , &H64 , &H54 , &H4C,
    Data &H44 , &H00 , &H7C , &H12 , &H11 , &H12 , &H7C , &H00 , &H7F , &H49 , &H49 , &H49 , &H36 , &H00 , &H3E , &H41,
    Data &H41 , &H41 , &H22 , &H00 , &H7F , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H49 , &H49 , &H49 , &H41 , &H00,
    Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00 , &H3E , &H41 , &H49 , &H49 , &H3A , &H00 , &H7F , &H08 , &H08 , &H08,
    Data &H7F , &H00 , &H00 , &H41 , &H7F , &H41 , &H00 , &H00 , &H20 , &H41 , &H41 , &H41 , &H3F , &H00 , &H7F , &H08,
    Data &H14 , &H22 , &H41 , &H00 , &H7F , &H40 , &H40 , &H40 , &H40 , &H00 , &H7F , &H02 , &H04 , &H02 , &H7F , &H00,
    Data &H7F , &H04 , &H08 , &H10 , &H7F , &H00 , &H3E , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H09 , &H09 , &H09,
    Data &H06 , &H00 , &H3E , &H41 , &H51 , &H61 , &H7E , &H00 , &H7F , &H09 , &H19 , &H29 , &H46 , &H00 , &H06 , &H49,
    Data &H49 , &H49 , &H30 , &H00 , &H01 , &H01 , &H7F , &H01 , &H01 , &H00 , &H3F , &H40 , &H40 , &H40 , &H3F , &H00,
    Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00 , &H7F , &H20 , &H10 , &H20 , &H7F , &H00 , &H63 , &H14 , &H08 , &H14,
    Data &H63 , &H00 , &H03 , &H04 , &H78 , &H04 , &H03 , &H00 , &H61 , &H51 , &H49 , &H45 , &H43 , &H00 , &H3E , &H51,
    Data &H49 , &H45 , &H3E , &H00 , &H00 , &H42 , &H7F , &H40 , &H00 , &H00 , &H42 , &H61 , &H51 , &H49 , &H46 , &H00,
    Data &H22 , &H41 , &H49 , &H49 , &H36 , &H00 , &H18 , &H14 , &H12 , &H7F , &H10 , &H00 , &H27 , &H45 , &H45 , &H45,
    Data &H39 , &H00 , &H3E , &H49 , &H49 , &H49 , &H32 , &H00 , &H61 , &H11 , &H09 , &H05 , &H03 , &H00 , &H36 , &H49,
    Data &H49 , &H49 , &H36 , &H00 , &H26 , &H49 , &H49 , &H49 , &H3E , &H00 , &H30 , &H4A , &H4A , &HD2 , &H7C , &H00,
    Data &H38 , &H44 , &H46 , &H45 , &H28 , &H00 , &H38 , &H54 , &H54 , &HD4 , &H18 , &H00 , &H00 , &H49 , &H7F , &H44,
    Data &H00 , &H00 , &H7C , &H08 , &H06 , &H05 , &H78 , &H00 , &H38 , &H44 , &H46 , &H45 , &H38 , &H00 , &H08 , &H54,
    Data &H56 , &H55 , &H20 , &H00 , &H44 , &H64 , &H56 , &H4D , &H44 , &H00 , &H44 , &H64 , &H55 , &H4C , &H44 , &H00,
    Data &H10 , &H7F , &H44 , &H42 , &H40 , &H00 , &H04 , &H4A , &H4B , &H4A , &H30 , &H00 , &H62 , &H56 , &H4B , &H46,
    Data &H42 , &H00 , &H61 , &H59 , &H49 , &H4D , &H43 , &H00 , &H7E , &H43 , &H41 , &H43 , &H7E , &H00 , &H00 , &H00,
    Data &H00 , &H7F , &H7F , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H00,
  • #14
    snipers
    Level 11  
    zupcia wrote:
    hej przy pomocy programu ze stronki http://maxparadys.w.interia.pl/LPH7779_cz2_pliki/NOKIA_1.1.txt skleciłem poniższy program:
    Code:
    $regfile = "m8def.dat"
    
    $crystal = 8000000

    ' -------- konfiguracja SPI
    Config Portd = Output                                       'communication port to LCD
    Config Spi = Soft , Din = Portd.0 , Dout = Portd.4 , Ss = None , Clock = Portd.3

    ' --------  piny LCD
    'Sclk(2) Portd.3
    'Sdin(3) Portd.4
    'D / C(4) Portd.5
    'Sce(5) Portd.6
    'Reset(8) Portd.7

    ' ------- Zmienne globalne
    Dim Txloc As Byte , Tyloc As Byte , Yy As Byte , Xx As Byte , Tout As Byte

    ' ------- Stałe dla ustawien LCD
    Const Extcmd = &H21                                         'extended command mode
    Const Contrmid = &HC8                                       'LCD contract medium level(after Extcmd)
    Const Tempcomp2 = &H06                                      'temperature compensation (after Extcmd)
    Const Bias48 = &H13                                         'bias 1:48 for LCD (after Extcmd)
    Const Normcmd = &H20                                        'normal command mode
    Const Lcdinv = &H0D                                         'inverted LCD screen(after Normcmd)
    Const Lcdnorm = &H0C                                        'normal LCD screen(after Normcmd)
    Const Lcdxaddr0 = &H80                                      'set X addr of RAM to 0(after Normcmd)
    Const Lcdpdown = &H24                                       'LCD in power down mode
    Const Lcdact = &H20                                         'LCD in active mode

    ' ------- Deklaracje procedur
    Declare Sub Tcmd(byval Tlcdcmd As Byte)
    Declare Sub Tlcdinit
    Declare Sub Tcls
    Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Declare Sub Tprintf(byval Tstring As String)
    Declare Sub Tshowpic



    ' ------- Program Główny ----------------------------

    Tlcdinit

    Main_loop:

    Tcls
    'Tlocate 0 , 0
    'Tprintf "  EGYPT DEMO"
    'Tlocate 0 , 2
    'Restore Egypt
    'Tshowpic
    'Wait 5

    Tcls
    Tlocate 0 , 0
    Tprintf "abcdefghijklmnopqrstuvwxyz"
    Wait 1

    Tlocate 0 , 2
    Tprintf "ABCDEFGHIJKLMNPQRSTUVWXYZ"
    Wait 1

    Tlocate 0 , 4
    Tprintf "0123456789šćęłńó??żŁ??Ż^[]{}"
    Wait 5

    'Tcmd Lcdinv
    'Wait 5
    'Tcmd Lcdnorm
    'Wait 1

    End                                                         'end program


    ' ------ Tcmd(Tlcdcmd) -----     START
    Sub Tcmd(byval Tlcdcmd As Byte)
    Reset Portd.5                                               'command mode
    Spiout Tlcdcmd , 1
    Set Portd.5                                                 'data mode
    End Sub

    ' ------ Tlcdinit ------       START
    Sub Tlcdinit
    Spiinit
    Reset Portd.6                                               'LCD enable
    Reset Portd.7                                               'RESET LCD display
    Set Portd.7                                                 '
    Tcmd Extcmd                                                 'look into
    Tcmd Contrmid                                               '"LCD commands constants"
    Tcmd Tempcomp2                                              'section
    Tcmd Bias48                                                 '
    Tcmd Normcmd                                                '
    Tcmd Lcdnorm                                                '
    Tcls                                                        '
    End Sub

     ' -------- Tcls -------        START
    Sub Tcls
    Local Tword As Word
    Tcmd Normcmd
    Tcmd Lcdnorm
    Tcmd Lcdxaddr0
    Tout = 0
    For Tword = 0 To 503                                        '84x6 times sends 0 to clear LCD
      Spiout Tout , 1
    Next
    End Sub

    ' -------- Tgphloc(Txglc , Tyglc) ---------         START
    Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Reset Portd.5                                               'command mode
    Tout = Tyglc + &H40                                         'sets 0-5 Y-addr of RAM
    Spiout Tout , 1
    Tout = Txglc * &H06                                         'sets 0-13 X-addr of RAM
    Tout = Tout + &H80
    Spiout Tout , 1
    Set Portd.5                                                 'data mode
    End Sub

    ' --------- Tlocate(Txloc, Tyloc) --------    START
    Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Txloc = Txlc
    Tyloc = Tylc
    Tgphloc Txloc , Tyloc
    End Sub

    ' --------- Tprintf(Tstring) --------    START
    Sub Tprintf(tstring As String)
    Local Tsub As Word , Tword As Word , Tchr As String * 1
    For Xx = 1 To Len(tstring)
     Tchr = Mid(tstring , Xx , 1)
     Select Case Tchr
      Case " " : Tsub = 0
      Case "a" : Tsub = 1
      Case "b" : Tsub = 2
      Case "c" : Tsub = 3
      Case "d" : Tsub = 4
      Case "e" : Tsub = 5
      Case "f" : Tsub = 6
      Case "g" : Tsub = 7
      Case "h" : Tsub = 8
      Case "i" : Tsub = 9
      Case "j" : Tsub = 10
      Case "k" : Tsub = 11
      Case "l" : Tsub = 12
      Case "m" : Tsub = 13
      Case "n" : Tsub = 14
      Case "o" : Tsub = 15
      Case "p" : Tsub = 16
      Case "q" : Tsub = 17
      Case "r" : Tsub = 18
      Case "s" : Tsub = 19
      Case "t" : Tsub = 20
      Case "u" : Tsub = 21
      Case "v" : Tsub = 22
      Case "w" : Tsub = 23
      Case "x" : Tsub = 24
      Case "y" : Tsub = 25
      Case "z" : Tsub = 26
      Case "A" : Tsub = 27
      Case "B" : Tsub = 28
      Case "C" : Tsub = 29
      Case "D" : Tsub = 30
      Case "E" : Tsub = 31
      Case "F" : Tsub = 32
      Case "G" : Tsub = 33
      Case "H" : Tsub = 34
      Case "I" : Tsub = 35
      Case "J" : Tsub = 36
      Case "K" : Tsub = 37
      Case "L" : Tsub = 38
      Case "M" : Tsub = 39
      Case "N" : Tsub = 40
      Case "O" : Tsub = 41
      Case "P" : Tsub = 42
      Case "Q" : Tsub = 43
      Case "R" : Tsub = 44
      Case "S" : Tsub = 45
      Case "T" : Tsub = 46
      Case "U" : Tsub = 47
      Case "V" : Tsub = 48
      Case "W" : Tsub = 49
      Case "X" : Tsub = 50
      Case "Y" : Tsub = 51
      Case "Z" : Tsub = 52
      Case "0" : Tsub = 53
      Case "1" : Tsub = 54
      Case "2" : Tsub = 55
      Case "3" : Tsub = 56
      Case "4" : Tsub = 57
      Case "5" : Tsub = 58
      Case "6" : Tsub = 59
      Case "7" : Tsub = 60
      Case "8" : Tsub = 61
      Case "9" : Tsub = 62
      Case "š" : Tsub = 63
      Case "ć" : Tsub = 64
      Case "ę" : Tsub = 65
      Case "ł" : Tsub = 66
      Case "ń" : Tsub = 67
      Case "ó" : Tsub = 68
      Case "?" : Tsub = 69
      Case "?" : Tsub = 70
      Case "ż" : Tsub = 71
      Case "Ł" : Tsub = 72
      Case "?" : Tsub = 73
      Case "?" : Tsub = 74
      Case "Ż" : Tsub = 75
      Case "^" : Tsub = 76
      Case "[" : Tsub = 77
      Case "]" : Tsub = 78
      Case "{" : Tsub = 79
      Case "}" : Tsub = 80
      Case Else : Goto Exit_case
     End Select
     Restore Ascii
     Set Portd.5
     Tsub = Tsub * 6
     If Tsub <> 0 Then
      For Tword = 1 To Tsub                                     'shift to character pointer
      Read Tout                                                 'Tsub times
      Next
     End If
      For Yy = 1 To 6                                           'printing character loop
      Read Tout : Spiout Tout , 1                               '6x8 bits
      Next
    Exit_case:
    Next
    End Sub

    '  ------- D A T A -------     START
    Ascii:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H30 , &H4A , &H4A , &H52 , &H7C , &H00 , &H3F , &H48 , &H44 , &H44,
    Data &H38 , &H00 , &H38 , &H44 , &H44 , &H44 , &H28 , &H00 , &H38 , &H44 , &H44 , &H48 , &H7F , &H00 , &H38 , &H54,
    Data &H54 , &H54 , &H18 , &H00 , &H00 , &H04 , &H7E , &H05 , &H00 , &H00 , &H0C , &H52 , &H52 , &H4A , &H3C , &H00,
    Data &H7F , &H08 , &H04 , &H04 , &H78 , &H00 , &H00 , &H44 , &H7D , &H40 , &H00 , &H00 , &H00 , &H40 , &H44 , &H3D,
    Data &H00 , &H00 , &H7F , &H20 , &H10 , &H28 , &H44 , &H00 , &H00 , &H41 , &H7F , &H40 , &H00 , &H00 , &H7C , &H04,
    Data &H18 , &H04 , &H7C , &H00 , &H7C , &H08 , &H04 , &H04 , &H78 , &H00 , &H38 , &H44 , &H44 , &H44 , &H38 , &H00,
    Data &H7C , &H14 , &H24 , &H24 , &H18 , &H00 , &H18 , &H24 , &H24 , &H14 , &H7C , &H00 , &H7C , &H04 , &H04 , &H08,
    Data &H00 , &H00 , &H08 , &H54 , &H54 , &H54 , &H20 , &H00 , &H04 , &H3F , &H44 , &H40 , &H00 , &H00 , &H3C , &H40,
    Data &H40 , &H40 , &H3C , &H00 , &H1C , &H20 , &H40 , &H20 , &H1C , &H00 , &H3C , &H40 , &H30 , &H40 , &H3C , &H00,
    Data &H44 , &H28 , &H10 , &H28 , &H44 , &H00 , &H0C , &H50 , &H50 , &H48 , &H3C , &H00 , &H44 , &H64 , &H54 , &H4C,
    Data &H44 , &H00 , &H7C , &H12 , &H11 , &H12 , &H7C , &H00 , &H7F , &H49 , &H49 , &H49 , &H36 , &H00 , &H3E , &H41,
    Data &H41 , &H41 , &H22 , &H00 , &H7F , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H49 , &H49 , &H49 , &H41 , &H00,
    Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00 , &H3E , &H41 , &H49 , &H49 , &H3A , &H00 , &H7F , &H08 , &H08 , &H08,
    Data &H7F , &H00 , &H00 , &H41 , &H7F , &H41 , &H00 , &H00 , &H20 , &H41 , &H41 , &H41 , &H3F , &H00 , &H7F , &H08,
    Data &H14 , &H22 , &H41 , &H00 , &H7F , &H40 , &H40 , &H40 , &H40 , &H00 , &H7F , &H02 , &H04 , &H02 , &H7F , &H00,
    Data &H7F , &H04 , &H08 , &H10 , &H7F , &H00 , &H3E , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H09 , &H09 , &H09,
    Data &H06 , &H00 , &H3E , &H41 , &H51 , &H61 , &H7E , &H00 , &H7F , &H09 , &H19 , &H29 , &H46 , &H00 , &H06 , &H49,
    Data &H49 , &H49 , &H30 , &H00 , &H01 , &H01 , &H7F , &H01 , &H01 , &H00 , &H3F , &H40 , &H40 , &H40 , &H3F , &H00,
    Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00 , &H7F , &H20 , &H10 , &H20 , &H7F , &H00 , &H63 , &H14 , &H08 , &H14,
    Data &H63 , &H00 , &H03 , &H04 , &H78 , &H04 , &H03 , &H00 , &H61 , &H51 , &H49 , &H45 , &H43 , &H00 , &H3E , &H51,
    Data &H49 , &H45 , &H3E , &H00 , &H00 , &H42 , &H7F , &H40 , &H00 , &H00 , &H42 , &H61 , &H51 , &H49 , &H46 , &H00,
    Data &H22 , &H41 , &H49 , &H49 , &H36 , &H00 , &H18 , &H14 , &H12 , &H7F , &H10 , &H00 , &H27 , &H45 , &H45 , &H45,
    Data &H39 , &H00 , &H3E , &H49 , &H49 , &H49 , &H32 , &H00 , &H61 , &H11 , &H09 , &H05 , &H03 , &H00 , &H36 , &H49,
    Data &H49 , &H49 , &H36 , &H00 , &H26 , &H49 , &H49 , &H49 , &H3E , &H00 , &H30 , &H4A , &H4A , &HD2 , &H7C , &H00,
    Data &H38 , &H44 , &H46 , &H45 , &H28 , &H00 , &H38 , &H54 , &H54 , &HD4 , &H18 , &H00 , &H00 , &H49 , &H7F , &H44,
    Data &H00 , &H00 , &H7C , &H08 , &H06 , &H05 , &H78 , &H00 , &H38 , &H44 , &H46 , &H45 , &H38 , &H00 , &H08 , &H54,
    Data &H56 , &H55 , &H20 , &H00 , &H44 , &H64 , &H56 , &H4D , &H44 , &H00 , &H44 , &H64 , &H55 , &H4C , &H44 , &H00,
    Data &H10 , &H7F , &H44 , &H42 , &H40 , &H00 , &H04 , &H4A , &H4B , &H4A , &H30 , &H00 , &H62 , &H56 , &H4B , &H46,
    Data &H42 , &H00 , &H61 , &H59 , &H49 , &H4D , &H43 , &H00 , &H7E , &H43 , &H41 , &H43 , &H7E , &H00 , &H00 , &H00,
    Data &H00 , &H7F , &H7F , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H00,
    Data &H7F , &H7F , &H7F , &H7F , &H7F , &H00


    trochę się udało bo wyświetlacz odpala lecz niestety nie wyświetla tego czego pragnę zapala się tylko 5 pixeli i to wszystko :/ czy ktoś wie gdzie tkwi błąd ???? prosze o pomoc[/code]




    u mnie to ładnie chodzi tylko mam pytanie ma ktoś moze dorobianą obsługe wiekszych znaków ?

    dzięki
  • #15
    Michał_z1
    Level 16  
    Witam.
    Przy okazji włączę sie do dyskusji, kolego SNIPERS mógłbyś wrzucić schemat połączeń wyświetlacza do proca (jakiś bufor) i czym zasilasz proca (jakie napięcie)??.
    pozdrawiam.
  • #16
    snipers
    Level 11  
    ja zrobiłem połaczenie bezposrednio pod procka Atmega8 i lcd bez bufora. zasilanie z stabilizatora lm1117t 3.3V ale myśle zrobić prościej na jakiejs diodzie zenera ale to potem. zasilanie procka 5V .
  • #17
    Michał_z1
    Level 16  
    Witam.
    Mam rozumieć SNIPERS że LCD zasilasz 3,3V, a proca 5V a sterowanie SPI bez żadnych rezystorów lub innych takich bezpośrednio do proca?? (chce mieć 100% pewność, kiedyś próbowałem połączyć proca z lcd ale jak można się domyślić bez efektów)
    pozdrawiam.
  • #18
    snipers
    Level 11  
    tak lcd mam 3,3V przez stabilizator procek na 5v.

    sterowanie lcd z procka zrobiłem normalnie bez niczego same kabelki tylko w pinie lcd bodajże 7 (Vout) trzeba dac 1uF do masy.

    na poczatku tez nie miałem efektów ale pobawiłem sie ustawieniami i ładnie chodzi :D