Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Alex_A
Родился
Сообщения: 11
Зарегистрирован: Пн май 18, 2009 11:25:28
Откуда: samara
Контактная информация:

Сообщение Alex_A »

ну ёёёёмана ... опять началясь свистопляска :( ..

ЖКИ начинает мигать ... проверил - скачет напряжение на 3 ноге (контраст). От переменника не зависит. От схемы не зависит (цеплял к чужим схемам). Думал - сдох индикатор ... подцепил вместо 16х2 попавшийся под руку 20х4 ... та же фигня ... оба винстаровские, новые, только из магазина.

Судя по осцилографу - похоже на то, что на ноге какой-то цифоровой сигнал скачет ....

да, ещё ... судя по заущенным таймерам, на работу схемы это мигание никак не влияет ... т.е. контроллер пашет исправно, и ЖКИ тоже пашет, ибо инициализацию не теряет. Просто скачет картинка ...
Аватара пользователя
yaotzin
Опытный кот
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

подскажите, хочу купить HD44780 но такого нет и вообше у нас впервые про него на радио рынке слышат, какие - то видел ЖК индикаторы но продавец не шарит нифига как и я, как бы это так купить чтоб не промахнутся. на что обратить внимание чтоб купить аналог HD44780
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

НаписАть на бумажке какие есть, и в гугль :)
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
Sannex
Открыл глаза
Сообщения: 73
Зарегистрирован: Чт июн 26, 2008 19:21:24

Сообщение Sannex »

Товарищи, требуется помощь.
Есть необходимость отображать на LCD индикаторе символы которых нет в стандартном наборе. В КодеВижне нашел примерно следующее по поводу определения собственных символов:
//
fflash char symbol[8]={0x00,...0x00}; //массив с кодом символа
char i, addr;
addr=0;
for (i=0; i<8; i++)
{
lcd_write_byte(addr,symbol[i]);
addr++
};

.......
А вот как теперь вывести на экран? что-то типа этого?

llcd_putchar(0);

Тут как я понимаю должен указываться адрес нового символа, но какой адрес?
И еще, чтобы выводить кириллицу необходимо составить массив или строку с кодировкой символов типа:
char privet[]={0xA8, 0x50, 0xB8, 0xB3, 0x65, 0BF}; //Привет

И как теперь сочленить новый символ и надпись сочленить в одной строке?
Вывести символ, потом позиционировать курсор и вывести остатки? Или есть пути проще?

А еще в книге Лебедева "CodeVisionAVR Пособие для начинающих" видел такую конструкцию:

#pragma ruslsd+ //Включить автоматическую перекодировку кириллицы
sprintf(buffer,"Символ: %d",symbol);
#pragma ruslcd-
lcd_puts(buffer);


Но CodeVision ругается по поводу директивы #pragma ruslcd - говорит о незнании таковой. Вопрос - таким вариантом кто-нибудь пользовался?
Все будет хорошо... Или нет... Но тогда все будет очень плохо
Аватара пользователя
yaotzin
Опытный кот
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

http://www.winstar.com.tw/include/files/jpg/pdf.jpg

WINSTAR WH1602D-YGH-CT (на базе KS0066) это аналог HD44780 ?
Аватара пользователя
yaotzin
Опытный кот
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

похоже аналог.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Sannex писал(а):Товарищи, требуется помощь.
Есть необходимость отображать на LCD индикаторе символы которых нет в стандартном наборе.
...
И еще, чтобы выводить кириллицу необходимо составить массив или строку с кодировкой символов типа:
char privet[]={0xA8, 0x50, 0xB8, 0xB3, 0x65, 0BF}; //Привет

И как теперь сочленить новый символ и надпись сочленить в одной строке?
Вывести символ, потом позиционировать курсор и вывести остатки? Или есть пути проще?
посмотрите исходники моей библиотечки TUI - там:
1. есть пример использования нестандартного знакогенератора
2. есть пример "сочленения строк"
кроме этого, на моем сайте есть утилита для "переконвертации" русских символов для вывода на ЖКИ.

