Например TDA7294

Форум РадиоКот • Просмотр темы - Работа с ЖКИ на контроллере HD44780 и его аналогах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 02, 2025 05:44:09

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2431 ]     ... , , , 93, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 19:10:46 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
СКАЗОЧНИК писал(а):
Не могу сказать, что мне хватило 15 минут, чтобы написать свою библиотечку...

Да.... было дело на несколько страниц. :beer:
В результате, Вы выложили для всех исходники своих библиотек.
Здесь делов то, изменить вывод данных из вашей опубликованной библиотеки.
Видимо и это уже сложно, если спрашивают о наработках и библиотеках. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 19:18:57 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Albert_V писал(а):
Видимо и это уже сложно

Возможно, что это банальная лень... :dont_know: Или просто страх перед неизведанным. ) Но мне нравится наступать на свои грабли и быть первооткрывателем.
А если серьезно, то я думал, почему бы не взять библиотеку от Ди-Халта и не попробовать сделать лучше? Ну, получилось что получилось, результатом я очень доволен.
И куда бы я побрел без вашей лично и всеобщей помощи?! А теперь, когда пришло осознание, как это работает, хочется по мере возможности помочь и другим сделать тоже самое.
:beer:

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 19:29:01 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 1
Медали: 5
Получил миской по аватаре (5)
СКАЗОЧНИК писал(а):
...мне нравится наступать на свои грабли и быть первооткрывателем....
...хочется по мере возможности помочь и другим сделать тоже самое... :beer:

И это правильно.
Лично я никогда не пользуюсь чужими библиотеками. Создал сам - знаешь как это работает.
На мой взгляд, можно/нужно помогать тем, у кого есть желание что-то изучать. :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:06:43 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Изображение
Народ долгое время собирал информацию по данному дисплею. На фото изображен модуль на котором разводка сделана 4 битной.
Долго мучился с его инициализацией, и когда вроде бы в протеусе все заработало, на живой железки обнаружилась проблема с повторной инициализацией. После нажатия на кнопку сброса контролера на дисплее был мусор.
В итоге хочу предложить вам код для AVR STUDIO 6.(0-2) 100% рабочий для данного дисплея. Не боящийся повторной инициализации. Соответственно в режиме 4 бита, код совместим с модулем ARDUINO UNO R3 (ATMEGA328)

Не забываем подключить стандартные библиотеки
Код:
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

Готовим имена.
Код:
#define RS_ENABLE PORTB |= (1 << 0)      // Пин RS
#define RS_DISABLE PORTB  &=~ (1 << 0)   //
#define E_ENABLE PORTB |= (1 << 1)       // Пин E
#define E_DISABLE PORTB &=~ (1 << 1)     //
#define LCD_PORT PORTD



Функции для работы с дисплеем.
Код:
void LCD_INIT()
{
   RS_DISABLE;
   LCD_WRITE_NIBBLE(0b00110000); // 0_0_1_DL_N_F_0_0 (0010 N(0-1на строка, 1-2ве строки)000) 00101000
   LCD_WRITE_NIBBLE(0b00110000);
   LCD_WRITE_NIBBLE(0b00110000);
   LCD_WRITE_NIBBLE(0b00100000);
   LCD_WRITE_DATA(0b00000001);   // очистка дисплея
   LCD_WRITE_DATA(0b00101000);
   LCD_WRITE_DATA(0b00001000);   // полное выключение дисплея
   LCD_WRITE_DATA(0b00000100);   // сдвиг курсора отключен
   LCD_WRITE_DATA(0b00001100);   // включение дисплея
   RS_ENABLE;
}
// ЗАПИСЬ ПОЛУБАЙТА
void LCD_WRITE_NIBBLE(unsigned char TEMP_NIBBLE) {
   PORTD |= TEMP_NIBBLE; // запись в порт
   _delay_ms(2);
   E_ENABLE;
   _delay_ms(4);
   E_DISABLE;
   _delay_ms(2);
   PORTD &= ~(TEMP_NIBBLE);
   _delay_ms(2);
}

// ФУНКЦИЯ ОТПРАВКИ СИМВОЛА
void LCD_WRITE_CHAR(unsigned char TEMP_WRITE_CHAR) {
   RS_ENABLE;
   LCD_WRITE_DATA(TEMP_WRITE_CHAR);
}

