Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Дисплей Nokia 3510i и не только


Дисплей Nokia 3510i и не только

Сообщений 1 страница 30 из 275

1

Предлагаю выкладывать здесь свои программы по работе с дисплеями от сотовых телефонов.
Для начала выкладываю русифицированную и более понятную прогу для работы с простеньким но дешевым цветным дисплеем
от нокии 3510и.
Следом пойдет очень хорошая прога для работы с дисплеем от моторола С115.
Еще есть програмка с работой  с дисплеем от нокии 1100, но с ней чуть позже....

Код:
 $regfile = "m8DEF.DAT"
$crystal = 12000000
'----------------Программа работы с экраном от нокии 3510i----------------------
'---------------Одна строка по горизонтали занимает 98 точек--------------------
'------------------------Всего в дисплее 67 строк-------------------------------
'---------------------------Итого  6566 байт------------------------------------
'В режиме Doublesize=1 экран выводит 8 по горизонтали и 4 строки по вертикали
Const Lcd_cmd = 0
Const Lcd_prm = 1

Ddrb = &B11111111                                           'Port b
Dim S As Byte , Z As Byte
Dim Y As Byte
Dim Color As Byte
Dim Lcd_doublesize As Byte
Dim Lcd_posx As Byte
Dim Lcd_posy As Byte
Dim Lcd_fcolor As Byte
Dim Lcd_bcolor As Byte
Dim Temp As Byte
Dim Tast As Long
Dim Ss As String * 32
Dim Temp2 As Integer
Declare Sub Lcd_cls
Declare Sub Display_setup
Declare Sub Lcd_setcolor(byval Forecolor As Byte , Byval Backcolor As Byte)
Declare Sub Lcd_sendbyte(byval Lcd_command As Byte , Byval Lcd_data As Byte)
Declare Sub Lcd_setframe(byval Lcd_left As Byte , Byval Lcd_top As Byte , Byval Lcd_width As Byte , Byval Lcd_height As Byte)
Declare Sub Lcd_locate(byval Lcd_x As Byte , Byval Lcd_y As Byte)
Declare Sub Lcd_print(byval Lcd_text As String)
Declare Sub Lcd_setdoublesize(byval Size As Byte)

'подпрограмма print ("xxxxxxxxx") выведет в LCD xxxxxxxxx по адресу установленному подпрограммой lcd_locate(x,y)

'lcd_setdoublesize - подпрограмма установки двойного размера символов 1 - двойной размер, 2 - обычный размер
'пример call lcd_setdoublesize(1) ; установим двойной размер символов


'------------------------------Start of programm--------------------------------
Call Display_setup
Call Lcd_setcolor(&Hff , &H0)                               'Установим цвет точки и цвет фона
Call Lcd_cls                                                '


   Call Lcd_setdoublesize(2)                                ' 2 - Нормальный размер 1 - Двойной размер
   Call Lcd_locate(1 , 1)
   Call Lcd_print( "Channel1 --20 C")
   Call Lcd_locate(1 , 2)
   Call Lcd_print( "Channel2 -- 5 C")
   Call Lcd_setcolor(&He0 , &H0)
   Call Lcd_locate(1 , 3)
   Call Lcd_print( "U bat -- 15Volts")
   Call Lcd_setcolor(&H1f , &H0)
   Call Lcd_locate(1 , 4)
   Call Lcd_print( "Code ")
   Call Lcd_print( "ATmega8")



Red:


Green:


Blue:




Do
Loop

End


'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-----------------------------------Подпрограммы--------------------------------

Sub Lcd_cls

Local R As Integer
   Call Lcd_setframe(0 , 0 , 97 , 67)
   For R = 1 To 6566
      Call Lcd_sendbyte(lcd_prm , Lcd_bcolor)
   Next

End Sub

Sub Lcd_setcolor(byval Forecolor As Byte , Byval Backcolor As Byte)

   Lcd_fcolor = Forecolor
   Lcd_bcolor = Backcolor

End Sub


'-----------Подпрограмма отправки данных либо команды в LCD---------------------
Sub Lcd_sendbyte(byval Lcd_command As Byte , Byval Lcd_data As Byte)
     Reset Portb.1
   If Lcd_command = Lcd_cmd Then
     'команда
     Portb.1 = 0                                            '

     Portb.3 = 0
     Portb.2 = 0                                            '
     Portb.3 = 1

   Else
      'данные
      Portb.1 = 0                                           '

      Portb.3 = 0
      Portb.2 = 1                                           '
      Portb.3 = 1

   End If

   Shiftout Portb.2 , Portb.3 , Lcd_data , Msbl

   Set Portb.1

End Sub
'-------------------Выбор кусочка экрана----------------------
Sub Lcd_setframe(byval Lcd_left As Byte , Byval Lcd_top As Byte , Byval Lcd_width As Byte , Byval Lcd_height As Byte)

   Call Lcd_sendbyte(lcd_cmd , &H2A)
   Call Lcd_sendbyte(lcd_prm , Lcd_left)
   Call Lcd_sendbyte(lcd_prm , Lcd_width)

   Call Lcd_sendbyte(lcd_cmd , &H2B)
   Call Lcd_sendbyte(lcd_prm , Lcd_top)
   Call Lcd_sendbyte(lcd_prm , Lcd_height)

   Call Lcd_sendbyte(lcd_cmd , &H2C)                        '

End Sub
'-----------------------------Инициализация дисплея-----------------------------
Sub Display_setup

   Reset Portb.0                                            'hard Reset
   Waitms 5
   Set Portb.0

   Set Portb.1
   Set Portb.2
   Set Portb.3

   Call Lcd_sendbyte(lcd_cmd , &H01)                        'Software Reset
   Waitms 5

   Call Lcd_sendbyte(lcd_cmd , &H11)                        'Sleep out

   Call Lcd_sendbyte(lcd_cmd , &H25)                        'Contrast
   Call Lcd_sendbyte(lcd_prm , 63)

   Call Lcd_sendbyte(lcd_cmd , &H29)                        'Display ON

   Call Lcd_sendbyte(lcd_cmd , &H03)                        'Booster voltage ON
   Waitms 40

   Call Lcd_sendbyte(lcd_cmd , &H3A)                        'Interface pixel format 8 bit
   Call Lcd_sendbyte(lcd_prm , &H02)

   Call Lcd_sendbyte(lcd_cmd , &H2D)                        'Colour set
   'Green
   Call Lcd_sendbyte(lcd_prm , &H00)
   Call Lcd_sendbyte(lcd_prm , &H02)
   Call Lcd_sendbyte(lcd_prm , &H04)
   Call Lcd_sendbyte(lcd_prm , &H06)
   Call Lcd_sendbyte(lcd_prm , &H09)
   Call Lcd_sendbyte(lcd_prm , &H0B)
   Call Lcd_sendbyte(lcd_prm , &H0D)
   Call Lcd_sendbyte(lcd_prm , &H0F)
   'Red
   Call Lcd_sendbyte(lcd_prm , &H00)
   Call Lcd_sendbyte(lcd_prm , &H02)
   Call Lcd_sendbyte(lcd_prm , &H04)
   Call Lcd_sendbyte(lcd_prm , &H06)
   Call Lcd_sendbyte(lcd_prm , &H09)
   Call Lcd_sendbyte(lcd_prm , &H0B)
   Call Lcd_sendbyte(lcd_prm , &H0D)
   Call Lcd_sendbyte(lcd_prm , &H0F)
   'blue
   Call Lcd_sendbyte(lcd_prm , &H00)
   Call Lcd_sendbyte(lcd_prm , &H04)
   Call Lcd_sendbyte(lcd_prm , &H0B)
   Call Lcd_sendbyte(lcd_prm , &H0F)

   Call Lcd_sendbyte(lcd_cmd , &H2C)

   Lcd_doublesize = 0
   Lcd_posx = 1
   Lcd_posy = 1

End Sub
'----------------Подпрограмма перекодировки строки в код из еепрома-------------
 Sub Lcd_print(byval Lcd_text As String)

Local R As Integer
Local A As Byte
Local B As Byte
Local C As Long
Local D As Byte
Local E As Byte
Local F As Byte
Local G As Long
Local Zeichen As String * 10

   Call Lcd_sendbyte(lcd_cmd , &H36)                        '
   Call Lcd_sendbyte(lcd_prm , &B00100000)

   Call Lcd_sendbyte(lcd_cmd , &H2C)                        '

   For R = 1 To Len(lcd_text)

      Zeichen = Mid(lcd_text , R , 1)                       'Hole char
      G = Asc(zeichen)                                      '
      G = G - 32
      G = G * 5

      Readeeprom B , G

      Call Lcd_locate(lcd_posx , Lcd_posy)

      A = 8                                                 '1.
      If Lcd_doublesize = 1 Then A = 32
      If Lcd_doublesize = 2 Then A = 16
      While A > 0
         Call Lcd_sendbyte(lcd_prm , Lcd_bcolor)
         Decr A
      Wend

      'linie 2-6
      For F = 1 To 5
         C = 1
         If Lcd_doublesize = 1 Then C = C + 1               ' если 2x
         While C > 0
            D = B                                           '
            For E = 1 To 8
               A = D And 1
               If A = 1 Then
                  Call Lcd_sendbyte(lcd_prm , Lcd_fcolor)
                  If Lcd_doublesize > 0 Then Call Lcd_sendbyte(lcd_prm , Lcd_fcolor)
               Else
                  Call Lcd_sendbyte(lcd_prm , Lcd_bcolor)
                  If Lcd_doublesize > 0 Then Call Lcd_sendbyte(lcd_prm , Lcd_bcolor)
               End If
               Shift D , Right , 1
            Next
            Decr C
         Wend
         G = G + 1
         Readeeprom B , G
      Next

      Incr Lcd_posx
      If Lcd_doublesize = 1 Then
         If Lcd_posx > 8 Then
            Lcd_posx = 1
            Incr Lcd_posy
            If Lcd_posy > 4 Then Lcd_posy = 1
         End If
      Else
         If Lcd_posx > 16 Then
            Lcd_posx = 1
            Incr Lcd_posy
            If Lcd_posy > 8 Then Lcd_posy = 1
         End If
      End If

   Next

   Call Lcd_sendbyte(lcd_cmd , &H36)                        '
   Call Lcd_sendbyte(lcd_prm , 0)

   Call Lcd_sendbyte(lcd_cmd , &H2C)                        'команда записи в память

End Sub
'------------------Подпрограмма установки двойного размера символа--------------
Sub Lcd_setdoublesize(byval Size As Byte)

   Lcd_doublesize = Size

End Sub
'-------------------------------------------------------------------------------
'установим координаты
'-------------------------------------------------------------------------------
Sub Lcd_locate(byval Lcd_x As Byte , Byval Lcd_y As Byte)

