Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

По просьбам читателей, я занялся изучением графических дисплеев. Наконец, можно сказать что определенные успехи есть.

Статья долго не появлялась, потому что не хотелось использовать для этих целей сторонние библиотеки, в случае глюков добиться у их разработчиков вразумительных ответов практически не возможно. Про встроенную библиотеку я знал, но примеров ее использования найти не удавалось. Решение оказалось как всегда простым — в комплекте у codevision идут примеры, но так как я использую старую версию, то у меня этих примеров не было.

Для опытов использовался WG12864A-YYK-TN, 128х64 точек, в нем используется контроллер KS0108, соответственно на сайте можно найти пример Examples for the Samsung KS0108 (HD61202) graphic LCD controller. С небольшой пометкой «Require CodeVisionAVR Evaluation or Standard V2.05.2 or later» , т.е. пришло время переходить на более новую версию.

Предупреждая вопросы по другим типам графических дисплеев, в т.ч. и Nokia3310, сразу скажу, библиотеки есть, примеры есть — изучайте, сложностей быть не должно.

Тем не менее, прошивка из примера упорно не хотела работать в протеусе, то что она работает я не сомневался, косяк явно был в протеусе. В конце концов выяснилась интересная штука, прошивка заточена под частоту 16МГц, такую же частоту указывал на Atmega128 в протеусе, однако на экране вылезали кракозябы. Попробовал уменьшить частоту и чудо — все заработало на частоте 2 и 4МГц. Так что рекомендую сразу отлаживаться на железе.

Теперь переходим непосредственно к описанию. Работать с графическим дисплеем, оказалось ничуть не сложнее, чем с обычным символьным жк. Схема немного больше чем у символьного экрана. Микроконтроллер использован ATmega8. Назначить ножки можно абсолютно любые, мне приглянулись эти.

18-1

Обратите внимание, если вы используете ks0108, то у него 2 типа битов выбора контроллера CS1 и CS2, у меня они оказались инверсные, т.е. /CS1 и /CS2, какие будут у вас смотрите в дш на свой дисплей.

18-2

#include <mega8.h>
#include <glcd.h>
#include <font5x7.h>
 
void main(void)
{
GLCDINIT_t glcd_init_data;
 
PORTB=0x00;
DDRB=0x00;
 
PORTC=0x00;
DDRC=0x00;
 
PORTD=0x00;
DDRD=0x00;
 
glcd_init_data.font=font5x7;
glcd_init(&glcd_init_data);
 
while (1)
      {
      glcd_line(0,5,127,5);
      glcd_line(0,5,0,58);
      glcd_outtextxyf(25,20,"AVR-START.RU");
      glcd_outtextxyf(26,30,"electronics");
      glcd_outtextxyf(20,40,"for beginners!");
      glcd_line(0,58,127,58);
      glcd_line(127,5,127,58);
      }
}
}

Теперь по порядку:
Подключаем библиотеку для работы с графическим дисплеем

#include <glcd.h>

Подключаем файл с нарисованными заранее шрифтами

#include <font5x7.h>

Инициализация данных

GLCDINIT_t glcd_init_data;
glcd_init_data.font=font5x7;
glcd_init(&amp;glcd_init_data);

Рисуем линию, (х1,y1,x2,y2), т.е. начальная точка с координатами 0;5 конечная 127;5

glcd_line(0,5,127,5);

Выводим на экран текст 25, 20 начальная координата X,Y.

glcd_outtextxyf(25,20,"AVR-START.RU");

В результате, все заработало сразу, без всяких танцев с бубном.
18-3
Если руки дойдут, попробую повозиться с картинками. Прошивка и схема в протеусе доступны здесь

