|
|
  |
AVR и Siemens M55 |
|
|
|
Aug 31 2007, 21:21
|

Участник

Группа: Участник
Сообщений: 47
Регистрация: 22-08-07
Пользователь №: 29 980

|
Доброго времени суток. Никто не сталкивался ли со следующей проблемой с LS020. После инициализации заливаю весь экранчик цветом А, жду двацать милисекунд и пытаюсь залить через ту же функцию но цветом Б и он не хочет. Но перед этим я пытался залисть область следующим образом:
#define cmd 1 #define dat 0
void lcd_pset(char x , char y , int color_line) { lcd_write(cmd, 0xEF90); lcd_write(cmd, 0x0800); lcd_write(cmd, 0x0985); lcd_write(cmd, 0x0A00); lcd_write(cmd, 0x0B85); lcd_write(dat, 0x000A);
}
Если глаз не замылен то еще
void lcd_write(char datcom, int word) //Запись байта { LCD_CS=0; if(datcom & 1) LCD_RS=1; else LCD_RS=0; LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_CS=1; } Так вот. Первая заливка через
lcd_write(cmd,0xEF90); lcd_write(cmd,0x0500); lcd_write(cmd,0x0600); lcd_write(cmd,0x0700);
for (i=0; i<DISP_W*DISP_H; i++) lcd_write(dat,color);
Один раз идет на ура. Повторно не хочет. Позле первой зааливки не хочет выделяться даже область. Может кто подскажет? Заранее огромное спасибо.
|
|
|
|
|
Sep 1 2007, 09:48
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196

