PDA

Просмотр полной версии : Исправен ли дисплей ST7735



SoundMaster
04.04.2019, 21:23
Дисплей 1.8 дюйма, контроллер дисплея ST7735
После включения - светит белым экраном, после инициализации появляется цифровой разноцветный мусор, командой сброса 0x01 мусор убирается, но ничего вывести на дисплей не удается. Нормально ли вообще что дисплей начинает работу с того что светит белым? На всех примерах на фотках черный дисплей

SoundMaster
04.04.2019, 22:42
Причем команда на ограничение рабочего поля работает - оно ограничивается, правда только по той оси где пикселей больше, то есть 160, а по той оси где 128 не ограничивается. За рабочей областью тот же белый фон, а в рабочей области мусор

Genadi Zawidowski
05.04.2019, 00:56
Есть похожий по всем командам дисплей ILI9163 - у которого в команде установки окна адреса восьмибитные…
Может Вам такой подсунули?


#if LCDMODE_ILI9163
spi_progval8_p1(targ etlcd, ys); // ys7:ys0 YSTART
spi_progval8_p2(targ etlcd, ye); // ye7:ye0 YEND
#else
spi_progval8_p1(targ etlcd, ys >> 8); // ys15:ys8
spi_progval8_p2(targ etlcd, ys); // ys7:ys0 YSTART
spi_progval8_p2(targ etlcd, ye >> 8); //ye15:ye8
spi_progval8_p2(targ etlcd, ye); // ye7:ye0 YEND
#endif

fedorenko28
05.04.2019, 05:55
Имеется подобный 1.44 на таком же контроллере, не все библиотеки одинаково полезны. В описании к видео есть ссылки на библиотеки и тестовый скетч. С библиотекой из видео завелся. Если конечно дуина используется. https://www.youtube.com/watch?v=G6wgAJ4JAz0&list=LL6x45GlOieeEOw OWYkuO9Gw&index=12&t=0s

SoundMaster
05.04.2019, 11:21
Разобрался я с дисплеем. Оказывается, нужно заливать все пиксели фоновым цветом, а я подумал что команда сброса 0x01 очищает весь дисплей, а она не для этого. На заполнение всего поля 128*160 пикселей у контроллера с тактовой частотой 16 МГц уходит примерно секунды две, думаю, если программу доработать(не вычислять для каждого пикселя каждый бит двух байтов цвета как элемент массива D[8] d02[8] а при одинаковом цвете этот массив остается неизменным) немного быстрее будет

булат
18.05.2019, 19:22
2 сек много...я очищал по другому-задавал всю область,а потом "запихивал" туда цвет 128*160 раз и все,очистка около 0,2-0,3 сек

Sub Lcd_clear(byval Color As Word)-Color=цвет
Lcd_set_window 0 , 0 , X_size , Y_size
'Lcd_cs = 0
Lcd_dc = 1
!LD XL, Y+0
!LD XH, Y+1
!LD R31, X+
!LD R30, X
!ldi R16, $c8 '76800 200
Wgloop0:
!ldi R17, $C0 '192
Wloop1:
!OUT spdr, R30
Spi_ready1:
!sbis spsr, spif
!rjmp spi_ready1
!OUT spdr, R31
Spi_ready:
!sbis spsr, spif
!rjmp spi_ready
!OUT spdr, R30
Spi_ready2:
!sbis spsr, spif
!rjmp spi_ready2
!OUT spdr, R31
Spi_ready3:
!sbis spsr, spif
!rjmp spi_ready3
!subi R17, 1
!brne wloop1
!subi R16, 1
!brne wgloop0
' Lcd_cs = 1
End Sub

Sub Lcd_set_window(byval Xpos As Word , Byval Ypos As Word , Byval Xsize As Word , Byval Ysize As Word)
' Lcd_cs = 0
Lcd_dc = 0
!LDI R23, $2a
!OUT spdr, R23
Spi_30:
!sbis spsr, spif
!rjmp spi_30
Lcd_dc = 1
!ldd R26, Y+6 ' xpos
!Ldd R27, Y+7
!LD R18, X+
!LD R17, X
!OUT spdr, R17
Spi_read31:
!sbis spsr, spif
!rjmp spi_read31
!OUT spdr, R18
Spi_read32:
!sbis spsr, spif
!rjmp spi_read32
!ldd R26, Y+2 ' xsize
!Ldd R27, Y+3
!LD R18, X+
!LD R17, X
!OUT spdr, R17
Spi_read33:
!sbis spsr, spif
!rjmp spi_read33
!OUT spdr, R18
Spi_read34:
!sbis spsr, spif
!rjmp spi_read34
Lcd_dc = 0
!LDI R23, $2b
!OUT spdr, R23
Spi_35:
!sbis spsr, spif
!rjmp spi_35
Lcd_dc = 1
!ldd R26, Y+4 ' ypos
!Ldd R27, Y+5
!LD R18, X+
!LD R17, X
!OUT spdr, R17
Spi_read36:
!sbis spsr, spif
!rjmp spi_read36
!OUT spdr, R18
Spi_read37:
!sbis spsr, spif
!rjmp spi_read37
!ldd R26, Y+0 ' ysize
!Ldd R27, Y+1
!LD R18, X+
!LD R17, X
!OUT spdr, R17
Spi_read38:
!sbis spsr, spif
!rjmp spi_read38
!OUT spdr, R18
Spi_read39:
!sbis spsr, spif
!rjmp spi_read39
Lcd_dc = 0
!LDI R23, $2c
!OUT spdr, R23
Spi_40:
!sbis spsr, spif
!rjmp spi_40
' Lcd_cs = 1
End Sub