K
kiranmayik
Guest
Здравейте всички,
Опитах се at89c51 взаимодействие с 20x2 LCD дисплей (ODM-20216S).
аз имам свързан РОКТ1 за LCD и P3.0 за РС, P3.1 до R / W, P3.2 на E.
плосък но не се показва всяка продукция.
Това е кода:; общуването с LCD
; проверка зает знаме преди изпращане на данни, команда за LCD
; P1 = данни за закрепване, P3.0 = РС, P3.1 = R / W, P3.2 = Е пина
ORG 0h
MOV А, # 38H; първоначален LCD 2 линии
ACALL командване; въпрос команда
MOV А, # 0EH; на LCD, курсора
ACALL УПРАВЛЕНИЕ
MOV А, # 02h; се завърнат у дома
ACALL УПРАВЛЕНИЕ
MOV А, # 01Н; Clear LCD команда
ACALL УПРАВЛЕНИЕ
MOV А, # 06Н; смяна курсора право
ACALL УПРАВЛЕНИЕ
MOV А, # 80Н; курсора: ред 1, позиция 0
ACALL УПРАВЛЕНИЕ
MOV А, # "L"; езика писмо L
ACALL DATADISP
MOV А, # "С"
ACALL DATADISP
MOV А, # "D"
ACALL DATADISP
ТУК:
SJMP тук; остана тукКоманда:
ACALL Ready; проверите дали LCD готов
MOV P1, А; въпрос команда код
CLR P3.0; RS = 0 за командване
CLR P3.1, R / W = 0 да пише на LCD
SETB P3.2, E = 1 за Н-да-импулс L
ACALL ЗАБАВЯНЕ
CLR P3.2, E = 0, капаче на
RETDATADISP:
ACALL Ready; проверите дали LCD готов
MOV P1, А; издаване на данни
SETB P3.0; RS = 1 за пренос на данни
CLR P3.1, R / W = 0 да пише на LCD
SETB P3.2, E = 1 за Н-да-импулс L
ACALL закъснение; даде LCD известно време
CLR P3.2, E = 0, капаче на
RETПригответе се:
SETB Р1.7; да Р1.7 пристанище вход
CLR P3.0; RS = 0 достъп commang регистър
SETB P3.1, R / W = 1 четат регистър команда
; четат команда регистър и проверка зает флаг
Гръб:
CLR P3.2, E = 0 за L-към-импулс З
ACALL закъснение; даде LCD известно време
SETB P3.2, E = 1 L-да-H импулс
JB Р1.7, обратно; останат, докато зает флаг = 0
RETЗабавяне:
MOV R3, # 50
HERE1: MOV R4, # 255
HERE2: DJNZ R4, HERE2
DJNZ R3, HERE1
RET
КРАЙАз не съм сигурен колко закъснения на give.do аз трябва да даде забавяне при стартирането за власт on.if така колко? и приблизително колко забавяне е необходимо за даде възможност за закрепване.
Моля, помогнете.
Благодаря.
Опитах се at89c51 взаимодействие с 20x2 LCD дисплей (ODM-20216S).
аз имам свързан РОКТ1 за LCD и P3.0 за РС, P3.1 до R / W, P3.2 на E.
плосък но не се показва всяка продукция.
Това е кода:; общуването с LCD
; проверка зает знаме преди изпращане на данни, команда за LCD
; P1 = данни за закрепване, P3.0 = РС, P3.1 = R / W, P3.2 = Е пина
ORG 0h
MOV А, # 38H; първоначален LCD 2 линии
ACALL командване; въпрос команда
MOV А, # 0EH; на LCD, курсора
ACALL УПРАВЛЕНИЕ
MOV А, # 02h; се завърнат у дома
ACALL УПРАВЛЕНИЕ
MOV А, # 01Н; Clear LCD команда
ACALL УПРАВЛЕНИЕ
MOV А, # 06Н; смяна курсора право
ACALL УПРАВЛЕНИЕ
MOV А, # 80Н; курсора: ред 1, позиция 0
ACALL УПРАВЛЕНИЕ
MOV А, # "L"; езика писмо L
ACALL DATADISP
MOV А, # "С"
ACALL DATADISP
MOV А, # "D"
ACALL DATADISP
ТУК:
SJMP тук; остана тукКоманда:
ACALL Ready; проверите дали LCD готов
MOV P1, А; въпрос команда код
CLR P3.0; RS = 0 за командване
CLR P3.1, R / W = 0 да пише на LCD
SETB P3.2, E = 1 за Н-да-импулс L
ACALL ЗАБАВЯНЕ
CLR P3.2, E = 0, капаче на
RETDATADISP:
ACALL Ready; проверите дали LCD готов
MOV P1, А; издаване на данни
SETB P3.0; RS = 1 за пренос на данни
CLR P3.1, R / W = 0 да пише на LCD
SETB P3.2, E = 1 за Н-да-импулс L
ACALL закъснение; даде LCD известно време
CLR P3.2, E = 0, капаче на
RETПригответе се:
SETB Р1.7; да Р1.7 пристанище вход
CLR P3.0; RS = 0 достъп commang регистър
SETB P3.1, R / W = 1 четат регистър команда
; четат команда регистър и проверка зает флаг
Гръб:
CLR P3.2, E = 0 за L-към-импулс З
ACALL закъснение; даде LCD известно време
SETB P3.2, E = 1 L-да-H импулс
JB Р1.7, обратно; останат, докато зает флаг = 0
RETЗабавяне:
MOV R3, # 50
HERE1: MOV R4, # 255
HERE2: DJNZ R4, HERE2
DJNZ R3, HERE1
RET
КРАЙАз не съм сигурен колко закъснения на give.do аз трябва да даде забавяне при стартирането за власт on.if така колко? и приблизително колко забавяне е необходимо за даде възможност за закрепване.
Моля, помогнете.
Благодаря.