P.S. Пользовательский знакогенератор состоит из 8 символов с кодами от 0 до 7.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
k000858
Открыл глаза
Сообщения: 44
Зарегистрирован: Сб июн 14, 2008 11:51:50

Сообщение k000858 »

подскажите плиз где ошибочка

Код: Выделить всё

.include "m8def.inc"

.def Temp=R16
;.def t0=R17
;.def t1=R18

.cseg
.org 0


;***********èíèöèàëèçàöèÿ ïîðòòîâ**************

ldi Temp,low(RAMEND)
out SPL,Temp
ldi Temp,high(RAMEND)
out SPH,Temp

ldi Temp,0b11110000                  ;íàñòðîéêà ïîðòîâ
out DDRD, Temp


;***********èíèöèàëèçàöèÿ æêè******************
rcall Paus                          ; 20 ìñ
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 ìêñ
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 ìêñ
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 ìêñ
ldi Temp,0b00100000
out PortD, Temp
rcall Paus1                        ; 40 ìêñ


;ldi Temp,0b00010000                  ;óñòàíîâêà ïàðàìåòðîâ
;out PortD, Temp
;ldi Temp,0b10000000
;out PortD, Temp

;ldi Temp,0b00000000                  ;âûêëþ÷åíèå äèñïëåÿ
;out PortD, Temp
;ldi Temp,0b10000000
;out PortD, Temp

;ldi Temp,0b00000000                  ;î÷èñòêà äèñïëåÿ
;out PortD, Temp
;ldi Temp,0b00010000
;out PortD, Temp   
         
;ldi Temp,0b00000000                  ;óñòàíîâêà ðåæèìà ââîäà äàííûõ
;out PortD, Temp                              
;ldi Temp,0b01100000
;out PortD, Temp



;***********çàäåðæêà  20mc***************************

Paus:                           
         ldi R17,246
         ldi R18,80

loop:      
         dec R17
         brne loop
         dec R18
         brne loop
ret

;***********çàäåðæêà 40 ìêñ***************************

Paus1:
         ldi R17,40
loop1:
         dec R17
         brne loop1
ret
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

ни чё не понял :shock:
где выбор: данные-команды?
где строб-импульс?
где хотя бы схема включения?
Последний раз редактировалось GP1 Чт ноя 26, 2009 16:00:36, всего редактировалось 1 раз.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

ошибка в том, что нет основного цикла: ваша программа доберется до подпрограммы Paus и примется ее выполнять, после чего выполнит ret и окажется неизвестно где...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Sasha1986
Открыл глаза
Сообщения: 40
Зарегистрирован: Чт ноя 19, 2009 03:58:29

Сообщение Sasha1986 »

yaotzin Большинство знакосинтезирующих это аналоги HD44780.

вот смотри и радуйся)))
k000858
Открыл глаза
Сообщения: 44
Зарегистрирован: Сб июн 14, 2008 11:51:50

Сообщение k000858 »

ARV писал(а):ошибка в том, что нет основного цикла: ваша программа доберется до подпрограммы Paus и примется ее выполнять, после чего выполнит ret и окажется неизвестно где...

спасибо
добавил основной цикл аля

Код: Выделить всё

Inf:   
rjmp Inf

и все встало на свои места :)

ps. не обращайте внимания что в проге пока ничего нет, это лишь набросочка )) первые шаги так сказать )
k000858
Открыл глаза
Сообщения: 44
Зарегистрирован: Сб июн 14, 2008 11:51:50

Сообщение k000858 »

