Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
404
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

PWMMR2=u[k++];

3. Разрешить обновление защелки пороговых значений в начале следующего периода. Для этого установить единицу в разряд регистра PWMLER, соответствующий второму каналу ШИМ.

4–5. Реализовать проверку равенства счетчика предельному числу , обнулить k в случае равенства.

6. Сброс флага прерывания и инициализация адреса обсуждалась в практическом занятии № 2.

3.10 Управление символьным жидкокристаллическим индикатором

3.10.1 Задание

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

3.10.2 Управление модулем жидкокристаллической индикации

На плате EA-EDU-001 установлен символьный жидкокристаллический индикатор типа LMB162A производства фирмы Topway. Индикатор состоит из двух строк, в каждой из которых имеется 16 знакомест. Каждое знакоместо представляет собой матрицу из 5x7 точек. Индикатор является знакосинтезирующим. Это значит, что изображение символа формируется аппаратными и программными средствами самого индикатора в соответствии с кодом символа. Кодировка в основном соответствует стандарту ASCII. Имеется возможность программирования восьми произвольных символов.

Интерфейс взаимодействия с индикатором фактически стандартизован. Поэтому подпрограммы управления индикатором, которые предстоит разработать, будут совместимы с множеством подобных жидкокристаллических модулей, в том числе, производства отечественной фирмы МЭЛТ. Здесь будут рассмотрены только основные операции управления индикатором. Для подробного изучения рекомендуется обратиться к русскоязычной документации фирмы МЭЛТ.

Интерфейс (рисунок 3.10.1) состоит из 8-разрядной шины данных DB0–DB7; сигнала RS, определяющего передается ли в настоящее время команда или данные; сигнала RW, задающего направление передачи данных по шине; стробирующего сигнала E, по срезу которого индикатор воспринимает остальные сигналы.

Система команд индикатора представлена в таблице 3.10.1. Индикатор имеет память для хранения кодов символов, поэтому сформированное однажды изображение останется без изменения, если не поступит соответствующей команды от микроконтроллера.

Для подачи управляющей команды индикатору необходимо вывести байт на шину данных и установить сигналы RS и RW в соответствии-с таблицей 1. Выполнение команды инициируется сигналом по спадающему фронту

189

Таблица 3.10.1 – Система команд символьного ЖКИ на основе контролера совместимого с KS0066

 

Команда ЖКИ

 

RS

RW

 

 

 

 

 

DB7 – DB0

 

 

 

 

 

 

 

Комментарии

 

Clear Display

 

0

0

0

 

0

 

 

0

 

0

 

0

 

 

0

 

 

0

 

 

1

 

Очистить дисплей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Очистка дисплея

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Return Home

 

0

0

0

0

 

0

0

0

 

0

 

1

 

 

x

 

Установить курсор на нулевую позицию

 

Возврат курсора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Entry Mode Set

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— дисплей неподвижен/сдвигается

 

 

0

0

0

0

 

0

0

0

 

1

 

 

ID

 

S

 

 

— сдвиг курсора (и дисплея)

 

Режим сдвига дисплея или курсора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вправо/влево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Display ON/OFF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— дисплей выключен/включен

 

 

 

0

0

0

 

0

 

 

0

 

0

 

1

 

 

D

 

 

C

 

 

B

 

 

— курсор выключен/включен

 

 

Включение дисплея и режим курсора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

0

 

 

0

 

 

— мигание курсора выкл./вкл.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Shift Display

 

0

0

0

0

 

0

1

 

SC RL

 

x

 

x

 

 

— сдвинуть курсор/дисплей

 

Сдвиг дисплея или курсора

 

 

 

 

 

 

 

— сдвинуть влево/вправо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Function Set

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— 4-/8-разрядный интерфейс

 

 

 

0

0

0

 

0

 

 

1

 

DL

 

N

 

 

F

 

 

x

 

 

x

 

 

— 1/2 строки

 

 

Настройка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

0

 

 

 

 

 

 

 

 

— шрифт 5×8/5×11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Set CGRAM Address

 

0

0

0

1

 

 

A5 A4 A3 A2 A1 A0

 

A0–A6 текущий адрес в таблице знакогене-

 

Установить адрес в таблице знакоген.

 

 

 

 

ратора

 

Set DDRAM Address

 

0

0

1

 

A6 A5 A4 A3 A2 A1 A0

 

A0–A6 текущий адрес в памяти символов

 

Установить адрес в памяти символов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(позиция курсора)

 

Read Busy Flag and Address

 

0

1

BF A6 A5 A4 A3 A2 A1 A0

 

 

— модуль готов/занят;

 

Чтение флага готовности и адреса

 

 

A0–A6 текущий адрес

 

