Принцип работы модулей жки winstar wh1604 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Принцип работы модулей жки winstar wh1604



Назначение выводов ЖКИ WINSTAR WH1604 представлено в таблице 50.1.

 

Таблица 50.1 - Назначение выводов WH1604

№ вывода Название Функция
1 Vss Общий (GND)
2 Vdd Напряжение питания (3 или 5 В)
3 Vo Контрастность
4 RS Команды/Данные
5 R/W Чтение/Запись
6 E Разрешение чтения/записи
7 DB0 Линия данных 0
8 DB1 Линия данных 1
9 DB2 Линия данных 2
10 DB3 Линия данных 3
11 DB4 Линия данных 4
12 DB5 Линия данных 5
13 DB6 Линия данных 6
14 DB7 Линия данных 7
15 A Напряжение подсветки (+)
16 K Напряжение подсветки (-)

 

Восемь линий (DB0...DB7) — стандартная шина данных. Уровни на выводах DB0...DB7 — коды операций или данные. Имеются три управляющих линии (RS, R/W, E). Уровни на входах RS, R/W, E определяют режимы, указанные в таблице 50.2.

Контроллер ЖКИ может совместно с внешним контроллером выполнять различные действия: передавать данные по параллельному интерфейсу в обоих направлениях, менять направления заполнения знакомест ЖК-дисплея, манипулировать строками и т. д. После включения питания работа ЖК-модуля всегда начинается с процедуры его инициализации, установки которой сохраняются до выключения питания уст­ройства. К концу процедуры инициализации модуль ЖКИ приводится в состояние готовности к работе с данными. Если инициализация ЖК-модуля прошла успешно, модуль готов к работе — для него задано число строк и размер знакоместа (где зна­коместо — это матрица 5x7 или 5x10 точек).

Таблица 50.2 - Условия выполнения операций чтения/записи

RS R/W E Операция
0 0 1->0 Запись в регистр команд
1 0 1->0 Запись в регистр данных
1 1 0->1->0 Чтение из регистра данных
0 1 0->1->0 Чтение флага занятости (DB7) и счетчика адреса (DB0-DB6)

 

Выбор матрицы производится один раз в ходе процедуры инициализации ЖК-модуля, но можно сменить тип матрицы и в ходе работы. "Высвечивание" точки про­исходит при подаче на нее единицы, если на точку подан ноль, то она "погашена".

В обоих типах матриц имеется дополнительная (восьмая или одинадцатая) строка точек — так называемая курсорная. При включении курсора (программно) все пять точек этой строки "высвечиваются" под тем символом, который будет выведен в последую­щем цикле вывода на индикацию (курсор — элемент удобства и нужен не во всех устройствах). Соседние элементы матрицы отделены друг от друга зазором 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 - Таблица адресов видеопамяти ЖК-дисплея

Знакоместо

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Адреса

по строкам

1

00 01 02 03 04 05 06 07 08 09 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27                

2

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
                28 29 2A 2B 2C 2D 2E 2F

3

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
30 31 32 33 34 35 36 37                

4

50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
                38 39 3A 3B 3C 3D 3E 3F

 

К работе видеопамяти привязан курсор. Такая привязка при работе с подобного ро­да устройствами очень полезна. Курсор отмечает то знакоместо, в которое будет выведен на индикацию следующий символ. Текущее знакоместо видеопамяти ЖК- дисплея определяет счетчик АС — реверсивный счетчик с программной установ­кой автоинкремента и автодекремента и с предустановкой числа счета. Если же по ходу заполнения строки символами возникает необходимость в увеличении или уменьшении значения адреса, формируемого счетчиком адреса АС, то программно необходимо сформировать соответствующую команду. Инструкции по формирова­нию команды изменения текущего положения представлены в таблице 50.4. В таблице 50.3 белым фоном выделены адреса ячеек видеопамяти, содержимое которых видимо на экране дисплея сразу (адреса в таблице показаны с привязкой к строкам ЖКИ), се­рым — ячейки, содержимое которых становится видимым на ЖКИ только после циклического сдвига. При этом адреса в области видеопамяти не сдвигаются. После исполнения команды сдвига сдвигается содержимое всех ячеек, перемещаясь из ячейки в ячейку.

 


Таблица 50.4 - Инструкции вывода символов и задания знакоместа на экране ЖКИ

Инструкция

Режим

Двоичный код инструкции

RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Установка знакомства ЖКИ дисплея 0 0 1

Адрес ячейки видеопамяти

Выбор адреса выводимого из ПЗУ знакогенератора символа в видеопамять 1 0

Адрес ячейки знакогенератора

 

 

Список команд управления ЖКИ представлен в таблице 50.5. В таблице не приведены команды, связанные с чтением из памяти контроллера ЖКИ, но их использование рационально при конструировании сложных фирменных систем индикации и вряд ли потребуется в относительно простых проектах c использованием Arduino.

 

Таблица 50.5- Команды управления

Инструкция

Режим

Двоичный код инструкции

16р. код

RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Очистка дисплея, сброс данных, кур-сор в начало 0 0 0 0 0 0 0 0 0 1 01
Возврат кур-сора в начало без сброса данных 0 0 0 0 0 0 0 0 1 х 02
Установка направле­ния сдвига курсора I/D дисплея SH 0 0 0 0 0 0 0 1 I/D SH 04 05 06 07
Дисплей вкл/откл D = (1/0) Изображение курсора В в виде подчеркивания С или мерцающего знакоместа 0 0 0 0 0 0 1 D C B 08 09 0А 0B 0C 0D 0E 0F
Сдвиг курсора или дисплея вправо или влево Сдвиг дисплея и кур­сора S/С = 1 Сдвиг только курсора S/С = 0 R/L = 1 вправо R/L = 0 влево 0 0 0 0 0 1 S/C R/L x x 10 18 14 1C
Установка разряд­ности интерфейса восьмиDL = 1, четырехDL = 0 тип матрицы F = 0 — 5x7 F = 0 — 5x10 Число строк N = 1 4 строки 0 0 0 0 1 DL N F x x 40 60

 

Очистка дисплея со сбросом данных — это принудительная запись во все ячейки видеопамяти символа "пробел" (ячейка с адресом 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(); write();
begin(); print();
clear(); cursor();
home(); noCursor();
setCursor(); blink();
noBlink(); autoscroll();
display(); noAutoscroll();
noDisplay(); leftToRight();
scrollDisplayLeft(); rightToLeft();
scrollDisplayRight(); createChar()

 

Функция 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 с.)