НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 70717273747576 ... 159


с символа с кодом 0. В этом случае сначала код 0x040 должен записываться в жидкокристаллический дисплей, а уже вслед за ним - все байты строк задаваемых пользователем символов.

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

1. Ожидание установки напряжения питания в течение более 15 мс после включения.

2. Запись кода 0x030 в жидкокристаллический дисплей и ожидание в течение 5 мс завершения исполнения соответствующей команды.

3. Запись кода 0x030 в жидкокристаллический дисплей и ожидание в течение 160 мкс завершения исполнения соответствующей команды.

4. Повторная запись кода 0x030 в жидкокристаллический дисплей и ожидание в течение 160 мкс или проверка признака «занято».

5. Задание рабочих характеристик для жидкокристаллического дисплея:

-передача команды Set Interface Length (задание формата обмена по интерфейсу);

- запись кода 0x008 для отключения дисплея;

- запись кода 0x001 для стирания данных дисплея;

- передача команды Set Си rso г Move Di rect ion (задание направления смещения курсора);

- передача команды Enable Display/Cursor (разрешение использования дисплея/курсора) для активизации дисплея и курсора.

Первая из приводимых ниже макрокоманд (LCD8) обеспечивает нормальное взаимодействие с жидкокристаллическим дисплеем в условиях самых жестких временных требований, поскольку реализует наибольшую скорость обмена.

Чтобы инициировать эту макрокоманду, следует ввести командное слово в виде:

LCD8 DataPort, EPort, EPin, RSPort, RSPin, RWPort, RWPin, Frequency,



где параметр DataPort соответствует используемому 8-разрядному порту ввода/вывода данных.

При этом параметры EPort и ЕРш определяют порт и линию (Е) для передачи синхронизирующих импульсов, параметры RSPort И RSPin - линию RS, а параметры RWPort и RWPin - линию R/W (в ряде случаев не используются). Параметр Frequency указывает тактовую частоту микроконтроллера и служит для расчета величин временных задержек. Единственной переменной, которая используется макрокомандами LCD8 и LCDBPoll, является 8-разрядная переменная Dlay.

Макрокоманда LCD8 может применяться для микроконтроллеров младшего и среднего подсемейств. Исключение составляет лишь подпрограмма LCDPORTInit: ее нельзя использовать для РГС-микро-контроллеров младшего подсемейства. В этом случае инициализация портов ввода/вывода данных должна выполняться с помощью команд TRIS:

LDC8 Macro DataPort, Eport, Ерш, RSPort, RSPin, RWPort, RWPin, Freq

Variable DlaySValue, Dlay160Value, Dlay160Bit1 = -1, Dlay160Bit2 = -1, BitCount = 0 Variable Value = 128, Bit = 7

DlaySValue = ((5007 . (Freq/1000)/4000)/7) + 256 DlayieoValue = (163 • (Freq/1000)/4000)/3

while (Bit > = 0 , Определение числа битов и их позиции

, в переменной Dlay160Value if ((DlayieOValue & Value) = 0)

if (DlayieOBitl == -1) , Установка старшего бита

DlayieOBitl = Bit else

If (Dlay160Bit2 = -1) Dlay160Bit2 = Bit endif endif

BitCount = BitCount + 1

endif Value = Value >> 1 Bit = Bit - 1

endw

If (BitCount > 2) , Необходимы максимум два

, бита

If ((DlayieOBitl - 1) == Dlay160Bit2) flayieOBitl = DlayieOBitl + 1 , Сдвиг вверх на 1

layl60Bit2 = -1 , первого (старшего) бита

, и удаление второго



else

Dlay160Bit2

= Dlay160Bit2 + 1

, Сдвиг вверх на 1

, младшего бита

endif

endif

Dlay5

, Задержка 5 мс

movlw

(DlaySValue &

OxOFFOO) >> 8

movwf

Dlay

movlw

DlaySValue &

OxOFF

subwf

Dlay, w

xorlw

OxOFF

addwf

Dlay, w

btfsc

STATUS, Z

decfsz

Dlay f

goto

$ - 5

return

LCDPORTInit

, Инициализация портов

STATUS, RPO

, Только для среднего

, подсемейства

movlw

0x000

movwf

DataPort

EPort, Epin

RSPort, SPin

RWPort, RWPin

STATUS, RPO

EPort, Epin

RSPort, RSPin

RWPort, RWPin

retu rn

LCDIns

, Пересылка команды на дисп

movwf

DataPort

RSPort, RSPin

If (Freq >

8000000)

, Возможно, потребуется

If (Freq <

16000000)

, задержка

else

goto

$ + 1

endif

endif

EPort, Epin

If (Freq >

8000000)

, Возможно, потребуется

If (Freq <

16000000)

, задержка

goto

$ + 1

endif

endif

EPort EPin



0 ... 70717273747576 ... 159