Write Data

 

1

0

D7 D6 D5 D4 D3 D2 D1 D0

D0–D7 данные

 

Запись данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Read Data

 

1

1

D7 D6 D5 D4 D3 D2 D1 D0

D0–D7 данные

 

Чтение данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

190

импульса на линии E. Время выполнения команд очистки экрана (Display Clear) и возврата курсора (Return Home) составляет 1,71 мс; остальных команд — 41 мкс. Эти характеристики приведены для модуля LMB162; для других аналогичных устройств могут отличаться. Прежде чем подавать очередную команду необходимо выдержать паузу или циклически опрашивать флаг готовности модуля индикации. Взаимодействие с опросом флага сложнее в программной реализации, но минимизирует величину задержки и гарантирует работу с любым аналогичным модулем. Далее будет рассмотрены оба способа взаимодействия.

Рисунок 3.10.1 – Схема подключения модуля ЖКИ к микроконтроллеру

Для инициализации индикатора в большинстве случаев достаточно трех команд: Function Set, Display On и Clear Display (в таблице выделены се-

рым цветом). В дальнейшем необходимы еще две команды для перемещения курсора (Set DDRAM Address) и вывода символа (Write Data).

Схема адресов символьных позиций показана на рисунке 3.10.2.

 

Поз. 0

 

 

 

 

 

 

 

 

 

 

 

 

 

Поз. 15

Строка 1

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

0x08

0x09

0x0A

0x0B

0x0C

0x0D

0x0E

0x0F

Строка 2

0x40

0x41

0x42

0x43

0x44

0x45

0x46

0x47

0x48

0x49

0x4A

0x4B

0x4C

0x4D

0x4E

0x4F

Рисунок 3.10.2 – Схема адресов символьных позиций ЖКИ

3.10.3 Разработка функции управления ЖКИ с ожиданием готовности

Рекомендуется все функции управления ЖКИ поместить в отдельный файл с именем LCD.c. Кроме того, в библиотеку войдет функции формирования временной задержки, рассмотренную в разделе 3.1.5. В дальнейшем при необходимости файл библиотеки будет подключаться к программам директивой #include.

Алгоритм функции вывода команды LCDWrite показан на рисунке

3.10.3, а).

191

Функция выполнения команды

Начало

1 Ввод Data, RS

2

RW=0

3

Вывод RS

4

Вывод Data

5

Формирования

импульса 575 нс

6 Задержка 1,71 мс

Возврат

Функция вывода строки Начало

1 Ввод Sym, Pos

2

k=0

3

Перевести курсор в

 

позицию Pos

 

(Set DDRAM Address)

Нет

4

 

Sym[k]>0

 

Да

 

5

 

Вывод символа Sym[k]

 

(Write Data)

Функция инициализации ЖКИ

Начало

1 Настроить режим и

направление портовых линий

2 Вкл. подсветку

3

Задержка 50 мс

4

Function Set

(DL=1, N=1, F=0)

5 Display On

(D=1, C=0, B=0)

6 Clear Display

 

 

Возврат

 

Возврат

 

а)

б)

в)

Рисунок 3.10.3 – Схемы алгоритмов функций управления модулем ЖКИ

1.Входные параметры функции: байт Data, выставляемый на шину данных индикатора; сигнал RS, принимающий два значения 0 и 1. Оба параметра должны иметь тип unsigned char.

2.Установить низкий уровень на линии RW, что соответствует режиму отправки данных. Рекомендуется использовать обращение к порту вводавывода в режиме байта (регистр FIO0CLR2). Схема подключения входов индикатора к портовым линиям микроконтроллера показана на рисунке 3.10.4.

3.Установить на линии RS (регистр FIO1PIN3) логический уровень в соответствии со значением одноименного параметра функции. Типовая задача вывода бита в порт рассмотрена в разделе 1.10.1 (пример 3).

4.Вывести байт Data на шину данных (регистр FIO1PIN2).

FIO1PIN3 – третий байт порта 1

FIO1PIN2 – второй байт порта 1

31

28

27

25

24

23

 

 

 

E

S

 

 

y

 

 

 

 

s

 

 

 

 

R

u

 

 

 

 

 

B

 

 

Строб

Данные (1)

 

16

DB7:DB0

Шина данных

FIO0PIN3 – третий байт порта 0

FIO0PIN2 – второй байт порта 0

31

30

29

28

27

24

23

22

21

20

19

16

 

L

 

 

 

 

 

/W

 

 

 

 

 

B

 

 

 

 

 

R

 

 

 

 

Подсветка

 

 

 

Чтение (1)

 

 

 

Рисунок 3.10.4 – Схема портовых линий МК, используемых для управления ЖКИ

192