Local A As Byte
Local B As Byte
Local C As Byte
Local D As Byte

   Lcd_posx = Lcd_x
   Lcd_posy = Lcd_y

   If Lcd_doublesize = 1 Then
      A = Lcd_x - 1
      A = A * 12
      C = A + 11
      B = Lcd_y - 1
      B = B * 16
      B = B + 2
      D = B + 15
   Elseif Lcd_doublesize = 2 Then
      A = Lcd_x - 1
      A = A * 6
      C = A + 5
      B = Lcd_y - 1
      B = B * 16
      B = B + 2
      D = B + 15
   Else
      A = Lcd_x - 1
      A = A * 6
      C = A + 5
      B = Lcd_y - 1
      B = B * 8
      B = B + 2
      D = B + 7
   End If

   Call Lcd_setframe(a , B , C , D)

End Sub

'дальше знакогенератор

$eeprom
Data &H00 , &H00 , &H00 , &H00 , &H00                       ' "(space)"
Data &H00 , &H06 , &H5F , &H06 , &H00                       ' "!"
Data &H07 , &H03 , &H00 , &H07 , &H03 ' """
Data &H24 , &H7E , &H24 , &H7E , &H24                       ' "#"
Data &H24 , &H2B , &H6A , &H12 , &H00                       ' "$"
Data &H63 , &H13 , &H08 , &H64 , &H63                       ' "%"
Data &H36 , &H49 , &H56 , &H20 , &H50                       ' "&"
Data &H00 , &H07 , &H03 , &H00 , &H00                       ' "'"
'40
Data &H00 , &H3E , &H41 , &H00 , &H00                       ' "("
Data &H00 , &H41 , &H3E , &H00 , &H00                       ' ")"
Data &H08 , &H3E , &H1C , &H3E , &H08                       ' "*"
Data &H08 , &H08 , &H3E , &H08 , &H08                       ' "+"
Data &H00 , &HE0 , &H60 , &H00 , &H00                       ' ","
Data &H08 , &H08 , &H08 , &H08 , &H08                       ' "-"
Data &H00 , &H60 , &H60 , &H00 , &H00                       ' "."
Data &H20 , &H10 , &H08 , &H04 , &H02                       ' "/"
Data &H3E , &H51 , &H49 , &H45 , &H3E                       ' "0"
Data &H00 , &H42 , &H7F , &H40 , &H00                       ' "1"
'50
Data &H62 , &H51 , &H49 , &H49 , &H46                       ' "2"
Data &H22 , &H49 , &H49 , &H49 , &H36                       ' "3"
Data &H18 , &H14 , &H12 , &H7F , &H10                       ' "4"
Data &H2F , &H49 , &H49 , &H49 , &H31                       ' "5"
Data &H3C , &H4A , &H49 , &H49 , &H30                       ' "6"
Data &H01 , &H71 , &H09 , &H05 , &H03                       ' "7"
Data &H36 , &H49 , &H49 , &H49 , &H36                       ' "8"
Data &H06 , &H49 , &H49 , &H29 , &H1E                       ' "9"
Data &H00 , &H6C , &H6C , &H00 , &H00                       ' ":"
Data &H00 , &HEC , &H6C , &H00 , &H00                       ' ";"
'60
Data &H08 , &H14 , &H22 , &H41 , &H00                       ' "<"
Data &H24 , &H24 , &H24 , &H24 , &H24                       ' "="
Data &H00 , &H41 , &H22 , &H14 , &H08                       ' ">"
Data &H02 , &H01 , &H59 , &H09 , &H06                       ' "?"
Data &H3E , &H41 , &H5D , &H55 , &H1E                       ' "@"
Data &H7E , &H09 , &H09 , &H09 , &H7E                       ' "A"
Data &H7F , &H49 , &H49 , &H49 , &H36                       ' "B"
Data &H3E , &H41 , &H41 , &H41 , &H22                       ' "C"
Data &H7F , &H41 , &H41 , &H41 , &H3E                       ' "D"
Data &H7F , &H49 , &H49 , &H49 , &H41                       ' "E"
'70
Data &H7F , &H09 , &H09 , &H09 , &H01                       ' "F"
Data &H3E , &H41 , &H49 , &H49 , &H7A                       ' "G"
Data &H7F , &H08 , &H08 , &H08 , &H7F                       ' "H"
Data &H00 , &H41 , &H7F , &H41 , &H00                       ' "I"
Data &H30 , &H40 , &H40 , &H40 , &H3F                       ' "J"
Data &H7F , &H08 , &H14 , &H22 , &H41                       ' "K"
Data &H7F , &H40 , &H40 , &H40 , &H40                       ' "L"
Data &H7F , &H02 , &H04 , &H02 , &H7F                       ' "M"
Data &H7F , &H02 , &H04 , &H08 , &H7F                       ' "N"
Data &H3E , &H41 , &H41 , &H41 , &H3E                       ' "O"
Data &H7F , &H09 , &H09 , &H09 , &H06                       ' "P"
'80
Data &H3E , &H41 , &H51 , &H21 , &H5E                       ' "Q"
Data &H7F , &H09 , &H09 , &H19 , &H66                       ' "R"
Data &H26 , &H49 , &H49 , &H49 , &H32                       ' "S"
Data &H01 , &H01 , &H7F , &H01 , &H01                       ' "T"
Data &H3F , &H40 , &H40 , &H40 , &H3F                       ' "U"
Data &H1F , &H20 , &H40 , &H20 , &H1F                       ' "V"
Data &H3F , &H40 , &H3C , &H40 , &H3F                       ' "W"
Data &H63 , &H14 , &H08 , &H14 , &H63                       ' "X"
Data &H07 , &H08 , &H70 , &H08 , &H07                       ' "Y"
Data &H71 , &H49 , &H45 , &H43 , &H00                       ' "Z"
Data &H00 , &H7F , &H41 , &H41 , &H00                       ' "["
'90
Data &H02 , &H04 , &H08 , &H10 , &H20                       ' "\"
Data &H00 , &H41 , &H41 , &H7F , &H00                       ' "]"
Data &H04 , &H02 , &H01 , &H02 , &H04                       ' "^"
Data &H80 , &H80 , &H80 , &H80 , &H80                       ' "_"
Data &H00 , &H03 , &H07 , &H00 , &H00                       ' "`"
Data &H20 , &H54 , &H54 , &H54 , &H78                       ' "a"
Data &H7F , &H44 , &H44 , &H44 , &H38                       ' "b"
Data &H38 , &H44 , &H44 , &H44 , &H28                       ' "c"
Data &H38 , &H44 , &H44 , &H44 , &H7F                       ' "d"
Data &H38 , &H54 , &H54 , &H54 , &H18                       ' "e"
Data &H08 , &H7E , &H09 , &H09 , &H00                       ' "f"
'100
Data &H18 , &HA4 , &HA4 , &HA4 , &H7C                       ' "g"
Data &H7F , &H04 , &H04 , &H78 , &H00                       ' "h"
Data &H00 , &H00 , &H7D , &H00 , &H00                       ' "i"
Data &H40 , &H80 , &H84 , &H7D , &H00                       ' "j"
Data &H7F , &H10 , &H28 , &H44 , &H00                       ' "k"
Data &H00 , &H00 , &H7F , &H40 , &H00                       ' "l"
Data &H7C , &H04 , &H18 , &H04 , &H78                       ' "m"
Data &H7C , &H04 , &H04 , &H78 , &H00                       ' "n"
Data &H38 , &H44 , &H44 , &H44 , &H38                       ' "o"
Data &HFC , &H44 , &H44 , &H44 , &H38                       ' "p"
Data &H38 , &H44 , &H44 , &H44 , &HFC                       ' "q"
'110
Data &H44 , &H78 , &H44 , &H04 , &H08                       ' "r"
Data &H08 , &H54 , &H54 , &H54 , &H20                       ' "s"
Data &H04 , &H3E , &H44 , &H24 , &H00                       ' "t"
Data &H3C , &H40 , &H20 , &H7C , &H00                       ' "u"
Data &H1C , &H20 , &H40 , &H20 , &H1C                       ' "v"
Data &H3C , &H60 , &H30 , &H60 , &H3C                       ' "w"
Data &H6C , &H10 , &H10 , &H6C , &H00                       ' "x"
Data &H9C , &HA0 , &H60 , &H3C , &H00                       ' "y"
Data &H64 , &H54 , &H54 , &H4C , &H00                       ' "z"
Data &H08 , &H3E , &H41 , &H41 , &H00                       ' "{"
'120
Data &H00 , &H00 , &H7F , &H00 , &H00                       ' "|"
Data &H00 , &H41 , &H41 , &H3E , &H08                       ' "}"
Data &H02 , &H01 , &H02 , &H01 , &H00                       ' "~"

Data &H3F , &H21 , &H21 , &H21 , &H21                       ' "["
Data &H21 , &H21 , &H21 , &H21 , &H21
Data &H21 , &H21 , &H21 , &H21 . &H3F                       ' "]"
Data &H3F , &H3F , &H3F , &H3F , &H3F
Data &H3F , &H00 , &H00 , &H00 , &H00

0

2

Вот программка для работы с дисплеем от моторолы С115
Только нет пока подпрограммы смещения по x.
При написании проги руководствовался даташитом ST7558

Код:
$regfile = "m8DEF.DAT"
$crystal = 1000000
'знакогенератор еще не загонял...
'программа переконвертированна из си файла, пока не до конца
' но уже проверенна
Declare Sub Column_set(byval Y As Byte)
Declare Sub Video_mode(byval Vid_mode As Byte)
Declare Sub Clear_lcd()
Declare Sub Lcd_init()
Res Alias Portb.0 : Set Ddrb.0

Dim I As Word , Temp As Byte
Dim X As Byte , Y As Byte
Config Scl = Portc.0
Config Sda = Portc.1
I2cinit


Call Lcd_init()

I2cstart
  I2cwbyte &H78
  I2cwbyte &H40                                             'команда записи в дисплей
  '............
  '............
  '............          можно так все 918 байт выводить
  I2cwbyte &HFF                                             'вывести вертикальную строчку в 8 бит
I2cstop


Do
Loop


Sub Column_set(byval Y As Byte)                             'Выбор координаты по Y
 If X < 8 Then
  I2cstart                                                  '
    I2cwbyte &H78                                           '
    I2cwbyte &H00                                           '
    I2cwbyte &H20                                           '
    I2cwbyte &H80
    Temp = X + &H40
    I2cwbyte X
    I2cstop                                                 '
 End If

End Sub


 Sub Video_mode(byval Vid_mode As Byte)                     'выбор режима вывода
   '1 -инверсия 0 -нормальный
   I2cstart
   If Vid_mode = 1 Then

   I2cwbyte &H78
   I2cwbyte &H00
   I2cwbyte &H20
   I2cwbyte &H0C
   I2cstop
   Else
   I2cwbyte &H78
   I2cwbyte &H00
   I2cwbyte &H20
   I2cwbyte &H0D
   I2cstop
   End If
   End Sub

 Sub Clear_lcd()                                            'очистка диспа

  I2cstart
  I2cwbyte &H78
  I2cwbyte &H40
  For I = 0 To 918                                          'Заполняем весь контент диспа
  I2cwbyte &H00
  Next I

 End Sub

 Sub Lcd_init()                                             'инициализация дисплея

 Reset Res
 Waitms 500
 Set Res

 I2cstop
 Waitms 100

  I2cstart
  I2cwbyte &H78
  I2cwbyte &H00
  I2cwbyte &H2E
  I2cwbyte &H21

  I2cwbyte &H12
  I2cwbyte &HC0
  I2cwbyte &H0B
  I2cwbyte &H20

  I2cwbyte &H11
  I2cwbyte &H0C
  I2cwbyte &H40
  I2cwbyte &H80
  I2cstop

  I2cstart
  I2cwbyte &H78
  I2cwbyte &H00
  I2cwbyte &H20
  I2cwbyte &H08
  I2cstop

  Call Video_mode(1)                                        'нормальный режим
  Call Clear_lcd()                                          'очистим дисплей
  End Sub

Отредактировано Ведущийспециалист (2007-12-10 20:50:18)

0

3

Почти готова прога для работы с дисплеем LPH8836 от сименса s65. Сделал удобный интерфейс, есть библиотеки для работы с датафлеш от атмела.Добавлен знакогенератор, библиотека позиционирования символа, возможен вывод символа как с цветом точки так и с цветом фона.
Есть библиотека вывода строки на экран.В процессе пишется подпрограмка для вывода числовых переменных.
Вобщем приходится писать свой интерпретатор, зато появляется очень хорошая возможность переносить бейсиковые программы с других платформ, что самого радует.

0

4

Кстати на форуме electronix.ru http://electronix.ru/forum/index.php?sh … amp;st=450
есть неплохая програмка для конвертирования различных форматов картинок в дисплеевский формат.Я опробывал, работает замечательно, советую скачать.Называется screen bin.

+1

5

Display Samsung Controller M50530
LCD Samsung 2138A
24x8 Zeilen

http://www.frickelfritze.de/elektronik/lcd/index.html

0

6

как в ключить подсветку на ЖКИ Nokia 3510i ?
подача 12В на 8 ногу, не помогло...

0

7

:insane: вот что осталось от диспа
ему на 8ю ногу надо вешать конденсатор, это типа внутренний бустер для питания кристаллов жк
от напряжения(регулируемого кстати регистром) зависит контрастность диспа.
Подсветка делается оч просто, берутся 2 светодиода и ставятся в спец углубления в держателе жк.
Какие светодиоды возьмешь, такое напряжение на них и подавай

0

8

Есть но все на си. С логотипами сложнее, дисп просто принимает сразу 8 бит и выводит их в вертикальную строчку

0

9

Ведущийспециалист C дисплеем от сименса  LPH8836 продвижений никаких не было?

0

10

Ведущийспециалист написал(а):

Есть но все на си.

Уважаемый, Ведущий специалист, можно ли получить программу на  Си для управления дисплеем от Моторолы С115?
Я с ним только-только столкнулся, еще не успел разобраться. Но поскольку уже есть готовый код, хотелось бы сократить время. :)
Могу в обмен предложить модули для работы по I2C с HD44780.

0

11

выкладываю библиотеку для работы с дисплеем от Нокии 3510i
копируем код, сохраняем в текстовом файле и обзываем его, напримеер: LCD-Nokia3510i_EPSON.LBX
используем стандартные команды Bascom

Код:
Comment = Compiled LIB file, no comment included

copyright = MCS Electronics
www       = http://www.mcselec.com
email     = avr@mcselec.com
comment   = EPSON color display driver LCD-Nokia3510i_EPSON.LIB
comment   = адаптировал Сергей Черников 2008г.
libversion   = 1.11.9.0
date         = 2008
statement    = No SOURCE code from the library may be distributed in any form
statement    = Of course this does not apply for the COMPILED code when you have a BASCOM-AVR license
history      = No known bugs.
[_GLCD]
$EXTERNAL _MUL8
_Set_Display:
Lcd_init:
;*  cbi _glcd_portm,_glcd_Reset -конфликтует с BASCOM-AVR старше 1.11.9.1
*  cbi _glcd_portm,_glcd_Rs ;пришлось обойти таким образом
.OBJ E085
.OBJ 2799
*  Call _Waitms
;*  sbi _glcd_portm,_glcd_ReSet -конфликтует с BASCOM-AVR старше 1.11.9.1
*  sbi _glcd_portm,_glcd_RS ;пришлось обойти таким образом
*  sbi _glcd_portm,_glcd_CS
*  sbi _glcd_portm,_glcd_sda
*  sbi _glcd_portm,_glcd_scl
.OBJ E081
   rcall _Gwrite_Cmd
.OBJ E181
   rcall _gwrite_Cmd
.OBJ E281
   rcall _gwrite_Cmd
.OBJ E285
   rcall _Gwrite_Cmd
.OBJ E38F
   rcall _gwrite_data
.OBJ E289
   rcall _Gwrite_Cmd
.OBJ E083
   rcall _Gwrite_Cmd
.OBJ E288
.OBJ 2799
*  Call _Waitms
.OBJ E38A
   rcall _gwrite_cmd
.OBJ E082
   rcall _gwrite_data
.OBJ E28D
   rcall _gwrite_Cmd
*  ldi r30,low(_lcd_init_data * 2)
*  ldi r31,high(_lcd_init_data * 2)
.OBJ E114
_lcd_init_lp:
   call _lpmbyte
.OBJ 2D80
   rcall _gwrite_data
.OBJ 951A
   brne _Lcd_init_lp
.OBJ E28C
   rcall _Gwrite_Cmd
