![]() | |
НПО Системы Безопасности (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 |