Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Принцип работы модулей жки winstar wh1604
Назначение выводов ЖКИ WINSTAR WH1604 представлено в таблице 50.1.
Таблица 50.1 - Назначение выводов WH1604
Восемь линий (DB0...DB7) — стандартная шина данных. Уровни на выводах DB0...DB7 — коды операций или данные. Имеются три управляющих линии (RS, R/W, E). Уровни на входах RS, R/W, E определяют режимы, указанные в таблице 50.2. Контроллер ЖКИ может совместно с внешним контроллером выполнять различные действия: передавать данные по параллельному интерфейсу в обоих направлениях, менять направления заполнения знакомест ЖК-дисплея, манипулировать строками и т. д. После включения питания работа ЖК-модуля всегда начинается с процедуры его инициализации, установки которой сохраняются до выключения питания устройства. К концу процедуры инициализации модуль ЖКИ приводится в состояние готовности к работе с данными. Если инициализация ЖК-модуля прошла успешно, модуль готов к работе — для него задано число строк и размер знакоместа (где знакоместо — это матрица 5x7 или 5x10 точек). Таблица 50.2 - Условия выполнения операций чтения/записи
Выбор матрицы производится один раз в ходе процедуры инициализации ЖК-модуля, но можно сменить тип матрицы и в ходе работы. "Высвечивание" точки происходит при подаче на нее единицы, если на точку подан ноль, то она "погашена". В обоих типах матриц имеется дополнительная (восьмая или одинадцатая) строка точек — так называемая курсорная. При включении курсора (программно) все пять точек этой строки "высвечиваются" под тем символом, который будет выведен в последующем цикле вывода на индикацию (курсор — элемент удобства и нужен не во всех устройствах). Соседние элементы матрицы отделены друг от друга зазором 0,7 мм. Чаще применима матрица 5x7 точек, выбор символов в этом случае больше, чем при использовании матрицы 5x10 точек.
Символы для отображения размещаются в области энергонезависимой памяти знакогенератора. Поскольку это ПЗУ, набор символов пользователь изменить не может. Однако кроме области энергонезависимой памяти знакогенератор имеет в своем составе область оперативной памяти CG RAM, куда можно записать "сконструированные" программистом символы. Разработчики оставляют программисту возможность создавать свои символы: до восьми символов для матрицы 5x7 точек в одной ячейке CG RAM или до четырех символов для матрицы 5x10 точек (один символ — в двух ячейках CG RAM). Впрочем, количество "штатных" символов настолько велико и разнообразно, что их хватает с избытком. Знакогенератор — это программируемый счетчик, управляющий работой обычной микросхемы ПЗУ. Числа в двоичном представлении знакогенератора выводятся из ячеек ПЗУ запрошенных адресов. Таблица знакогенератора разбита на ячейки, в которых записаны символы по указанным адресам. Чтобы "запустить" режим записи данных, необходимо сначала выставить "1" на входе RS модуля ЖКИ (R/W — на корпусе), а после этого сформировать на входе E модуля ЖКИ стробирующий перепад от "1" к "0м, инициализирующий команду. После смены на выводе E "1" на "0" содержимое из заранее выбранного адреса ячейки знакогенератора выведется в текущее знакоместо видеопамяти ЖК-дисплея. Таблица адресов видеопамяти ЖК‑дисплея представлена в таблице 50.3. Таблица 50.3 - Таблица адресов видеопамяти ЖК-дисплея
К работе видеопамяти привязан курсор. Такая привязка при работе с подобного рода устройствами очень полезна. Курсор отмечает то знакоместо, в которое будет выведен на индикацию следующий символ. Текущее знакоместо видеопамяти ЖК- дисплея определяет счетчик АС — реверсивный счетчик с программной установкой автоинкремента и автодекремента и с предустановкой числа счета. Если же по ходу заполнения строки символами возникает необходимость в увеличении или уменьшении значения адреса, формируемого счетчиком адреса АС, то программно необходимо сформировать соответствующую команду. Инструкции по формированию команды изменения текущего положения представлены в таблице 50.4. В таблице 50.3 белым фоном выделены адреса ячеек видеопамяти, содержимое которых видимо на экране дисплея сразу (адреса в таблице показаны с привязкой к строкам ЖКИ), серым — ячейки, содержимое которых становится видимым на ЖКИ только после циклического сдвига. При этом адреса в области видеопамяти не сдвигаются. После исполнения команды сдвига сдвигается содержимое всех ячеек, перемещаясь из ячейки в ячейку.
Таблица 50.4 - Инструкции вывода символов и задания знакоместа на экране ЖКИ
Список команд управления ЖКИ представлен в таблице 50.5. В таблице не приведены команды, связанные с чтением из памяти контроллера ЖКИ, но их использование рационально при конструировании сложных фирменных систем индикации и вряд ли потребуется в относительно простых проектах c использованием Arduino.
Таблица 50.5- Команды управления
Очистка дисплея со сбросом данных — это принудительная запись во все ячейки видеопамяти символа "пробел" (ячейка с адресом 20h таблицы знакогенератора). Возврат курсора в начало без сброса данных — означает, что происходит сброс счетчика АС в 0, курсор устанавливается в крайнее левое знакоместо первой строки и ждет вывода символа. Установка направлений сдвигов курсора (I/D) и дисплея (S) — это касается сдвига при выводе текущего символа на индикацию. I/D, S — управляющие флаги: 1) I/D — флаг реверса счетчика адреса (при инкременте курсор сдвигается вправо на одну позицию, а при декременте — влево на одну позицию):
- I/D = "0" — декремент счетчика адреса АС; - I/D = "1" — инкремент; 2) S — флаг сдвига всего дисплея: - S = "0" — сдвиг дисплея не производится; - S = "1" — производится сдвиг всего дисплея на одну позицию влево (при I/D = 1) или вправо (при I/D = 0). Включение/выключение изображения курсора в виде подчерка или мерцающего знакоместа — в состав этой команды входят 3 флага: 1) D — вкл./выкл. изображения (дисплея): - D = "1" — изображение включено (основной режим); - D = "0" — изображение выключено, однако выключается только изображение, и в этом случае можно производить какие угодно действия, а затем, в нужный момент, включить изображение; 2) С — вкл./выкл. визуального отображения курсора в виде подчерка: - С = "1" — курсор в виде подчерка включен; - С = "0" — курсор в виде подчерка выключен; 3) В — вкл./выкл. визуального отображения курсора в виде мерцающего знакоместа: - В = "1" — курсор в виде мерцающего знакоместа включен; - В = "0" — курсор в виде мерцающего знакоместа выключен. Для выключения визуального отображения курсора (при D = 1) необходимо в битах С и В "выставить" нули. Сдвиг курсора или дисплея на одну позицию вправо или влево: 1) S/C — флаг указателя объекта сдвига: - S/C = "1" — сдвигается дисплей вместе с курсором в направлении, указанном флагом R/L; - S/C = "0" — сдвигается курсор (без сдвига дисплея) в направлении, указанном флагом R/L; 2) R/L — флаг указателя направления сдвига: - R/L = "1" — сдвиг объекта сдвига (определяется флагом S/C) на одно знакоместо вправо; - R/L = "0" — сдвиг объекта сдвига (определяется флагом S/C) на одно знакоместо влево. Установка разрядности интерфейса, типа матрицы и количества активных строк: 1) DL — флаг, определяющий разрядность параллельного интерфейса, соединяющего контроллер с ЖК-модулем в части касающейся линий DB0...DB7: - DL = 1 — 8 разрядов; - DL = "0" — 4 разряда. 2) N — флаг, определяющий количество активных строк: - N = "1" — работают 4 строки; - N = "0" — работают 2 строки. 3) F — флаг, определяющий тип матрицы: - F = "1" — 5x10 точек; - F ="0" — 5x7 точек. Необходимая длительность временных задержек (не меньше заданного техническими условиями) установки байта данных или команды на линиях DB0...DB7 по отношению к моменту активного перепада на выводе E обеспечивается программными средствами.
Библиотека LiquidCrystal Управлять ЖК-индикаторами, работающими на контроллере Hitachi HD44780 (или совместимом чипсете), который находится в большинстве символьных жидкокристаллических индикаторов, позволяет библиотека LiquidCrystal, входящая в стандартный комплект поставки Arduino. Библиотека LiquidCrystal работает в четырех или в восьмиразрядном режиме (т. е. использует четыре или восемь линий данных в дополнение к линиям управления RS, ENABLE и опционально RW). В библиотеке реализованы следующие функции:
Функция LiquidCrystal() Функция LiquidCrystal() создает переменную типа LiquidCrystal. Индикатором можно управлять, используя 4 или 8 линий данных. Для подключения по четырехм линиям пропустите контакты от D0 до D3 и оставьте эти линии неподключенными. Контакт RW может быть соединен с "землей" вместо соединения с контактом платы Arduino. Если в вашей схеме так — пропустите этот параметр функции. Синтаксис функции LiquidCrystal(): LiquidCrystal(rs, enable, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7) Параметры: - rs — номер контакта платы Arduino, который соединяется с контактом RS жидкокристаллического индикатора; - rw — номер контакта платы Arduino, который соединяется с контактом RW жидкокристаллического индикатора (опционально); - enable — номер контакта платы Arduino, который соединяется с контактом ENABLE жидкокристаллического индикатора; - d0, d1, d2, d3, d4, d5, d6, d7 — номера контактов платы Arduino, которые соединяются соответственно с контактами данных жидкокристаллического индикатора. D0, D1, D2 И D3 опциональны — если они не задействованы, жидкокристаллический индикатор будет управляться только через 4 линии данных (D4, D5, D6, D7).
Пример использования функции LiquidCrystal(): #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() {lcd.print("hello, world!");} void loop() {;}
Функция begin() Функция begin() определяет размерность (количество символов в ширину и высоту) индикатора. Синтаксис функции begin (): lcd.begin(cols, rows) Параметры: - lcd — переменная типа LiquidCrystal; - cols — количество символов в строке; - rows — количество строк.
Функция clear() Функция clear () очищает экран жидкокристаллического индикатора и располагает курсор в верхнем левом углу. Синтаксис функции clear (): lcd.clear(); Параметр: lcd — переменная типа LiquidCrystal. Функция home() Функция home() располагает курсор в верхнем левом углу жидкокристаллического индикатора. Используется для определения начального положения при выводе последовательного текста на экран индикатора. Чтобы еще и очистить экран индикатора, используйте вместо этой функции функцию clear (). Синтаксис функции home (): lcd.home() Параметр: lcd — переменная типа LiquidCrystal. Функция setCursor() Функция setCursor () позиционирует курсор жидкокристаллического индикатора, т. е. устанавливает положение, в котором на его экран будет выведен последующий текст.
Синтаксис функции setCursor (): lcd.setCursor(col, row) Параметры: - lcd — переменная типа LiquidCrystal; - col — номер знакоместа в ряду (начиная с 0 для первого знакоместа); - row — номер ряда (начиная с 0 для первого ряда). Функция write() Функция write() записывает символ в жидкокристаллический индикатор. Синтаксис функции write (): lcd.write(data) Параметры: - lcd переменная типа LiquidCrystal; - data — символ, записываемый в индикатор.
Пример использования функции write (): #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() {Serial.begin(9600); } void loop() { if (Serial.available()) lcd.write(Serial.read()); }
Функция print() Функция print() печатает текст на жидкокристаллическом индикаторе. Синтаксис функции print (): lcd.print(data) lcd.print(data, BASE) Параметры: - lcd — переменная типа LiquidCrystal; - data — данные для печати (тип char, byte, int, long или string); - BASE (опционально) — основание, по которому печатаются числа: BIN для двоичных (основание 2), dec для десятичных (основание 10), oct для восьмеричных (основание 8), hex для шестнадцатеричных (основание 16).
Пример использования функции print (): #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() {lcd.print("hello, world!");} void loop() {;}
Функция cursor() Функция cursor() выводит на экран жидкокристаллического индикатора курсор — подчеркивание знакоместа в позиции, в которую будет записан следующий символ.
Синтаксис функции cursor(): lcd.cursor() Параметр: lcd — переменная типа LiquidCrystal.
Функция noCursor() Функция noCursor() скрывает курсор с экрана жидкокристаллического индикатора. Синтаксис функции noCursor(): lcd.noCursor() Параметр: lcd — переменная типа LiquidCrystal.
Функция blink() Функция blink() выводит на экран жидкокристаллического индикатора мигающий курсор. Если она используется в комбинации с функцией cursor(), результат будет зависеть от конкретного индикатора. Синтаксис функции blink(): lcd.blink() Параметр: lcd — переменная типа LiquidCrystal.
Функция noBlink() Функция noBlink () выключает мигающий курсор на экране жидкокристаллического индикатора. Синтаксис функции noBlink(): lcd.noBlink() Параметр: lcd — переменная типа LiquidCrystal.
Функция display() Функция display() включает жидкокристаллический индикатор после того, как он был выключен функцией noDisplay(). Эта функция восстанавливает текст (и курсор), который был на дисплее. Синтаксис функции display(): lcd.display() Параметр: lcd — переменная типа LiquidCrystal.
Функция noDisplay() Функция noDisplay () выключает жидкокристаллический индикатор без потери отображаемой на нем информации. Синтаксис функции noDisplay (): lcd.noDisplay() Параметр: lcd — переменная типа LiquidCrystal.
Функция scrollDisplayLeft() Функция scrollDisplayLeft() прокручивает информацию на экране индикатора (текст и курсор) на одно знакоместо влево. Синтаксис функции scrollDisplayLeft (): lcd.scrollDisplayLeft() Параметр: lcd — переменная типа LiquidCrystal.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-02-07; просмотров: 724; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.191.22 (0.116 с.) |