дисплей Nokia-1202
|
|
доцент2 |
Дата: Сб, 14.09.2013, 20:29 | Сообщение # 16 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Спасибо за пример! С такими подпрограммами, я сталкивался на VisualBasic, а как организовать их на Протоне пока не соображу. Могу ошибаться, слышал краем уха, на СТМ32 можно задать битность 9, что упрощает задачу. По поводу 6100 согласен. Завтра поеду на барахолку посмотрю старые телефоны (стоят они копейки).
|
|
|
|
Matrix252005 |
Дата: Сб, 14.09.2013, 20:40 | Сообщение # 17 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Цитата (доцент2) ...на СТМ32 можно задать битность 9... Я пишу на микроБэйсике (mikroBasic for ARM), он немного похож на СИ... Так что там проще переделать прогу...
А по поводу 9-ти битки на СПИ, НЕТ, такого в мВ нет... Там только 8 или 16.
Цитата (доцент2) ...а как организовать их на Протоне пока не соображу. Можно просто процедурами... И ссылаться на них по GoSub...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
доцент2 |
Дата: Сб, 14.09.2013, 21:05 | Сообщение # 18 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Спасибо за ответ! По поводу настройки битности наверное перепутал с другим контроллером (но точно видел в инете). Мне попадалась библиотека на дисплей написанная микроБейсике. Пока только и остается использовать процедуры. Буду пробовать.
|
|
|
|
Matrix252005 |
Дата: Сб, 14.09.2013, 21:10 | Сообщение # 19 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Цитата (доцент2) По поводу настройки битности наверное перепутал с другим контроллером (но точно видел в инете). Это может быть для других софтов... Или софтовый СПИ.... Там Вы можете сколько угодно сделать...
Цитата (доцент2) Мне попадалась библиотека на дисплей написанная микроБейсике. Так возьмите ее за основу и просто поменяйте операторы... Проще говоря, подгоните под протон... Именно так я делал с 3310, взял свой проект на 3310 и перевел ее для мВ...
Цитата (доцент2) Пока только и остается использовать процедуры. Плохо что в Протоне нельзя делать процедуры, очень удобно...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
доцент2 |
Дата: Сб, 14.09.2013, 21:44 | Сообщение # 20 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
При 8 битах проблем нет. К сожалению при 9 битах просто заменить операторы не получиться, придется использовать USART настроив его на 9 бит или "дрыгать ножками" с помощью подпрограмм.
|
|
|
|
ivan_fd |
Дата: Вс, 15.09.2013, 22:12 | Сообщение # 21 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Не нужен Вам никакой USART. Делаете софтовый SPI и все проблемы.
Добавлено (15.09.2013, 22:12) --------------------------------------------- Вот приблизительная процедура передачи данных в LCD.
Код CS = 0 CLK = 0
if command then SDA = 1 else SDA = 0 endif CLK = 1
for i=0 to 8 CLK = 0 if c & 0x80 = 0x80 then SDA = 1 else SDA = 0 endif
CLK = 1
c = с << 1 delayus 2 NEXT CS = 1
Сообщение отредактировал
ivan_fd - Вс, 15.09.2013, 22:13
|
|
|
|
доцент2 |
Дата: Пн, 16.09.2013, 13:45 | Сообщение # 22 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
ivan_fd я в принципе так и сделал, пример в архиве. но дисплей работать не хочет (хоть бы "шум" показал). Порядок инициализации списал с примера на Си в инете. в примере просто сделал инициализацию, задаю координаты и пытаюсь вывести символ "|" $FF. есть вопрос с RES-том, куда его девать - на землю кинуть или на +. Или на него нужно подать типа: RES=1 delayus 10 RES=0
|
|
|
|
ivan_fd |
Дата: Пн, 16.09.2013, 22:00 | Сообщение # 23 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Вот схема подключения с habrahabr.ru
Да, и почему Вы не просимулируете в Протеусе вместе с экраном, будет сразу видно работает али нет.Добавлено (16.09.2013, 21:56) --------------------------------------------- При инициализации reset нужно
RST = 0 ПАУЗА RST = 1 Добавлено (16.09.2013, 22:00) --------------------------------------------- Посмотрел Ваш код, где Вы взяли пример?
Вот как должно быть
spi(CMD,0x20); // write VOP register spi(CMD,0x90); spi(CMD,0xA4); // all on/normal display spi(CMD,0x2F); // Power control set(charge pump on/off) spi(CMD,0x40); // set start row address = 0 spi(CMD,0xb0); // set Y-address = 0 spi(CMD,0x10); // set X-address, upper 3 bits spi(CMD,0x0); // set X-address, lower 4 bits spi(CMD,0xC8); // mirror Y axis (about X axis) spi(CMD,0xa1); // Invert screen in horizontal axis spi(CMD,0xac); // set initial row (R0) of the display spi(CMD,0x07); //spi(CMD,0xF9); // spi(CMD,0xaf); // display ON/OFF
Lcd_Clear(); // clear LCD spi(CMD,0xa7); // invert display Delay10KTCYx(100); // 1/2 Sec delay spi(CMD,0xa6); // normal display (non inverted) Delay10KTCYx(100); // 1 Sec delay
|
|
|
|
доцент2 |
Дата: Вт, 17.09.2013, 00:42 | Сообщение # 24 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
В железе дисплей Nokia-1202 не работает. В протеусе Nokia-1100 запустился. (У них вроде разные контроллеры) Пытаюсь задать положение символа X,Y аналогично как для Nokia3310, но не получается. перелапатил даташит, но толком ничего не понял, может $80 и $10 не те XY_LCD: Dan=$B0|Y: GoSub Data_LCD' Y axe initialisation Y Dan=$10|x: GoSub Data_LCD' X axe initialisation X
Сообщение отредактировал
доцент2 - Вт, 17.09.2013, 00:53
|
|
|
|
anatol |
Дата: Вт, 17.09.2013, 00:55 | Сообщение # 25 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
отсюда инициализация Код LCD_write_byte(0xE2, 0); // Reset LCD_write_byte(0xA4, 0); // Power saver off LCD_write_byte(0x2F, 0); // Power control set LCD_write_byte(0xAF, 0); // LCD display on
LCD_write_byte(0xB0 | 0, 0); // Page address set
/* Print 'A' character */ LCD_write_byte(0x00, 1); LCD_write_byte(0x7C, 1); LCD_write_byte(0x12, 1); LCD_write_byte(0x12, 1); LCD_write_byte(0x7C, 1); LCD_write_byte(0x00, 1); Обратите внимание что девятый байт при команде идет нулем. а при выводе с единицей. Как старшим битом вперед или младшим разбирайся сам. и обращение
ivan_fd, у 1102 другой драйвер.
доцент2 Здесь я отправлял последовательность байт с "дерганьем" У вас я бы заменил SDA=Dan.7 на SDA=Dan.i Код For i=0 To 7 SCLK=0 SDA=Dan.7 SCLK=1 Dan=Dan<<1 ' DelayUS 2 Next i то есть Код For i=0 To 7 SCLK=0 SDA=Dan.i SCLK=1 ' DelayUS 2 Next i
Сообщение отредактировал
anatol - Вт, 17.09.2013, 01:01
|
|
|
|
доцент2 |
Дата: Вт, 17.09.2013, 07:14 | Сообщение # 26 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Спасибо Анатолий! Т.е. для инициализации дисплея достаточно четырех строчек? LCD_write_byte(0xE2, 0); // Reset LCD_write_byte(0xA4, 0); // Power saver off LCD_write_byte(0x2F, 0); // Power control set LCD_write_byte(0xAF, 0); // LCD display on (в описании контроллера их там целая таблица) а, вот эти строчки можно не использовать или они обязательны?
LcdSend( 0x3D , 0 ); // Charge pump LcdSend( 0x01 , 0 ); // Charge pump = 4 (default 5 is too hight for 3.0 volt) LcdSend( 0xE1 , 0 ); // Additional VOP for contrast increase LcdSend( 0x16 , 0 ); // from -127 to +127
сегодня попробую. прощу прощенья, но мне не совсем понятно как как задать положение выводимого символа Х, У?
Сообщение отредактировал
доцент2 - Вт, 17.09.2013, 14:25
|
|
|
|
anatol |
Дата: Вт, 17.09.2013, 15:40 | Сообщение # 27 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
По инициализации подробно. Не забывайте что передача старшим битом (битом команда=0, данные=1) вперед. Начальная установка места в столбце 0 1 0 1 1 address Отсчет от левого верхнего угла, побайтно, сверху вниз = кол-во строк/8 address = 4 бита равны номеру байта. Так как столбцов 98 (или 96) требуется 7 бит и команда установки состоит из 2-х посылок из 3-х 0 0 0 0 1 Х address и 4-х 0 0 0 0 0 address бит в команде адреса. Выделенный бит признак команды. Рядом 7-й бит байта установки. Все это прекрасно расписано в даташите на драйвер дисплея (стоит на стекле) http://tuxotronic.org/wiki/_media/component/lcd/ste2007.pdf
Сообщение отредактировал
anatol - Вт, 17.09.2013, 16:06
|
|
|
|
доцент2 |
Дата: Вт, 17.09.2013, 17:36 | Сообщение # 28 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Помогите с моделью дисплея Nokia-1202 для протеуса На макетке дисплей Nokia-1202 так и хочет работать, поставил второй - тоже признаков жизни не подает. (питание дисплея 3,3В работает только подсветка).
Сообщение отредактировал
доцент2 - Вт, 17.09.2013, 18:01
|
|
|
|
anatol |
Дата: Вт, 17.09.2013, 18:09 | Сообщение # 29 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Похоже затупили, надо отдохнуть. Данные отправляются 9-ти битным кодом, где: -если первый отправленный бит = 0. то остальные 8 бит команда; -если первый отправленный бит = 1, то остальные отображают пикселы (вкл, выкл) Отображается столбик из 8 бит. Следующий столбик из 8 бит отображается за этим, сверху вниз столбца, по цепочке, автоматом. Потом переход наверх и следующий столбец, аналогично первому правее его (это для режима по сбросу в исходное). И так далее, экран рисуется целиком. Если надо изменить только часть экрана. то производится установка в позицию по трем девятибайтным командам. Одна команда устанавливает место по вертикали 0 1 0 1 1 address, по другому к примеру 010110110 место 6(5, если считать с нуля) байта,пиксели с 49 по 56 (48 -55) и upper 3–bit address 0 0 0 0 1 * address и ower 4–bit address 0 0 0 0 0 address по другому к примеру :0 0 0 0 1 Х 001 и 0 0 0 0 0 1101 , что буде равно 0 0011101 = 29 столбцу
Научитесь просто засветить и получить строчки на дисплее передавая одно число к примеру 3 (00000011). Как получите полоски без сдвига = победа.
|
|
|
|
доцент2 |
Дата: Вт, 17.09.2013, 18:37 | Сообщение # 30 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
291
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
получилось! ох как мудрено, хорошо описание не на китайском. получается так: Dan=$b0|Y: command=0: GoSub Data_LCD ' это строчка Y от 0 до 7 Dan=$10|X1: command=0: GoSub Data_LCD' X axe initialisation: 0001 *xxx Dan=$00|X2: command=0: GoSub Data_LCD' X axe initialisation: 0000 xxxx с 0 до 96 пока не соображу, если мне надо расположить символ по оси Х, например с "координатой" 45=101101, как программно "поделить" 45 между Х1=%10 и Х2=%1101?
|
|
|
|