Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Добавлено: Вт авг 23, 2011 13:39:30
Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Я где то давно натыкался на функцию вывода BMP только под BASIC, а под CVAVR мне не попадалась.uzamar писал(а):Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Да легко. Про SPI я уже писал, останется только какую-то файловую систему написать. Что б знать откуда какую картинку выковыривать.vlad145 писал(а):А если во внешней памяти хранить, типа AT45DB161, для картинок памяти хватит.
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значенияvlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Но если я правильно понял изменив данные параметры мы все равно будем иметь один шрифт, только другого размера. А два получается не как?Alex62 писал(а):Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значенияvlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
#define CHAR_W 8
#define CHAR_H 14
на соответствующие данным таблицы.
А я STm32 юзаю, еще более перспективней. С месяц назад подключил к нему дисплей от какого-то MP4 240x320 (HX8347) по 16 битной шине + карточку SD + вывод BMP. В планах сделать бортовик на свое авто.Alex62 писал(а):Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.uzamar писал(а):А я STm32 юзаю, еще более перспективней.
Спасибо, буду шерстить.Alex62 писал(а):Проанализируй процедуру lcd_picture() и по аналогии:
вводим переменную char font, и создаем условие.
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
.......
Ну и для всех размеров надо массив символов писать нужного размера.
У меня есть в наличии STM32 на базе ARM32F100, только с какой стороны подходить пока не знаю.Alex62 писал(а):Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.uzamar писал(а):А я STm32 юзаю, еще более перспективней.
А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
Какой контроллер дисплея? У меня, если надо, есть для HX8347 могу скинуть.Alex62 писал(а):А пока китайца 320х240 подключаю к XMEGA A3.
Пытаюсь поправить данный код для использования двух шрифтов.Alex62 писал(а):
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
..........
Код: Выделить всё
// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot, char Font)
{
char h,ch,p,mask;
CS= 0;
switch(rot)
{
default:
case 0:
lcd_reg(0x05);lcd_dat(0x0038);
lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(x,y);
lcd_reg(0x22);
lcd_write8(0x76);
break;
case 1:
lcd_reg(0x05);lcd_dat(0x0030);
lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
lcd_reg(0x21);lcd_dat8(y, x);
lcd_reg(0x22);
lcd_write8(0x76);
break;
}
if (Font==1)
{
for (h=0; h<CHAR_H; h++) // every column of the character
{
if (rot==1)
ch=ascii_tab[ c-32 ][h];
else
ch=ascii_tab[ c-32 ][CHAR_H-h-1];
mask=0x80;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
lcd_write(color);
}
else
{
lcd_write(bgcolor);
}
mask=mask/2;
} // for p
if (c>127) {
c=c-57; //убираем отсутствующую часть таблицы ASCII
};
}
}
else
{
for (h=0; h<CHAR_H; h++) // every column of the character
{
if (rot==1)
ch=ascii_tab2[ c-32 ][h];
else
ch=ascii_tab2[ c-32 ][CHAR_H-h-1];
mask=0x80;
for (p=0; p<CHAR_W; p++) // write the pixels
{
if (ch&mask)
{
lcd_write(color);
}
else
{
lcd_write(bgcolor);
}
mask=mask/2;
} // for p
}
};
CS= 1; // deselect display
}
// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W,y,str[j],orient, color); // 0 deg. rotated
j++;
}
}