Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него. Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения #define CHAR_W 8 #define CHAR_H 14 на соответствующие данным таблицы. Прикрепляю програмки создания фонтов. Сам их не юзал. Попробуй.
А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения #define CHAR_W 8 #define CHAR_H 14 на соответствующие данным таблицы.
Но если я правильно понял изменив данные параметры мы все равно будем иметь один шрифт, только другого размера. А два получается не как? Ас нокиевским дисплеем я ошибся, не 1100 а 3310. Там есть функция LcdStr в которой есть параметр LcdFontSize, изменяя который получаем шрифт двойного размера.
Ну почему же. Микроконтроллер очень гибкий инструмент. Можно (как в том примере вывода картинки с ротацией) добавить в процедуру вывода символа еще один параметр, и в зависимости от его значения выводить шрифт того или иного размера. Причем их может быть не 2, а много размеров.
PS. Не надо так обширно цитировать. Ветка разрастется, и будет сложно найти полезное зерно.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Проанализируй процедуру 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: третий размер; }
Ну и для всех размеров надо массив символов писать нужного размера.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Последний раз редактировалось Alex62 Вт авг 23, 2011 16:02:57, всего редактировалось 1 раз.
Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него. Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
А я STm32 юзаю, еще более перспективней. С месяц назад подключил к нему дисплей от какого-то MP4 240x320 (HX8347) по 16 битной шине + карточку SD + вывод BMP. В планах сделать бортовик на свое авто.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда. А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда. А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
У меня есть в наличии STM32 на базе ARM32F100, только с какой стороны подходить пока не знаю.
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++; } }
Уважаемый Alex62. Ещё одна засада по Вашему проекту. Я не могу вывести закрашенную область, просто ничего не выводится. А если выводить квадрат с закрашиванием, то квадрат рисуется, а закрашивание процентов на 10.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения