LCD програма: помощ, които

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 така колко? и приблизително колко забавяне е необходимо за даде възможност за закрепване.

Моля, помогнете.
Благодаря.

 
Хай

Тук е настойнически
http://www.8052.com/tutlcd.phtml

Ако LCD се основава на HD44780 (командите ме карат да мисля така)
Тук е времето

http://home.iae.nl/users/pouweha/lcd/lcd0.shtml # hd44780

Честит кодиране
Nandhu: D

 
Здравейте всички,
Опитах се at89c51 взаимодействие с 16x2 LCD дисплей (hd44780)
аз имам свързан РОКТ1 за LCD и P1.0 за РС, P1.1 до R / W, P1.2 на E.
но не е плосък, показващи всяко производствоAdded след 2 минути:Здравейте всички,
Опитах се at89c51 взаимодействие с 16x2 LCD дисплей (hd44780)
аз имам свързан РОКТ1 за LCD и P1.0 за РС, P1.1 до R / W, P1.2 на E.
но не е плосък, показващи всяко производствонякой харесвам помагам да завърша LCD верига

 
Също така поставени някои закъснения между напишете enale сигнали .. десет CHK пота за коригиране на контраста ...

 
скъп
Това е изходният код на развитите програма, използвана за LCD 16 * 1
Код:

; LCD интерфейс 89s52

; LCD 8952

; D7 14 Р1.7

; D6 13 p1.6

; D5 12 P1.5

; D4 11 p1.4

; BG 6 p1.3

; RS 4 p1.2

; GND 1,3,5

; VCC 2# Включват "8051EQU.INC"

LCD_DATA_4. EQU P1.4

LCD_DATA_5. EQU P1.5

LCD_DATA_6. EQU P1.6

LCD_DATA_7. EQU Р1.7

LCD_RS. EQU P1.2

LCD_EN. EQU P1.3; ИЗЧИСТИ

. ORG 0h

AJMP СТАРТ

; Прекъсва (не се използва); място прекъсват практики на подходящи

; паметта

. ORG 03H, външни прекъсват 0

Reti

. ORG 0BH; таймер 0 прекъсват

Reti

. ORG 13H, външни прекъсват 1

Reti

. ORG 1BH; таймер 1 прекъсват

Reti

. ORG 23h; сериен порт прекъсват

Reti

. ORG 25Н; поставям началото на останалата част от програмата

Initialize:; създаден контрол регистриMOV R4, # 00Н

MOV А, # 00Н

TCON MOV, # 00Н

MOV ТМСШ, # 00Н

MOV PSW, # 00Н

MOV IE, # 00Н; забраните прекъсват

RET

LCD_INITIALIZE:

NOP

MOV P1, # 20h

CLR LCD_RS

SETB LCD_EN

ACALL DELAYMS

CLR LCD_EN

ACALL DELAYMS

MOV а, # 28з

ACALL LCD_SEND_COMMAND

MOV а, # 0ch

ACALL LCD_SEND_COMMAND

MOV а, # 02h

ACALL LCD_SEND_COMMAND

RETLCD_SEND_COMMAND:

MOV 20H, A

ACALL LCD_DATA

CLR LCD_RS

setb LCD_EN

ACALL DELAYMS

CLR LCD_EN

ACALL DELAYMSMOV а, 20H

суап един

ACALL LCD_DATA

CLR LCD_RS

setb LCD_EN

ACALL DELAYMS

CLR LCD_EN

ACALL DELAYMS

RetLCD_SEND_DATA:

MOV 20H, A

ACALL LCD_DATA

setb LCD_RS

setb LCD_EN

ACALL DELAYMS

CLR LCD_EN

ACALL DELAYMSMOV а, 20H

суап един

ACALL LCD_DATA

setb LCD_RS

setb LCD_EN

ACALL DELAYMS

CLR LCD_EN

ACALL DELAYMS

RetLCD_DATA:

CLR в

MOV 20h, един

MOV C, 4 часа

MOV LCD_DATA_4, в

в MOV, 5h

MOV LCD_DATA_5, в

в MOV, 6h

MOV LCD_DATA_6, в

в MOV, 7h

MOV LCD_DATA_7, в

; MOV 20H, A; Запиши за ниско хапане

; ORL P1, # 0F0h; Bits 4 .. 7 <- 1

; Не ORL А, # 0Fh; влияят битове 0-3

; ANL P1, А; Висока хапане да покажете

; MOV А, 20H

RETLCD_CLEAR:

MOV а, # 01Н

ACALL LCD_SEND_COMMAND

RETLCD_SEND_SPACES:

MOV R4, # 20H

LOOP_SPACES:

MOV А, # "

ACALL LCD_SEND_DATA

DJNZ R4, LOOP_SPACES

RETDELAYMS:; милисекунда забавяне рутинни

MOV R7, # 00Н

LOOPA:

INC R7

MOV А, R7

CJNE А, # 0FFH, LOOPA

RETDELAYHS:; половин секунда забавяне над милисекунда забавяне

MOV R6, # 00Н

MOV R5, # 002H

LOOPB:

INC R6

ACALL DELAYMS

А MOV, R6

JNZ LOOPB

Декември R5

А MOV, R5

JNZ LOOPB

RETDELAY1S:; една секунда забавяне над милисекунда забавяне

MOV R6, # 00Н

MOV R5, # 004H

LOOPC:

INC R6

ACALL DELAYMS

А MOV, R6

JNZ LOOPC

Декември R5

А MOV, R5

JNZ LOOPC

RETDELAY5S:; 5 секунди ЗАБАВЯНЕ

MOV R6, # 00Н

MOV R5, # 010H

LOOPD:

INC R6

ACALL DELAYMS

А MOV, R6

JNZ LOOPD

Декември R5

А MOV, R5

JNZ LOOPD

RETDELAY20S:; 20 секунди ЗАБАВЯНЕ

MOV R6, # 00Н

MOV R5, # 030H

LOOPE:

INC R6

ACALL DELAYMS

А MOV, R6

JNZ LOOPE

Декември R5

А MOV, R5

JNZ LOOPE

RETWRITE_MOBISERVE:

MOV а, # "М"

ACALL LCD_SEND_DATA

MOV а, # "О"

ACALL LCD_SEND_DATA

MOV а, # "Б"

ACALL LCD_SEND_DATA

MOV а, # "Аз"

ACALL LCD_SEND_DATA

MOV а, # "S"

ACALL LCD_SEND_DATA

MOV а, # "Е"

ACALL LCD_SEND_DATA

MOV а, # "R"

ACALL LCD_SEND_DATA

MOV а, # "V"

ACALL LCD_SEND_DATAACALL LCD_SEND_SPACESMOV а, # "Е"

ACALL LCD_SEND_DATA

MOV а, # "-"

ACALL LCD_SEND_DATA

MOV а, # "Е"

ACALL LCD_SEND_DATA

MOV а, # 'G'

ACALL LCD_SEND_DATA

MOV а, # "Y"

ACALL LCD_SEND_DATA

MOV а, # 'P'

ACALL LCD_SEND_DATA

MOV а, # 'T'

ACALL LCD_SEND_DATA
RET

;************************* Програма влизане ********************** ***********************

СТАРТ:; основната програма (в сила до, програмата започва от този момент)

ACALL Initialize

ACALL LCD_INITIALIZE

ACALL LCD_CLEAR

ACALL WRITE_MOBISERVE

MOV P1, # 01Н

ACALL DELAY1S

Freez:

NOP

CPL P1.1

CPL P1.0

ACALL DELAY1S

AJMP Freez. КРАЙ

 

Welcome to EDABoard.com

Sponsor

Back
Top