СОЗДАНИЕ СИМВОЛОВ И ВЫВОД ИХ НА ДИСПЛЕЙ

     простые интересные РАДИОСХЕМЫ сделанные своими руками

» ДАТАШИТ
Например: TDA2050


» РАДИОБЛОГИ
Вольтметр с растянутой шкалой. Расчёт диапазона измерений
Самодельная штанга для металлодетектора
Контроллер ЗУ для Li-ion - TC4054 (STC4054, LTC4054)
Двухчастотный датчик металлоискателя
Еще в копилку доработок дешевых фонарей
Сетевой регулятор мощности на транзисторе
Простой преобразователь напряжения 12 в 220 вольт
Маленький настольный сверлильный станок


Радиосхемы » Устройства на микроконтроллерах

СОЗДАНИЕ СИМВОЛОВ И ВЫВОД ИХ НА ДИСПЛЕЙ

      
   Из предыдущей статьи мы научились подключить LCD дисплей к микроконтроллеру и выводить на него символы из имеющегося массива. Теперь попробуем разобраться как создавать свои массивы с символами и писать функции для вывода их на дисплей. Начнем с того, что разрешение нашего дисплея 96x68 пикселей. Значит картинку большего разрешения вывести ми не сможем. Теперь нам надо из рисунка сделать массив. Для этой цели есть много разных программ. Мы будем пользоваться Image generate. Она находится в архиве. Кому она не нравится, тот может погуглить и найти множество других.

Скриншот картинки в программе

Скриншот картинки в программе

   Итак, запускаем программу. Устанавливаем размер картинки по осям x, y. Максимальное значение x = 96, а по оси y = 68. Меньше эти цифры могут быть, но никак не больше. Дальше, масштаб выберем 8. У кого очень зоркий глаз, или большой монитор, эту величину может не трогать. После установки размера и масштаба жмем на иконку «Новый», или «Установить новый размер». Выберем размер 96x64. Далее можно нажать на иконку «Картинка», и загрузить точечный рисунок в формате «bmp», или нарисовать с помощью мышки свой. Нарисуем свой рисунок. Конечно художник из меня плохой, но как есть. Нарисовал дом и автомобиль. Дом скорей похож на туалет :-) Дальше жмем иконку «Массив». Видим кучу всяких цифр. Копируем их в наш проект. Изменим название массива на deg_96_64. Это сделано для удобства. Сразу понятно какой размер картинки. Теперь надо как то вывести ее на дисплей. Для этого напишем функцию вывода под данное распределение.

/////////////////////////

void char_96_64 (char x, char y){

unsigned int i;
gotoxy(x,y);
for ( i = 0; i < 96; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}

gotoxy(x,y+1);
for ( i = 96; i < 192; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+2);
for ( i = 192; i < 288 ; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+3);
for ( i = 288; i < 384 ; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+4);
for ( i = 384; i < 480; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+5);
for ( i = 480; i < 576; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+6);
for ( i = 576; i < 672; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}
gotoxy(x,y+7);
for ( i = 672; i < 768; i++ )
{
lcd_write(DATA,deg_96_64[i]);
}

}

////////////////////////////

СОЗДАНИЕ СИМВОЛОВ И ВЫВОД ИХ НА ДИСПЛЕЙ - нормальное

Нормальное изображение

   Теперь попробую разъяснить что к чему. В самом начале название самой функции. Дальше запомним два числа – значение по оси x = 96, и цифру в массиве в квадратных скобках [768]. Зададим локальную переменную unsigned int i ; . Потом укажем координаты на экране для вывода одной строки. В цикле for зададим значение переменной I=0; i<96;i++. Это означает, что мы будем читать поочередно значения из массива от 0 до 96 и выводить их на дисплей функцией  

lcd_write(DATA,deg_96_64[i]);

   Дальше начнем с другой строки заново. Только теперь от 96 до 192. К оставшемуся числу добавляем значение по оси x. В данном случае это 96. Дальше третья строка и так далее. Так же с каждой новой функцией gotoxy(x,y); увеличиваем значение y. Думаю здесь все понятно.

СОЗДАНИЕ СИМВОЛОВ И ВЫВОД ИХ НА ДИСПЛЕЙ - инвертированное

Инвертированное изображение

   Теперь узнаем как инвертировать изображение. То есть сделать не закрашенные участки закрашенными, и наоборот. Нам надо с помощью блокнота открыть файл библиотеки дисплея 1100.lib, и найти функцию void lcd_init(void). Найти в ней строки:

//lcd_write(CMD,0xa7); //- invert display

lcd_write(CMD,0xa6); //- normal display (non inverted)

   Ненужную строку закомментировать и еще раз скомпилировать проект. Все исходники и функция вывода - тут. А теперь займёмся практической конструкцией - электронными часами с ЖК. Если возникнут вопросы, то обращайтесь на форум. Материал подготовил Бухарь.

   Обсудить статью СОЗДАНИЕ СИМВОЛОВ И ВЫВОД ИХ НА ДИСПЛЕЙ


КИТАЙСКОЕ ПРОИЗВОДСТВО

КИТАЙСКОЕ ПРОИЗВОДСТВО     Уникальная возможность посетить китайское производство и узнать многие технологические секреты.

РУЧКА С ПОДСВЕТКОЙ

РУЧКА С ПОДСВЕТКОЙ     Изготовление самодельной пишущей ручки со светодиодной подсветкой.

РАЦИЯ FM ДИАПАЗОНА

     Схема и фотографии собранных печатных плат простой радиостанции ФМ диапазона.

ПРИМЕНЕНИЕ ЭЛЕКТРОШОКЕРА

ПРИМЕНЕНИЕ ЭЛЕКТРОШОКЕРА     Реальные эксперименты с электрошокером. Неожиданные результаты и выводы.


» ПОИСК СХЕМ



» РАДИОЭЛЕМЕНТЫ

Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2018, "Радиосхемы". Все права защищены. Почта