.OBJ 9508
_lcd_init_data:
.db &H00 , &H02 , &H04 , &H06 , &H09 , &H0B , &H0D , &H0F, &H00 , &H02 , &H04 , &H06 , &H09 , &H0B , &H0D , &H0F, &H00 , &H04 , &H0B , &H0F
_Gwrite_Data:
* Cbi _glcd_portm, _glcd_cs
* Cbi _glcd_portm, _glcd_scl
* Sbi _glcd_portm, _GLCD_SDA
_Gwrite_DataMisc:
* Sbi _glcd_portm, _glcd_scl
.OBJ 932F
.OBJ E028
_Gwrite_DataMisc3:
.OBJ 1F88
  brcc  Gwrite_DataMisc1
* Sbi _glcd_portm, _glcd_sda
  Rjmp Gwrite_DataMisc2
Gwrite_DataMisc1:
* Cbi _glcd_portm, _glcd_sda
Gwrite_DataMisc2:
* Cbi _glcd_portm, _glcd_scl
* Sbi _glcd_portm, _glcd_scl
.OBJ 952A
  Brne _Gwrite_DataMisc3
* Sbi _glcd_portm, _glcd_cs
.OBJ 912F
.OBJ 9508
_Gwrite_Cmd:
* Cbi _glcd_portm, _glcd_cs
* Cbi _glcd_portm, _glcd_scl
* cbi _glcd_portm,_GLCD_SDA
  Rjmp _Gwrite_DataMisc
_Window:
.OBJ E28A
   rcall _gwrite_cmd
.OBJ 9189
   rcall _gwrite_data
.OBJ 9189
   rcall _gwrite_data
.OBJ E28B
   rcall _gwrite_cmd
.OBJ 9189
   rcall _gwrite_data
.OBJ 9189
   rcall _gwrite_data
.OBJ E28C
rjmp _gwrite_cmd
[_BOX]
_BOX:
.OBJ 8189
.OBJ 2F48
.OBJ 938A
.OBJ 818C
.OBJ 938A
.OBJ 1B48
.OBJ 9543
.OBJ 818C
.OBJ 2F08
.OBJ 938A
.OBJ 818F
.OBJ 938A
.OBJ 1B08
.OBJ 9503
   rcall _window
   call _mul8
_Box_lp:
.OBJ 8188
   rcall _gwrite_data
.OBJ 5041
.OBJ 4050
   brne _box_lp
.OBJ 9625
.OBJ 9508
_Clear_Graph:
_Clear_Text:
.OBJ 2788
.OBJ 938A
.OBJ 938A
.OBJ E681
.OBJ 938A
.OBJ E483
.OBJ 938A
.OBJ EF8F
.OBJ 938A
Rjmp _Box
_gwrite_lcdchar:
$EXTERNAL _LPMBYTE, _MUL8
.OBJ 93EF
.OBJ 93FF
* Lds r30 ,{___fonttable}
* Lds r31 ,{___fonttable +1}
*#IF _CHIP=20 or _CHIP=21 OR _CHIP=10
*  Clr r0
*  lsl R30
*  Rol r31
*  Rol R0
*  Out RAMPZ, R0
*#ENDIF
* Lds r2,{___FGCOLOR}
* Lds r3,{___BGCOLOR}
  call _lpmbyte
.OBJ 2D20
  call _lpmbyte
.OBJ 2D30
  call _lpmbyte
.OBJ 2D00
.OBJ 930A
.OBJ 9631
.OBJ 5280
.OBJ 2F48
  call _mul8
.OBJ FE4
.OBJ 1FF5
.OBJ E008
.OBJ 2F42
  call _mul8
* lds r24,{___lcdrow}
.OBJ F48
.OBJ 954A
.OBJ 934A
.OBJ 938A
* lds r24,{___lcdcol}
.OBJ 2F08
.OBJ F03
* sts {___lcdcol},r16
.OBJ F38
.OBJ 953A
.OBJ 933A
.OBJ 938A
  rcall _window
.OBJ 9149
_gwrite_lcdchar1:
   call _lpmbyte
.OBJ E008
kllp:
.OBJ 9406
.OBJ 2D83
  brcc _gwrite_lcdchar2
.OBJ 2D82
_gwrite_lcdchar2:
  rcall _GWrite_data
.OBJ 950A
  brne kllp
.OBJ 954A
  brne _gwrite_lcdchar1
.OBJ 91FF
.OBJ 91EF
.OBJ 9508
[END]
[_GPixel]
$EXTERNAL _DIV8, _MUL8
_Gpixel:
.OBJ 9543
.OBJ 9553
.OBJ 935A
.OBJ 935A
.OBJ 934A
.OBJ 934A
   rcall _window
.OBJ 2F89
   rjmp _gwrite_data
[END]
[_GetByteFromROM_EPROM]
$EXTERNAL _READEEPROM , _LPMBYTE
_GetByteFromROM:
.OBJ 2377
  Breq _GetByteFromROM1
.OBJ 27AA
.OBJ 27BB
  jmp _ReadEEPROM1
_GetByteFromROM1:
  jmp _LpmByte
[END]
[_ShowPicture]
$EXTERNAL _GetByteFromROM_EPROM
_ShowPicture:
.OBJ 2411
.OBJ 2422
.OBJ 2433
.OBJ 9179
.OBJ 9109
.OBJ 9119
 call _GetByteFromROM
.OBJ E00
.OBJ 920A
.OBJ 9503
.OBJ 930A
 call _GetByteFromROM
.OBJ E01
.OBJ 920A
.OBJ 9513
.OBJ 931A
 rcall _window
 call _GetByteFromROM
.OBJ 2D00
 call _GetByteFromROM
.OBJ 2D10
_ShowPicture2:
.OBJ 1413
  brne _ShowPicture8
  call _GetByteFromROM
