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

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

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

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



3.2" TFT LCD

Сообщений 61 страница 90 из 165

61

И 2.05 и 2.07 одинаково.

0

62

Написал ещё пару функций:
Declare Function Read_data() As Word
Declare Function Read_registr(byval Cmd As Word) As Word

Код:
Function Read_data() As Word
Local B_data As Byte , W_data As Word
   Ddra = 0
   Ddrc = 0

   Wr = 1
   Rs = 1
   !NOP
   Rd = 0
   Waitus 5
   W_data = Pina
   B_data = Pinc
   Rd = 1

   Ddra = $ff
   Ddrc = $ff
   Shift W_data , Left , 8
   W_data = W_data + B_data
   Read_data = W_data
End Function

Function Read_registr(byval Cmd As Word) As Word
Local Tmp As Word
   Cs = 0
   Call Write_command(cmd)
   Tmp =  Read_data()
   Read_registr = Tmp
   Cs = 1
End Function

Функцией Read_registr(0) считываю код драйвера дисплея, получается 0x8989.
Как и в даташите.

Отредактировано alex_r61 (2013-02-18 04:02:56)

0

63

Кажется и второй китаец начал отвечать.
Вместо ILI9325 оказался ILI9320 и 8-бит по умолчанию.

0

64

Как там пишут "Остапа понесло...", меня тоже прорвало.
Начал с изучения TFT дисплейчика, а теперь дело двинулось в
сторону микро ПК. К сожалению проэкт пока будет развиваться
на 'вражеском' C. И в качестве вспомогательного МК будет
использован не AVR. Так что пока всё.

0

65

А есть ли стандартные библиотеки работы с TFT? Как, например, с графическими ЖКИ.

0

66

Нет. Но есть пример работы с ILI9325 2.4", SSD1289 3.2", SSD1963 5", SSD1963 7".

Отредактировано max (2013-09-06 17:22:08)

0

67

Спасибо, буду изучать

0

68

max, а есть еще наработки по ILI9325 2.4"? Или хотя-бы откомментированный код из Уголка Бена ?

0

69

Есть только такой проект.

0

70

Ну, и то пинок в правильную сторону ))) Спасибо )

0

71

Не за что.

0

72

alex_r61
подскажи плиз как программно подключить lcd 3310 и sd card (на примере любого контроллера)

0

73

Насчёт 3310 весь интернет этим забит. Например:
http://bascom.at.ua/publ/dvukhkanalnyj_ … 0/1-1-0-63
http://radiokot.ru/articles/29/
И здесь есть отдельная тема "Дисплей Nokia 3510i и не только".
Я этой мелочью не занимаюсь.
Тема с SD тоже довольно избитая, например
http://avrproject.ru/publ/kak_podkljuch … /2-1-0-154

0

74

http://jewelfox.ru/lot.php?id=2095
http://jewelfox.ru/lot.php?id=2096
Достались такие модули. Можно ли их прикрутить к Atmega325?

Отредактировано Каримов (2014-03-22 05:30:19)

0

75

Уважаемый  Mrshilov, подскажите как победить баг - использую вашу библиотеку для дисплея с SSD1963 с разрешением 480x272. Все функции работают, за исключением вывода bgc картинки, точнее она выводится и корректно отображается, но после вывода сразу же на пол экрана идет шум. Причем, если после вывода я ставлю большую задержку то шума нет пока идет  задержка. Если после вывода очистить экран (Lcd_clear Black) то экран очищается, но шум остается. Ниже мой код инициализации, поменял 4 строчки для изменения разрешения на 480x272, подозреваю, что надо еще что-то поменять для такого разрешения. Камень Atxmega128A1. Только что заметил особенность: шум пропадает только после вызова шрифта.