|
Цитата(lomtev @ Sep 1 2007, 00:21)  Доброго времени суток. Никто не сталкивался ли со следующей проблемой с LS020. После инициализации заливаю весь экранчик цветом А, жду двацать милисекунд и пытаюсь залить через ту же функцию но цветом Б и он не хочет. Но перед этим я пытался залисть область следующим образом:
#define cmd 1 #define dat 0
void lcd_pset(char x , char y , int color_line) { lcd_write(cmd, 0xEF90); lcd_write(cmd, 0x0800); lcd_write(cmd, 0x0985); lcd_write(cmd, 0x0A00); lcd_write(cmd, 0x0B85); lcd_write(dat, 0x000A);
}
Если глаз не замылен то еще
void lcd_write(char datcom, int word) //Запись байта { LCD_CS=0; if(datcom & 1) LCD_RS=1; else LCD_RS=0; LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_CS=1; } Так вот. Первая заливка через
lcd_write(cmd,0xEF90); lcd_write(cmd,0x0500); lcd_write(cmd,0x0600); lcd_write(cmd,0x0700);
for (i=0; i<DISP_W*DISP_H; i++) lcd_write(dat,color);
Один раз идет на ура. Повторно не хочет. Позле первой зааливки не хочет выделяться даже область. Может кто подскажет? Заранее огромное спасибо. Попробуй void clr_scr(void) { word i; sendCMD(0xEF90); sendCMD(0x0500); sendCMD(0x0800); sendCMD(0x0984);// 09xx xx- длина sendCMD(0x0A00); sendCMD(0x0BAF); for (i=0;i<132*178;i++) sendDATA(0); }
--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
|
|
|
|
|
Sep 1 2007, 10:55
|

Участник

Группа: Участник
Сообщений: 47
Регистрация: 22-08-07
Пользователь №: 29 980

|
Цитата(satellite-plus @ Sep 1 2007, 13:48)  Попробуй
void clr_scr(void) { word i; sendCMD(0xEF90); sendCMD(0x0500); sendCMD(0x0800); sendCMD(0x0984);// 09xx xx- длина sendCMD(0x0A00); sendCMD(0x0BAF); for (i=0;i<132*178;i++) sendDATA(0); } Нет не работает. Я думаю что здесь вопрос не в том какие команды, они то верные, у меня есть подозрение что все дело в дерганье LCD_CS. Но все равно после отправки данных в функцию lcd_write, LCD_CS передергивается из высокого в низкое, после концовки отправки LCD_CS остается в высоком до следующей команды, после отправки следующей команды опять вниз. Вроде должно все работать. Но может надо дернуть пару раз на пустом RS и DATA или RESET?
|
|
|
|
|
Sep 8 2007, 14:17
|

Частый гость
 
Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575

|
Извини, что не сразу отвечаю, но в процедуре отправки слова на дисплей у тебя отсутствует команда сброса строба в ноль Цитата LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_CS=1; Надо так: LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;LCD_CS=1; Скорее всего в этом и есть проблема, когда последний бит в слове равен "1" - посылка "сливается" со всякими глюками......
|
|
|
|
|
Sep 10 2007, 19:08
|

Участник

Группа: Участник
Сообщений: 47
Регистрация: 22-08-07
Пользователь №: 29 980

|
Цитата(sadat @ Sep 8 2007, 18:17)  Извини, что не сразу отвечаю, но в процедуре отправки слова на дисплей у тебя отсутствует команда сброса строба в ноль Надо так: LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;LCD_CS=1;
Скорее всего в этом и есть проблема, когда последний бит в слове равен "1" - посылка "сливается" со всякими глюками...... Глюки были из-за несоответствия типов переменных, я к команде int добавлял значения координат char, знаю что идиотский промах но бывает иногда. Когда исправил все фигуры стали выводиться соответственно. Но вот наткнулся на странную проблему, решение и причину которой понять не могу. Написал следующий цикл: for(j=0;j<176;j++) { if(j<=131){ lcd_pset(0x0000,j,j,0xF800); lcd_pset(j,0x0084,j,0x07E0); } else{ k=262-j; lcd_pset(0x0000,k,j,0xF800); lcd_pset(k,0x0084,j,0x07E0); } } Не работало, доходило до определенной степени и останавливалось. Я стал подбирать значения 131 и 262. Вот что вышло: for(j=0;j<176;j++) { if(j<124){ lcd_pset(0x0000,j,j,0xF800); lcd_pset(j,0x0084,j,0x07E0); } else{ k=246-j; lcd_pset(0x0000,k,j,0xF800); lcd_pset(k,0x0084,j,0x07E0); } } Если брать больше 124 или 246 - не работает, а так все пашет прилично но не до конца экрана, 7-8 pix не дотягивает. Все данные объявлены в int. Цвет второй линии заливается до 131 полностью, именно не строится до конца только вершина треугольника (первая линия). Кто занает?
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 18 2007, 22:15
|
Группа: Новичок
Сообщений: 1
Регистрация: 18-09-07
Пользователь №: 30 649

|
Приветствую всех, вот выковырял дисплей из полудохлого сименс А65 такой же как и в М55, порылся в нете порылся на форуме, но так и не нащел на ето детище хоть какойто вразумительной подсказки 101Х80 пикселей на 12бит цвета (4096 цветов), SPI интерфейс (который, о птичках, может работать по шинной топологии если девайсы не кривые - выбираются сигналом CS - ет к вопросам о 2-3 SPI), на пластмаске дисплея написано LM15SGFNZ07 на самом контроллере DJ440118, ткните фейсом если гдето чето неувидел, или подскажите как по етому - DJ440118 - понять какой ето контроллер и как с ним общатся???
Сообщение отредактировал Aseris - Sep 18 2007, 22:18
|
|
|
|
|
Sep 24 2007, 12:39
|

Участник

Группа: Новичок
Сообщений: 29
Регистрация: 1-08-06
Из: St.-Petersburg, China
Пользователь №: 19 243

|
Всплыл у меня один документ по LS020B8UD06, согласно которому контакт питания 1.8В не используется. (я в это потенциально верю....когда читал выше о том, что вместо 1.8 подают 3-3.3... жуткий сон... вывод просто пуст...) Напряжение питания лсд 2.9В (мин. 2.8В до макс. 3В).... т.е. подойдут часто используемые стабилизаторы на 2.85В и 3В... Я счас адаптер подключения LS020B8UD06 развожу себе... чтобы лишнего не разводить... у кого LS020B8UD06... проверьте плз. необходимость питания 1.8....
Эскизы прикрепленных изображений
--------------------
С Уважением, Денис.
|
|
|
|
|
Sep 24 2007, 13:27
|

Участник

Группа: Участник
Сообщений: 47
Регистрация: 22-08-07
Пользователь №: 29 980

|
Цитата(iDenis @ Sep 24 2007, 16:39)  Всплыл у меня один документ по LS020B8UD06, согласно которому контакт питания 1.8В не используется. (я в это потенциально верю....когда читал выше о том, что вместо 1.8 подают 3-3.3... жуткий сон... вывод просто пуст...)
Напряжение питания лсд 2.9В (мин. 2.8В до макс. 3В).... т.е. подойдут часто используемые стабилизаторы на 2.85В и 3В...
Я счас адаптер подключения LS020B8UD06 развожу себе... чтобы лишнего не разводить... у кого LS020B8UD06... проверьте плз. необходимость питания 1.8.... От меня чуток... Лень мне было уровни согласовывать и у меня лог единица это пять воль и там где должно быть макс 2.9 у меня 4.1 Вольта. Включаю я обычно минут на пять максимум. как раз из-за этих вольт боялся, да и в принципе мне больше и не надо... так заценить прошивку.. но как-то забыл выключить и пошел гулять, прихожу а он откработал четыре часа и хоть бы хрен....ТАк что черт знет о этих максималльных 3 Вольтах....
|
|
|
|
|
Oct 5 2007, 04:52
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 5-03-07
Пользователь №: 25 880

|
доброе время суток! есть ли у кого модель дисплея s65 под proteus? поделитесь пожалуйста заранее благодарен
|
|
|
|
|
  |
17 чел. читают эту тему (гостей: 17, скрытых пользователей: 0)
Пользователей: 0
|
|
|