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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

СКАЗОЧНИК писал(а):
ARV писал(а):в чем сакральный смысл изобретения велосипеда?

:) Для меня, например, в том, чтобы понять как это работает и изучить. Иначе можно и до Ардуины скатиться. :dont_know:

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

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

ROMan2947 писал(а):В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом

В хитачевском подробно раписаны тайминги обмена, организация памяти и т.п. нюансы. Так что танцевать лучше именно от него.

Добавлено after 1 minute 7 seconds:
ARV писал(а):я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?

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

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

Сообщение ARV »

trengtor писал(а):Они не всегда имеются в нужном виде
в нужном - это каком?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

ARV писал(а):
trengtor писал(а):Они не всегда имеются в нужном виде
в нужном - это каком?

Вас это беспокоит? Вы хотите об этом поговорить? ©
Изображение
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое :dont_know:
Хочешь сделать хорошо - делай всё сам.
Больше всего раздражать люди, пишущие на форумах "дайте библиотеку для ..." :facepalm:
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Я думаю, что Роман в одном тоже прав. ))) Когда уже все испробовал и много знаешь, тогда приходит понимание, что гораздо целесообразнее взять готовую библиотеку, которую рекомендует официальный производитель или еще кто, которая испытана, которая надежная и отлаженная. Тогда экономится времени больше на разработке ПО и ошибок меньше.
Но такое понимание приходит именно после того, когда уже всего накушался. :roll:
Станислав
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

Аlex писал(а):Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое :dont_know:
Хочешь сделать хорошо - делай всё сам.

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

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

Сообщение ARV »

trengtor писал(а):Иногда это просто приходится делать
trengtor писал(а):Вы хотите об этом поговорить?
ну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?

я не возражаю против обучения. но после того, как научился дрыгать ножками МК, уже все равно, для чего ими дрыгать - для ЖКИ или для SPI или там еще чего-то... тут уже можно и расслабиться. или наоборот, сосредоточиться на чем-то бОльшем...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

ARV писал(а):
trengtor писал(а):Иногда это просто приходится делать
trengtor писал(а):Вы хотите об этом поговорить?
ну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?

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

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

Сообщение ARV »

trengtor писал(а):mikroPascal
этого достаточно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

ARV писал(а):
trengtor писал(а):mikroPascal
этого достаточно

Как бы абсолютно ожидаемый комментарий. Но я слишком тупой для ЦЭ :beer:
Изображение
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

trengtor писал(а):
ROMan2947 писал(а):В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом

В хитачевском подробно раписаны тайминги обмена, организация памяти и т.п. нюансы. Так что танцевать лучше именно от него.

Добавлено after 1 minute 7 seconds:
ARV писал(а):я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?

Они не всегда имеются в нужном виде.


просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.


void init_LCD()
{
_delay_ms(50);
//write_Command(0x20);
//_delay_ms(5);
//write_Command(0x20);
//_delay_us(110);
//write_Command(0x20);

write_Command(0x28); // две строки 4 бита
write_Command(0x08); // отключаем
write_Command(0x01); // очищаем
_delay_us(100);
write_Command(0x06); // двигаем курсор вправо
_delay_ms(10);
write_Command(0xF); //включаем

}
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

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

Сообщение trengtor »

ROMan2947 писал(а):просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.


Вот документ:

HD44780U (LCD-II)
(Dot Matrix Liquid Crystal Display Controller/Driver)
ADE-207-272(Z)
'99.9
Rev. 0.0


На стр. 24, 32, 33, 45, 46 есть практически всё основное, что нужно для работы с такими дисплеями.

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

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

Сообщение ARV »

это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

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

Сообщение MOHCTEP »

ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

ARV писал(а):это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.


Я так думаю Вы имеете ввиду бит BF-busy flag? как раз и собираюсь учесть его в своем проекте...в даташите изначально я его не воспринял всерьез, т.к. в примерах которые я изучал его никто не упомянул....
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.

В частности:

RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет

И так повсюду. Это просто не может работать.
Последний раз редактировалось WiseLord Вс янв 15, 2017 21:43:50, всего редактировалось 1 раз.
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

MOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.


Голова уже кругом) Т.е. нужно вместо write_Command(0x20) отдавать (3<<4)? кстати нарыл в том же ПДФ на стр.23, что этот момент вообще можно доверить самому дисплею, вернее его внутреннему сбросу. а нам подхватить уже с места определения размера шины...это так?

Добавлено after 4 minutes 22 seconds:
WiseLord писал(а):ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.

В частности:

RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет

И так повсюду. Это просто не может работать.


после замечаний MOHCTEP тот код уже не актуален!!!была проведена работа над ошибками.

Добавлено after 5 minutes 16 seconds:
MOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.


исправленная функция write_Command

#define RW_READ PORTD|=1<<1
#define RW_WRITE PORTD=PORTD&0xFD;

#define RS_DATA PORTD|=1<<0
#define RS_COMAND PORTD=PORTD&0xFE;
#define DATA_BUS PORTD

void write_Command(int DATA)
{
RS_COMAND;
RW_WRITE;
DDRD|=0xF0; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PORTD|=1<<2; // ??????? ?????
DATA_BUS&=0xF;
DATA_BUS|=(DATA&0xF0);
_delay_us(100);
PORTD=PORTD&0xF0; // ?????? ?? ??????
_delay_us(100);
DDRD&=0x0F;

RS_COMAND; // ?????? ????????
RW_WRITE;
DDRD|=0xF0;
PORTD|=1<<2; // ??????? ?????
DATA_BUS&=0xF;
DATA_BUS|=DATA<<4;
_delay_us(100);
PORTD=PORTD&0xF0; // ?????? ?? ??????
_delay_us(100);
DDRD&=0x0F;
}
Ответить

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