реклама на сайте
подробности

 
 
30 страниц V   1 2 3 > »   
Closed TopicStart new topic
> SED1335,PIC18F4550 и LCD320x240, разбираем по косточкам модуль SED1335.c
andreichk
сообщение Jan 25 2008, 21:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 27 2008, 04:06
Сообщение #2


Знающий
****

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



Ура !!! Заработало !!! Подправил биты инициализации.Умею нарисовать кружёчки и линии. И даже примитивный осциллограф получился.Берёт сигнал с АЦП1, а АЦП0 как развёртка, получается хреновенько, но как сказал известный демократ- ПРОЦЕСС ПОШЁЛ. Теперь надо научиться выводить параметры и картинки.Может кто подскажет , куды кинуться?


--------------------
Go to the top of the page
 
+Quote Post
arizona
сообщение Jan 28 2008, 07:38
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 1-11-06
Пользователь №: 21 855



Цитата(andreichk @ Jan 27 2008, 07:06) *
Теперь надо научиться выводить параметры и картинки.Может кто подскажет , куды кинуться?


посмотри микрочиповскую реализацию
www.microchip.com/graphics
и немного по-русски
http://microchip.com.ru/1010/Support/GUI.html
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 28 2008, 18:26
Сообщение #4


Знающий
****

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



Цитата(arizona @ Jan 28 2008, 08:38) *
посмотри микрочиповскую реализацию
www.microchip.com/graphics
и немного по-русски
http://microchip.com.ru/1010/Support/GUI.html

Спасибо, будем поглядеть beer.gif


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 29 2008, 22:32
Сообщение #5


Знающий
****

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



Сегодня закончил оформление внешнего вида. Нарисовал сетку размером 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
//#####################################################################


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 31 2008, 19:18
Сообщение #6


Знающий
****

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



Хочу попробовать перенести все картинки в последовательную память с I2C-BUS протоколом, а то они много места в процессоре занимают.


--------------------
Go to the top of the page
 
+Quote Post
DL36
сообщение Feb 1 2008, 10:15
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(andreichk @ Jan 30 2008, 02:32) *
Сегодня закончил оформление внешнего вида. Нарисовал сетку размером 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
//#####################################################################


Не вдаваясь в подробности, просто по оформлению, используй теги под символом #.
Если кто смотреть будет, так читать легче.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 4 2008, 23:07
Сообщение #8


Знающий
****

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



Слепил сегодня процедурку рисования кривых.Теперь вот голову ломаю . как это всё синхронизировать, чтобы картинка устойчивой была.Подскажите плиз


//#####################################################################
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
//#####################################################################


--------------------
Go to the top of the page
 
+Quote Post
FDA
сообщение Feb 7 2008, 13:29
Сообщение #9





Группа: Участник
Сообщений: 8
Регистрация: 23-12-04
Пользователь №: 1 632



Вот готовый видеоконтроллер для управления ЖКИ на базе SED1335:
http://www.telesys.ru/electronics/projects.php?do=p148
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 7 2008, 16:40
Сообщение #10


Знающий
****

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



вы мне его уже предлагали, только за деньги я и сам купить умею.
Коммерческие предложения меня не интересуют, так что спасибо.... не надо


--------------------
Go to the top of the page
 
+Quote Post
Itch
сообщение Feb 7 2008, 21:40
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



А почему у вас экран малинового цвета, это пленка наклеена или подсветку поменяли?
Для рисования рекомендую посмотреть библиотечку uc/GUI, драйвер для этого контроллера там уже есть, возможностей у нее много, а самое главное - хоть как-то систематизируется подход. В будущем сможете безболезненно поменять один дисплей на другой с расширением количества цветов например.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 8 2008, 09:31
Сообщение #12


Знающий
****

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



да цвет любой можно сотворить- плёночку цветную под экран сунул и всё.А вообще он ЧБ.
Насчёт uc/GUI не нашёл ничего.У меня поисковик только на какие-то китайские сайты выводит, ничего не понятно.Может ссылочку кините.Спасибо заранее


--------------------
Go to the top of the page
 
+Quote Post
Itch
сообщение Feb 8 2008, 18:29
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



китайские сайты нормально читаются через http://babelfish.altavista.com/ язык - chinese-simp. там и ссылки есть. можно также с электроникса скачать, но надо быть "своим".
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 10 2008, 17:41
Сообщение #14


Знающий
****

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



Выяснил причину по которой 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
//####################################################


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 11 2008, 22:39
Сообщение #15


Знающий
****

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



частота 88 Гц, амплитуда 2.15 вольт


--------------------
Go to the top of the page
 
+Quote Post

30 страниц V   1 2 3 > » 
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016