Страница 81 из 123
Re: Переопределяемые символы в HD44780
Добавлено: Вт окт 21, 2014 00:31:06
ksardas_90
koyodza писал(а): Обычно я стараюсь не использовать символ с кодом 00, вместо него использую 08
1)А чем может быть чревато использование символа 00?
2)т.е. если я хочу например в 07 символ записать рисунок вертикальной палочки справа, в качестве команды передаю адрес CGRAM 0x78 затем в режиме данных (RS=1) значение этой ячейки 0х01, повторяю этот шаг увеличивая на 1 адрес CGRAM до восьми раз, и посылаю команду 0х80 для вывода символа в первое место верхней строки, и вызвать сам символ послав данные 0x07 ?
Re: Переопределяемые символы в HD44780
Добавлено: Вт окт 21, 2014 07:10:47
ARV
CyberVad писал(а): 7 байтов значащих (первый описывает верхнюю строку, седьмой нижнюю), а восьмой произвольный.
попадаются индикаторы, в которых все 8 байтов отображаются, поэтому обнуление восьмого будет правильной тактикой.
Re: Переопределяемые символы в HD44780
Добавлено: Вт окт 21, 2014 11:34:05
koyodza
ksardas_90 писал(а):1)А чем может быть чревато использование символа 00?
Сложностями использования нормальных строк, которые оканчиваются нулём.
Не все пишут 50 раз подряд lcdwrite('a'), бывают и более сложные программные реализации, в которых хочется по-возможности использовать более "объектный" подход.
ksardas_90 писал(а):2)в качестве команды передаю адрес CGRAM 0x78 затем в режиме данных (RS=1) значение этой ячейки 0х01,
Всё верно, только адрес всё же 0х38, поскольку в самом адресе 6 бит, но передаётся на этом этапе 0х78, поскольку бит7=0 и бит6=1 означает запись адреса CGRAM
Привыкайте использовать правильные названия и понятия.
CyberVad писал(а):И хоть символ 5х7, а передать надо 8 байтов: 7 байтов значащих (первый описывает верхнюю строку, седьмой нижнюю), а восьмой произвольный.
Большинство современных индикаторов восьмую строку отображают. Поэтому если она не нужна записывайте туда 0.
Re: Переопределяемые символы в HD44780
Добавлено: Ср окт 22, 2014 00:23:48
ksardas_90
Всем огромное спасибо, ответы многое прояснили и теперь стало получаться).
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб ноя 15, 2014 18:11:32
yur4ik
Здравствуйте, прошу помощи. Купил седня WH1602B-YYK-CTK# как я думал, но оторвав наклейку увидел надпись 1602F.

ПОсмотрел датники на WH1602 нескольких серий, у всех 1,2 ножка это +, -, но меняются местами в зависимости от серии. Раз наклейка не соответствует надписи на плате, то может по факту это ваще другая серия где 1 ножка это не GND, а +5В(Как раз первая ножка идет на кондер которого нет, но есть знак + около пяточка). У моего индикатора как я понял LED подсветка, то есть чтобы что-то увидеть на нем, нужно запитать подсветку через резистор 40-150Ом и настроить контрастность? Может у кого такое же чудо было уже? Не хочу просто на ветер 400р выкинуть
Вот фото этого чуда
Спойлер
1: 
2: 
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс ноя 16, 2014 10:27:31
Alexeyslav
Подсветка не мешает увидеть изображение.
Просто прозвони питание в режиме прозвонки диодов - в таких схемах имеется обратный диод по питанию, если подключишь щупы тестера не так как надо - питание индикатора будет звониться как диод.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс ноя 16, 2014 17:55:46
yur4ik
Alexeyslav, благодарю