// ФУНКЦИЯ ОТПРАВКИ КОМАНДЫ
void LCD_WRITE_CMD(unsigned char TEMP_WRITE_CMD) {
   RS_DISABLE;
   LCD_WRITE_DATA(TEMP_WRITE_CMD);
   RS_ENABLE;
}
// ЗАПИСЬ В ПОРТ КОММАНДЫ ИЛИ ДАННЫХ (ОПРЕДЕЛЯЕТСЯ RS), используется в LCD_WRITE_CHAR и LCD_WRITE_CMD
void LCD_WRITE_DATA(unsigned char TEMP_WRITE_DATA) {
   LCD_WRITE_NIBBLE(TEMP_WRITE_DATA & 0xF0);    // старшый полубайт
   LCD_WRITE_NIBBLE(TEMP_WRITE_DATA << 4);    //младший полубайт
}

void LCD_OFF() {
   LCD_WRITE_CMD(0b00001000);
}
void LCD_ON() {
   LCD_WRITE_CMD(0b00001100);
}
// Установка курсора, КУРСОР НЕ СДВИГАЕТСЯ!!! так настроено при инициализации.  LINE = 0 - первая строка, 1 - вторая строка. 
void LCD_SET_CURSOR(unsigned char LINE, unsigned char POS) {
   POS |= 0b10000000;
   if (LINE == 0x01)
   {
      POS |= 0x40;
   }
   LCD_WRITE_CMD(POS);
}


P.S. На данном модуле есть управление подсветкой что для меня было сюрпризом) т.к. на схеме этого не было, установлен транзистор на катоде подсветки.
можно управлять так:
Код:
#define BACKLIGHT_ENABLE PORTB |= (1 << 2)       // Пин подсветки
#define BACKLIGHT_DISABLE PORTB &=~ (1 << 2)     //

ну там вам решать вкл\выкл или замутить шим для регулировки яркости.


Последний раз редактировалось servmv Ср апр 22, 2015 21:23:46, всего редактировалось 2 раз(а).

Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:21:57 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
servmv писал(а):
Народ долгое время собирал информацию по данному дисплею.
Долго мучился с его инициализацией, и когда вроде бы в протеусе все заработало, на живой железки обнаружилась проблема с повторной инициализацией. После нажатия на кнопку сброса контролера на дисплее был мусор.
В итоге хочу предложить вам код для AVR STUDIO 6.(0-2) 100% рабочий для данного дисплея. Не боящийся повторной инициализации.

servmv, Где там мучиться? Прочитать документацию на HD44780 и работать с ним "по-честному" было сложно?
У моих заказчиков несколько тысяч изделий с индикаторами на HD44780 работают в круглосуточном режиме более 5-ти лет без рекламаций.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:26:01 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1341
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4561
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Код:
void LCD_WRITE_NIBBLE(unsigned char TEMP_NIBBLE) {
   PORTD |= TEMP_NIBBLE; // запись в порт
   _delay_ms(2);
   E_ENABLE;
   _delay_ms(4);
   E_DISABLE;
   _delay_ms(2);
   PORTD &= ~(TEMP_NIBBLE);
   _delay_ms(2);
}
Не многоваты ли задержки между такими операциями ? :)
Это раз.
Во вторых, какой смысл от сеих строк :
Цитата:
Код:
   _delay_ms(2);
   PORTD &= ~(TEMP_NIBBLE);
   _delay_ms(2);
в конце функции ? :roll:
Далее :
Цитата:
Код:
void LCD_INIT()
{
   RS_DISABLE;
   LCD_WRITE_NIBBLE(0b00110000); // 0_0_1_DL_N_F_0_0 (0010 N(0-1на строка, 1-2ве строки)000) 00101000
   LCD_WRITE_NIBBLE(0b00110000);
   LCD_WRITE_NIBBLE(0b00110000);
   LCD_WRITE_NIBBLE(0b00100000);
   LCD_WRITE_DATA(0b00000001);   // очистка дисплея
   LCD_WRITE_DATA(0b00101000);
   LCD_WRITE_DATA(0b00001000);   // полное выключение дисплея
   LCD_WRITE_DATA(0b00000100);   // сдвиг курсора отключен
   LCD_WRITE_DATA(0b00001100);   // включение дисплея
   RS_ENABLE;
}
Некоторые операции, во время инициализации, требуют ожидания выполнения. Делается это либо задержками, либо чтением состояния из дисплея.
Но у Вас, по всей видимости, "всё работает" только из-за бешеных задержек в функции LCD_WRITE_NIBBLE.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:31:58 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Albert_V писал(а):
Где там мучиться? Прочитать документацию на HD44780 и работать с ним "по-честному" было сложно?
У моих заказчиков несколько тысяч изделий с индикаторами на HD44780 работают в круглосуточном режиме более 5-ти лет без рекламаций.