.OBJ 2C20
.OBJ 2D80
.OBJ 3A8A
  breq _ShowPicture9
  call _GetByteFromROM
.OBJ 2D80
.OBJ 3A8A
  breq _ShowPicture10
.OBJ 9731
* #IF _CHIP = 10  or _CHIP=20 or _CHIP=21  or _CHIP=40
*  brcc _ShowPicture2c
*  In r24, RAMPZ
*  Dec R24
*  Out RAMPZ, R24
_ShowPicture2c:
* #ENDIF
  rjmp _ShowPicture11
_ShowPicture9:
.OBJ 9631
  rjmp _ShowPicture11
_ShowPicture8:
.OBJ 941A
  breq _showpicture2
  rjmp _ShowPicture11
_ShowPicture10:
  call _GetByteFromROM
.OBJ 2D80
.OBJ 2388
  Brne _showpicture15
.OBJ 9732
  Rjmp _showpicture11
_showpicture15:
.OBJ 2C10
_ShowPicture11:
.OBJ 2D82
  rcall _Gwrite_Data
.OBJ 5001
.OBJ 4010
  brne _ShowPicture2
.OBJ 9508
[END]
[_GLINE]
$EXTERNAL _GPIXEL
_gline:
.OBJ 24AA
.OBJ 24BB
.OBJ 24FF
.OBJ 81EC
.OBJ 80EA
.OBJ 1AEE
.OBJ 8FF
.OBJ 81FB
.OBJ 8029
.OBJ 2433
.OBJ 1A2F
.OBJ 833
.OBJ E081
.OBJ 14EA
.OBJ 4FA
  brge _line1
.OBJ EF2F
.OBJ EF3F
.OBJ 94E0
.OBJ 94F0
.OBJ EE8
.OBJ 1CFA
  rjmp _line1a
_line1:
.OBJ E021
.OBJ 2733
_line1a:
.OBJ 142A
.OBJ 43A
  brge _line2
.OBJ EF6F
.OBJ EF7F
.OBJ 9420
.OBJ 9430
.OBJ E28
.OBJ 1C3A
  rjmp _line2a
_line2:
.OBJ E061
.OBJ 2777
_line2a:
  rcall _line10
.OBJ 142E
.OBJ 43F
  brlt _line3
  breq _line3
  rjmp _line4
_line3:
.OBJ 2CCE
.OBJ 2CDF
.OBJ CCC
.OBJ 1CDD
.OBJ 2C02
.OBJ 2C13
.OBJ C00
.OBJ 1C11
_line4a:
.OBJ 819A
.OBJ 17E9
  breq _line4
_line5:
.OBJ FE2
.OBJ CA0
.OBJ 1CB1
.OBJ 14AE
.OBJ 4BF
  brlt _line6
  breq _line6
.OBJ FF6
.OBJ 18AC
.OBJ 8BD
_line6:
  rcall _line10
  rjmp  _line4a
_line4:
.OBJ 2CC2
.OBJ 2CD3
.OBJ CCC
.OBJ 1CDD
.OBJ 2C0E
.OBJ 2C1F
.OBJ C00
.OBJ 1C11
_line9:
.OBJ 8199
.OBJ 17F9
  brne _LINE7
.OBJ 9625
.OBJ 9508
_line7:
.OBJ FF6
.OBJ CA0
.OBJ 1CB1
.OBJ 14A2
.OBJ 4B3
  brlt _line8
  breq _line8
.OBJ FE2
.OBJ 18AC
.OBJ 8BD
_line8:
  rcall _line10
rjmp _line9
_line10:
.OBJ 2F4E
.OBJ 2F5F
.OBJ 8198
rjmp _gpixel
[END]
[_BCOS]
$EXTERNAL _LPMBYTE , _MUL8
_bCos:
.OBJ 9541
   breq _bsin9a
_bSin:
.OBJ 2F84
.OBJ 7F80
.OBJ 2F98
.OBJ 9592
*  ldi zl, low(_bsin_table*2)
*  ldi zh, high(_bsin_table*2)
.OBJ FE9
.OBJ 2799
.OBJ 1FF9
   call _LPMByte
.OBJ 2D90
.OBJ 1784
   breq _bsin9
   call _LPMByte
.OBJ 2D00
.OBJ 1B09
.OBJ 1B48
.OBJ 9542
   call _mul8
.OBJ 1F44
.OBJ 1F95
_bsin9:
.OBJ 9508
_bsin9a:
.OBJ EF9F
.OBJ 9508
_bsin_table:
.db 0 , 25 , 50 , 74 , 98 , 120 , 142 , 162 , 180 , 197 , 212 , 225 , 236 , 244 , 250 , 254 , 255
[END]
[_Circle]
_Circle:
$EXTERNAL _BCOS , _MUL8 ,_GPIXEL
.OBJ 2722
_circle1:
.OBJ 8138
.OBJ 8149
.OBJ 815A
.OBJ 9533
.OBJ 2EC4
.OBJ 2ED4
.OBJ 2EE5
.OBJ 2EF5
.OBJ 2F42
   rcall _bcos
.OBJ 2F49
.OBJ 2F03
   call _Mul8
.OBJ 1AC5
.OBJ ED5
.OBJ 2F42
   rcall _bsin
.OBJ 2F49
.OBJ 2F03
   call _mul8
.OBJ 1AE5
.OBJ EF5
.OBJ 819B
.OBJ 2D4D
.OBJ 2D5E
   rcall _GPixel
.OBJ 819B
.OBJ 2D4C
.OBJ 2D5E
   rcall _Gpixel
.OBJ 819B
.OBJ 2D4C
.OBJ 2D5F
   rcall _Gpixel
