+1СКАЗОЧНИК писал(а):ARV писал(а):в чем сакральный смысл изобретения велосипеда?Для меня, например, в том, чтобы понять как это работает и изучить. Иначе можно и до Ардуины скатиться.
Работа с ЖКИ на контроллере HD44780 и его аналогах
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18577
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
чтобы скатиться надо прежде выше подняться 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом
- trengtor
- Сверлит текстолит когтями
- Сообщения: 1299
- Зарегистрирован: Вт мар 31, 2015 22:56:07
- Откуда: Мы люди простые, живем в лесу, на пенек молимся
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
В хитачевском подробно раписаны тайминги обмена, организация памяти и т.п. нюансы. Так что танцевать лучше именно от него.ROMan2947 писал(а):В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом
Добавлено after 1 minute 7 seconds:
Они не всегда имеются в нужном виде.ARV писал(а):я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18577
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
в нужном - это каком?trengtor писал(а):Они не всегда имеются в нужном виде
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- trengtor
- Сверлит текстолит когтями
- Сообщения: 1299
- Зарегистрирован: Вт мар 31, 2015 22:56:07
- Откуда: Мы люди простые, живем в лесу, на пенек молимся
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вас это беспокоит? Вы хотите об этом поговорить? ©ARV писал(а):в нужном - это каком?trengtor писал(а):Они не всегда имеются в нужном виде
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое
Хочешь сделать хорошо - делай всё сам.
Больше всего раздражать люди, пишущие на форумах "дайте библиотеку для ..."
Хочешь сделать хорошо - делай всё сам.
Больше всего раздражать люди, пишущие на форумах "дайте библиотеку для ..."
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Я думаю, что Роман в одном тоже прав. ))) Когда уже все испробовал и много знаешь, тогда приходит понимание, что гораздо целесообразнее взять готовую библиотеку, которую рекомендует официальный производитель или еще кто, которая испытана, которая надежная и отлаженная. Тогда экономится времени больше на разработке ПО и ошибок меньше.
Но такое понимание приходит именно после того, когда уже всего накушался.
Но такое понимание приходит именно после того, когда уже всего накушался.
Станислав
- trengtor
- Сверлит текстолит когтями
- Сообщения: 1299
- Зарегистрирован: Вт мар 31, 2015 22:56:07
- Откуда: Мы люди простые, живем в лесу, на пенек молимся
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Иногда это просто приходится делать.Аlex писал(а):Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое![]()
Хочешь сделать хорошо - делай всё сам.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18577
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
trengtor писал(а):Иногда это просто приходится делать
ну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?trengtor писал(а):Вы хотите об этом поговорить?
я не возражаю против обучения. но после того, как научился дрыгать ножками МК, уже все равно, для чего ими дрыгать - для ЖКИ или для SPI или там еще чего-то... тут уже можно и расслабиться. или наоборот, сосредоточиться на чем-то бОльшем...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- trengtor
- Сверлит текстолит когтями
- Сообщения: 1299
- Зарегистрирован: Вт мар 31, 2015 22:56:07
- Откуда: Мы люди простые, живем в лесу, на пенек молимся
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Мне, например, пришлось написать свою, когда выяснилось, что стандартная библиотека от mikroPascal делает что попало с таймингами. С ней цикл вывода блока данных из 6 знакомест на ЖКИ занимал до 11 мс, с моей занимает до 500 мкс. Цель достигнута.ARV писал(а):trengtor писал(а):Иногда это просто приходится делатьну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?trengtor писал(а):Вы хотите об этом поговорить?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18577
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
этого достаточноtrengtor писал(а):mikroPascal
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- trengtor
- Сверлит текстолит когтями
- Сообщения: 1299
- Зарегистрирован: Вт мар 31, 2015 22:56:07
- Откуда: Мы люди простые, живем в лесу, на пенек молимся
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Как бы абсолютно ожидаемый комментарий. Но я слишком тупой для ЦЭARV писал(а):этого достаточноtrengtor писал(а):mikroPascal
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.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 и его аналогах
Вот документ:ROMan2947 писал(а): просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.
На стр. 24, 32, 33, 45, 46 есть практически всё основное, что нужно для работы с такими дисплеями.HD44780U (LCD-II)
(Dot Matrix Liquid Crystal Display Controller/Driver)
ADE-207-272(Z)
'99.9
Rev. 0.0
Выделенные жирным задержки относятся к выполнению определенных команд.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18577
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Я так думаю Вы имеете ввиду бит BF-busy flag? как раз и собираюсь учесть его в своем проекте...в даташите изначально я его не воспринял всерьез, т.к. в примерах которые я изучал его никто не упомянул....ARV писал(а):это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.
В частности:
RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет
И так повсюду. Это просто не может работать.
В частности:
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 и его аналогах
Голова уже кругом) Т.е. нужно вместо write_Command(0x20) отдавать (3<<4)? кстати нарыл в том же ПДФ на стр.23, что этот момент вообще можно доверить самому дисплею, вернее его внутреннему сбросу. а нам подхватить уже с места определения размера шины...это так?MOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
Добавлено after 4 minutes 22 seconds:
после замечаний MOHCTEP тот код уже не актуален!!!была проведена работа над ошибками.WiseLord писал(а):ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.
В частности:
RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет
И так повсюду. Это просто не может работать.
Добавлено after 5 minutes 16 seconds:
исправленная функция write_CommandMOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
#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;
}



