|
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 30 2008, 16:27
|

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

|
Цитата .................... //#################################################################### .................... //--------------- собственно кривая --------------------------- .................... unsigned char *ptr=Buf; .................... void curve_A(unsigned int8 y_pos_A){ .................... unsigned int8 x,y, yy; .................... x=2; * 26E4: MOVLW 02 26E6: MOVLB 1 26E8: MOVWF x6D .................... // for(x=0;x<254;x++){ .................... while(x++){ 26EA: MOVF x6D,W 26EC: INCF x6D,F 26EE: XORLW 00 26F0: BZ 270E .................... #asm .................... BSF 0x0F8B,0x2//LATC2=0; 26F2: BSF F8B.2 .................... #endasm .................... *ptr=input_b(); //чтение порта В 26F4: MOVFF 15F,FE9 26F8: MOVFF 160,FEA 26FC: MOVLW FF 26FE: MOVWF F93 2700: MOVFF F81,FEF .................... ptr++; 2704: INCF x5F,F 2706: BTFSC FD8.2 2708: INCF x60,F .................... #asm .................... BCF 0x0F8B,0x2//LATC2=1; 270A: BCF F8B.2 .................... #endasm .................... //Output_bit(READ_FIFO_A ,0); //PIN_C2. разрешить .................... //Buf[x]=input_b(); //чтение порта В .................... //Output_bit(READ_FIFO_A ,1); //PIN_C2.запретить .................... } 270C: BRA 26EA .................... for(x=1;x<255;x++){ 270E: MOVLW 01 2710: MOVWF x6D 2712: INCFSZ x6D,W 2714: BRA 2718 2716: BRA 27A4 .................... yy = adcA;//y 2718: MOVFF 154,16F .................... adcA = (Buf[x-1] > 200) ? 200 : Buf[x-1]; //ограничитель до выбранной величины 271C: MOVLW 01 271E: SUBWF x6D,W 2720: CLRF 03 2722: ADDLW 55 2724: MOVWF FE9 2726: MOVLW 00 2728: ADDWFC 03,W 272A: MOVWF FEA 272C: MOVF FEF,W 272E: SUBLW C8 2730: BC 2736 2732: MOVLW C8 2734: BRA 2748 2736: MOVLW 01 2738: SUBWF x6D,W 273A: CLRF 03 273C: ADDLW 55 273E: MOVWF FE9 2740: MOVLW 00 2742: ADDWFC 03,W 2744: MOVWF FEA 2746: MOVF FEF,W 2748: MOVWF x54 .................... adcA = (255 - adcA) + y_pos_A; // разворот на 180° по вертикали и сдвиг 274A: MOVLW FF 274C: BSF FD8.0 274E: SUBFWB x54,W 2750: ADDWF x6C,W 2752: MOVWF x54 .................... if (yy>adcA) front(x,yy,adcA); // Рисуем фронт A 2754: MOVF x6F,W 2756: SUBWF x54,W 2758: BC 276E 275A: MOVFF 16D,170 275E: MOVFF 16F,171 2762: MOVFF 154,172 2766: MOVLB 0 2768: CALL 1DEC 276C: MOVLB 1 .................... if (yy<adcA) spad(x,yy,adcA); // Рисуем спад A 276E: MOVF x54,W 2770: SUBWF x6F,W 2772: BC 2788 2774: MOVFF 16D,170 2778: MOVFF 16F,171 277C: MOVFF 154,172 2780: MOVLB 0 2782: CALL 1E18 2786: MOVLB 1 .................... pixel(x,adcA,1); // Рисуем вершину A 2788: CLRF x8D 278A: MOVFF 16D,18C 278E: CLRF x8F 2790: MOVFF 154,18E 2794: MOVLW 01 2796: MOVWF x90 2798: MOVLB 0 279A: CALL 0BE8 .................... } 279E: MOVLB 1 27A0: INCF x6D,F 27A2: BRA 2712 .................... } 27A4: MOVLB 0 27A6: RETLW 00 .................... .................... //#### всё равно тухнет.Я так думаю, что там всё правильно и нужно.Наверное не стоит там ковыряться Цитата 12 МБ.... Ограбили  я на 43 наснимал !!!  давайте лучше это строить, только я не знаю с какого боку подьезжать Цитата //############################################## void spectrum_analizator(void) { realfastfouriertransform( Buf,128,0); } //##############################################
Сообщение отредактировал andreichk - Mar 30 2008, 16:28
--------------------
|
|
|
|
|
Apr 1 2008, 11:07
|
Частый гость
 
Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630

|
Цитата(andreichk @ Mar 31 2008, 00:27)  всё равно тухнет.Я так думаю, что там всё правильно и нужно. Нет, вы не правы, там половина операций ненужна... но я заметил что не происходит инициализация указателя ptr, при входе в функцию, хотя у меня написано (ненравится мне этот компилятор, блин...) напишите явное присвоение Код ptr=Buf; перед циклом Код while(x++) Просто происходило следующее: при каждом входе в процедуру, указатель все увеличивался и увеличивался... и затирал все подряд... также абсолютнно бессмыслены следующие строчки: Код 26FC: MOVLW FF 26FE: MOVWF F93 их нужно максимум выполнить 1 раз перед циклом. А проверка условия выхода из цикла: Код 26EA: MOVF x6D,W 26EC: INCF x6D,F 26EE: XORLW 00 26F0: BZ 270E Это же просто ужас!!!  Они что не знают инструкции INCFSZ ??? Я бы написал весь цикл в 5 асмовских инструкций, и выполнялся бы он за 6 тактов процессора... Цитата(andreichk @ Mar 31 2008, 00:27)  давайте лучше это строить, только я не знаю с какого боку подьезжать Ну вы хоть начните подъезжать!!!  Может вопросы по конкретнее появятся...
|
|
|
|
Сообщений в этой теме
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, 08:27 Илья Цитаталинии, прямоугольники и кружки рисовать умее... Mar 22 2008, 13:53  andreichk Цитата(Илья @ Mar 22 2008, 14:53) Я сам л... Mar 22 2008, 14:31   Илья Вот, собственно, у меня получилась такая процедурк... Mar 23 2008, 04:32 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 Илья, я уже запутался, что куда вписывать, сделайт... Apr 1 2008, 11:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|