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

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

0 ... 73747576777879 ... 159


5. Задание рабочих параметров жидкокристаллического дисплея: запись кода 0x02 в жидкокристаллический дисплей для разрешения режима с 4-разрядным форматом передачи данных.

Все перечисленные ниже команды/операции записи требуют использования двух полубайтов:

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

♦ запись кода 0x00/0x08 для отключения дисплея;

♦ запись кода 0x00/0x01 для стирания данных дисплея;

♦ передача команды Set Си rsor Move Di rection (Задание направления смещения курсора);

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

Режим с 4-разрядным форматом передачи данных на жидкокристаллический дисплей и соответствующая макрокоманда LCD4 являются, по существу, модификациями соответственно режима с 8-разрядным форматом передачи данных и макрокоманды LCD8. Чтобы инициировать макрокоманду LCD4, необходимо воспользоваться следующим командным словом:

LCD4 DataBit, DataPort, DataPin, EPort, EPin, RSPort, RSPin, RWPort, RWPin, Freq,

Где параметр DataBit задается младшими битами данных и может принимать только значения О или 4. В этой макрокоманде наряду с переменной Dlay используется вторая переменная LCDTemp:

LCD4 Macro DataPort, Eport, Epin, RSPort, RSPin, RWPort, RWPin, Freq

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

DlaySValue = ((S007 • (Freq/1000)/4000)/7) + 2S6

DlayieoValue = (163 - (Freq/1000)/4000)/3

wbile (Bit > = 0 ; Определение числа битов

; и их позиций для переменной ; DlayieOValue.

if ((DlayieOValue & Value) != 0)

if (DlaylOOBitl == -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) = DlayieOBitl = DlayieOBitl

DlayieOB 1

Dlay160Bit2 else

Dlay160Bit2 endif endif

Dlay5 movlw movwf movlw subwf xorlw addwf btfsc

= -1

Необходимы максимум два бита it2)

Сдвиг на 1 вверх Удаление второго бита

= Dlay160Bit2 + 1

(DlaySValue & OxOFFOO) >> Dlay

DlaySValue & OxOF, f Dlay, w OxOFF Dlay, w STATUS, Z

Задержка 5 мс

decfsz Dlay, f goto $

retu rn LCDPORTInit

bsf STATUS, RPO if (DataBit 0) movlw OxOFO else

movlw OxOOF endif

movwf DataPort bcf EPort, EPin

RSPort, RSPin RWPort, RWPin STATUS, RPO EPort, EPin RSPort, RSPin RWPort, RWPin

Инициализация портов Только для среднего подсемейства

bcf bcf bcf bcf bcf bcf retu rn LCDIns

movwf LCDTemp

Передача команды на дисплеи Сохранение значения



if (OataBit == 0) swapf LCDTemp, w

andlw OxOOF else

andlw OxOFO endif

movwf DataPort

bcf RSPort, RSPin if (Freq > 8000000) if (Freq < 16000000)

nop else

goto $ + 1 endif endif

bsf EPort EPin If (Freq > 8000000) if (Freq < 16000000)

nop else

goto $ + 1 endif endif

bcf EPort, EPin If (DataBit == 0)

movf LCDTemp, w

andlw OxOOF else

swapf LCDTemp, w

andlw endif movwf bcf if (Freq If (Freq

nop else

goto endif endif

bsf If (Freq if (Freq

nop else

goto

OxOFO

DataPort RSPort RSPin > 8000000) < 16000000)

EPort EPin > 8000000) < 16000000)

Первым передается старший полубайт

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

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

Младший полубайт передается вторым

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

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



0 ... 73747576777879 ... 159