Юзаем дисплеи от сотовых и других потаскунчиков.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
uzamar писал(а):vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.
Я где то давно натыкался на функцию вывода BMP только под BASIC, а под CVAVR мне не попадалась.
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
А если во внешней памяти хранить, типа AT45DB161, для картинок памяти хватит.
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
vlad145 писал(а):А если во внешней памяти хранить, типа AT45DB161, для картинок памяти хватит.
Да легко. Про SPI я уже писал, останется только какую-то файловую систему написать. Что б знать откуда какую картинку выковыривать.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
vlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения
#define CHAR_W 8
#define CHAR_H 14
на соответствующие данным таблицы.
Прикрепляю програмки создания фонтов. Сам их не юзал. Попробуй.
- Вложения
-
- s65fc8x14.zip
- (253.91 КБ) 284 скачивания
-
- s65fc8x12.zip
- (253.91 КБ) 254 скачивания
Последний раз редактировалось Alex62 Вт авг 23, 2011 15:16:41, всего редактировалось 1 раз.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):vlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения
#define CHAR_W 8
#define CHAR_H 14
на соответствующие данным таблицы.
Но если я правильно понял изменив данные параметры мы все равно будем иметь один шрифт, только другого размера. А два получается не как?
Ас нокиевским дисплеем я ошибся, не 1100 а 3310. Там есть функция LcdStr в которой есть параметр LcdFontSize, изменяя который получаем шрифт двойного размера.
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Ну почему же. Микроконтроллер очень гибкий инструмент. Можно (как в том примере вывода картинки с ротацией) добавить в процедуру вывода символа еще один параметр, и в зависимости от его значения выводить шрифт того или иного размера. Причем их может быть не 2, а много размеров.
PS. Не надо так обширно цитировать. Ветка разрастется, и будет сложно найти полезное зерно.
PS. Не надо так обширно цитировать. Ветка разрастется, и будет сложно найти полезное зерно.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Для меня это видимо ещё сложно изменить параметр в функции, тем более надо знать какой.
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Проанализируй процедуру lcd_picture() и по аналогии:
вводим переменную char font, и создаем условие.
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
{
вывод шрифта одного размера
}
else
{
вывод шрифта другого размера
};
Это для двух размеров. Для большего количества используй переключатель switch/
switch(font)
{
default:
case 0:
первый размер;
case 1:
второй размер;
case 2:
третий размер;
}
Ну и для всех размеров надо массив символов писать нужного размера.
вводим переменную char font, и создаем условие.
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
{
вывод шрифта одного размера
}
else
{
вывод шрифта другого размера
};
Это для двух размеров. Для большего количества используй переключатель switch/
switch(font)
{
default:
case 0:
первый размер;
case 1:
второй размер;
case 2:
третий размер;
}
Ну и для всех размеров надо массив символов писать нужного размера.
Последний раз редактировалось Alex62 Вт авг 23, 2011 16:02:57, всего редактировалось 1 раз.
Общаюсь на ТЫ. Без расшаркиваний.
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
А я STm32 юзаю, еще более перспективней. С месяц назад подключил к нему дисплей от какого-то MP4 240x320 (HX8347) по 16 битной шине + карточку SD + вывод BMP. В планах сделать бортовик на свое авто.
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
uzamar писал(а):А я STm32 юзаю, еще более перспективней.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.
А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):Проанализируй процедуру lcd_picture() и по аналогии:
вводим переменную char font, и создаем условие.
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
.......
Ну и для всех размеров надо массив символов писать нужного размера.
Спасибо, буду шерстить.
Владимир
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):uzamar писал(а):А я STm32 юзаю, еще более перспективней.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.
А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
У меня есть в наличии STM32 на базе ARM32F100, только с какой стороны подходить пока не знаю.
Владимир
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):А пока китайца 320х240 подключаю к XMEGA A3.
Какой контроллер дисплея? У меня, если надо, есть для HX8347 могу скинуть.
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Скорее всего SSD1298 . В принцыпе даташит есть, инициализацию тоже накопал, думаю проблем быть не должно. Одна проблема - время. Нехватат.
Общаюсь на ТЫ. Без расшаркиваний.
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Alex62 писал(а):
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
..........
Пытаюсь поправить данный код для использования двух шрифтов.
Пишу в CVAVR вот так:
Код: Выделить всё
// поместить символ в графическую память дисплея
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++;
}
}
При компиляции выпадает ошибка:
too few arguments in function call
В какую сторону рыть ума не приложу. Выручайте!
Владимир
-
vlad145
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пт мар 06, 2009 22:54:37
- Откуда: Курган
- Контактная информация:
Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Уважаемый Alex62. Ещё одна засада по Вашему проекту. Я не могу вывести закрашенную область, просто ничего не выводится. А если выводить квадрат с закрашиванием, то квадрат рисуется, а закрашивание процентов на 10. 

Владимир