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

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

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

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



3.2" TFT LCD

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

1

Всем привет!
Купил себе такой дисплей  http://imall.iteadstudio.com/display/tf … 19005.html
Месяц запрягал(руки не доходили) и за одну ночь прорвало.

Код:
$regfile = "m1280def.dat"
$crystal = 8000000
$hwstack = 56
$swstack = 32
$framesize = 48

$baud = 9600

'/* LCD color */
Const White = &HFFFF
Const Black = &H0000
Const Blue = &H001F
Const Blue2 = &H051F
Const Red = &HF800
Const Magenta = &HF81F
Const Green = &H07E0
Const Cyan = &H7FFF
Const Yellow = &HFFE0

Const X_const = 240
Const Y_const = 320

Rs Alias Portd.7
Wr Alias Portg.2
Cs Alias Portg.1
Rst Alias Portg.0


Declare Sub Write_command(byval Cmd As Word)
Declare Sub Write_data(byval Ldata As Word)
Declare Sub Write_command_data(byval Cmd As Word , Byval Ldata As Word)
Declare Sub Lcd_init()
'Declare Sub Set_xy(byval X0 As Word , Byval Y0 As Word , Byval X1 As Word , Byval Y1 As Word)
Declare Sub Set_xy()
Declare Sub Pant(byval Color As Word)
Declare Sub Lcd_clear()
Declare Sub Touch_init()
Declare Sub Touch_writedata(byval Ldata As Byte)
Declare Sub Touch_readdata()
Declare Sub Touch_read()

Dim W As Word
Dim X0 As Word , X1 As Word , Y0 As Word , Y1 As Word

Lcd_init
Waitms 50
Lcd_clear

Call Pant(&Hffff)
Call Pant(&H0000)

Wait 1

Call Pant(&Hf800)
Call Pant(&H07e0)
Call Pant(&H001f)
Call Pant(&Hffff)
Wait 1
Call Pant(cyan)


Do
Loop
'===============================================================================
Sub Write_command(byval Cmd As Word)
   Cs = 0
   Rs = 0
   Porta = High(cmd)
   Portc = Low(cmd)
   Wr = 0
   Waitus 3
   Wr = 1
   Cs = 1
End Sub

Sub Write_data(byval Ldata As Word)
   Cs = 0
   Rs = 1
   Porta = High(ldata)
   Portc = Low(ldata)
   Wr = 0
   Waitus 3
   Wr = 1
   Cs = 1
End Sub

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

Sub Lcd_init()
   Config Rs = Output
   Config Wr = Output
   Config Cs = Output
   Config Rst = Output
   Ddra = $ff
   Ddrc = $ff

   Rst = 1
   Waitms 15
   Rst = 0
   Waitms 15

   Wr = 1
   Cs = 1
   Rst = 1
   Waitms 20

   Call Write_command_data(&H0000 , &H0001)
   Call Write_command_data(&H0003 , &HA8A4)
   Call Write_command_data(&H000c , &H0000)
   Call Write_command_data(&H000d , &H080C)
   Call Write_command_data(&H000e , &H2B00)
   Call Write_command_data(&H001e , &H00B7)
   Call Write_command_data(&H0001 , &H2B3F)
   Call Write_command_data(&H0002 , &H0600)
   Call Write_command_data(&H0010 , &H0000)
   Call Write_command_data(&H0011 , &H6070)
   Call Write_command_data(&H0005 , &H0000)
   Call Write_command_data(&H0006 , &H0000)
   Call Write_command_data(&H0016 , &HEF1C)
   Call Write_command_data(&H0017 , &H0003)
   Call Write_command_data(&H0007 , &H0233)
   Call Write_command_data(&H000b , &H0000)
   Call Write_command_data(&H000f , &H0000)
   Call Write_command_data(&H0041 , &H0000)
   Call Write_command_data(&H0042 , &H0000)
   Call Write_command_data(&H0048 , &H0000)
   Call Write_command_data(&H0049 , &H013F)
   Call Write_command_data(&H004a , &H0000)
   Call Write_command_data(&H004b , &H0000)
   Call Write_command_data(&H0044 , &HEF00)
   Call Write_command_data(&H0045 , &H0000)
   Call Write_command_data(&H0046 , &H013F)
   Call Write_command_data(&H0030 , &H0707)
   Call Write_command_data(&H0031 , &H0204)
   Call Write_command_data(&H0032 , &H0204)
   Call Write_command_data(&H0033 , &H0502)
   Call Write_command_data(&H0034 , &H0507)
   Call Write_command_data(&H0035 , &H0204)
   Call Write_command_data(&H0036 , &H0204)
   Call Write_command_data(&H0037 , &H0502)
   Call Write_command_data(&H003a , &H0302)
   Call Write_command_data(&H003b , &H0302)
   Call Write_command_data(&H0023 , &H0000)
   Call Write_command_data(&H0024 , &H0000)
   Call Write_command_data(&H0025 , &H8000)
   Call Write_command_data(&H004f , &H0000)
   Call Write_command_data(&H004e , &H0000)
   Call Write_command(&H0022)