ща узнаем где +, а где -
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт ноя 20, 2014 22:55:18
mrFox
Alexeyslav писал(а):Подсветка не мешает увидеть изображение.
Просто прозвони питание в режиме прозвонки диодов - в таких схемах имеется обратный диод по питанию, если подключишь щупы тестера не так как надо - питание индикатора будет звониться как диод.
про диод - не слыхал о таком
часть приборов при 2.5В потребляют ток, что при прозвонке тестером будет определенно как ток через диод - обратный тому, что вы сказали
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт ноя 20, 2014 23:18:09
Alexeyslav
Но он всегда меньше чем в обратном направлении.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 05, 2015 16:05:58
СКАЗОЧНИК
Спасите. ))) Подключил ЖКИ, мк АтМега8. Алгоритм по ДИ-ХАЛТУ, только урезал его, потом что мне чтение не надо. Однако Дисплей не инициализируется. Проверил вольтметром, на всех ногах DB0-DB7 у дисплея присутствует 5 вольт. Подключил по 4 битной шине.
Ничего не понимаю. Мега прошивается. Порт рабочий только что проверял. Все в идеале. ))) А на дисплее че DB подтянуты к плюсу? Так и должно быть?
Такс... еще лишние DB0-DB3 посадил на землю, чтобы не болтались.... Не знаю на сколько это правильно. Однако, ничего не изменилось.
Еще одну хрень понял... Это все из-за временных задержек. Если на выводы кварца положить палец, то начинает дисплей мерцать и можно даже разглядеть символ, который я на него отправил...
Поправил еще фьюзы СКОРТ. Теперь пальцем прижимать не реагирует, амплитуда на кварце стала больше. Проверял осциллографом. Но и запускаться дисплей теперь отказывается.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср янв 07, 2015 21:37:57
СКАЗОЧНИК
Такс... Не выдержал и полностью все переписал по своему.. Теперь можно подключать дисплей вообще на любые пины любых портов, хоть все на разные по 4 битной шине (6 проводов). И даже инициализация проходит (разбирался с кучей всяких даташитов). Загораются обе строки белыми квадратами. Контраст регулируется.
Остался такой вопрос. Я уже туплю...
Вывод данных как делать? Просто указывать, что сейчас идут данные и пихать их? Или надо еще адрес где-то поставить сначала, а потом пихать? А то у меня не выводит ничего... И курсор не мигает...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 00:07:42
WiseLord
Загорание двух строк вовсе не означает удачную инициализацию.
Для надёжной инициализации в 4битном режиме вывода на дисплей нужно:
A)
1. Выставить на D7-D4 режиме INIT_DATA (0x3)
2. Перевести RS/RW в режим записи команды.
3. Задержка 20мс
4. Строб по E
5. Задержка 5мс
6. Строб по E
7. Задержка 120мкс
8. Строб по E
B)
1. Передать в 8битном режиме (1 строб)
KS0066_FUNCTION | KS0066_4BIT (0x20 | 0x00)
2. Уже находясь в 4битном режиме (два строба на команду) инициализировать двухстрочный режим
KS0066_FUNCTION | KS0066_4BIT | KS0066_2LINES (0x20 | 0x00 | 0x08)
3. Включить экран
KS0066_DISPLAY | KS0066_DISPAY_ON (0x08 | 0x04)
4. Очистить экран командой KS0066_CLEAR (0x01) с задержкой после неё 2 мс
5. Включить режим автоинкремента адреса KS0066_SET_MODE | KS0066_INC_ADDR (0x04 | 0x00)
После этого можно задавать командой адрес KS0066_SET_DDRAM + addr (0x80 + addr) и писать уже данные, каждый новый байт данных будет писаться в следующую ячейку (автоинкремент).
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 08:13:59
СКАЗОЧНИК
Кажется не так малость сделал... ))) Мне все интересны эти стробы. В одном ДШ написано, что надо Три раза вывести старшую тетраду команды установки в 8 битный режим с паузами между ними в 40 мкс. А уже четвертой командой вывести старшую тетраду команды установки в 4 битную линию, а дальше без особых задержек уже можно снова пихать уже полностью 8 битные команды (разбивая вперед старшей).
Сейчас перестал две строк и включать...
По моему в МЭЛТовских так написано... Только не понятно про строб. 40 мкс давать когда строб наверху и 40 мкс, когда строб внизу? Или 40 мкс делить на один строб, т.е. по 20?
Вот мой проект. Там два файла с комментариями. LCD4_macro.inc и LCD4.asm.
В первом макросы и инициализация с большими задержками. Во втором объявление портов вначале и формирование выводимых данных на порте(ах) с задержками.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 09:10:37
WiseLord
СКАЗОЧНИК писал(а):В одном ДШ написано, что надо Три раза вывести старшую тетраду команды установки в 8 битный режим с паузами между ними в 40 мкс.
Команда установки в 8бит режим - это KS0066_FUNCTION | KS0066_8BIT (0x20 | 0x10). Это то же самое, что я выше и говорил - устанавливаем на D7-D4 число 0x3 (на всём порту получается 0x30, но D3-D0 не подключены, так что всё равно) и три раза делаем строб. Потом уже переводим (8-битной командой - по стробу на команду) в 4-битный режим, а дальше добиваем инициализацию уже 4-хбитными командами (по два строба на команду).
P.S.
Посмотрел на код - вроде никакого особо криминала не видно, должно бы работать.
Можете глянуть на мой код (на C) - он-то точно работает, может какие-то идеи появятся. Комментариев по коду нет, но там вроде бы всё понятно должно быть. Задержки те же поменять, например.
https://github.com/WiseLord/boardcomput ... s0066.h#L7
https://github.com/WiseLord/boardcomput ... 0066.c#L65
У меня несколько иначе стробирование сделано - сначала выставляются данные, а потом идёт строб (задержка - поднять E - задержка - опустить E), но можно как и у Вас - поднять E, выставить данные - задержка - опустить строб - задержка.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 11:39:16
СКАЗОЧНИК
WiseLord писал(а):Посмотрел на код
Спасибо Вам, что помогаете! )) Даже не лень было код смотреть! Это уже много стоит. Сейчас буду дальше его мучить.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 18:46:54
levaclaus
Задача разбить "data" на 2 нибла и отправить в жк. Я мыслю в верном направлении?
//PORTA.0 // bit4
//PORTA.1 // bit5
//PORTA.2 // bit6
//PORTA.3 // bit7
PORTB.1 - "Е"
Код: Выделить всё
void write(char data)
{
char nibble;
nibble = (data & 0xF0) >> 4;
PORTA |= nibble;
PORTB.1=1;
PORTB.1=0;
nibble = data & 0x0F;
PORTA |= nibble;
PORTB.1=1;
PORTB.1=0;
}
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 18:55:45
СКАЗОЧНИК
Похоже, что в правильном. Правда я принципиально мучаюсь с ассемблером и поэтому Си начал уже забывать.
У вас только задержек не хватает между и после строба (Е). И еще направления (RS) на выдачу команды или данных.
И еще. КодеВижн со своим синтаксисом - зло.
А я уже думаю надо чтение организовывать. Что-то надоело биться уже с этими задержками.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 19:33:52
levaclaus
СКАЗОЧНИК писал(а):
У вас только задержек не хватает между и после строба (Е).
КодеВижн со своим синтаксисом - зло.
сколько задержку сделать оптимально?
Ой зло, но приятное

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 19:39:18
СКАЗОЧНИК
levaclaus писал(а):сколько задержку
Ну... вообще-то я и сам с ними сейчас мучаюсь... Вот лежат у меня распечатки с разными таблицами из даташитов... Уже на кучу индикаторов. Все даташиты (почти все) скачал в этой теме. И уже дочитал ее почти всю до конца...
По одной таблице я сделал... Но у меня не работает. надо увеличивать, думаю.
А вообще написано "поднять строб", подождать более 230 нсек. потом "Сбросить строб" и еще столько же подождать. Общая длинна периода строба будет равна 500 нсек. так и в таблице нарисовано. В момент, когда строб переходит с высокого в низкий происходит запись в индикатор. Типа того.
Там даже есть табличка, а в ней написано "Период сигнала Е" минимум 500 нсек.
З.Ы. и еще.. Если у вас на порт А подключено еще что-нибудь, то лучше было читать весь порт в переменную, а потом по маске младшую тетраду переделывать, а старшую оставлять без изменений. А то иначе на других пинах порта будет выводить всякую всячину еще... )))))
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 08, 2015 19:56:53
WiseLord
levaclaus писал(а):Код: Выделить всё
nibble = (data & 0xF0) >> 4;
PORTA |= nibble;
PORTB.1=1;
PORTB.1=0;
nibble = data & 0x0F;
PORTA |= nibble;
PORTB.1=1;
PORTB.1=0;
Такой код будет работать неправильно. Нужно ещё, как минимум, перед PORTA |= nibble добавить PORTA &= 0xF0, для очистки полубайта в порту, иначе рано или поздно там скопятся 4 единичных бита и по факту в дисплей будут всегда уходить данные 0xFF.