Для новичков это не так просто как Вы думаете, в инете инфа в основном для ASM или еще хуже для Basic, а самое прикольное все предложенные варианты инициализации давали мусор при повторной инициализации. По поводу инструкций я конечно читаю на EN но приходится "напрягать мозг", а от того что я поделился рабочим кодом, кому-то возможно это поможет, и уж точно хуже не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:34:29 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
servmv, вы все сообщения в этой теме читали?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:40:55 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Аlex писал(а):
Цитата:
Не многоваты ли задержки между такими операциями ? :)
Во вторых, какой смысл от сеих строк
Некоторые операции, во время инициализации, требуют ожидания выполнения. Делается это либо задержками, либо чтением состояния из дисплея.
Но у Вас, по всей видимости, "всё работает" только из-за бешеных задержек в функции.

На первый и третий вопрос, ответ один, визуально задержек не видно, одновременно перезаписывается 3*4 = 12 символов на дисплее(4 быстро изменяемые числа по 3 символа) остальное статично.
На второй вопрос, обнуление порта, было написано в процессе отладки, возможно и лишнее. Ща проверю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:41:57 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Albert_V писал(а):
servmv, вы все сообщения в этой теме читали?

Какой ты быстрый) Не дай бог тебе такое от женщин слышать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:45:08 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
servmv писал(а):
Какой ты быстрый) Не дай бог тебе такое от женщин слышать.

Не забывайте о том, что вы на техническом форуме.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:45:23 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1341
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4561
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
визуально задержек не видно
Но это же не значит, что их можно везде и подряд вставлять :)
10 ms на пол-команды, 20 на команду. Вывести буфер из 16-ти символов - 320 миллисекунд. Круто, чё :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:46:55 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Так работает:
Код:
// ЗАПИСЬ ПОЛУБАЙТА
void LCD_WRITE_NIBBLE(unsigned char TEMP_NIBBLE) {
   PORTD |= TEMP_NIBBLE; // запись в порт
   _delay_ms(1);
   E_ENABLE;
   _delay_ms(2);
   E_DISABLE;
   _delay_ms(1);
   PORTD &= ~(TEMP_NIBBLE);
   _delay_ms(1);
}

Так нет)
Код:
// ЗАПИСЬ ПОЛУБАЙТА
void LCD_WRITE_NIBBLE(unsigned char TEMP_NIBBLE) {
   PORTD |= TEMP_NIBBLE; // запись в порт
   _delay_ms(1);
   E_ENABLE;
   _delay_ms(2);
   E_DISABLE;
   _delay_ms(1);
   //PORTD &= ~(TEMP_NIBBLE);
   //_delay_ms(1);
}

Так тоже нет)
Код:
// ЗАПИСЬ ПОЛУБАЙТА
void LCD_WRITE_NIBBLE(unsigned char TEMP_NIBBLE) {
   PORTD |= TEMP_NIBBLE; // запись в порт
   _delay_ms(10);
   E_ENABLE;
   _delay_ms(20);
   E_DISABLE;
   _delay_ms(10);
   //PORTD &= ~(TEMP_NIBBLE);
   //_delay_ms(1);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:51:00 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Аlex писал(а):
Цитата:
визуально задержек не видно
Но это же не значит, что их можно везде и подряд вставлять :)
10 ms на пол-команды, 20 на команду. Вывести буфер из 16-ти символов - 320 миллисекунд. Круто, чё :))

0.3 сек на вывод? че не так то? Ну ускорил ровно в 2 раза ) 160мс))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:56:37 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
:roll: Еще будут предложения по оптимизации?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 21:59:39 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Диплом/курсовик "горит"? :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 22:07:28 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1341
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4561
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
servmv писал(а):
0.3 сек на вывод? че не так то?
Надеюсь, Вы шутите :)
А если серьёзно - убирайте их оттуда, "от греха подальше" :) Они там не нужны.

Цитата:
Диплом/курсовик "горит"? :)))
Не думаю. Просто, видимо, человеку захотелось поделиться наработками. И это есть хорошо.
Но и критику, в таком случае, нужно принимать какой она есть. И не игнорировать её, а обсуждать коструктивно, без всяких "а что такого ?" и т.д...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 22:25:25 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Аlex писал(а):
servmv писал(а):
0.3 сек на вывод? че не так то?
Надеюсь, Вы шутите :)
А если серьёзно - убирайте их оттуда, "от греха подальше" :) Они там не нужны.

Не работает без задержки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 22:26:32 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 1
Зарегистрирован: Чт янв 02, 2014 21:28:22
Сообщений: 136
Рейтинг сообщения: 0
Albert_V писал(а):
Диплом/курсовик "горит"? :)))


Мне уже поздно посещать учебные заведения) :tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср апр 22, 2015 22:26:58 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1341
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4561
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
servmv писал(а):
Не работает без задержки.
Аlex писал(а):
Но у Вас, по всей видимости, "всё работает" только из-за бешеных задержек в функции LCD_WRITE_NIBBLE.
:)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2431 ]     ... , , , 93, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y