End Sub

'Sub Set_xy(byval X0 As Word , Byval Y0 As Word , Byval X1 As Word , Byval Y1 As Word)
Sub Set_xy()
Local I As Word , J As Word
   I = Low(x1)
   Rotate I , Left , 8
   J = I + X0
   Call Write_command_data(&H0044 , J)
   Call Write_command_data(&H0045 , Y0)
   Call Write_command_data(&H0046 , Y1)
   Call Write_command_data(&H004e , X0)
   Call Write_command_data(&H004f , Y0)
   Call Write_command(&H0022)
End Sub

Sub Pant(byval Color As Word)
Local I As Word , J As Word

   X0 = 0 : Y0 = 0 : X1 = 239 : Y1 = 319
   Call Set_xy()

   For I = 0 To 319
     For J = 0 To 239
       Call Write_data(color)
     Next J
   Next I
End Sub

Sub Lcd_clear()
Local I As Word , J As Word

   X0 = 0 : Y0 = 0 : X1 = 239 : Y1 = 319
   Call Set_xy()

   For I = 0 To 319
     For J = 0 To 239
       Call Write_data(&H0000)
     Next J
   Next I
End Sub

Sub Touch_init()
End Sub

Sub Touch_writedata(byval Ldata As Byte)
End Sub

Sub Touch_readdata()
End Sub

Sub Touch_read()
End Sub

End                                                         'end program

Это демка на основе кода с этой страницы(DC_IM120419005_ITDB02_3.2S.zip).
Планы большие, если интересно буду выкладывать здесь наработки.

P.S. Самое интересное что экран заполняется быстрее, чем в исходной программе.

Исправил неверную ссылку.
Модератор

Отредактировано Александр Д. (2012-08-29 14:31:37)

0

2

выложите полное описание подключения ЖКИ к МК
есть примеры под Мега8 или Мега16?

0

3

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

если интересно буду выкладывать здесь наработки.

Конечно интересно, а Вы тачпанель и SD карту тоже опробовали?
Покупали по этой же ссылке?

Отредактировано amv2000 (2012-08-29 17:15:15)

0

4

Конечно интересно, у самого такой лежит и тоже времени никак нет на него.

Я не понял про ссылки, зачем потерли?

А где написано, что я их потёр?!
вроде не пятница, чтобы москва пила :)

я удалил точку в конце ссылки, вот она и не открываласть
Модератор

Отредактировано Александр Д. (2012-08-29 21:03:17)

0

5

Покупал здесь http://devicter.ru.
Там есть ссылки на документацию. Только модуль оказался с
с 16 битовым режимом передачи данных. Так что ему надо
16 ног дата и 4 управления, если не использовать чтение.
Подключал по схеме Arduino Mega, там есть схема подключения
и к Mega168/328. Но к Mega168/328 нет смысла подключать,
дисплей занимает все ноги и SD и тач уже не подключите.
SD card подключён на SPI и работает с AVR-DOC - проверил.
Порт А Hi byte, C Low byte, управление в исходнике.
Тач проверил только в среде Arduino - работает, сейчас пишу под него.

0

6

А вот на тачскрине слегка завис, может кто подскажет

Код:
void Touch_Read()
{
	unsigned long tx=0;
	unsigned long ty=0;

	digitalWrite(T_CS,LOW);                    

	for (int i=0; i<PREC_TOUCH_CONST; i++)
	{
Touch_WriteData(0x90);        
digitalWrite(T_CLK,HIGH);
digitalWrite(T_CLK,LOW); 
ty+=Touch_ReadData();

Touch_WriteData(0xD0);      
digitalWrite(T_CLK,HIGH);
digitalWrite(T_CLK,LOW);
tx+=Touch_ReadData();
	}

	digitalWrite(T_CS,HIGH);

	TP_X=tx/PREC_TOUCH_CONST;
	TP_Y=ty/PREC_TOUCH_CONST;
}

TP_X и TP_Y тип данных.

0

7

Модератор написал(а):

