Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Чт май 24, 2018 14:47:23

Я для батарейного делал от ноги через кондер на два последовательных диода и таким образом генерировал отрицательное напряжение чтоб от 2-х вольт он работал - все было прекрасно и шимом управлялось тож нормально

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

Чт май 24, 2018 14:55:14

clawham писал(а):...хоть там и потребление должно быть мизерное, но через транзистор спокойнее чтоль...
По pdf на atmega88v - выход по порту 40mA max. При R4=680 - ток 7,4mA (max), что более чем с 5-ти кратным запасом. К тому же, возможно номинал R4 придётся увеличивать.
Но на диоде с V0 на VDD не экономьте.

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

Чт май 24, 2018 15:25:11

я чесн говоря ни разу не видел диода между v0 и vdd на схемах. или он нужен именно в моем случае?

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

Чт май 24, 2018 15:28:31

Именно в вашем.
Есть вероятность, что при выключении, напряжение на VDD спадёт быстрее, чем на V0 (а по документации, напряжение на V0 не может превышать VDD).

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

Чт май 24, 2018 15:30:28

понял. благодарю за ответ. значит поставим диод

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

Пн окт 08, 2018 11:50:05

Друзья, помогите пожалуйста разрулить странный глюк с кодом. Дисплей 1602 HD44780, камень - Atmega8. Странность в том, что он однозначно запускается и работает, только при определенной и единственной конфигурации портов/пинов.
"Дисплейный" раздел кода:
Простейший тест в майне.
Код:
int main(void){
   lcd_init();
   _delay_ms(200);
   lcd_data(48);//"0"
   while(1){   }
}

Заголовки "lcd.h":
Этот конфиг работает
А этот и прочие - нет

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

Пн окт 08, 2018 12:19:26

Функция send_byte явно не соответствует своему названию, посылая только половину байта.

Но это так.. просто некорректное имя функции. А вот чего я не вижу, так это позиционирования. Куда должен выводиться текст?
Последний раз редактировалось WiseLord Пн окт 08, 2018 12:58:52, всего редактировалось 1 раз.

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

Пн окт 08, 2018 12:57:33

Не зря советуют все выражения в #define заключать в скобки.
Рассмотрим, например, это:
Код:
#define LCD_RS_DDR DDRB
#define LCD_RS_PORT PORTB
#define LCD_RS 1<<2
LCD_RS_PORT&=~LCD_RS;

Поработаем немного компилятором. Первым делом нужно подставить значения из #define'ов:
Код:
PORTB&=~1<<2;

Теперь вспомним про приоритеты операций. Сначала выполняется инверсия (~), потом - сдвиг (<<), и, наконец, присваивание с побитовым И (&=). Итого, получается так:
Код:
PORTB &= ((~1) << 2);

Посчитаем выражение в правой части: (~1) = 0b11111110, ((~1) << 2) = 0b11111000.
Код:
PORTB &= 0b11111000;

Кажется, это не то, чего хотелось от строчки
Код:
LCD_RS_PORT&=~LCD_RS;


Вывод: выражения в #define нужно заключать в скобки!
Код:
#define LCD_RS (1<<2)

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

Пн окт 08, 2018 16:14:26

*Trigger* :beer: Вот спасибо вам сердечное! Мало, что все заработало, так вы еще потрудились и объяснить суть проблемы. :)) Жаль, что только плюсами могу отблагодарить.

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

Пн дек 03, 2018 08:44:04

Граждане-товарищи а не кто не встречал готовую библиотеку дабы выводить большие цифры. В две или три строки. Под андурино гуглиться без проблем, а вот под просто под avr-gcc не чего не могу найти.

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

Пн дек 03, 2018 10:29:51

hcm писал(а):под просто под avr-gcc не чего не могу найти
когда-то давно делал сам
Вложения
lcd_big.zip
(55.75 KiB) Скачиваний: 118

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

Вт июн 04, 2019 20:36:40

Народ, кто рисовал свои символы - как заставить символ отрисовываться на полную высоту в 8 точек? Что бы я ни делал, у меня нижняя строка в матрице символа отображается пустой и размер вместо 5x8 точек оказывается 5x7.
Пишу для Atmega8 в WinAVR (компилятор avr-gcc). Для управления LCD используется библиотека от Peter Fleury (в прикрепленном архиве).
Пример моего кода:


В итоге получается вот так:
Изображение

Как я понимаю, нижняя строка остается зарезервирована под курсор, хотя он отключен. При этом некоторые символы вроде заполнения и строчной "j" отрисовываются на все 8 точек, а значит, проблема не в дисплее. Что я делаю не так?
Вложения
lcdlibrary.zip
(31.8 KiB) Скачиваний: 64

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

Вт июн 04, 2019 20:49:30

а вы на реальном ЖКИ смотрите полоски или на виртуальном (например, в протеусе)? у меня в протеусе беда с 8-й линией, а в реальности все пучком

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

Вт июн 04, 2019 21:37:00

На реальном. В протеусе еще не так заметно - в нем все символы сжаты до 5x7, включая заполнение, а в железе эта разница в одну строку в глаза бросается.
Дисплей типа такого, только обозначен как "MJ1602C" (документации по нему не нашел, какая-то подделка другой подделки):
Изображение

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

Ср июн 05, 2019 07:59:51

Andrew88, попробуйте так.
Код:
// Загружаем свои символы в CGRAM
   lcd_command(0x40);  // Переходим в CGRAM
   for(i=0; i<8; i++)
   {
      lcd_data(lines[i]);
   }

   // Переходим на начальную позицию и вызываем записанный символ.
   lcd_gotoxy(0, 0);
   lcd_putc(0);
   
   while(1)
   {
   }

Есть предположение, что в основном цикле вы постоянно выводите символ в позицию (0,0), а так как курсор отключен, то он и затирает нижнюю строку. А на самом деле символ выводится полностью.

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

Ср июн 05, 2019 09:50:32

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

Может, при компиляции что-то шло не так или какой-то аппаратный баг словил, даже не знаю. На забугорном форуме нашлась такая же проблема с игнорированием дисплеем команды "0x0C": https://www.avrfreaks.net/forum/lcd-and-cursor-onoff/, но как всегда: "I will post the results", - и тишина с 2007 года :facepalm:

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

Ср июн 05, 2019 10:54:23

Что-то, видимо, в библиотеке. Советую разобраться (там вовсе не рокетсайнс) и подправить.

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

Ср июн 05, 2019 11:44:29

trengtor писал(а):Что-то, видимо, в библиотеке.
у Peter Fleury в библиотеке есть один баг, но с описанной проблемой он никак не связан. баг в том, что при вычислении адреса ячейки ОЗУ для дисплеев с числом строк больше 2 он использует не битовое ИЛИ, а обычное суммирование. Для двух строк выходит так, что переполнение при сложении не возникает, а для остальных получается так, что возникает перенос битов при суммировании... если заменить + на | - все начинает работать отлично.
это просто к слову

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

Ср июн 05, 2019 14:57:28

ARV, я так понимаю, эта строка? (Мне как раз и нужно будет 4-строчным дисплеем рулить)
Код:
    lcd_command((1<<LCD_DDRAM)+addressCounter);

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

Ср июн 05, 2019 14:58:34

да, только там этих строк больше - внутри функции lcd_gotoxy
Ответить