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

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

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


» РАДИОБЛОГИ
Модернизация переговорного устройства домофона
О доработке и ремонте проигрывателей винила
Схема сирены сигнализации с аккумулятором
Самый маленький SMD RGB LED куб
Автозапуск двигателя автомобиля на ATTiny13
Светодиодная лампа Camelion: ремонту не подлежит
Оксид-иодид висмута (BiOI) - основа будущих солнечных батарей
Часы настольные на ИН-14 индикаторах - схема и фото


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

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

      
   Из предыдущей статьи мы научились подключить 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)

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

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


Схемы наши, лайки ваши - всё по честному. Оцените:


ЭЛЕКТРИЧЕСКАЯ НАГРУЗКА

ЭЛЕКТРИЧЕСКАЯ НАГРУЗКА     Простой вариант нагрузки, для настройки радиосхем и источников питания.

СВЕТОДИОДНОЕ СЕРДЦЕ

СВЕТОДИОДНОЕ СЕРДЦЕ     Светодиодное сердце, фотографии и описание схемы.

БЛОК ПИТАНИЯ СВОИМИ РУКАМИ

БЛОК ПИТАНИЯ СВОИМИ РУКАМИ     Схема и фотографии простого блока питания на диапазон напряжений 0..10 вольт.

ГРОМКОГОВОРИТЕЛЬ

ГРОМКОГОВОРИТЕЛЬ     Самодельный мощный громкоговоритель для авто.


» ПОИСК СХЕМ

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


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