эх что то ничего не получается.
Пытаюсь подключить HD44780 к меге 8. Программировать только учусь, пока только научился программить мегу под светодиоды (бегущий огонек с обучалки) но этих знаний не хватает, что б справится с моей задачей.
HD44780 подключаю по 4х битному режиму.
Схему подключения прикладываю ниже. Кому не сложно, не могли бы накидать простейший прогр. код для инициализации + вывода пары симвалов на экран? а дальше по примеру думаю разобрался бы. Очень помогли бы комментарии по ходу выполнения проги. Учусь под асм.
Нашел кучи готовых программ но там слишком много всего, слишком много не знакоммых комманд и операций. попроще бы как ниьудь
Заранее благодарен откликнувшимся

Пока только накидал программу инициализации, и то пока не уверен, сработает ли.

Код: Выделить всё

.include "m8def.inc"

.def Temp=R16
.def t0=R17
.def t1=R18

.cseg
.org 0


;***********инициализация порттов**************

ldi Temp,low(RAMEND)
out SPL,Temp
ldi Temp,high(RAMEND)
out SPH,Temp

ldi Temp,0b11110000                  ;настройка портов
out DDRD, Temp


;***********инициализация жки******************
rcall Paus                          ; 20 мс
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 мкс
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 мкс
ldi Temp,0b00110000
out PortD, Temp
rcall Paus1                        ; 40 мкс
ldi Temp,0b00100000
out PortD, Temp
rcall Paus1                        ; 40 мкс



ldi Temp,0b00010000                  ;установка параметров
out PortD, Temp
ldi Temp,0b10000000
out PortD, Temp

ldi Temp,0b00000000                  ;выключение дисплея
out PortD, Temp
ldi Temp,0b10000000
out PortD, Temp

ldi Temp,0b00000000                  ;очистка дисплея
out PortD, Temp
ldi Temp,0b00010000
out PortD, Temp   
         
ldi Temp,0b00000000                  ;установка режима ввода данных
out PortD, Temp                              
ldi Temp,0b01100000
out PortD, Temp

Inf:
      rjmp Inf               ;основной цикл


;***********задержка  20mc***************************

Paus:                           
         ldi t0,246
         ldi t1,80

loop:      
         dec t0
         brne loop
         dec t1
         brne loop
ret

;***********задержка 40 мкс***************************

Paus1:
         ldi t0,40
loop1:
         dec t0
         brne loop1
ret
Вложения
2.JPG
(112.98 КБ) 667 скачиваний
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

страниц 2-3 назад Pooher, ibiza11 и я выкладывали свои библы по работе с LCD посмотри там.
Чем дальше, тем больше становлюсь занудой...
Изображение
HekuToc
Прорезались зубы
Сообщения: 249
Зарегистрирован: Вт ноя 10, 2009 22:37:24
Откуда: Латвия, Рига

Сообщение HekuToc »

Если не трудно, то отвечайте мне названиями буржуйских схем.
HekuToc
Прорезались зубы
Сообщения: 249
Зарегистрирован: Вт ноя 10, 2009 22:37:24
Откуда: Латвия, Рига

Сообщение HekuToc »

Если у дисплея подключить только Анод, Катод. Vcc Vdd и Vee, что он должен показывать.
Как можно проверить функциональность без МК?
Если не трудно, то отвечайте мне названиями буржуйских схем.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

HekuToc без мк полностью работоспособность не проверить. Но если подать питание и выкрутить контрастность на максимум, то верхняя строка ЖКИ покажет "чёрные квадраты".
HekuToc
Прорезались зубы
Сообщения: 249
Зарегистрирован: Вт ноя 10, 2009 22:37:24
Откуда: Латвия, Рига

Сообщение HekuToc »

Я могу переменный на 100Ком поставить, а то на 40 нет.
Если не трудно, то отвечайте мне названиями буржуйских схем.
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

100? 40? вроде как всю жизнь 10-тю Комами обходились...
HekuToc
Прорезались зубы
Сообщения: 249
Зарегистрирован: Вт ноя 10, 2009 22:37:24
Откуда: Латвия, Рига

Сообщение HekuToc »

Дома, по ка что только на 100КОм. И тот из тостера...
Если не трудно, то отвечайте мне названиями буржуйских схем.
Ответить

Вернуться в «Периферия»