Консультация № 184042
17.09.2011, 05:01
0.00 руб.
0 6 0
Здравствуйте! У меня возникли сложности с таким вопросом:
ЖКИ hd44780 не могу:
1) организовать переход с одной строки на другую (в двухстрочном режиме)
2) генерировать собственные символы (например "Д", "л")

Обсуждение

Неизвестный
17.09.2011, 11:13
общий
не могу организовать переход с одной строки на другую (в двухстрочном режиме)

Вы не могли бы выложить код ваших попыток? А мы найдём ошибки.
давно
Посетитель
7438
7205
17.09.2011, 14:32
общий
Если знакомы с С, могу предложить следующую программу
Там Вы найдете все, что требуется.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
17.09.2011, 19:45
общий
С знаю, но хотелось бы написать для контроллера с системой команд 8051
Не могу найти адрес начала нижней строки, знаю, что верхняя начинается с 080h.
А какой адрес у нижней?
давно
Посетитель
7438
7205
17.09.2011, 22:38
общий
Да, было бы неплохо, если бы Вы показали свою программу
Плюс, схему для понимания, как управляется ЖКИ
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
18.09.2011, 08:11
общий
Схема подключения в pdf-файле.
Код:
CLEAR equ 01h ;команда очистки экрана
SET_POS_0 equ 80h ;установка позиции 0
SET_POS_1 equ 81h
SET_POS_4 equ 84h ;установка позиции 4


org 0
jmp start



org 40h
start:
call d_i
pp1:
clr C
call kl_press
jnc pp1
call kl_klav
mov dptr,#table
movc a,@a+dptr
acall DataWR
ljmp eee


;кодировка клавиш
table: db '1','2','3','4','5','6','7','8','9',0ch,'0',0dh
;п/п сканирования клавиатуры
;определение факта нажатия клавиши
kl_press:
mov p1,#00001111b ;нули на сигнальных линиях
mov a,p1 ;a=****1111b, если не нажато
cpl a ;
anl a,#00001111b ;a=00000000b, если не нажато
clr c
jz endklpr
setb c
endklpr:
ret
;определение нажатой клавиши
kl_klav:
mov p1,#11101111b ;нуль на р1.0
mov c,p1.0 ;проверить возвратную линию р1.0
jc pr01 ;переход на проверку р1.1, если р1.0=1
mov a,#0h
ljmp endscan
pr01:
mov c,p1.1
jc pr02
mov a,#01h
ljmp endscan
pr02:
mov c,p1.2
jc pr10
mov a,#02h
ljmp endscan
pr10:
mov p1,#11011111b
mov c,p1.0
jc pr11
mov a,#03h
ljmp endscan
pr11:
mov c,p1.1
jc pr12
mov a,#04h
ljmp endscan
pr12:
mov c,p1.2
jc pr20
mov a,#05h
ljmp endscan
pr20:
mov p1,#10111111b
mov c,p1.0
jc pr21
mov a,#06h
ljmp endscan
pr21:
mov c,p1.1
jc pr22
mov a,#07h
ljmp endscan
pr22:
mov c,p1.2
jc pr30
mov a,#08h
ljmp endscan
pr30:
mov p1,#0111111b
mov c,p1.0
jc pr31
mov a,#09h
ljmp endscan
pr31:
mov c,p1.1
jc pr32
mov a,#0ah
ljmp endscan
pr32:
mov c,p1.2
jc endscan
mov a,#0Bh
endscan:
ret

;п/п для работы с ЖКИ
;Запись команды
ComWR:
push ACC
ComWait:
acall Status
jb ACC.7, ComWait
pop ACC
mov p2,#0ffh
mov r0, #0F0h

movx @r0, A
ret
;Проверка бита готовности ( чтение команды)
Status:
mov r0, #0F2h
mov p2, #0ffh
movx A, @r0
ret
;Запись данных

DataWR:
push ACC
DataWait:
acall Status
jb ACC.7, DataWait
pop ACC
mov r0, #0F1h
mov p2,#0ffh
movx @r0, A
ret
;Чтение данных
DataRD:
mov r0, #0F3h
mov p2,#0ffh
movx A, @r0
ret
;задержка
Wait:
mov A, #125
Again1:
push ACC
clr A
Again0:
dec A
jnz Again0
pop ACC
dec A
jnz Again1
ret



d_i:
mov r7, #3h
h1:
mov a, #38h
acall ComWR
djnz r7, h1


mov A,#01h ;очистить экран
;mov A, #00111000b ; шина данных 8 разрядов, 2 строки символов, матрица 5х8
acall ComWR

mov A,#00000110b
;mov A, #00001111b ; изображение включено, курсор в виде подчерка выключен, мигающий курсор включен
acall ComWR

mov A,#00001101b
;mov A, #00000110b ; направление смещения счетчика адреса: увеличение, сдвиг дисплея не производится
acall ComWR

mov A,#00010100b
;mov A, #01h ; очистка дисплея и видеопамяти
acall ComWR

mov A,#00111000b
acall ComWR

mov a,#SET_POS_0 ;устанавливаем позицию 0
acall ComWR
mov a,#'D'
acall DataWR
mov a,#'l'
acall DataWR
mov a,#'i'
acall DataWR
mov a,#'n'
acall DataWR
mov a,#'a'
acall DataWR


ret

eee:
jmp eee
end
Прикрепленные файлы:
79ef9fb595a4898305f2288fd0fc6e88.pdf
Неизвестный
19.09.2011, 14:33
общий
Хотелось бы, чтобы вместо "D","l" и т.д. были русские "Д", "л"
Форма ответа