Работа c ЖКИ (LCD)
 
Уведомления
Очистить все

Работа c ЖКИ (LCD)

9 Посты
3 Пользователи
0 Likes
15.3 Тыс. Просмотры
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

Здравствуйте. Подскажите как переводить курсор на ЖКИ на вторую (и другие) строку в двустрочном (более 2 строк) дисплее. Пробовал на примере программы термометра вывести на вторую строку статически данные - ничего не получается. Получилось лишь методом научного тыка поставить 24 пробела, если не ошибаюсь, до окончания первой строки и тогда курсор сам перешел на вторую :). Но ведь это не выход. Буду очень благодарен.
Хочу модернизировать схему на два или более термометров. Когда получится, выложу на общее обозрение.


Цитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Здравствуйте. При использовании LCD с драйвером HD44780 или его клонов обращение ко 2-й строке
осуществляется записью адреса DDRAM равного C0h, где 80h обращение к адресному пространству
DDRAM + 40h адрес начала второй строки.
https://radioded.ru/index.php?option=com_docman&task=doc_download&gid=3&Itemid=34


ОтветитьЦитата
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

Сапсибо за ответ, уже нашел :)


ОтветитьЦитата
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

Подскажите чем отличается 4-битный режим подключения ЖКИ от 8-битного? Есть ли в последнем преимущество?
Заранее благодарен.


ОтветитьЦитата
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
 

Подскажите чем отличается 4-битный режим подключения ЖКИ от 8-битного?
Для 8-битного режима надо восемь проводов для линий D0...D7 тогда как для 4-битного только четыре провода для линий D4...D7. В последнем информационный байт передаётся двумя ниблами по 4 бита, т.е. байт делится пополам и передаётся.
Есть ли в последнем преимущество?
Конечно! Экономия проводов и ножек микроконтроллера.


ОтветитьЦитата
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

Еще раз здравствуйте. Столкнулся с проблемой: собрал прошивку контроллера, очень долго отмучал ее протеусом, вроде заработало. Собрал схему - нифига, в чем может быть дело?
Бывало пару раз после прошивки выскакивает на дисплее только статический текст и то только первой строки и все. Питание выключил, затем включил пропало.
Пробовал просто текст загонять на все строки: выводит все, но тоже как то через раз и контрастность знакомества спадает сверху вниз (т.е. верхние точки сивола темные, а к низу светлеют).
Вот привожу исходники (код комбинирован из разных программ, но хотелось бы наладить работу, перед тем как там приводить все к читабельному виду) и схему в протеусе. Подскажите в чем проблема. Уже и с fuse bit намаялся. Прошиваю Code Vision 1.25.
http://depositfiles.com/files/77r2vqjv3


ОтветитьЦитата
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

О еще забыл: ЖКИ использую RC1604A.


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Здравствуйте.
ИМХО, попробуйте временно заблокировать поддержку состояния "red LED", т.к. при инициализации при первом обращении
; function set, DL=0, N=1, F=0:
; data length = 4 bits
; number of display lines = 4
; font = 5x7
ldi r16, 0b00101000
rcall write_lcd_ir

на выходе получается ерунда.
И, главное, неустойчивая работа индикатора получается из-за слишком маленьких времен. Дайте успокоиться шине данных, сигналам управления.
out LCD_PORT, r17 ; upper 4 bits (E low)
out LCD_PORT, r18 ; upper 4 bits (E high)
out LCD_PORT, r17 ; upper 4 bits (E low)
out LCD_PORT, r19 ; lower 4 bits (E low)
out LCD_PORT, r20 ; lower 4 bits (E high)
out LCD_PORT, r19 ; lower 4 bits (E low)

AVR-ка отрабатывает очень быстро, а драйвер LCD видимо не всегда успевает
out LCD_PORT, r17 ; upper 4 bits (E low)
RCALL PAUSE_RET
out LCD_PORT, r18 ; upper 4 bits (E high)
RCALL PAUSE_RET
out LCD_PORT, r17 ; upper 4 bits (E low)
RCALL PAUSE_RET
out LCD_PORT, r19 ; lower 4 bits (E low)
RCALL PAUSE_RET
out LCD_PORT, r20 ; lower 4 bits (E high)
RCALL PAUSE_RET
out LCD_PORT, r19 ; lower 4 bits (E low)

PAUSE_RET:
RET


ОтветитьЦитата
kuzenchik
(@kuzenchik)
Active Member
Присоединился: 15 лет назад
Сообщения: 6
Topic starter  

to: akl
Спасибо. Будем пробовать.


ОтветитьЦитата