Код:
Sub Display_init
  Cs_disp = 0
  Res_disp = 0 : Waitms 50 : Res_disp = 1                   'Hardware Reset

  Ssd1963_select_reg &HE2                                   'PLL multiplier, set PLL clock to 120M
  Ssd1963_write_data &H0023                                 'N=0x36 for 6.5M, 0x23 for 10M crystal
  Ssd1963_write_data &H0002
  Ssd1963_write_data &H0004

  Ssd1963_select_reg &HE0                                   'PLL enable
  Ssd1963_write_data &H0001
  Waitms 1
  Ssd1963_select_reg &HE0
  Ssd1963_write_data &H0003
  Waitms 5
  Ssd1963_select_reg &H01                                   'software reset
  Waitms 5
  Ssd1963_select_reg &HE6                                   'PLL setting for PCLK, depends on resolution
  Ssd1963_write_data &H0003
  Ssd1963_write_data &H00FF
  Ssd1963_write_data &H00FF

  Ssd1963_select_reg &HB0                                   'LCD SPECIFICATION
  Ssd1963_write_data &H0027
  Ssd1963_write_data &H0000
  Ssd1963_write_data &H0001                                 'horizotal size 479 high Byte
  Ssd1963_write_data &H00DF                                 'horizotal size 479 low Byte
  Ssd1963_write_data &H0001                                 'vertikal size 271 high Byte
  Ssd1963_write_data &H000F                                 'vertikal size 271 low Byte
  Ssd1963_write_data &H0000                                 'RGB

  Ssd1963_select_reg &HB4                                   'HSYNC
  Ssd1963_write_data &H03                                   'Set HT
  Ssd1963_write_data &H00A0
  Ssd1963_write_data &H00                                   'Set HPS
  Ssd1963_write_data &H002E
  Ssd1963_write_data &H00                                   'Set HPW
  Ssd1963_write_data &H0030
  Ssd1963_write_data &H00                                   'Set LPS
  Ssd1963_write_data &H000F
  Ssd1963_write_data &H0000

  Ssd1963_select_reg &HB6                                   'VSYNC
  Ssd1963_write_data &H02                                   'Set VT
  Ssd1963_write_data &H000D
  Ssd1963_write_data &H00                                   'Set VPS
  Ssd1963_write_data &H0010
  Ssd1963_write_data &H00                                   'Set VPW
  Ssd1963_write_data &H0010
  Ssd1963_write_data &H00                                   'Set FPS
  Ssd1963_write_data &H0008

  Ssd1963_select_reg &HBA
  Ssd1963_write_data &H000F                                 'GPIO[3:0] out 1

  Ssd1963_select_reg &HB8
  Ssd1963_write_data &H0007                                 'GPIO3=input, GPIO[2:0]=output
  Ssd1963_write_data &H0001                                 'GPIO0 normal

  Ssd1963_select_reg &H36                                   'rotation - Set the read order from frame buffer to the display panel

   'writing from bottom to top
   'Ssd1963_write_data(&H0000)
   'writing from top to bottom
   'Ssd1963_write_data(&H0001)
   'writing from right to left
   'Ssd1963_write_data(&H0077)
  Ssd1963_write_data &H0006

  Ssd1963_select_reg &HF0                                   'pixel data interface
  Ssd1963_write_data &H0003                                 '16-bit (565 format)

   Waitms 5

  Ssd1963_select_reg &H29                                   'display on
  Ssd1963_select_reg &HD0
  Ssd1963_write_data &H000D

End Sub

0

76

Mrshilov, с новой библиотекой дисплей не инициализируется(

0

77

Ребята может кому попадался такой дисплей?
Подскажите какой может быть контроллер!
Продавец утверждает что ILI9325, но не стартует он с инициализацией для ILI9325
С инициализацией для S6D1121 тоже тишина
Дисплей судя по перемычке в 8-ми битном режиме, это несколько сокращает число возможных контроллеров,
но всё равно их до и больше.
http://sf.uploads.ru/t/5xwjD.jpg

Дисплей очень похож на
http://bascom.at.ua/publ/podkljuchaem_displei_c_kontrollerom_ili9325/1-1-0-108
такой да не такой! :)

Отредактировано Геныч (2014-07-19 01:53:17)

0

78

Надо попробовать прочитать 0 регистр. Мне тоже продавец прислал ILI9320 вместо 9325.

0

79

Попробывал прочитать регистр вот этим кодом
выдает либо 0 либо какой-то мусор случайные числа от 0 до 65536
Может нужно прописать какие то регистры перед тем как читать 0 регистр?
Пробывал инициализацию для ili9320
После инициализации мерцающий темный экран.
Куда дальше копать или забить?

Код:
Dim Hi As Word
Dim Lo As Byte
Dim Data_disp As Byte

'Display_init                                                ' Initialize Display
Ddra = $ff


Do

