Подключение графического индикатора (KS0108) к PIC микроконтроллеру » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

Какой средой программирования вы пользуетесь?


MPLab/MPLabX
MicroC
MicroBasic
MicroPascal
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Схемотехника » Прочее » Подключение графического индикатора (KS0108) к PIC микроконтроллеру
    Подключение графического индикатора (KS0108) к PIC микроконтроллеру
    Автор публикации: alex Просмотров: 12210 Добавлен: 22-03-2013, 07:27 Комментарии: 0

         Использование графического индикатора кардинально меняет внешний вид вашего проекта. Он предоставляет больше свободы при отображении данных, чем символьный ЖК индикатор на базе контроллера HD44780. В статье мы рассмотрим как подключить графический индикатор на контроллере KS0108 (или совместимом) к микроконтроллеру PIC производства компании Microchip. В Статье мы последовательно рассмотрим аппаратную и программную части проекта.

    Подключение графического ЖК индикатора к PIC микроконтроллеру

         Выбор микроконтроллера PIC16F887 связан с тем, что приложения с графическим ЖКИ требуют достаточно много ресурсов микроконтроллера (линии ввода/вывода, встроенная память) и данный микроконтроллер имеет 36 линий ввода/вывода и 14 КБайт Flash-памяти.
         Графический ЖКИ, который используется в нашем проекте – это модуль WDG0151-TMI монохромного индикатора производства компании Winstar с разрешением 128×64 точки. Он выполнен на базе двух контроллеров NT7108C и NT7107C, которые совместимы с контроллерами Samsung KS0108B и KS0107B.
         KS0108B – это 64 канальный точечный драйвер ЖК сегментов. Модуль WDG0151-TMI содержит два таких контроллера, чтобы обеспечить управление 128 сегментами. С другой стороны контроллер KS0107B (NT7107C) – это 64 канальный драйвер общих линий индикатора, который генерирует временные сигналы для управления двумя сегментными драйверами. Это очень распространенные и хорошо зарекомендовавшие себя контроллеры, которые применяются и в индикаторах других производителей.

    Блок-схема модуля Winstar WDG0151-TMI

    Блок-схема модуля графического индикатора на контроллере KS0108

         Контроллер NT7107C управляет 64 общими линиями дисплея (COM1 – COM64). Первый контроллер NT7108C управляет левой половиной сегментов (SEG1 – SEG64) дисплея, второй NT7108C – правой половиной сегментов (SEG65 – SEG128). Доступ к двум половинам дисплея осуществляется индивидуально посредством сигнальных линий Chip Select (CS1, CS2). Каждая половина дисплея представлена 7 горизонтальными страницами памяти, каждая высотой 8 бит (1 Байт).


         Начиная с 0 страницы в левoй половине (/CS1=0), если вы передадите 1 байт данных, они будут отображены в первом столбце страницы 0. Если повторить данный процесс 64 раза и затем переключиться на вторую половину дисплея и повторить операции, пока не будет достигнута 128 позиция, мы получим отображение первых 8 линий на дисплее. Для отображения следующих 8 линий необходимо повторить эти операции, но сменив адрес страницы памяти. Общее количество байт, необходимое для отображения одного кадра (128×64 точки), в нашем случае равно 2×64×8 = 1024.
         Модуль дисплея Winstar WDG0151-TMI GLCD имеет встроенный генератор отрицательного напряжения для управления контрастностью. Потенциометр регулировки контрастности (обычно 10 кОм) подключается между выводами VEE и VCC. Расположение линий ввода/вывода индикатора не стандартизировано, поэтому необходимо обратиться к технической документации на дисплей при подключении его к микроконтроллеру.
         В общем случае количество выводов у графического индикатора 20. Первые два вывода – выбор контроллера левой или правой части индикатора, активный уровень – низкий, однако существуют индикаторы с высоким активным уровнем (поэтому и понадобится еще раз техническое описание используемого индикатора от производителя).  С помощью вывода 6 индикатора D/I (Data/Instruction) пользователь указывает, что поступает на шину данных индикатора: данные или команды (инструкции). Управляющие сигналы R/W и E имеют такое же назначение, как и в символьных индикаторах на контроллере HD44780.

    Назначение выводов модуля ЖКИ WDG0151-TMI
    Номер
    вывода
    Обозначение
    Уровень
    Описание
    1
    /CS1
    Низкий
    Выбор сегментов 1 – 64
    2
    /CS2
    Низкий
    Выбор сегментов 65 – 128
    3
    Vss
    0 В
    Общий («земля»)
    4
    VDD
    5.0 В
    Напряжение питания
    5
    Vo
    переменный
    Подстройка контрастности
    6
    D/I или RS
    Низкий/Высокий
    Высокий: данные;
    Низкий: инструкции
    7
    R/W
    Низкий/Высокий
    Высокий: чтение данных;
    Низкий: запись данных;
    8
    E
    Высокий
    Разрешение записи/чтения
    9 – 16
    D0 – D7
    Низкий/Высокий
    Шина данных
    17
    RST
    Низкий
    Сброс модуля ЖКИ
    18
    VEE
     
    Выход отрицательного
    напряжения
    19
    A
     
    Анод подсветки дисплея
    20
    K
     
    Катод подсветки дисплея

         Контроллеры KS0107B и KS0108B не имеют своего знакогенератора, поэтому его функции будет выполнять программа микроконтроллера. Сам ЖКИ поддерживает ряд инструкций, которые приведены ниже в таблице. Необходимо помнить, что вывод RS (D/I) должен быть в высоком состоянии при операциях чтения/записи данных и оставаться в низком состоянии, когда передаются инструкции.

    Команда
    RS
    R/W
    DB7
    DB6
    DB5
    DB4
    DB3
    DB2
    DB1
    DB0
    Назначение
    Дисплей
    ВКЛ/ВЫКЛ
    L
    L
    L
    L
    H
    H
    H
    H
    H
    L/H
    Управляет вкл/выкл отображения.
    Не влияет на внутреннее состояние
    и данные ОЗУ изображения.
    L: ВЫКЛ
    H: ВКЛ
    Установить
    адрес
    L
    L
    L
    H
    Адрес Y (0 ~ 63)
    Заносит адрес Y в счетчик адреса Y
    Установить
    страницу
    (адрес Х)
    L
    L
    H
    L
    H
    H
    H
    Страница (0 ~ 7)
    Заносит адрес X в регистр адреса X
    Начальная
    строка
    отображения
    L
    L
    H
    H
    Начальная строка
    отображения (0 ~ 63)
    Указывает данные ОЗУ изображения
    отображаемые вверху экрана
    Чтение
    состояния
    L
    H
    BUSY
    L
    ON/OFF
    RESET
    L
    L
    L
    L
    Чтение состояния.
    BUSY
    L: Готовность
    H: Выполняется команда
    ON/OFF
    L: Отображение ВКЛ
    H: Отображение ВЫКЛ
    RESET
    L: Нормальный режим
    H: Сброс
    Запись
    данных
    изображения
    H
    L
    Данные для записи
    Записывает данные (DB0:7) в ОЗУ
    данных изображения.
    После записи инструкции, адрес Y
    увеличивается на 1 автоматически.
    Чтение
    данных
    изображения
    H
    H
    Данные для чтения
    Читает данные (DB0:7) из ОЗУ данных
    изображения на шину данных

         Для подключения графического индикатора Winstar WDG0151-TMI к микроконтроллеру и проведения экспериментов автор использовал отладочную плату компании mikroElektronika UNI-DS6 с микроконтроллером Microchip PIC16F887.
         UNI-DS6 – универсальная отладочная плата для изучения микроконтроллеров PIC, AVR, 8051, ARM, PSoCи dsPIC, идеальная для оборудования учебных классов и лабораторий. Хорошо методически проработанная плата включает универсальное посадочное место, в которое может быть установлена одна из плат специализации (mikroBoard).
    Отладочная платформа mikroElektronika UNI-DS6

         Плата оснащена большим количеством разнообразных устройств ввода и вывода информации и гибкой системой их коммутации с платой специализации. В качестве устройств ввода предусмотрены кнопки, подключаемые ко всем линиям портов микроконтроллеров, 12-разрядный АЦП, температурный датчик, накопитель MMC/SD. Для отображения данных на плате имеются светодиоды на всех линиях портов микроконтроллера, а также предусмотрены посадочные места со штыревыми разъемами для установки алфавитно-цифрового и графического ЖК дисплеев. Для двунаправленного обмена установлены два USB-UART моста.
         Принципиальная схема отладочной платы доступна для скачивания в секции загрузок.
         Схема подключения индикатора к микроконтроллеру показана на рисунке ниже. Выводы шины данных подключаются к порту D микроконтроллера, управляющие сигналы поступают с порта B.
    Подключение графического индикатора к микроконтроллеру PIC

         Программа микроконтроллера для инициализации индикатора написана в компиляторе mikroC Pro для микроконтроллеров PIC. Несмотря на то, что компилятор предоставляет готовую библиотеку функций для управления графическим индикатором, работу с которой мы рассмотрим в третьей части описания, мы попытаемся написать свой тестовый код для передачи данных от микроконтроллера в индикатор.
         Тестовая программа выводит на индикатор 11 горизонтальных строк с точками с интервалами между ними в 6 линий. Исходный код доступен для скачивания в разделе загрузок. При разработке тестовой программы за основу была взята готовка библиотека Osama’s Lab GLCD library, модифицированная для применения в среде mikroC.
         Рассмотрим основные функции в программе инициализации индикатора.
    • GLCD_ON(): функция включения индикатора. Функция реализует подачу команды 3Fh обоим контроллерам индикатора, следовательно, низкий уровень должен быть на входах /CS1 и /CS2, а также на входе RS, т.к. посылаемый байт это инструкция;
    • Set_Start_Line(): функция изменяет номер первой строки, которая будет отображаться вверху экрана. Вы можете установить любое значение из диапазона 0 – 63, функция не вносит каких-либо изменений в ОЗУ данных дисплея, а лишь сдвигает экран вверх или вниз;
    • GOTO_COL(): перемещает курсор в указанный столбец (0 – 127);
    • GOTO_ROW(): перемещает курсор в указанный ряд или страницу (0 – 7);
    • GOTO_XY(): перемещает курсор в указанные координаты столбца и ряда;
    • GLCD_Write(): запись байта данных в текущую позицию;
    • GLCD_Read(): чтение байта данных с текущей позиции. Если вы посмотрите исходный код то увидите в этой функции две операции чтения. Первая операция чтения вызывает перемещение данных из ОЗУ дисплея в выходной регистр контроллера KS0108B, а при следующей операции чтения микроконтроллер получает актуальные данные из регистра;
    • GLCD_Clrln(): функция очищает указанную страницу;
    • GLCD_CLR(): полностью очищает дисплей;
    • Draw_Point(): функция прорисовки точки в указанной позиции.

         В этой части статьи мы уделим внимание встроенной библиотеке mikroC Pro для работы с графическим индикатором, которая значительно упростит вывод данных на экран индикатора.
    Подключение графического индикатора (KS0108) к PIC микроконтроллеру

         Встроенная библиотека GLCD в среде mikroC Pro для PIC микроконтроллеров предназначена для управления графическими индикаторами на базе контроллеров Samsung KS0108/KS0107 и совместимых с ними. Функции библиотеки условно можно разделить на два типа: базовые и расширенные. Но перед использованием самой библиотеки необходимо определить в программе как индикатор подключен к микроконтроллеру.
         Индикатор мы подключим к микроконтроллеру, как указано во второй части статьи: порт D используется для подключения шины данных, порт B – для управления индикатором.
         Определение подключения выводов индикатора к микроконтроллеру в программе показано ниже.
    // определение подключения индикатора к портам микроконтроллера
    char GLCD_DataPort at PORTD;
    sbit GLCD_CS1 at RB0_bit;
    sbit GLCD_CS2 at RB1_bit;
    sbit GLCD_RS at RB2_bit;
    sbit GLCD_RW at RB3_bit;
    sbit GLCD_EN at RB5_bit;
    sbit GLCD_RST at RB4_bit;
    sbit GLCD_CS1_Direction at TRISB0_bit;
    sbit GLCD_CS2_Direction at TRISB1_bit;
    sbit GLCD_RS_Direction at TRISB2_bit;
    sbit GLCD_RW_Direction at TRISB3_bit;
    sbit GLCD_EN_Direction at TRISB5_bit;
    sbit GLCD_RST_Direction at TRISB4_bit;

    Теперь рассмотрим функции встроенной библиотеки:
    Базовые функции:
    • Glcd_Init: Инициализация индикатора;
    • Glcd_Set_Side: Выбор стороны экрана. Например, обе команды Glcd_Set_Side(0) и Glcd_Set_Side(62) делают активной левую сторону индикатора. Значения от 64 до 127 в команде, например Glcd_Set_Side(67), выбирают правую сторону индикатора;
    • Glcd_Set_X: Установка позиции по оси X от левой границы индикатора в пределах выбранной стороны.например, Glcd_Set_X(25);
    • Glcd_Set_Page: Выбор страницы графического индикатора;
    • Glcd_Read_Data: Чтение одного байта с текущей позиции памяти индикатора и сдвиг на следующую позицию;
    • Glcd_Write_Data: Запись одного байта данных в текущую позицию памяти индикатора и сдвиг на следующую позицию.

    Расширенные функции:
    • Glcd_Fill: Заполнение памяти индикатора одним указанным значением. Если значение в команде равно 0, то эта функция очистит индикатор, если значение FFh, то вся память индикатора будет заполнена 1.
    • Glcd_Dot : Прорисовка одной точки на индикаторе с заданными координатами и цветом. Функция используется в виде Glcd_Dot(x, y, color), где x = 0–127, y = 0–63, color = 0–2. Параметр color (который присутствует и в других функциях, связанных с прорисовкой объектов) определяет статус точки: 0 – очистить точку, 1 – установить точку, 2 – инвертировать точку.
    • Glcd_Line: Прорисовка линии по двум заданным координатам и статусу (0–2).
    • Glcd_V_Line: Прорисовка вертикальной линии по двум координатам с одинаковыми координатами по оси X, также имеется параметр статуса линии.
    • Glcd_H_Line: Прорисовка вертикальной линии по двум координатам с одинаковыми координатами по оси Y, также имеется параметр статуса линии.
    • Glcd_Rectangle: Прорисовка прямоугольника с заданными координатами верхнего левого и нижнего правого угла.
    • Glcd_Box: Прорисовка закрашенного прямоугольника, цвет заполнения определяется цветом прямоугольника.
    • Glcd_Circle: Прорисовка окружности с заданными координатами центра и радиуса.
    • Glcd_Set_Font: Как было замечено в первой части статьи, контроллер индикатора не имеет своего знакогенератора, поэтому символы и шрифты должны быть прописаны в программе микроконтроллера. Это достаточно трудоемкая задача и для упрощения в компиляторе mikroC Pro предусмотрены демонстрационные шрифты:
      • Font_Glcd_System3x5;
      • Font_Glcd_System5x7;
      • Font_Glcd_5x7;
      • Font_Glcd_Character8x7;

         Эти шрифты используются в функциях Glcd_Write_Char и Glcd_Write_Text для отображения символов и текста. Синтаксис использования функции Glcd_Set_Font следующий:
    Glcd_Set_Font (const char *activeFont, unsigned short aFontWidth, unsigned short aFontHeight, unsigned int aFontOffs);
    Где параметры: activeFont – установка шрифта, aFontWidth – ширина символов шрифта в точках, aFontHeight – высота символов шрифта в точках, aFontOffs – число, которое представляет собой разницу (смещение) между набором символов mikroC и обычным набором ASCII символов. Демонстрационные шрифты имеют смещение 32.
         Для использования шрифта Font_Glcd_5x7, необходимо выполнить команду со следующими параметрами:
    Glcd_Set_Font(Font_Glcd_5x7, 5, 7, 32).
    • Glcd_Write_Char: Ззапись символа в указанную позицию по оси X (0-127) и страницу (0-7) индикатора.
    • Glcd_Write_Text: Отображение текста начиная с указанной позиции по оси X (0-127) и страницы (0-7) на индикаторе;
    • Glcd_Image: Вывод BMP-картинки на индикатор Displays bitmap image on Glcd. Битовый массив изображения также хранится в программе микроконтроллера. Для подготовки любого изображения к выводу на графический индикатор mikroElektronika предлагает специальную, простую в использовании утилиту.

         Для демонстрации функций библиотеки предостатвляется исходный код программы микроконтроллера и готовый к прошивке HEX-файл.


    В архиве:
    Исходный текст программы и HEX-файл
    Исходный текст тестовой программы микроконтроллера и файл прошивки
    Принципиальная схема отладочной платы UNI-DS6

    podklgraphindtopic.rar [2,14 Mb] (cкачиваний: 583)

    Категория: Прочее, PIC16
    « Назад
    Комментарии