andreichk 0 25 января, 2008 Опубликовано 25 января, 2008 (изменено) · Жалоба Привет народ.Вот решил я слепить себе нечто из указанных в теме компонентов.Нарисовал и изготовил макетку, красиво всё распаял и написал из надёрганных в сети кусков маленькую програмку для управления ЖКИ. Вначале, после нудного изучения даташитов никак не мог инициализировать ЖКИ, но потом разобрался что к чему и наконец он начал подавать признаки жизни и засветился. Компилятор, который я пользую - 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); Может кто из вас раскомментирует эту странную формулу и подправит её, если она неправильная. Изменено 25 января, 2008 пользователем andreichk Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 27 января, 2008 Опубликовано 27 января, 2008 · Жалоба Ура !!! Заработало !!! Подправил биты инициализации.Умею нарисовать кружёчки и линии. И даже примитивный осциллограф получился.Берёт сигнал с АЦП1, а АЦП0 как развёртка, получается хреновенько, но как сказал известный демократ- ПРОЦЕСС ПОШЁЛ. Теперь надо научиться выводить параметры и картинки.Может кто подскажет , куды кинуться? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arizona 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Теперь надо научиться выводить параметры и картинки.Может кто подскажет , куды кинуться? посмотри микрочиповскую реализацию www.microchip.com/graphics и немного по-русски http://microchip.com.ru/1010/Support/GUI.html Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба посмотри микрочиповскую реализацию www.microchip.com/graphics и немного по-русски http://microchip.com.ru/1010/Support/GUI.html Спасибо, будем поглядеть :beer: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 29 января, 2008 Опубликовано 29 января, 2008 · Жалоба Сегодня закончил оформление внешнего вида. Нарисовал сетку размером 320х240, но она вся не влезла, очевидно из-за каких-то ограничений.Пришлось поделить её на две части и с помошью процедуры перевёртыша загрузить два раза.Благодаря двухслойной функции экрана сетка не затирается.Так же нарисовал несколько маленьких картинок и подгрузил их для красявости. Ниже привожу текст процедуры и фото void bild(unsigned int16 addr,unsigned char data) { send_msg( 0x46, 1, 0, 1, 0 ); Output_bit(LCD_A0 ,0); write_data( (addr) & 0x00ff ); write_data( (addr)>>8 & 0x00ff ); send_msg( 0x42, 1, 0, 1, 0 );// Output_bit(LCD_A0 ,0); Output_d(data); Output_bit(LCD_CS,0);// Output_bit(LCD_WR,0); // Output_bit(LCD_WR,1);// Output_bit(LCD_CS,1);// } void DrawImage(unsigned int16 y1,unsigned int16 y2 )// нормальный вид { unsigned int16 addr, x,y,i;i=0; for (y = y1; y < y2; y++) { for (x = 0; x < 264;x=x+8) { addr = 40 * y + x/8 - 1 ;//10802;//расчитать байт адреса, содержащего пиксель bild( addr,Grid_8x4[i++]);// работает } } }//--------------------------OK //##################################################################### void DrawImage11(unsigned int16 y1,unsigned int16 y2 )// перевёртыш { unsigned int16 addr, x,y,i;i=3959; for (y = y1; y < y2; y++)// { for (x = 264; x > 0;x=x-8) { addr = 40 * y + x/8 - 2 ;//10802;//расчитать байт адреса, содержащего пиксель bild( addr,Grid_8x4[i--]);// работает } } }//--------------------------OK //##################################################################### Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 31 января, 2008 Опубликовано 31 января, 2008 · Жалоба Хочу попробовать перенести все картинки в последовательную память с I2C-BUS протоколом, а то они много места в процессоре занимают. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость DL36 1 февраля, 2008 Опубликовано 1 февраля, 2008 · Жалоба Сегодня закончил оформление внешнего вида. Нарисовал сетку размером 320х240, но она вся не влезла, очевидно из-за каких-то ограничений.Пришлось поделить её на две части и с помошью процедуры перевёртыша загрузить два раза.Благодаря двухслойной функции экрана сетка не затирается.Так же нарисовал несколько маленьких картинок и подгрузил их для красявости. Ниже привожу текст процедуры и фото //##################################################################### void DrawImage11(unsigned int16 y1,unsigned int16 y2 )// перевёртыш { unsigned int16 addr, x,y,i;i=3959; for (y = y1; y < y2; y++)// { for (x = 264; x > 0;x=x-8) { addr = 40 * y + x/8 - 2;//10802;//расчитать байт адреса, содержащего пиксель bild( addr,Grid_8x4[i--]);// работает } } }//--------------------------OK //##################################################################### Не вдаваясь в подробности, просто по оформлению, используй теги под символом #. Если кто смотреть будет, так читать легче. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба Слепил сегодня процедурку рисования кривых.Теперь вот голову ломаю . как это всё синхронизировать, чтобы картинка устойчивой была.Подскажите плиз //##################################################################### void front(unsigned int8 x,unsigned int8 y_anf,unsigned int8 y_end) {unsigned int8 y; for (y = y_anf ; y > y_end; y--) { pixel(x,y,1); } }//--------------------------OK //##################################################################### void spad(unsigned int8 x,unsigned int8 y_anf,unsigned int8 y_end) {unsigned int8 y; for ( y = y_anf ; y < y_end ; y++ ) { pixel(x,y,1); } }//--------------------------OK //##################################################################### void pix(unsigned int8 y_pos)// рисуем кривую, типа синусоиды и пр. {unsigned int8 x , y , yy ; x = 1; y = 0; yy = 0; for(;;){ x++; if (x==255) {x=1;setCursorAddress(0x2581);clear_graphic();} delay_ms(Zeitablenkung_x(0)); //развёртка Sec/Div yy=y; y = input_b()+y_pos; // y = Amplitude_y(1) + y_pos-150; if (yy>y) front(x,yy,y); // Рисуем фронт if (yy<y) spad(x,yy,y); // Рисуем спад pixel(x,y,1);// Рисуем вершину } }//--------------------------OK //##################################################################### Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FDA 0 7 февраля, 2008 Опубликовано 7 февраля, 2008 · Жалоба Вот готовый видеоконтроллер для управления ЖКИ на базе SED1335: http://www.telesys.ru/electronics/projects.php?do=p148 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 7 февраля, 2008 Опубликовано 7 февраля, 2008 · Жалоба вы мне его уже предлагали, только за деньги я и сам купить умею. Коммерческие предложения меня не интересуют, так что спасибо.... не надо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Itch 0 7 февраля, 2008 Опубликовано 7 февраля, 2008 · Жалоба А почему у вас экран малинового цвета, это пленка наклеена или подсветку поменяли? Для рисования рекомендую посмотреть библиотечку uc/GUI, драйвер для этого контроллера там уже есть, возможностей у нее много, а самое главное - хоть как-то систематизируется подход. В будущем сможете безболезненно поменять один дисплей на другой с расширением количества цветов например. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 8 февраля, 2008 Опубликовано 8 февраля, 2008 · Жалоба да цвет любой можно сотворить- плёночку цветную под экран сунул и всё.А вообще он ЧБ. Насчёт uc/GUI не нашёл ничего.У меня поисковик только на какие-то китайские сайты выводит, ничего не понятно.Может ссылочку кините.Спасибо заранее Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Itch 0 8 февраля, 2008 Опубликовано 8 февраля, 2008 · Жалоба китайские сайты нормально читаются через http://babelfish.altavista.com/ язык - chinese-simp. там и ссылки есть. можно также с электроникса скачать, но надо быть "своим". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 10 февраля, 2008 Опубликовано 10 февраля, 2008 · Жалоба Выяснил причину по которой HEX-файл неполностью зашивался в процессор. Оказывается программа прошивки IC-Prog1.6А програмирует только до адреса 0х1000.Дальше сплошные FFFF. Выкинул её нафик.Теперь програмирую другой прогой - P18 Parallelportbrenner V1.8 , взятой с сайта http://www.sprut.de. По ходу научился выводить тексты в графическом режиме и переменные величины. //########## выводим на экран числа в графическом режиме ################## void displayVoltage(int wert) { char voltage[9]; sprintf(voltage, "%f",(float)(1.715*(5.00 - wert * .01960784))); // преобразуем в текст voltage[4] = '\0'; //ограничиваем тремя знаками rect(5, 230, 29, 237, 1,0); //стираем старое значение text57(5, 230, voltage, 1, 1); //выводим новое значение }//--------------------------OK //#################################################### Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andreichk 0 11 февраля, 2008 Опубликовано 11 февраля, 2008 · Жалоба частота 88 Гц, амплитуда 2.15 вольт Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться