*Текущая стоимость 74,59 уже могла изменится. Что бы узнать актуальную цену и проверить наличие товара, нажмите "Добавить в корзину"

Пожалуйста, прочитайте перед покупкой:
Поскольку обычные посылки не имеют информации об отслеживании, поэтому в пик сезона логистики, обычные посылки будут расширены, чтобы прибыть, поэтому, если вы не возражаете против скорости логистики, пожалуйста, оплатите регистрационную плату, С более быстрой скоростью доставки.
При обнаружении незначительных повреждений изделия, изогнутые штифты и царапины на чехол, мы не принимаем возврат средств, если они не влияют на использование . Если вы не согласны с этой ситуацией, пожалуйста, не покупайте мой продукт. Когда вы покупаете мой продукт, это принятие по умолчанию этой статьи! Поэтому мы не примем ваш спор.
LCD1602 (желто-зеленый экран)
Стандартный 16X2 ЖК-модуль символов (подсветка/желтый зеленый)
1602 использует стандартный 16-контактный интерфейс, где:
Штырь 1: VSS-это наземная мощность
2-й фут: VDD подключен к положительному источнику питания 5 В
Pin 3: V0-это конец регулировки контрастности ЖК-дисплея. Когда положительная мощность подключена, контраст является самым слабым. Когда используется мощность заземления, контраст является самым высоким. Когда контраст слишком высок, произойдет «ghosting». При использовании вы можете настроить контрастность через потенциометр 10K.
Pin 4: RS-это выбор регистра. Когда выбран высокий уровень, выбирается регистр данных, и когда выбран низкий уровень, выбирается регистр инструкций.
Pin 5: R/W-это сигнальная линия чтения/записи. Когда он высокий, он выполняет операции чтения, и когда он низкий, он выполняет запись. Когда RS и RW низки вместе, Инструкция или адрес дисплея могут быть написаны. Когда RS низкий, RW может считывать сигнал занят, и когда RS высокий, RW может быть записан на данные.
Pin 6: E-терминал-это enable terminal. Когда терминал E изменяется от высокого до низкого уровня, модуль liquid crystal выполняет команду.
Контакты от 7 до 14: от D0 до D7 представляют собой 8-битные двунаправленные линии передачи данных.
Pin 15: источник питания с подсветкой
Pin 16: источник питания с отрицательной подсветкой
Память поколения символов (CGROM) внутри 1602 жидкокристаллического модуля сохранила 160 различных точечных матричных графических символов, как показано в таблице 1. Эти символы: арабские цифры, прописные и строчные буквы английских букв, часто используемые символы и японская Кана. Каждый символ имеет фиксированный код. Например, код прописной английской буквы «A»-01000001B (41H). Когда модуль отображает изображение точечной матрицы в адресе 41H, мы можем увидеть букву «A».
Ниже приведена процедура отображения буквы «А» в позиции первого символа второй линии ЖК-модуля: ORG 0000H
RS EQU P3.7; Определите, как подключено конкретное оборудование
RW EQU P3.6; Определить, как подключено конкретное оборудование
E EQU P3.5; Определите, как подключено конкретное оборудование
MOV P1, # 00000001B; Четкий экран и сброс курсора
ACALL ENABLE; Команда записи вызова subroutine
MOV P1, # 00111000B; Режим отображения набора: 8-битная 2-линейная 5x7 точечная матрица
ACALL ENABLE; Команда записи вызова subroutine
MOV P1, # 00001111B; Дисплей включен, курсор включен, курсор может мигать
ACALL ENABLE; Команда записи вызова subroutine
MOV P1, # 00000110B; Текст не перемещается, курсор автоматически перемещается вправо
ACALL ENABLE; Команда записи вызова subroutine
MOV P1, # 0C0H; Начальный адрес записи (первая позиция во второй строке)
ACALL ENABLE; Команда записи вызова subroutine
MOV P1, # 01000001B; Код для Буквы A
SETB RS ;RS = 1
CLR RW ; RW = 0; Готов к записи данных
CLR E ; E = 0; Выполнение команды отображения
Задержка ACALL; Занят ли ЖК-модуль?
SETB E ; E = 1; Полный дисплей, остановка программы
AJMP $
Включить:
CLR RS ; subroutine для команд управления написанием
CLR RW
CLR E
Задержка ACALL
SETB E
RET
Задержка:
MOV P1, # 0FFH ; subroutine для определения того, занят ли ЖК-дисплей
CLR RS
Броб RW
CLR E
НОП
SETB E
JB P1.7, задержка; Если P1.7 высокий, это означает, что занят и ждет в цикле
RET
Конец
В начале программы Функция ЖК-модуля инициализирована и Формат дисплея согласован. Обратите внимание, что при отображении символа курсор автоматически смещается вправо. Никакого ручного вмешательства не требуется. Каждый раз, когда вызывается Входная команда, сначала вызывается задержка подмышек для определения того, занят ли модуль жидкого кристалла, затем адрес позиции дисплея 0C0H, И, наконец, код 41H символа A, который будет отображаться, является входом.
SMC1602A (16*2) аналоговый порт
Схема подключения:
Флуоресцентный-
LCM-----51 LCM-----51 LCM------51
Флуоресцентный
DB0-----P1.0 DB4-----P1.4 RW-------P2.0
DB1-----P1.1 DB5-----P1.5 RS-------P2.1
DB2-----P1.2 DB6-----P1.6 E--------P2.2
DB3-----P1.3 DB7-----P1.7 VLCD подключение 1K резистор к GND
Флуоресцентный-
[Примечание: AT89S52 использует 12 м кристаллический осциллятор]
=========================================================== = */
# Define LCM_RW P2_0/определение штифта
# Define LCM_RS P2_1
# Define LCM_E P2_2
# Define LCM_Data P1
# Define Busy 0x80/используется для обнаружения загруженного флага в слове состояния LCM
# I nclude
Void WriteDataLCM(unsigned char WDLCM);
Void WriteCommandLCM(unsigned char WCLCM,BuysC);
Неподписанный char ReadDataLCM(void);
Неподписанный char ReadStatusLCM(void);
Void LCMInit(void);
Void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
Void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code * DData);
Void Delay5Ms(void);
Void Delay400Ms(void);
Неподписанный char код uctech[] = {"uctech"};
Неподписанный char code net[] = {"uctech.icpcn.com"};
Void main(void)
{
Delay400Ms(); /Начните ждать, подождите, пока LCM поговорит с рабочим статусом
LCMInit(); /Инициализация LCM
Delay5Ms (); /задержка на некоторое время (не может)
DisplayListChar(0, 5, uctech);
DisplayListChar(0, 0, net);
ReadDataLCM (); /тестовое предложение бесполезно
В то время как (1);
}
/Данные записи
Void WriteDataLCM (неподписанный char WDLCM)
{
ReadStatusLCM(); /Обнаружение занятого
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; /если скорость кристаллического осциллятора слишком высокая, вы можете добавить небольшую задержку после этого.
LCM_E = 0; /задержка
LCM_E = 1;
}
/Инструкции по записи
Void WriteCommandLCM(unsigned char WCLCM,BuysC) /Обнаружение покупок при 0
{
If (BuysC) ReadStatusLCM(); /обнаруживает занятие по мере необходимости
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
/Считывание данных
Неподписанный char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
Возврат (LCM_Data);
}
/Статус чтения
Неподписанный char ReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
В то время как (LCM_Data & Busy); /обнаруживает сигнал занятого
Возврат (LCM_Data);
}
Void LCMInit(void) /Инициализация LCM
{
LCM_Data = 0;
WriteCommandLCM (0x38, 0); /три режима отображения, не обнаруживайте сигналы
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM (0x38, 1); /настройки режима отображения, начинайте каждый раз, чтобы обнаруживать сигналы с напряжением
WriteCommandLCM (0x08, 1); /закройте дисплей
WriteCommandLCM (0x01, 1); /прозрачный экран дисплея
WriteCommandLCM(0x06,1); /отображение настроек движения курсора
WriteCommandLCM(0x0C,1); /отображение и настройки курсора
}
/Отображение символа в указанном положении
Void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y & = 0x1;
X & = 0xF; /предел X не может быть больше 15, Y не может быть больше 1
Если (Y) X = 0x40; /когда будет отображаться вторая линия, код адреса + 0x40;
X = 0x80; /Рассчитать код инструкции
WriteCommandLCM (X, 0); /здесь не обнаруживается сигнал занятого, отправьте код адреса
Записываемый номер (DData);
}
/Отображение строки символов в указанном положении
Void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code * DData)
{
Неподписанный char ListLength;
Длина листа = 0;
Y & = 0x1;
X & = 0xF; /предел X не может быть больше 15, Y не может быть больше 1
В то время как (DData[ListLength]>0x20) /выйти, если конец строки достигнут
{
Если (X <= 0xF) /X координата должна быть меньше 0xF
{
Дисплей OneChar(X, Y, DData[ListLength]); /отображение одного символа
ListLength + +;
X + +;
}
}
}
/Задержка в 5 мс
Void Delay5Ms(void)
{
Без подписи int TempCyc = 5552;
В то время как (TempCyc --);
}
/Задержка 400 мс
Void Delay400Ms(void)
{
Неподписанный char TempCycA = 5;
Без подписи int TempCycB;
В то время как (темпцика --)
{
Темпцицб = 7269;
В то время как (TempCycB --);
};
![222]()
![1]()