|
SED1335,PIC18F4550 и LCD320x240, разбираем по косточкам модуль SED1335.c |
|
|
|
Jan 25 2008, 21:00
|

Знающий
   
Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143

|
Привет народ.Вот решил я слепить себе нечто из указанных в теме компонентов.Нарисовал и изготовил макетку, красиво всё распаял и написал из надёрганных в сети кусков маленькую програмку для управления ЖКИ. Вначале, после нудного изучения даташитов никак не мог инициализировать ЖКИ, но потом разобрался что к чему и наконец он начал подавать признаки жизни и засветился. Компилятор, который я пользую - CCS, имеет в своём составе файл SED1335.C , но как я не пытался приспособить его, так и не смог.Порывшись в сети,я нашёл другой файл с таким же названием, но вроде бы не для ПИКов, а для чего-то другого.Однако , слегка подшаманив его, я смог встроить его в прогу и он заставил таки выдавать на экран символы в текстовом режиме(даже с возможностью размещения в заданое место) и переключаться в графический режим. И на этом всё и закончилось. Все попытки нарисовать линию или круг или просто точку,несмотря на множество примеров, я так и не смог. Позаимствовав из старого файла процедуру
void glcd_pixel(int16 x, int16 y, int1 color) { int8 data; int16 addr; // Calculate the byte address containing the pixel addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8); // Read the byte of data at the address data = getData(addr); // Turn the pixel on or off if(color == ON) bit_set(data, 7 - x%8); else bit_clear(data, 7 - x%8); // Write the new data byte to display memory setData(addr, data); }
я попробовал нарисовать на экране пиксель, но он вроде как нарисовался но разместился не в тех координатах, которые я указывал.Как я понимаю, за размещение отвечает строка //GLCD_GRAPHICS_ADDR- нач. адрес- 1200, GLCD_WIDTH- кол во символов в строке- 320 addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8); Может кто из вас раскомментирует эту странную формулу и подправит её, если она неправильная.
Сообщение отредактировал andreichk - Jan 25 2008, 21:03
--------------------
|
|
|
|
|
 |
Ответов
|
Mar 22 2008, 13:53
|
Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630

|
Цитата линии, прямоугольники и кружки рисовать умеем, а штрихпунктиры нет.Даже не представляю себе такие формулы Я сам лично никогда не задавался вопросом рисования пунктирных линий, щас подумал - алгоритм мне представился довольно простым, если есть желание - выкладывайте вашу процедуру для обычных линий, видоизменим под пунктир...  Цитата прямоугольник и видеосигнал Да, картинка красивая... единственно не понятен смысл значка в правом нижнем углу... на нем что вообще нарисовано? (похоже на ворону на камне  )
|
|
|
|
|
Mar 22 2008, 14:31
|

Знающий
   
Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143

|
Цитата(Илья @ Mar 22 2008, 14:53)  Я сам лично никогда не задавался вопросом рисования пунктирных линий, щас подумал - алгоритм мне представился довольно простым, если есть желание - выкладывайте вашу процедуру для обычных линий, видоизменим под пунктир...  Да, картинка красивая... единственно не понятен смысл значка в правом нижнем углу... на нем что вообще нарисовано? (похоже на ворону на камне  ) ворона на камне  да ето же бонсай, для души Цитата void line(int16 x1, int16 y1, int16 x2, int16 y2, int1 color)
{ int16 dy, dx; signed int8 addx=1, addy=1; signed int16 P, diff;
int16 i=0; dx = abs((signed int16)(x2 - x1)); dy = abs((signed int16)(y2 - y1));
if(x1 > x2) addx = -1; if(y1 > y2) addy = -1;
if(dx >= dy) { dy *= 2; P = dy - dx; diff = P - dx;
for(; i<=dx; ++i) { pixel(x1, y1, color);
if(P < 0) { P += dy; x1 += addx; } else { P += diff; x1 += addx; y1 += addy; } } } else { dx *= 2; P = dx - dy; diff = P - dy;
for(; i<=dy; ++i) { pixel(x1, y1, color);
if(P < 0) { P += dx; y1 += addy; } else { P += diff; x1 += addx; y1 += addy; } } } }//--------------------------OK //####################################################
Сообщение отредактировал andreichk - Mar 22 2008, 14:36
--------------------
|
|
|
|
|
Mar 23 2008, 04:32
|
Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630

|
Вот, собственно, у меня получилась такая процедурка: Код /* входные параметры: color - с чего начинать (1- с пунктира, 0 -с промежутка) Len1 - длина пунктира (в пикселах) Len0 - длина промежутка (в пикселах) */ void pline(int16 x1, int16 y1, int16 x2, int16 y2, int1 color, int8 Len1, in8 Len0){ int16 dy, dx; signed int8 addx=1, addy=1; signed int16 P, diff; int16 i=0; int8 count=0;
dx = abs((signed int16)(x2 - x1)); dy = abs((signed int16)(y2 - y1)); if(x1 > x2) addx = -1; if(y1 > y2) addy = -1; if(dx >= dy){ dy *= 2; P = dy - dx; diff = P - dx; for(; i<=dx; ++i){ pixel(x1, y1, color); if(color){ if (++count>=Len1) {count=0;color=0;} }else{ if (++count>=Len0) {count=0;color=1;} } if(P < 0){ P += dy; x1 += addx; }else{ P += diff; x1 += addx; y1 += addy; } } }else{ dx *= 2; P = dx - dy; diff = P - dy; for(; i<=dy; ++i){ pixel(x1, y1, color); if(color){ if (++count>=Len1) {count=0;color=0;} }else{ if (++count>=Len0) {count=0;color=1;} } if(P < 0){ P += dx; y1 += addy; }else{ P += diff; x1 += addx; y1 += addy; } } } } В принципе переменную count можно тоже вынести в список входных параметров - и задавать ему начальное значение, тогда можно будет начинать , например, с середины пунктира
|
|
|
|
Сообщений в этой теме
andreichk SED1335,PIC18F4550 и LCD320x240 Jan 25 2008, 21:00 andreichk Ура !!! Заработало !!! Под... Jan 27 2008, 04:06 arizona Цитата(andreichk @ Jan 27 2008, 07:06) Те... Jan 28 2008, 07:38  andreichk Цитата(arizona @ Jan 28 2008, 08:38) посм... Jan 28 2008, 18:26 andreichk Сегодня закончил оформление внешнего вида. Нарисов... Jan 29 2008, 22:32 DL36 Цитата(andreichk @ Jan 30 2008, 02:32) Се... Feb 1 2008, 10:15 andreichk Хочу попробовать перенести все картинки в последов... Jan 31 2008, 19:18 andreichk Слепил сегодня процедурку рисования кривых.Теперь ... Feb 4 2008, 23:07 FDA Вот готовый видеоконтроллер для управления ЖКИ на ... Feb 7 2008, 13:29 andreichk вы мне его уже предлагали, только за деньги я и са... Feb 7 2008, 16:40 Itch А почему у вас экран малинового цвета, это пленка ... Feb 7 2008, 21:40 andreichk да цвет любой можно сотворить- плёночку цветную по... Feb 8 2008, 09:31 Itch китайские сайты нормально читаются через http://ba... Feb 8 2008, 18:29 andreichk Выяснил причину по которой HEX-файл неполностью за... Feb 10 2008, 17:41 andreichk частота 88 Гц, амплитуда 2.15 вольт Feb 11 2008, 22:39 andreichk Попытки записи массива типа
const byte mS_uS[] ... Feb 17 2008, 22:31 andreichk да, не густо тут помошников..... Feb 20 2008, 17:50 andreichk ещё одно фото для истории.
двухканальный вариант,п... Feb 20 2008, 23:20 andreichk проблема рисования синусоиды половинками решена до... Feb 23 2008, 15:32 andreichk Ура !!! Удалось засинхронизироать кар... Feb 25 2008, 22:22 Илья Поздравляю, картинка, конечно красивая, но меня во... Feb 26 2008, 07:52  andreichk Цитата(Илья @ Feb 26 2008, 08:52) Поздрав... Feb 26 2008, 17:54 andreichk У меня сегодня день рождения. Спасибо всем за позд... Feb 27 2008, 14:29 andreichk сегодня попробовал подать на вход меандр от кварце... Feb 27 2008, 20:02 andreichk Прошу помощи по теме
Дело такое, надо мне от шифра... Mar 2 2008, 13:44 Илья Насколько я понимаю нужно дождаться перехода из ни... Mar 3 2008, 03:27 andreichk Спасибо, я попробую как вы советуете и отпишусь Mar 3 2008, 14:34 andreichk попробовал предложенный код.Он работает,только не ... Mar 3 2008, 15:57 andreichk код работает с небольшой доделкой и понижением час... Mar 3 2008, 21:44 andreichk вот такое у меня ещё пожелание(чувствую, что без п... Mar 4 2008, 18:56 Илья Извиняюсь за задержку с ответом - праздники, даже ... Mar 11 2008, 02:50  Transon Это самая лучшая разработка одного человека какую ... Mar 12 2008, 13:18 andreichk Спасибо всем ответившим и помогающим.Не надо извин... Mar 13 2008, 19:02 andreichk Кодunsigned char XX; // переменная которая будет и... Mar 13 2008, 20:26 Илья Цитата(andreichk @ Mar 14 2008, 04:26) Ко... Mar 14 2008, 10:41 andreichk дело в том , что момент отжатия невозможно установ... Mar 15 2008, 10:12 Илья Цитата(andreichk @ Mar 15 2008, 18:12) де... Mar 15 2008, 12:14 andreichk перекидывать ножки на порт РВ как-то не очень хоче... Mar 15 2008, 12:50 Илья Так... насколько я понял компилятор у вас CCS - ... Mar 15 2008, 17:18 andreichk частота 40 МГц.
ни один из трёх таймеров не задейс... Mar 15 2008, 18:53 Илья Хорошо. Теперь приступим:
Возьмем за базу TMR0, у ... Mar 16 2008, 07:27 andreichk компилятор не хочет это признавать
TMR0IF=0;// Очи... Mar 16 2008, 11:15 Илья Цитата(andreichk @ Mar 16 2008, 19:15) ко... Mar 16 2008, 12:55 andreichk пробую так его прописать
set_timer0(0); // TMR0IF=... Mar 16 2008, 14:49 Илья Ну ладно, удачи, все способы полезны - главное, чт... Mar 16 2008, 16:00 andreichk вот такой вид приняла означенная процедура опроса... Mar 16 2008, 20:14 andreichk Чего-то ни одной умной мысли не лезет в голову, на... Mar 19 2008, 20:46 Илья Цитата(andreichk @ Mar 20 2008, 04:46) Че... Mar 20 2008, 03:56 andreichk if( xx >= 255 ) xx = xx - 255; //приводим к int... Mar 20 2008, 18:36 andreichk кстати вопрос имею- чем два раза IF лучше одного S... Mar 20 2008, 19:53 Илья Цитатаif( xx >= 255 ) xx = xx - 255; //приводим... Mar 21 2008, 03:07 andreichk вначале буфер был размером в 512 кб и всё как раз ... Mar 21 2008, 11:25 Илья Цитата(andreichk @ Mar 21 2008, 19:25) ОК... Mar 21 2008, 12:23 andreichk не вопрос- научусь в Гугль видео выкладывать- обяз... Mar 21 2008, 13:55 Илья Цитата(andreichk @ Mar 21 2008, 21:55) Ту... Mar 21 2008, 15:50 andreichk я про такое даже не слышал, поэтому просто нарисов... Mar 22 2008, 00:59 Илья Цитата(andreichk @ Mar 22 2008, 08:59) я ... Mar 22 2008, 01:58 andreichk прямоугольник и видеосигнал Mar 22 2008, 10:32 Шпиндель Посмотрел с интересом, спасибо! Через время.. ... Mar 22 2008, 18:27 andreichk Цитата(Шпиндель @ Mar 22 2008, 19:27) Пос... Mar 23 2008, 13:41  Илья Цитата(andreichk @ Mar 23 2008, 21:41) Ок... Mar 23 2008, 14:59 alexsl to andreichk.
Добрый день. Уменя вопрос по схемоте... Mar 22 2008, 20:23 andreichk X-256, Y-239 Mar 23 2008, 15:13 Илья Цитата(andreichk @ Mar 23 2008, 23:13) X-... Mar 24 2008, 05:52  andreichk c небольшой доработкой,приданием ей ещё бОльшей ун... Mar 24 2008, 12:24   Илья Цитата(andreichk @ Mar 24 2008, 20:24) c ... Mar 24 2008, 14:33 andreichk а скажите мне, преобразование Фурье к осциллографу... Mar 24 2008, 17:05 Илья Цитата(andreichk @ Mar 25 2008, 01:05) а ... Mar 25 2008, 05:58 andreichk искал что-нибудь по теме почитать- наткнулся на эт... Mar 24 2008, 19:19 andreichk Ок , оставим пока товарища Фурье в сторонке покури... Mar 25 2008, 17:09 Илья Цитата(andreichk @ Mar 26 2008, 01:09) Чт... Mar 26 2008, 02:34 andreichk на АЦП подаётся фиксированная частота оцифровки 80... Mar 27 2008, 17:34 Илья Цитата(andreichk @ Mar 28 2008, 01:34) А ... Mar 29 2008, 05:45  andreichk ЦитатаА раньше (до изменения программы) такое случ... Mar 29 2008, 09:27   Илья Цитата(andreichk @ Mar 29 2008, 17:27) ad... Mar 29 2008, 12:10    andreichk Цитата(Илья @ Mar 29 2008, 13:10) Чтобы э... Mar 30 2008, 09:34     Илья Цитата(andreichk @ Mar 30 2008, 17:34) Ок... Mar 30 2008, 10:06      andreichk есть такое дело
Цитата.................... //----... Mar 30 2008, 10:10       Илья Цитата(andreichk @ Mar 30 2008, 18:10) ес... Mar 30 2008, 11:00        andreichk Цитата(Илья @ Mar 30 2008, 12:00) Да, это... Mar 30 2008, 11:05         Илья Цитата(andreichk @ Mar 30 2008, 19:05) за... Mar 30 2008, 11:26 andreichk ну это понятно, что перепишется.А как это связано ... Mar 30 2008, 11:39 Илья Цитата(andreichk @ Mar 30 2008, 19:39) ну... Mar 30 2008, 11:58  andreichk ЦитатаА при какой частоте тактирования FIFO они во... Mar 30 2008, 13:03   Илья Цитата(andreichk @ Mar 30 2008, 21:03) LA... Mar 30 2008, 13:16 andreichk можно написать так
#asm
BSF F8B.2 //L... Mar 30 2008, 13:38 Илья Цитата(andreichk @ Mar 30 2008, 21:38) мо... Mar 30 2008, 15:02 andreichk написал так, ошибок нет,но экран тухнет через пару... Mar 30 2008, 15:19 Илья Цитата(andreichk @ Mar 30 2008, 23:19) на... Mar 30 2008, 15:31 andreichk в самом прямом смысле тухнет.Пропадает не только л... Mar 30 2008, 15:33 Илья Цитата(andreichk @ Mar 30 2008, 23:33) в ... Mar 30 2008, 15:50 andreichk вот этой
*ptr++=input_b(); //чтение порта В
ну тог... Mar 30 2008, 15:59 Илья Цитата(andreichk @ Mar 30 2008, 23:59) во... Mar 30 2008, 16:04 andreichk Цитата.................... //#####################... Mar 30 2008, 16:27 Илья Цитата(andreichk @ Mar 31 2008, 00:27) вс... Apr 1 2008, 11:07 andreichk Илья, я уже запутался, что куда вписывать, сделайт... Apr 1 2008, 11:44
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|