.OBJ 819B
.OBJ 2D5F
.OBJ 2D4D
   rcall _Gpixel
.OBJ 5F2E
.OBJ 3F2E
   brlo _circle1
.OBJ 9624
.OBJ 9508
[END]

Отредактировано Karavan (2009-09-10 20:04:38)

0

12

Ну вот!!! Очередной раз порадовал!! очень спасибо!!
на днях оттестирую, можно?  :question:

0

13

Конечно. Протестишь - пиши. Проверь картинки. По-моему с ними засада.

0

14

А нет ли,у вас библиотеки на дисплей от сименса C60

0

15

fishhuk написал(а):

А нет ли,у вас библиотеки на дисплей от сименса C60

Лично у меня нет.

0

16

жаль,а то я в ASME ни бельмес,а на Basic код большой получается

0

17

а каково подключение LCD 3510i для работы с помощью библиотеки?
Использовать стандартную баскомовскую конфигурацию, типа этой?
Config Graphlcd = Color , Controlport = Portb , Cs = 0 , Rs = 1 , Scl = 2 , Sda = 3  ?

0

18

demonizer написал(а):

Использовать стандартную баскомовскую конфигурацию, типа этой?
Config Graphlcd = Color , Controlport = Portb , Cs = 0 , Rs = 1 , Scl = 2 , Sda = 3  ?

Да
у меня так:
$lib "LCD-Nokia3510i_EPSON_Osc.LBX"
      Config Graphlcd = Color , Controlport = Portb , Reset = 6 , Cs = 4 , Scl = 7 , Sda = 5
'256 8-áèòíûå öâåòà vvv
Const Darkred = &B00000110
Const Red = &B00000011
Const Orange = &B00001111
Const Yellow = &B00011111
Const Brightgreen = &B00111100
Const Green = &B00011100
Const Darkgreen = &B00010100
Const Brightblue = &B110011001
Const Blue = &B11001000
Const Darkblue = &B11100000
Const Violett = &B11000111
Const Brown = &B00001110
Const Black = &B00000000
Const White = &B11111111
'256 8-áèòíûå öâåòà ^^^

+1

19

спасибо!
баском ругается на reset=6, принимает только rs=6
еще вопрос, будет ли работать эта библиотека с дисплеем lph-9116-1
http://radiokot.ru/forum/viewtopic.php?t=17989
Пишут, что контроллер один, пытаюсь подключить - тишина.
мегу питаю 3,3В, линии дисплея не подтягивал ни к чему, к дисплею подключил VDD - 3.3V, RESET - тоже на 3.3В, GND, scl, sda, rs, cs

0

20

Откомпилируйте версией 1.11.9.0. Не будет ругаться на Reset. Библиотека знает Reset а RS не знает. ( во всяком случае это не одно и тоже). По поводу вашего дисплея не подскажу. Попробуйте сделать как я сказал. Возможно заработает.
Вариант 2:
откройте библиотеку текстовым редактором и замените запись glcd_Reset на glcd_Rs, сохраните под новым именем (на всякий случай) например LCD-Epson_noReset.lbx И компилируйте в вашей версии софта. Не проверял, но должно работать.
Удачи!

Отредактировано Karavan (2010-12-16 12:06:46)

0

21

Karavan
спасибо!

0

22

см выше 2 вар.

0

23

ok, попробую и так  и так

;*  sbi _glcd_portm,_glcd_ReSet -конфликтует с BASCOM-AVR старше 1.11.9.1
*  sbi _glcd_portm,_glcd_RS ;пришлось обойти таким образом

на сколько понял, в библиотеке уже это сделано

что-то все равно молчит(
может, недоподключил чего?
http://radikal.ru/F/s004.radikal.ru/i20 … 3.jpg.html

Отредактировано demonizer (2010-12-16 12:23:06)

0

24

у меня так

увеличить

0

25

С этой библиотекой запустил дисплей nokia 1600
Еще раз спасибо!

0

26

у кого нибудь есть что для работы с дисплеем LPH8836 от сименса s65?

0

27

http://www.mcselec.com/index.php?option … amp;id=227

http://bascom.at.ua/publ/1-1-0-6

0

28

Karavan написал(а):

выкладываю библиотеку для работы с дисплеем от Нокии 3510iкопируем код, сохраняем в текстовом файле и обзываем его, напримеер: LCD-Nokia3510i_EPSON.LBX

Кидаю файл в папку LIB, в Lib Mahager библиотеки не видать, хочу добавить через тот же Lib Manager, пишет

Duplicate routine found.:[END]

0

29

Вы что-то путаете. Менеджер видит только файлы с расширением .lib и превращает их в .LBX. В данном случае вам это не нужно. Надо просто указать название файла библиотеки в исходнике.
Например:
$lib "LCD-Nokia3510i_EPSON.LBX"
      Config Graphlcd = Color , Controlport = Portb , Reset = 6 , Cs = 4 , Scl = 7 , Sda = 5
'256 8-битный цвет vvvvv
Const Darkred = &B00000110
Const Red = &B00000011
Const Orange = &B00001111
Const Yellow = &B00011111
Const Brightgreen = &B00111100
Const Green = &B00011100
Const Darkgreen = &B00010100
Const Brightblue = &B110011001
Const Blue = &B11001000
Const Darkblue = &B11100000
Const Violett = &B11000111
Const Brown = &B00001110
Const Black = &B00000000
Const White = &B11111111
'256 8-áèòíûå öâåòà ^^^

0

30

Karavan написал(а):

Менеджер видит только файлы с расширением .lib

А, тогда понятно :) Спасибо.

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Дисплей Nokia 3510i и не только