Cs_disp = 0
   Rs_disp = 0 : Data_disp = 0 : Wr_disp = 0 : Wr_disp = 1
                 Data_disp = 0 : Wr_disp = 0 : Wr_disp = 1
   Rs_disp = 1

   Ddra = 0

Read_disp = 0
Waitms 5
Hi = Pina
Read_disp = 1


Read_disp = 0
Waitms 5
Lo = Pina
Read_disp = 1
Ddra = $ff

Cs_disp = 1

Shift Hi , Left , 8
Hi = Hi + Lo

Print Hi
Wait 3

Loop

0

80

если купили, то:

требуйте у продавца библиотеки или сразу готовую прошивку под ваш МК
иначе считайте, что товар не рабочий

0

81

Это для 8-и битной шины, для 16 надо немного подправить.
У меня все дисплеи читает из имеющихся в наличии.

Код:
Function Read_data() As Word
Local B_data As Byte , W_data As Word
   Hdata_dir = 0
   Ldata_dir = 0

   Wr = 1
   Rs = 1
   !NOP
   Rd = 0
   Waitus 5
   W_data = Pina
   Rd = 1
   !NOP
   Rd = 0
   Waitus 5
   B_data = Pina
   Rd = 1

   Hdata_dir = $ff
   Ldata_dir = $ff
   Shift W_data , Left , 8
   W_data = W_data + B_data
   Read_data = W_data
End Function

Function Read_registr(byval Cmd As Byte) As Word
Local Tmp As Word
   Cs = 0
   Call Write_command(cmd)
   Tmp = Read_data()
   Read_registr = Tmp
   Cs = 1
End Function

Пин RD дожен быть подключён к МК.
В коде Tmp = Read_registr(0).

0

82

Добил заразу, тач заработал.
Теперь новый гемор - калибровка, а где-то на подходе
ещё один с другим контролером.

0

83