А где написано, что я их потёр?!
вроде не пятница, чтобы москва пила :)

я удалил точку в конце ссылки, вот она и не открываласть

Отредактировано Александр Д. (Вчера 21:03:17)

Я думал, что на ZIP ссылку ковыряли...он же просто текстом.

0

8

ZIP на той же странице, я указал, поэтому без ссылки.
А тач "штурмом" взять неудалось, нажатие фиксирует.
А дальше нули...

0

9

1 это глобальные переменные результата касания
2 Как индикатор - яркий? А углы видимости?

0

10

Индикатор яркий, яркость регулируется.
Небольшой итог.
Про мелкие Mega можно забыть. На дисплей - 20-21(RD) нога,
тач - 5 , SD - 4, итого 29 минимум. Итог 40-ногие МК и выше.
У меня реализованы простые функции, а программа уже занимает 10%.
Плюс SD, датчики и другую периферию. Итого как минимум Mega644/1284.
Есть дисплеи с 8-и битной внешней шиной но... внутри она 16-и разрядная
и выигрывая по ногам придётся усложнять программу.

0

11

Вспомнил, я по этому не особо хотел его подключать к АВР.  :D
Я сейчас проблему быстрого вывода/отладки, да и вообще использую более простой способ. Просто подключаю 5-8 доллровый, китайский БТ и всё тупо вывожу в терминал (причем как на: комп, нетбук - так и на мобилу (андрюшка)). Очень удобно (два провода всего, а имеешь и вывод и ввод). Вот думаю может какой-нить беспроводной "монитор" сварганить (в разумных рамках).  :idea:

Отредактировано RDW (2012-08-31 11:08:15)

0

12

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

Вспомнил, я по этому не особо хотел его подключать к АВР.

А зря, самое то. После этого дисплея за 3310 и подобные уже браться не
хочется, тем более они для меня одно большое пятно.
И есть ещё XMega, лежит одна в запасе.

0

13

Ну я как бы уже АТмеги забросил, сижу пол года на ХМегах и не вижу связи этого индикатора с ними. А на 3310 - даже не смотрю серъёзно  :D ибо для меня оправдан вывод на такие ЖК только при условии наличия I2C, иначе ног жалко. И вешать мощные индикаторы на АВР - жалко их, будет в основном на них работать, а использовать качественные индикаторы в статике - как то извращенство..

0

14

Прямые линии выводит нормально, а с наклоном
завяз как французы в русской грязи.

0

15

Повис чтоли?
А как на счет сенсорности, разобрались?

0

16

Не завис а зациклился(я)  :crazy:
В таче глюк исправил, нажатие олределяет.
Но пока за графику взялся, что-то с ориентацией... дисллея :D

Похоже глюки не у меня, это я дисплей в ступор ввёл.

Отредактировано alex_r61 (2012-09-05 17:50:37)

0

17

Добил заразу...
Работают заливка экрана, линии, прямоугольники
с заливкой и без..

Код:
Declare Sub Write_command(byval Cmd As Word)
Declare Sub Write_data(byval Ldata As Word)
Declare Sub Write_data_hl(byval Hd As Byte , Byval Ld As Byte )
Declare Sub Write_command_data(byval Cmd As Word , Byval Ldata As Word)
Declare Sub Lcd_init(byval Orientation As Byte)
Declare Sub Set_xy()
Declare Sub Fill_scr(byval Color As Word)
Declare Sub Lcd_clear()
Declare Sub Setpixel(byval R As Byte , Byval G As Byte , Byval B As Byte)
Declare Sub Drawpixel(byval X As Word , Byval Y As Word )

Declare Sub Draw_hline(byval X As Word , Byval Y As Word , Byval L As Word)
Declare Sub Draw_vline(byval X As Word , Byval Y As Word , Byval L As Word)
Declare Sub Draw_line(byval X1 As Word , Byval Y1 As Word , Byval X2 As Word , Byval Y2 As Word)

Declare Sub Draw_rect(byval X1 As Word , Byval Y1 As Word , Byval X2 As Word , Byval Y2 As Word)
Declare Sub Draw_round_rect(byval X1 As Word , Byval Y1 As Word , Byval X2 As Word , Byval Y2 As Word)
Declare Sub Fill_rect(byval X1 As Word , Byval Y1 As Word , Byval X2 As Word , Byval Y2 As Word)

+1

18

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

0

19

В каких устройствах такие LCD используются? Может в магнитолах каких? Чего то неохото с Новосибирска заказывать ( ближе не нагуглил). :dontknow: Очень интересная вещица

0

20

Используются в Arduimo проектах, причём и на AVR, PIC32 и ARM.
Также стоят в некоторых смартфонах. Интересная вещь, да и для
общего развития полезно. А учитывая что на 'борту' ещё и тач с
контролером и слот SD, то довольно дёшево.
Я тоже ничего ближе не нашёл, потому там и заказывал.
Но работают оперативно. Похоже вся торговля на Восток ушла,
кстати  dvrobot.ru тоже в той стороне.

0

21

Значит буду пробовать оттуда заказать, жалко нет 5-и дюймового у них в наличии. А почему код для тачскрина на Си? Разбираетесь?  Вот бы мне перевести библиотеку для дисплейчика из Си в Basic или *.LBX.  Чего то ну никак не дружу я с Си

0

22

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

жалко нет 5-и дюймового у них в наличии

Быстро расхватали, недавно ещё были.
Насчёт библиотеки, такая мысль давно присутствует, как будут
готовы все процедуры попробую сделать.

+2

23

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

0

24

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

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


Привет. Покажите пожалуйста програмки с линиями, прямоугольниками, тачем, символами, вообщем последнее что у вас наработано в Bascom. И приведите ссылочку на даташит которым вы пользуетесь.

0

25

Чип дисплея SSD1289 от SOLOMON SYSTECH http://www.mcu-china.com/tft_doc/SSD1289_2.8.pdf.
Популярный, особенно у китайцев, чип. На Arduino под него есть библиотеки и на ARM его
активно используют. На Казусе есть темы по нему. Это у нас тут только застой.
Программа на С для тача, что приводил выше, рабочая. Надо только задействовать выход
BUSY с тача и немного подобрать задержки. Сейчас у меня всё написано на С.
Самое главное разобраться с координатами дисплея. Из подпрограмм кое-что выложу, но
так как здесь интерес почти нулевой всю разработку выкладывать не буду.

0

26

Зря так считаешь )) Тока лучше в баском перекладывай ) Так гораздо интересней будет,т.к. тут много тех, кто не знает С. Я сам тоже как ота собака- код понимаю, написать не могу ))

+1

27

Вот здесь небольшая коллекция доков и исходников, правда
исходники на "вражеском" языке http://picavr.kr1.ru/Components/LCD_TFT/LCD_TFT.html
А если тема интересна, так давайте здесь выкладывать свои наработки. Может всем "колхозом"
и создадим аналог UTFT на бейсике. А то я пока один в поле...

Отредактировано alex_r61 (2013-01-26 21:11:35)

0

28

Давно присматриваюсь к этому дисплею. У нас в Украине собранный скейтч под ардуино мега (Китай) стоит 290 гривен. Давно купил-бы, да сдерживает меня только одно, это готовые примеры, наработки на баскоме, что-бы на примерах писать что-либо для себя. Готовую плату ардуино покупать, для меня, не вижу смысла. Мне в принципе из этой готовой платы нужна 128 мега  и ряд разъемов под этот скетч. При наличии програматора мне загрузчик ни к чему. Потом мне не нравится раположение кнопки RESET. Находится под платой дисплея. Ряд пинов меги не задейсвованны под разъемы. USB и СОМ порт мне тоже не нужен. Имея печатку ардуино мега в EAGL, можно намалевать свою, с соответствующими размерами положения разъемов, а также своих хотелок. В частности добавить хочется сборку Дарлингтона на выхода. Вообщем очень хочется, но пока сдерживаю себя от старта. Так что  - alex_r61  - тема для меня очень интересная, слежу за развитием очень внимательно. От себя я врядли могу чем нибудь помочь стоящим. ибо сам новичек. Удачи.

0

29

AleksanderG а не лучше сразу заказать в Китае, я заказал себе две Mega 2560 за 15$ с копейками за обе.
У нас один проц дороже стоит. А насчёт загрузчика, залили его и забыли про программатор, ничего не надо
передёргивать. Да и для отладки удобнее, вся диагностика на дисплее, не надо пялиться на светодиод -
сколько он раз мигнул. А платы расширение можете уже сами ваять, так проще, кстати на макетках для
Arduino кнопка Reset дублируется и разъём ISP тоже. А если хотите всё собрать сами, то в том же Китае
можно всё купить по частям и ставте только то что вам нужно.
P.S.  И зачем себя сдерживать? Хочется - так вперёд.

0

30

Совершенно с Вами согласен, alex_r61, по поводу загрузчика!
Да, и мало найдется программаторов, которые заливали код в контроллер также быстро, как это позволяет сделать загрузчик.

0