И 2.05 и 2.07 одинаково.
3.2" TFT LCD
Сообщений 61 страница 90 из 165
Поделиться622013-02-18 03:54:13
Написал ещё пару функций:
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)
Поделиться632013-02-18 18:57:56
Кажется и второй китаец начал отвечать.
Вместо ILI9325 оказался ILI9320 и 8-бит по умолчанию.
Поделиться642013-03-11 20:43:37
Как там пишут "Остапа понесло...", меня тоже прорвало.
Начал с изучения TFT дисплейчика, а теперь дело двинулось в
сторону микро ПК. К сожалению проэкт пока будет развиваться
на 'вражеском' C. И в качестве вспомогательного МК будет
использован не AVR. Так что пока всё.
Поделиться652013-09-06 17:00:28
А есть ли стандартные библиотеки работы с TFT? Как, например, с графическими ЖКИ.
Поделиться662013-09-06 17:11:52
Нет. Но есть пример работы с ILI9325 2.4", SSD1289 3.2", SSD1963 5", SSD1963 7".
Отредактировано max (2013-09-06 17:22:08)
Поделиться672013-09-08 18:36:21
Спасибо, буду изучать
Поделиться682013-12-18 01:32:04
max, а есть еще наработки по ILI9325 2.4"? Или хотя-бы откомментированный код из Уголка Бена ?
Поделиться692013-12-18 18:29:04
Есть только такой проект.
Поделиться702013-12-19 00:29:37
Ну, и то пинок в правильную сторону ))) Спасибо )
Поделиться712013-12-19 09:13:17
Не за что.
Поделиться722014-01-11 04:06:22
alex_r61
подскажи плиз как программно подключить lcd 3310 и sd card (на примере любого контроллера)
Поделиться732014-01-11 16:46:40
Насчёт 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
Поделиться742014-03-22 05:23:26
http://jewelfox.ru/lot.php?id=2095
http://jewelfox.ru/lot.php?id=2096
Достались такие модули. Можно ли их прикрутить к Atmega325?
Отредактировано Каримов (2014-03-22 05:30:19)
Поделиться752014-05-23 17:22:13
Уважаемый Mrshilov, подскажите как победить баг - использую вашу библиотеку для дисплея с SSD1963 с разрешением 480x272. Все функции работают, за исключением вывода bgc картинки, точнее она выводится и корректно отображается, но после вывода сразу же на пол экрана идет шум. Причем, если после вывода я ставлю большую задержку то шума нет пока идет задержка. Если после вывода очистить экран (Lcd_clear Black) то экран очищается, но шум остается. Ниже мой код инициализации, поменял 4 строчки для изменения разрешения на 480x272, подозреваю, что надо еще что-то поменять для такого разрешения. Камень Atxbanned28A1. Только что заметил особенность: шум пропадает только после вызова шрифта.
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
Поделиться762014-06-04 17:15:47
Mrshilov, с новой библиотекой дисплей не инициализируется(
Поделиться772014-07-19 01:49:54
Ребята может кому попадался такой дисплей?
Подскажите какой может быть контроллер!
Продавец утверждает что ILI9325, но не стартует он с инициализацией для ILI9325
С инициализацией для S6D1121 тоже тишина
Дисплей судя по перемычке в 8-ми битном режиме, это несколько сокращает число возможных контроллеров,
но всё равно их до и больше.
Дисплей очень похож на
http://bascom.at.ua/publ/podkljuchaem_displei_c_kontrollerom_ili9325/1-1-0-108
такой да не такой! 
Отредактировано Геныч (2014-07-19 01:53:17)
Поделиться782014-07-19 15:48:19
Надо попробовать прочитать 0 регистр. Мне тоже продавец прислал ILI9320 вместо 9325.
Поделиться792014-07-20 23:38:30
Попробывал прочитать регистр вот этим кодом
выдает либо 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Поделиться802014-07-21 10:49:11
если купили, то:
требуйте у продавца библиотеки или сразу готовую прошивку под ваш МК
иначе считайте, что товар не рабочий
Поделиться812014-07-26 11:29:33
Это для 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).
Поделиться822014-08-01 16:30:39
Добил заразу, тач заработал.
Теперь новый гемор - калибровка, а где-то на подходе
ещё один с другим контролером.
Поделиться832014-10-13 23:49:39
Mrshilov
подскажите, как в вашей библиотеке для SSD1289 повернуть изображение на 180 градусов?.. в портретном режиме картинка вверх ногами, иконки сенсора сверху изображения (
Отредактировано phantom36 (2014-10-13 23:49:56)
Поделиться842014-12-01 15:50:18
Следующая часть "Мерлезонского балета". Добрался до индикаторов с 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Поделиться852014-12-17 23:03:25
Добрый день.
На форуме BASCOM'a спрашивал, спрошу еще тут.
Есть такой TFT модуль
При использовании библиотеки by Mrshilov индикатор работает и даже впоказывает, правда коряво.
Видео здесь
Фото


Ребята тамошние пытались помочь, но пока у меня ничего не улучшилось.
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"
Поделиться862014-12-18 05:26:20
Ребята тамошние пытались помочь, но пока у меня ничего не улучшилось.
Не надо надеятся на авось, проведите полную инициализацию контроллера LCD!
Если у Вас действительно SSD1298, как узнать: прочитайте R00, должно быть "8999"
'===============================================================================
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)
Поделиться872014-12-18 06:23:41
Если у Вас действительно SSD1289, как узнать: прочитайте R00, должно быть "8989"
Полная инициализация LCD с контроллером 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 = 1Data_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)
Поделиться882014-12-18 19:38:50
Mrshilov, спасибо. С вашим фиксом заработало.
sasha_1973, пробовал полную инициализацию - работает так же как и с традиционной инициализацией.
Остался в изображении один артефакт, виден только на черном фоне. Некие вертикальные полоски. Можно ли от них как-то избавиться?
Отредактировано Pryanick (2014-12-18 19:39:46)
Поделиться892014-12-18 23:06:49
Pryanick!
А посмотрите какое питание у вас подается на дисплей?
У меня такое было, вместо 5 В подавал 3,3 (а может быть, наоборот...).
Поделиться902014-12-18 23:50:44
forter, с питанием все гууд - 3.3в везде.
В инструкции к TFT модулю сказано, что 5в нельзя. Только 3.3в.
И на подсветку, и в плату контроллера.
Похожие темы
| Дисплей DWIN | Дисплеи и индикация | 2025-01-13 |
| Изучаем ARMы | Не пора ли нам попробовать ARM? | 2025-11-02 |