Mrshilov
подскажите, как в вашей библиотеке для SSD1289 повернуть изображение на 180 градусов?.. в портретном режиме картинка вверх ногами, иконки сенсора сверху изображения (

Отредактировано phantom36 (2014-10-13 23:49:56)

0

84

Следующая часть "Мерлезонского балета". Добрался до индикаторов с SPI.
Пациент дисплей с ILI9341 на 2.4 дюйма. Попробовал на программном и аппаратном
интерфейсе. Т.к. у меня Дуина 8MHz, то на аппаратном получилось чуть быстрее.
Инициализация SPI:

Код:
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 0
Spiinit

Инициализация и самые простые функции:

Код:
Sub Write_command(byval Cmd As Byte)
Local Data_disp As Byte
   Dc = 0
   Data_disp = Cmd
   Spiout Data_disp , 1
End Sub

Sub Write_data(byval Ldata As Byte)
Local Data_disp As Byte
   Dc = 1
   Data_disp = Ldata
   Spiout Data_disp , 1
End Sub

Sub Write_data2(byval Ldata As Word)
Local Data_disp As Byte
   Dc = 1
   Data_disp = High(ldata)
   Spiout Data_disp , 1
   Data_disp = Low(ldata)
   Spiout Data_disp , 1
End Sub

Sub Write_command_data(byval Cmd As Byte , Byval Ldata As Byte)
   Call Write_command(cmd)
   Call Write_data(ldata)
End Sub

Sub Lcd_init(byval Orientation As Byte)
Local Tmp As Word
   Orient = Orientation
   Config Dc = Output
   Config Clk = Output
   Config Cs = Output
   Config Res = Output
   Config D_out = Output

   Res = 1
   Waitms 15
   Res = 0
   Waitms 15

   Cs = 1
   Res = 1
   Waitms 20

   Cs = 0

   Write_command $cb
    Write_data $39
    Write_data $2c
    Write_data $00
    Write_data $34
    Write_data $02

    Write_command $cf
    Write_data $00
    Write_data $c1
    Write_data $30

    Write_command $e8
    Write_data $85
    Write_data $00
    Write_data $78

    Write_command $ea
    Write_data $00
    Write_data $00

    Write_command $ed
    Write_data $64
    Write_data $03
    Write_data $12
    Write_data $81

    Write_command $f7
    Write_data $20

    Write_command $c0                                       ' Power Control
    Write_data $23                                          ' Vrh[5 : 0]

    Write_command $c1                                       ' Power Control
    Write_data $10                                          ' Sap[2 : 0] ; Bt[3 : 0]

    Write_command $c5                                       ' Vcm Control
    Write_data $3e                                          ' Contrast
    Write_data $28

    Write_command $c7                                       ' Vcm Control2
    Write_data $86                                          ' - -

    Write_command $36                                       ' Memory Access Control
    Write_data $48

    Write_command $3a
    Write_data $55

    Write_command $b1
    Write_data $00
    Write_data $18

    Write_command $b6                                       ' Display Function Control
    Write_data $08
    Write_data $82
    Write_data $27

    Write_command $11                                       'Exit Sleep
    Waitms 120

    Write_command $29                                       'Display on
    Write_command $2c

   Cs = 1
End Sub

Sub Set_xy()
Local I As Word , J As Word , Temp As Word , B As Byte

   If Orient = Landscape Then
     Temp = X1
     Swap X1 , Y1
     Y1 = Disp_y_size - Temp
     Temp = X2
     X2 = Y2
     Y2 = Disp_y_size - Temp
     Swap Y1 , Y2
   End If

   Write_command $2a
   B = High(x1)
   Write_data B
   B = X1
   Write_data B
   B = High(x2)
   Write_data B
   B = X2
   Write_data B
   Write_command $2b
   B = High(y1)
   Write_data B
   B = Y1
   Write_data B
   B = High(y2)
   Write_data B
   B = Y2
   Write_data B
   Write_command $2c
End Sub

Sub Clrxy()
   Cs = 0
   If Orient = Portrait Then
     X1 = 0 : Y1 = 0 : X2 = 239 : Y2 = Disp_y_size
     Call Set_xy
   Else
     X1 = 0 : Y2 = 0 : X2 = Disp_y_size : Y2 = 239
     Call Set_xy
   End If
   Cs = 1
End Sub

Sub Fill_scr(byval Color As Word)
Local I As Word , J As Word
Local H As Byte , L As Byte

   Clrxy

   L = Low(color)
   H = High(color)

   Cs = 0
   For I = 0 To Disp_y_size
     For J = 0 To 239
       Write_data H
       Write_data L
     Next J
   Next I
   Cs = 1
End Sub

Sub Drawpixel(byval X As Word , Byval Y As Word , Byval Color As Word)
   X1 = X : Y1 = Y : X2 = X : Y2 = Y
   Call Set_xy
   Call Write_data2(color)

   Call Clrxy
End Sub

Sub Draw_hline(byval X As Word , Byval Y As Word , Byval L As Word , Byval Color As Word)
Local Ch As Byte , Cl As Byte , Tmp As Byte , Count As Word

   Cs = 0
   X1 = X : Y1 = Y : X2 = X + L : Y2 = Y
   Call Set_xy

   Incr L
   For Count = 0 To L
     Call Write_data2(color)
   Next Count
   Cs = 1

End Sub

0

85

Добрый день.
На форуме BASCOM'a спрашивал, спрошу еще тут.
Есть такой TFT модуль
При использовании библиотеки by Mrshilov индикатор работает и даже впоказывает, правда коряво.
Видео здесь
Фотоhttp://sf.uploads.ru/t/JAMnw.jpg
http://sf.uploads.ru/t/yJT8W.jpg
http://sf.uploads.ru/t/D5SIY.jpg

Ребята тамошние пытались помочь, но пока у меня ничего не улучшилось.
Mrshilov так же предложил идею, но не помогло.
Test использую by Mrshilov такой

'*******************************************************************************
'
'                            SSD1289 LCD Test
'
'                            resolution 240x320
'
'*******************************************************************************
$regfile "xm256a3def.dat"
$crystal = 32000000
$hwstack = 300
$swstack = 300
$framesize = 300
$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014
Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
'$regfile = "usb1286.dat"
'$crystal = 8000000
'$hwstack = 512
'$swstack = 512
'$framesize = 512

'--------------------------- Pin Configuration ---------------------------------
Config Portb = Output : Data_disp_low Alias Portb           'DB0 - DB7
Config Portc = Output : Data_disp_high Alias Portc          'DB8 - DB15
Rs_disp Alias Porta.7 : Config Rs_disp = Output             'Command/Data pin
Wr_disp Alias Porta.6 : Config Wr_disp = Output             'Write pin
Rd_disp Alias Porta.3 : Config Rd_disp = Output : Rd_disp = 1       'Read pin
Res_disp Alias Porta.5 : Config Res_disp = Output : Res_disp = 1       'Reset pin
Cs_disp Alias Porta.4 : Config Cs_disp = Output : Cs_disp = 0       'Chip Select

'-------------------------------- Library --------------------------------------
Const Portrait = 0                                          '0=Landscape, 1=Portrait

Config Submode = New : $include "SSD1289 16bit library.inc" 'Include library

'---------------------------- Fonts and Pictures -------------------------------
' You need to include Fonts and Pictures below the "End"
'-------------------------------------------------------------------------------
'
' For load Pictures from SPI-ROM you must configure SPI:

'Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
'Spsr.0 = 1 : Spcr.0 = 0 : Spcr.1 = 0                        'F_spi = F_osc / 2
'Config Spic = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk64 , Data_order = Msb
'Open "SPI" For Binary As #10

'Ss_spi_rom Alias Portf.0 : Config Ss_spi_rom = Output : Ss_spi_rom = 1       'Chip Select pin
'Spiinit

'================================ Test Program =================================

Dim Count As Word , Text As String * 16 , N As Word , M As Word , B As Word

Display_init                                                ' Initialize Display

Do

   Lcd_clear White

   Restore Font12x16
   Lcd_text "Controller SSD1289" , 45 , 25 , Darkred , White       '****** Text
   Restore Font25x32
   Lcd_text "240x320 LCD" , 23 , 50 , Darkgreen , White
   Restore Font36x56 : Digit_font = 1
   For Count = 20 To 24
      Text = Str(count)
      Lcd_text Text , 120 , 110 , Blue , White
      Wait 1
   Next Count
   Digit_font = 0

   Restore Font25x32
   Lcd_text "Negative  " , 60 , 180 , Black , White         '****** Negative
   Lcd_negative 1
   Restore Font36x56 : Digit_font = 1
   For Count = 25 To 27
      Text = Str(count)
      Lcd_text Text , 120 , 110 , Blue , White
      Wait 1
   Next Count
   Digit_font = 0

   Restore Font25x32
   Lcd_text " Normal   " , 60 , 180 , Black , White
   Lcd_negative 0
   Restore Font36x56 : Digit_font = 1
   For Count = 28 To 30
      Text = Str(count)
      Lcd_text Text , 120 , 110 , Blue , White
      Wait 1
   Next Count
   Digit_font = 0

   Lcd_clear White
   Restore Color8x8                                         '****** Color Font Text
   Lcd_text_color "Color Font text 'Color8x8'" , 55 , 65 , Black , White
   Restore Color16x16
   Lcd_text_color "Font 'Color16x16' " , 25 , 100 , Darkgreen , White
   Wait 2

   Lcd_clear White
   Restore Font25x32
   Lcd_text "Clear Screen" , 11 , 80 , Black , White        '****** Clear Screen
   Lcd_text "    B&W" , 11 , 120 , Black , White
   Wait 2
   Lcd_clear Black : Waitms 500
   Lcd_clear White : Waitms 500
   Lcd_clear Black : Waitms 500
   Lcd_clear White
   Lcd_text "Clear Screen" , 11 , 80 , Brown , White
   Lcd_text "with color" , 35 , 120 , Blue , White
   Wait 2
   Lcd_clear Red : Waitms 500
   Lcd_clear Green : Waitms 500
   Lcd_clear Blue : Waitms 500

   Lcd_clear Black
   Lcd_text "Pixels" , 70 , 10 , White , Black              '****** Set Pixel
   Waitms 500
   For Count = 10 To 310 Step 32
      For N = 50 To 230 Step 32
         Lcd_set_pixel Count , N , White
      Next N
   Next Count
   Waitms 500
   For Count = 26 To 310 Step 16
      For N = 66 To 230 Step 16
         Lcd_set_pixel Count , N , White
      Next N
   Next Count
   Waitms 500
   For Count = 18 To 310 Step 8
      For N = 58 To 230 Step 8
         Lcd_set_pixel Count , N , White
      Next N
   Next Count
   Waitms 500
   For Count = 14 To 310 Step 4
      For N = 54 To 230 Step 4
         Lcd_set_pixel Count , N , White
      Next N
   Next Count
   Wait 2

   Lcd_clear White                                          '****** Line
   Lcd_text "Line" , 110 , 10 , Blue , White
   Lcd_fill_box 20 , 50 , 22 , 220 , Black
   Lcd_fill_box 20 , 220 , 300 , 222 , Black
   Lcd_line 10 , 70 , 20 , 50 , Black
   Lcd_line 30 , 70 , 20 , 50 , Black
   Lcd_line 11 , 70 , 21 , 50 , Black
   Lcd_line 31 , 70 , 21 , 50 , Black
   Lcd_line 280 , 210 , 300 , 220 , Black
   Lcd_line 280 , 211 , 300 , 221 , Black
   Lcd_line 280 , 230 , 300 , 220 , Black
   Lcd_line 280 , 231 , 300 , 221 , Black
   For Count = 195 To 52 Step - 25
      Lcd_fill_box 22 , Count , 300 , Count , Green
   Next
   For Count = 45 To 275 Step 25
      Lcd_fill_box Count , 50 , Count , 220 , Green
   Next
   Restore Font12x16
   Lcd_text "0" , 2 , 222 , Black , White
   Lcd_text "Y" , 2 , 30 , Black , White
   Lcd_text "X" , 302 , 222 , Black , White
   M = 220
   For Count = 22 To 300 Step 5
      B = Count + 5
      N = Rnd(110) + 60
      Lcd_line Count , M , B , N , Red
      M = N
   Next Count
   Wait 2
   Restore Font25x32

   Lcd_clear White
   Lcd_text "Circle" , 80 , 10 , Black , White              '******* Circle
   Lcd_circle 100 , 100 , 40 , Blue
   Lcd_circle 100 , 100 , 39 , Blue
   Lcd_circle 160 , 100 , 40 , Black
   Lcd_circle 160 , 100 , 39 , Black
   Lcd_circle 220 , 100 , 40 , Red
   Lcd_circle 220 , 100 , 39 , Red
   Lcd_circle 130 , 160 , 40 , Darkyellow
   Lcd_circle 130 , 160 , 39 , Darkyellow
   Lcd_circle 190 , 160 , 40 , Green1
   Lcd_circle 190 , 160 , 39 , Green1
   Wait 2

   Lcd_clear Cyan
   Lcd_text "Fill Circle" , 20 , 10 , Brown , Cyan          '******* Fill Circle
   Lcd_fill_circle 100 , 100 , 40 , Blue
   Lcd_fill_circle 220 , 100 , 40 , Red
   Lcd_fill_circle 160 , 160 , 40 , Darkgreen
   Wait 2

   Lcd_clear Blue
   Lcd_text "Filled Box" , 40 , 100 , Yellow , Blue         '****** Filled Box
   Lcd_fill_box 10 , 10 , 80 , 80 , White
   Lcd_fill_box 240 , 10 , 310 , 80 , Red
   Lcd_fill_box 10 , 160 , 80 , 230 , Yellow
   Lcd_fill_box 240 , 160 , 310 , 230 , Cyan
   Wait 2

   Lcd_clear Gold
   Lcd_text "Box" , 125 , 10 , Darkblue , Gold              '****** Box
   Lcd_box 60 , 70 , 140 , 140 , Darkblue
   Lcd_box 120 , 100 , 200 , 180 , Black
   Lcd_box 180 , 70 , 260 , 140 , Violet
   Lcd_box 60 , 160 , 100 , 200 , Brown
   Lcd_box 65 , 165 , 95 , 195 , Red
   Lcd_box 220 , 160 , 260 , 200 , Brown
   Lcd_box 225 , 165 , 255 , 195 , Red
   Lcd_box 50 , 60 , 270 , 210 , Blue
   Wait 2

   Restore Font25x32
   Lcd_clear White
   Restore Font12x16
   Lcd_text "  256 colors Picture" , 40 , 20 , Darkblue , White       '****** BGC Picture
   Restore Animals
   Lcd_pic_bgc 90 , 60
   Wait 2

   Lcd_clear White
   Restore Font12x16
   Lcd_text "65536 colors Picture" , 40 , 20 , Darkblue , White       '****** 16-bit Picture
   Restore Coffee
   Lcd_pic_sram 80 , 65 , 160 , 120
   Wait 1

   Lcd_clear White
   Restore Font12x16
   Lcd_text "65536 colors Picture" , 40 , 20 , Darkblue , White
   Lcd_text "from external SPI-ROM" , 32 , 44 , Darkblue , White
   Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 0
   'Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 153600
   'Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 307200
   'Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 460800
   'Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 614400
   'Wait 1
   'Lcd_pic_spi 0 , 0 , 320 , 240 , 768000
   'Wait 1

Loop

End                                                         'end program
'-------------------------------------------------------------------------------

$include "color8x8.font"
$include "color16x16.font"
$include "Font12x16.font"
$include "Font25x32.font"
$include "Font36x56.font"
$inc Coffee , Nosize , "Coffee.bin"
Animals:
$bgf "Animals.bgc"

0

86

написал(а):

Ребята тамошние пытались помочь, но пока у меня ничего не улучшилось.


Не надо надеятся на авось, проведите полную инициализацию контроллера LCD!

Если у Вас действительно SSD1298, как узнать: прочитайте R00, должно быть "8999"

Полная инициализация SSD1298

'===============================================================================
  Init_lcd_ssd1298:
'-------------------------------------------------------------------------------
    Reset_lcd_1298 = 0 : Waitms 100 : Reset_lcd_1298 = 1
' Полный вариант инициализации
    Ssd1298_write_reg 0x0028 , 0x0006
    Ssd1298_write_reg 0x0000 , 0x0001
    Ssd1298_write_reg 0x0003 , 0xaea4
    Ssd1298_write_reg 0x000c , 0x0004
    Ssd1298_write_reg 0x000d , 0x000c
    Ssd1298_write_reg 0x000e , 0x2800
    Ssd1298_write_reg 0x001e , 0x00b5
    Ssd1298_write_reg 0x0001 , 0x3b3f
    Ssd1298_write_reg 0x0002 , 0x0600
    Ssd1298_write_reg 0x0010 , 0x0000
    Ssd1298_write_reg 0x0011 , 0x6830
    Ssd1298_write_reg 0x0005 , 0x0000
    Ssd1298_write_reg 0x0006 , 0x0000
    Ssd1298_write_reg 0x0016 , 0xef1c
    Ssd1298_write_reg 0x0007 , 0x0033
    Ssd1298_write_reg 0x000b , 0x0000
    Ssd1298_write_reg 0x000f , 0x0000
    Ssd1298_write_reg 0x0041 , 0x0000
    Ssd1298_write_reg 0x0042 , 0x0000
    Ssd1298_write_reg 0x0048 , 0x0000
    Ssd1298_write_reg 0x0049 , 0x013f
    Ssd1298_write_reg 0x004a , 0x0000
    Ssd1298_write_reg 0x004b , 0x0000
    Ssd1298_write_reg 0x0044 , 0xef00
    Ssd1298_write_reg 0x0045 , 0x0000
    Ssd1298_write_reg 0x0046 , 0x013f
    Ssd1298_write_reg 0x004e , 0x0000
    Ssd1298_write_reg 0x004f , 0x0000
    Ssd1298_write_reg 0x0030 , 0x0707
    Ssd1298_write_reg 0x0031 , 0x0202
    Ssd1298_write_reg 0x0032 , 0x0204
    Ssd1298_write_reg 0x0033 , 0x0502
    Ssd1298_write_reg 0x0034 , 0x0507
    Ssd1298_write_reg 0x0035 , 0x0204
    Ssd1298_write_reg 0x0036 , 0x0204
    Ssd1298_write_reg 0x0037 , 0x0502
    Ssd1298_write_reg 0x003a , 0x0302
    Ssd1298_write_reg 0x003b , 0x0302
    Ssd1298_write_reg 0x0023 , 0x0000
    Ssd1298_write_reg 0x0024 , 0x0000
    Ssd1298_write_reg 0x0025 , 0x8000
    Ssd1298_write_reg 0x0026 , 0x7000
    Ssd1298_write_reg 0x0020 , 0xb0eb
    Ssd1298_write_reg 0x0027 , 0x007c
'-------------------------------------------------------------------------------
  Return
'===============================================================================

Отредактировано sasha_1973 (2014-12-18 05:39:48)

0

87

Если у Вас действительно SSD1289, как узнать: прочитайте R00, должно быть "8989"

Полная инициализация LCD с контроллером SSD1289

Полная инициализация SSD1289

'===============================================================================
  Init_lcd_ssd1289:
'-------------------------------------------------------------------------------

    Reset_lcd_1289 = 0 : Waitms 100 : Reset_lcd_1289 = 1       'Hardware Reset

' Полный вариант
    Ssd1289_запись_data_регистры &H00 , &H0001
    Ssd1289_запись_data_регистры &H03 , &HA8A4
    Ssd1289_запись_data_регистры &H0C , &H0000
    Ssd1289_запись_data_регистры &H0D , &H080C
    Ssd1289_запись_data_регистры &H0E , &H2B00
    Ssd1289_запись_data_регистры &H1E , &H00B7
    Ssd1289_запись_data_регистры &H01 , &H2B3F
    Ssd1289_запись_data_регистры &H02 , &H0600
    Ssd1289_запись_data_регистры &H10 , &H0000
    Ssd1289_запись_data_регистры &H11 , &H6070
    Ssd1289_запись_data_регистры &H05 , &H0000
    Ssd1289_запись_data_регистры &H06 , &H0000
    Ssd1289_запись_data_регистры &H16 , &HEF1C
    Ssd1289_запись_data_регистры &H17 , &H0003
    Ssd1289_запись_data_регистры &H07 , &H0233
    Ssd1289_запись_data_регистры &H0B , &H0000
    Ssd1289_запись_data_регистры &H0F , &H0000
    Ssd1289_запись_data_регистры &H41 , &H0000
    Ssd1289_запись_data_регистры &H42 , &H0000
    Ssd1289_запись_data_регистры &H48 , &H0000
    Ssd1289_запись_data_регистры &H49 , &H013F
    Ssd1289_запись_data_регистры &H4A , &H0000
    Ssd1289_запись_data_регистры &H4B , &H0000
    Ssd1289_запись_data_регистры &H44 , &HEF00
    Ssd1289_запись_data_регистры &H45 , &H0000
    Ssd1289_запись_data_регистры &H46 , &H013F
    Ssd1289_запись_data_регистры &H30 , &H0707
    Ssd1289_запись_data_регистры &H31 , &H0204
    Ssd1289_запись_data_регистры &H32 , &H0204
    Ssd1289_запись_data_регистры &H33 , &H0502
    Ssd1289_запись_data_регистры &H34 , &H0507
    Ssd1289_запись_data_регистры &H35 , &H0204
    Ssd1289_запись_data_регистры &H36 , &H0204
    Ssd1289_запись_data_регистры &H37 , &H0502
    Ssd1289_запись_data_регистры &H3A , &H0302
    Ssd1289_запись_data_регистры &H3B , &H0302
    Ssd1289_запись_data_регистры &H23 , &H0000
    Ssd1289_запись_data_регистры &H24 , &H0000
    Ssd1289_запись_data_регистры &H25 , &H8000
    Ssd1289_запись_data_регистры &H4F , &H0000
    Ssd1289_запись_data_регистры &H4E , &H0000
    Ssd1289_запись_data_регистры &H22 , 0

'-------------------------------------------------------------------------------
  Return
'===============================================================================

'===============================================================================
' Ssd1289_запись_data_регистры       Запись 16-ти битных данных в регистры LCD SSD1289
'===============================================================================
  Sub Ssd1289_запись_data_регистры(byval Регистр_копия As Byte , Byval Данные_копия As Word)
'-------------------------------------------------------------------------------
    Data_disp_high = 0
    Data_disp_low = Регистр_копия
    Rs_disp = 0 : Wr_disp = 0 : Wr_disp = 1

    Data_disp_high = High(данные_копия)
    Data_disp_low = Low(данные_копия)
    Rs_disp = 1 : Wr_disp = 0 : Wr_disp = 1
'-------------------------------------------------------------------------------
  End Sub
'===============================================================================

Отредактировано sasha_1973 (2014-12-18 06:44:49)

0

88

Mrshilov, спасибо. С вашим фиксом заработало.
sasha_1973, пробовал полную инициализацию - работает так же как и с традиционной инициализацией.
Остался в изображении один артефакт, виден только на черном фоне. Некие вертикальные полоски. Можно ли от них как-то избавиться?
http://sf.uploads.ru/t/8NDzu.jpg

Отредактировано Pryanick (2014-12-18 19:39:46)

0

89

Pryanick!
А посмотрите какое питание у вас подается на дисплей?
У меня такое было, вместо 5 В подавал 3,3 (а может быть, наоборот...).

0

90

forter, с питанием все гууд - 3.3в везде.
В инструкции к TFT модулю сказано, что 5в нельзя. Только 3.3в.
И на подсветку, и в плату контроллера.

0