1602A чип SPLC780 SPLC100 совместим со всеми чипами, основной выбор, равномерная яркость подсветки, хороший дисплей, отличное качество, послепродажная гарантия, доставка вовремя, добро пожаловать на покупку. SPLC780, чем микро-любовь ядро Антистатическая способность, чем создание стабильного качества, подлинный Тайвань. Приглашаем вас приобрести нашу продукцию. Ниже приводится основная информация 1602 года:
Ниже приведена процедура отображения буквы «А» в позиции первого символа второй линии ЖК-модуля: ORG 0000 H
RS pp3.7; Определите, как подключено специальное оборудование
RW pp3.6; Определите, как подключено специальное оборудование
E pp3.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
Нареки задержки
Прпб E
Красно-белый
Задержка:
MOV P1, # 0FFH; subroutine для определения того, занят ли ЖК-дисплей
CLR RS
Прпб RW
CLR E
NOP
Прпб E
JB P1.7, задержка; если P1.7 высокий, это означает, что занят и ждёт в петле
Красно-белый
Конец
В начале программы, функция ЖК-модуля инициализирована, и Формат дисплея одобрен. Обратите внимание, что при отображении символа курсор автоматически перемещается вправо. Ручное реагирование не требуется. Каждый раз, когда команда ввода вызывается, задержка subroutine для определения того, загружен ли модуль жидкого кристалла, сначала вызывается, затем адрес позиции дисплея 0C0H, И наконец-то размер; код 41 H персонажа 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 подключение 1 K резистор к GND
---------------------------------------------------
[Примечание: AT89S52 использует кварцевый генератор 12 м]
=========================================================== = */
# Определите LCM_RW P2_0/Определите pin
# Определить LCM_RS P2_1
# Определить LCM_E P2_2
# Определить LCM_Data P1
# Define Busy 0x80/используется для обнаружения загруженного флага в слове LCM status
# Я nclude
Void WriteDataLCM (неподписанный char WDLCM);
Void WriteCommandLCM (неподписанный char WCLCM, BuysC);
Неподписанный char ReadDataLCM (void);
Неподписанный char ReadStatusLCM (void);
Void LCMInit (void);
Void DisplayOneChar (неподписанный char X, неподписанный char Y, неподписанный char DData);
Void DisplayListChar (неподписанный char X, неподписанный char Y, неподписанный код char * DData);
Void Delay5Ms (void);
Void Delay400Ms (void);
Неподписанный код char uctech [] = {"uctech"};
Неподписанный код char net [] = {"uctech.icpcn.com"};
Void основной (void)
{
Delay400Ms ();/Начните ждать, подождите LCM, чтобы обсудить рабочий статус
LCMInit ();/Инициализация LCM
Delay5Ms ();/задержка на некоторое время (не может)
DisplayListChar (0, 5, uctech);
DisplayListChar (0, 0, net);
Считыватель см ();/тестовое предложение не имеет значения
Время (1);
} Долл. США
/Записи данных
Void WriteDataLCM (неподписанный char WDLCM)
{
ReadStatusLCM ();/обнаруживает занят
LCM_Data = WDLCM;
LCM_RS =-1 шт.;
LCM_RW = 0;
LCM_E = 0;/если скорость кристаллического осциллятора слишком высока, вы можете добавить небольшую задержку после этого.
LCM_E = 0;/задержка
LCM_E =-1 шт.;
} Долл. США
/Записи инструкции
Силы WriteCommandLCM (unsigned char WCLCM, BuysC)/купить занят обнаружения в тех случаях, когда 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 (неподписанный char X, неподписанный char Y, неподписанный char DData)
{
Y & = 0x1;
X & = 0xF;/предел X не может быть больше 15, Y не может быть больше 1
Если (Y) X = 0x40;/когда будет отображаться вторая линия, код адреса + 0x40;
X = 0x80;/Рассчитать код инструкции
WriteCommandLCM (X, 0);/здесь не обнаруживается напряженный сигнал, отправьте код адреса
WriteDataLCM (DData);
} Долл. США
/Отображение строк символов по указанной позиции
Void DisplayListChar (неподписанный char X, неподписанный char Y, неподписанный код char * DData)
{
Unsigned char ListLength;
ListLength = 0;
Y & = 0x1;
X & = 0xF;/предел X не может быть больше 15, Y не может быть больше 1
В то время как (DData [ListLength]> 0x20)/выход, если конец струны достигается
{
Если (X <= 0xF)/X координата должна быть меньше 0xF
{
Дисплей OneChar (X, Y, DData [ListLength]);/отображение одного символа
ListLength + +;
X A + +;
} Долл. США
} Долл. США
} Долл. США
/5 мс
Void Delay5Ms (void)
{
Неподписанный Инт темпцик = 5552;
Время (темпцик --);
} Долл. США
/400 мс
Void Delay400Ms (void)
{
Неподписанный чар темпцика = 5;
Unsigned int TempCycB;
Время (темпцика --)
{
TempCycB = 7269;
Время (темпциб --);
} Долл. США;
Вышеуказанные процедуры только для справки!