71 комментарий: Урок 18. Знакомство с графическим дисплеем

  • Есть, но я не думал что это настолько принципиально. До этого проблем с работоспособностью МК у меня не вызывало.

  • як вивести змінну???

  • Мужики подскажите как на ардуинке Mega2560 подключить дисплей 480х320
    используя Codevision
    используя среду ардуино все работает. Но я привык к Codevision
    Не хочу с ним расставаться. Но пора переходить на хорошую графику
    Спасибо всем кто откликнулся

  • Да там контроллер дисплея на HX8357B

  • помогите подключить дисплей с контролером ST7920
    P.S. сайт супер

  • Владимир, ищите библиотеку под свой дисплей, легкого пути нет.

  • Уважаемый admin! Подскажите, пожалуйста. программу, которая сможет скомпиллировать код из данной статьи без ошибок.

  • cavr 3.12

  • Привет всем)
    Ребята, кто пользуется LCD Vision, из личных наблюдений, когда рисуешь картинку, то все работает норм, но когда ее генерируешь с готового изображения, то увы ничего не получается…
    а со шрифтами как???
    а то я пробую сгенерировать из системного шрифта и по итогу лажа, то чем там вообще все как-то путано, может и я туплю… просто скажите получалось ли у кого…
    самому рисовать не хочется, я же художник от слова худо…))

  • значит проблема в формате изображения, помнится был какой то гемор с версией bmp, насколько я помню стандартный paint сохранял в старом bmp, который нормально конвертится.

  • А шрифты как?
    цифры хочу)) не отдельными же картинками их лепить ))

  • честно не вижу проблемы в 18.3 уроке все подробно рассказано http://avr-start.ru/?p=1423

  • Я читал эту статью, просто хочется не самому рисовать, а сгенерировать с системного…))
    Вы простите что задаю нереально глупые вопросы, просто эта тема очень интересна мне, с детства хотел научиться программировать и тут взялся, постоянно упираюсь в какие-то глюки или сам что-то провтыкаю, а спросить не у кого…((

  • Давно не юзал lcd vision, но там есть пункт меню file-import system font

  • ну я этим и пользовался, только никак не могу подключить библиотеку, CVavr постоянно ругается, вот и я в непонятках, толи с прогой что-то не то, толи со мною…
    беда в том что опыта нет, я с этим столкнулся впервые и фантазии уже не хватает придумать решение…
    может быть что программа глючит из за того что пиратская?
    кстати все говорят что для CV море библиотек, я почему-то кроме тех что идут в наборе с программой больше нигде их не смог найти…
    я еще никогда не чувствовал себя таким тормозом…

  • Кстати сколько не качал версий CV никак не найду такую чтобы поддержала кирилицу, в то время когда для других проблем нет…
    короче если я с этим не разберусь у меня начнутся проблемы из самооценкою..))

  • Ярослав, только что проверил фича работает. По поводу пиратский не пиратский, вы уже сами для себя решайте, обсуждать тут нечего. Я уже писал что юзал демо версию и там были ограничения.

  • разобрался со всеми проблемами которые возникали по ходу и получил такой же эффект как и при генерации изображения из готового, то есть абсолютно хаотический и непонятный рисунок заданного размера…))

  • Нарисуйте один символ руками и поймете как это работает, потом сравните с тем что выдает генератор кода

  • Разобрался))
    немного посидел и разобрался, разве осталась проблема с генерированием изображения, картинка есть, но на белом фоне есть «снег», со шрифтами сам натупил, весь шрифт не влазил то я решил убрать буквы, то есть оставить только цифры, и не заметил в коде границы между кодом для дисплеев организованных в виде горизонтальных строк и для дисплеев организованных в виде строк вертикальных байтов…
    я с картинками то я просто не придал значения тому что нужно все таки указывать тип контроллера дисплея…
    может будет еще такой тормоз как я, будете иметь ввиду..))

  • ну вот, стоило немного подумать и все ок

  • Времени мало, я этим занимаюсь чисто в свое удовольствие, но к сожалению много более насущных проблем…
    Но я не сдаюсь))
    Найти бы еще возможность чтобы это приносило доход, то я бы погрузился в это полностью…

  • А можно в проект добавить несколько шрифтов?
    Если да, то как их потом назначать для вывода на дисплей?

  • Где можно взять файлы glcd.h и font5x7.h ?

  • это родные codevision библиотеки

  • Добрый день! Подскажите почему в ver.3.12 CVAVR не работают библиотеки TFT цветных дисплеев? Может быть это связано с тем, что ver.3.12 CVAVR является не лицензионной и поэтому данные библиотеки не работают? И стоит ли покупать лицензию данного программного обеспечения?

  • Почему работает или нет у меня нет ответа, т.к. причин может быть несколько. Как вариант попробовать разные версии. Если есть возможность поддержать разработчика, то дело хорошее. Для начинающего программа хороша в том плане, что позволяет пользоваться из коробки, т.к. имеет встроенный набор библиотек и кодоген. Однако, библиотеки закрытые, перетащить их на те же стмки не получится, много где привязка к железу. Кроме того, если поискать то все эти библиотеки есть на гитхабе в открытом доступе.

  • этим урокам цены нет

  • добрый день. Пожалуйста, подскажите как вывести данные АЦП на графический дисплей.
    с графикой и текстом разобрался, а вот с АЦП ни как. Спасибо

  • Здравствуйте Прошу помощи у админа или участников форума на тему графического дисплея.Я не очень силён в программирование, учусь по мере возможности.
    С графикой и текстом, вроде всё понятно, кое как разобрался. Но вывести данные с АЦП или, к примеру, ds18b20 на дисплей не получается. Примеры с урока 10 не подходят.
    Кусок кода:
    // Инициализация контроллера графического дисплея
    // Соединения PCD8544 указаны в меню
    // Проект | Настройка | Компилятор C | Библиотеки | Графический дисплей:
    // SDIN — PORTD Bit 3
    // SCLK — PORTD Bit 4
    // D /C — PORTD Bit 2
    // /SCE — PORTD Bit 1
    // /RES — PORTD Bit 0

    // Укажите текущий шрифт для отображения текста
    glcd_init_data.font = font5x7;
    // Установите смещение ЖК-дисплея
    glcd_init_data.bias = PCD8544_DEFAULT_BIAS;
    // Установите напряжение управления контрастностью ЖК-дисплея VLCD
    glcd_init_data.vlcd = PCD8544_DEFAULT_VLCD;

    glcd_init(&glcd_init_data);

    glcd_putimagef(2, 4, Bat_buffer, GLCD_PUTCOPY);
    //Координаты верхней линии x, y, х, у
    glcd_line(0, 0, 84, 0);
    //Координаты левой линии x, y,х, у
    glcd_line(0, 0, 0, 48);
    //Координаты нижний линии x, y, х, у
    glcd_line(0, 48, 84, 48);
    //Координаты правой линии x, y,х, у
    glcd_line(84, 0, 84, 48);
    // Global enable interrupts
    #asm(«sei»)

    while (1)
    {
    delay_ms(100); // Задаем задержку в 20 миллисекунд
    ADCSR |= 0x40; // Записываем 1 в ADSC
    data = ADCW; // Вычитываем значение
    val =(float)data*0.01315576; // Переводим в вольты
    glcd_outtextxyf(15, 3, » %1.1f V»l);
    }
    }
    Пожалуйста подскажите как решить мой вопрос. Спасибо

  • Здравствуйте! Надеюсь, тема ещё актуальна. Есть масса дисплеев без контроллера. Управляется либо сторонним по усмотрению разработчика-производителя, либо встроенными средствами микроконтроллера. Например, Atmega169 или Atmega 329. В эти микроконтроллеры уже встроен контроллер лсд дисплея. А вот реальных примеров работы этих устройств найти невозможно. Хотелось бы увидеть пример использования этих микроконтроллеров. Заранее спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика