Например TDA7294

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





Текущее время: Сб июл 19, 2025 09:40:02

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2431 ]     ... , , , 115, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Чт май 24, 2018 14:47:23 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Я для батарейного делал от ноги через кондер на два последовательных диода и таким образом генерировал отрицательное напряжение чтоб от 2-х вольт он работал - все было прекрасно и шимом управлялось тож нормально

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Чт май 24, 2018 14:55:14 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
clawham писал(а):
...хоть там и потребление должно быть мизерное, но через транзистор спокойнее чтоль...
По pdf на atmega88v - выход по порту 40mA max. При R4=680 - ток 7,4mA (max), что более чем с 5-ти кратным запасом. К тому же, возможно номинал R4 придётся увеличивать.
Но на диоде с V0 на VDD не экономьте.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Чт май 24, 2018 15:25:11 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт май 24, 2018 09:38:55
Сообщений: 27
Откуда: Украина
Рейтинг сообщения: 0
я чесн говоря ни разу не видел диода между v0 и vdd на схемах. или он нужен именно в моем случае?

_________________
-- Приключения маленькой пони в большом мире электроники --


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Чт май 24, 2018 15:28:31 
Друг Кота
Аватар пользователя

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


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Чт май 24, 2018 15:30:28 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт май 24, 2018 09:38:55
Сообщений: 27
Откуда: Украина
Рейтинг сообщения: 0
понял. благодарю за ответ. значит поставим диод

_________________
-- Приключения маленькой пони в большом мире электроники --


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн окт 08, 2018 11:50:05 
Опытный кот

Карма: 16
Рейтинг сообщений: 74
Зарегистрирован: Вс янв 19, 2014 00:55:09
Сообщений: 758
Рейтинг сообщения: 0
Друзья, помогите пожалуйста разрулить странный глюк с кодом. Дисплей 1602 HD44780, камень - Atmega8. Странность в том, что он однозначно запускается и работает, только при определенной и единственной конфигурации портов/пинов.
"Дисплейный" раздел кода:
Спойлер
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"


void strobe_lcd(void){
   LCD_E_PORT|=LCD_E;
   _delay_us(20);
   LCD_E_PORT&=~LCD_E;
   _delay_us(20);
   //LCD_E_PORT|=LCD_E;
}

void send_byte(char byte){
   byte&0x80?(LCD_DT7_PORT |= LCD_DT7):(LCD_DT7_PORT &= ~LCD_DT7);
   byte&0x40?(LCD_DT6_PORT |= LCD_DT6):(LCD_DT6_PORT &= ~LCD_DT6);
   byte&0x20?(LCD_DT5_PORT |= LCD_DT5):(LCD_DT5_PORT &= ~LCD_DT5);
   byte&0x10?(LCD_DT4_PORT |= LCD_DT4):(LCD_DT4_PORT &= ~LCD_DT4);
   strobe_lcd();
}

//Командуем
void lcd_cmd(char a){
   LCD_RS_PORT&=~LCD_RS;
   send_byte(a);
   send_byte(a<<4);
   
}

//Данные
void lcd_data(char a){
   LCD_RS_PORT|=LCD_RS;
   send_byte(a);
   send_byte(a<<4);
}

/*Подметаемся*/
void lcd_clear(void){
   lcd_cmd(0x01);
   _delay_ms(2);
}

/**INSTALL LCD**/
void init_lcd_ports(void){
   LCD_RS_DDR|=LCD_RS;
   LCD_E_DDR|=LCD_E;
   LCD_DT7_DDR|=LCD_DT7;
   LCD_DT6_DDR|=LCD_DT6;
   LCD_DT5_DDR|=LCD_DT5;
   LCD_DT4_DDR|=LCD_DT4;
   LCD_RS_PORT&=~LCD_RS;
   LCD_E_PORT&=~LCD_E;
   LCD_DT7_PORT&=~LCD_DT7;
   LCD_DT6_PORT&=~LCD_DT6;
   LCD_DT5_PORT&=~LCD_DT5;
   LCD_DT4_PORT&=~LCD_DT4;
}
//
void lcd_init(void){
   init_lcd_ports();
   _delay_ms(200);
   LCD_RS_PORT&=~LCD_RS;
   send_byte(0x30);
   _delay_ms(6);
   send_byte(0x30);
   _delay_us(200);
   send_byte(0x30);
   _delay_ms(1);
   send_byte(0x20); //4 бит
   lcd_cmd(0x28); //4 бит
   _delay_ms(1);
   lcd_cmd(0x08);//отображение и курсоры выключены.
   _delay_ms(1);
   lcd_clear();
   lcd_cmd(0x06);//режим увеличения счетчика
   _delay_ms(1);
   lcd_cmd(0x0C);//отображение включено, курсоры выключены.
   _delay_ms(10);
}
Простейший тест в майне.
Код:
int main(void){
   lcd_init();
   _delay_ms(200);
   lcd_data(48);//"0"
   while(1){   }
}

Заголовки "lcd.h":
Этот конфиг работает
Спойлер
Код:
#define LCD_RS_DDR DDRB
#define LCD_RS_PORT PORTB
#define LCD_RS 1<<2
#define LCD_E_DDR DDRB
#define LCD_E_PORT PORTB
#define LCD_E 1<<1
#define LCD_DT7_DDR DDRD
#define LCD_DT7_PORT PORTD
#define LCD_DT7 1<<7
#define LCD_DT6_DDR DDRD
#define LCD_DT6_PORT PORTD
#define LCD_DT6 1<<6
#define LCD_DT5_DDR DDRD
#define LCD_DT5_PORT PORTD
#define LCD_DT5 1<<5
#define LCD_DT4_DDR DDRD
#define LCD_DT4_PORT PORTD
#define LCD_DT4 1<<4
А этот и прочие - нет
Спойлер
Код:
#define LCD_RS_DDR DDRD
#define LCD_RS_PORT PORTD
#define LCD_RS 1<<5
#define LCD_E_DDR DDRD
#define LCD_E_PORT PORTD
#define LCD_E 1<<6
#define LCD_DT7_DDR DDRB
#define LCD_DT7_PORT PORTB
#define LCD_DT7 1<<2
#define LCD_DT6_DDR DDRB
#define LCD_DT6_PORT PORTB
#define LCD_DT6 1<<1
#define LCD_DT5_DDR DDRB
#define LCD_DT5_PORT PORTB
#define LCD_DT5 1<<0
#define LCD_DT4_DDR DDRD
#define LCD_DT4_PORT PORTD
#define LCD_DT4 1<<7


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

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн окт 08, 2018 12:19:26 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
Функция send_byte явно не соответствует своему названию, посылая только половину байта.

Но это так.. просто некорректное имя функции. А вот чего я не вижу, так это позиционирования. Куда должен выводиться текст?


Последний раз редактировалось WiseLord Пн окт 08, 2018 12:58:52, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн окт 08, 2018 12:57:33 
Друг Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 1377
Зарегистрирован: Пн май 11, 2009 14:15:00
Сообщений: 3059
Откуда: СПб
Рейтинг сообщения: 1
Медали: 1
Мявтор 3-й степени (1)
Не зря советуют все выражения в #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)

_________________
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн окт 08, 2018 16:14:26 
Опытный кот

Карма: 16
Рейтинг сообщений: 74
Зарегистрирован: Вс янв 19, 2014 00:55:09
Сообщений: 758
Рейтинг сообщения: 0
*Trigger* :beer: Вот спасибо вам сердечное! Мало, что все заработало, так вы еще потрудились и объяснить суть проблемы. :)) Жаль, что только плюсами могу отблагодарить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн дек 03, 2018 08:44:04 
Родился

Зарегистрирован: Ср мар 09, 2011 01:17:16
Сообщений: 9
Рейтинг сообщения: 0
Граждане-товарищи а не кто не встречал готовую библиотеку дабы выводить большие цифры. В две или три строки. Под андурино гуглиться без проблем, а вот под просто под avr-gcc не чего не могу найти.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Пн дек 03, 2018 10:29:51 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
hcm писал(а):
под просто под avr-gcc не чего не могу найти
когда-то давно делал сам


Вложения:
lcd_big.zip [55.75 KiB]
Скачиваний: 320

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

Мой уютный бложик... заходите!
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Вт июн 04, 2019 20:36:40 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср мар 15, 2017 18:52:10
Сообщений: 43
Рейтинг сообщения: 0
Народ, кто рисовал свои символы - как заставить символ отрисовываться на полную высоту в 8 точек? Что бы я ни делал, у меня нижняя строка в матрице символа отображается пустой и размер вместо 5x8 точек оказывается 5x7.
Пишу для Atmega8 в WinAVR (компилятор avr-gcc). Для управления LCD используется библиотека от Peter Fleury (в прикрепленном архиве).
Пример моего кода:
Спойлер
Код:
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdio.h>
#include "lcd.h"

unsigned char lines[8] =
{
0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, // Двойная черта высотой по 2 точки сверху и снизу.
};

int main(void) 

   DDRB = 128;
   DDRC = 255;
   DDRD = 255;

   unsigned char i;

   lcd_init(LCD_DISP_ON); // Дисплей включен, курсор выключен.

   // Загружаем свои символы в CGRAM
   lcd_command(0x40);  // Переходим в CGRAM
   for(i=0; i<8; i++)
   {
      lcd_data(lines[i]);
   }
   lcd_command(0x80); // Возвращаемся в DDRAM
   
   while(1)
   {
      // Переходим на начальную позицию и вызываем записанный символ.
      lcd_gotoxy(0, 0);
      lcd_putc(0);
   }
   return 0;
}


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

Как я понимаю, нижняя строка остается зарезервирована под курсор, хотя он отключен. При этом некоторые символы вроде заполнения и строчной "j" отрисовываются на все 8 точек, а значит, проблема не в дисплее. Что я делаю не так?


Вложения:
lcdlibrary.zip [31.8 KiB]
Скачиваний: 248

_________________
Изображение
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Вт июн 04, 2019 20:49:30 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а вы на реальном ЖКИ смотрите полоски или на виртуальном (например, в протеусе)? у меня в протеусе беда с 8-й линией, а в реальности все пучком

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

Мой уютный бложик... заходите!


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

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

_________________
Изображение


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

Карма: 18
Рейтинг сообщений: 249
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2526
Откуда: KMV
Рейтинг сообщения: 0
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 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср мар 15, 2017 18:52:10
Сообщений: 43
Рейтинг сообщения: 0
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 
Сверлит текстолит когтями
Аватар пользователя

Карма: 15
Рейтинг сообщений: 212
Зарегистрирован: Вт мар 31, 2015 22:56:07
Сообщений: 1298
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Рейтинг сообщения: 0
Что-то, видимо, в библиотеке. Советую разобраться (там вовсе не рокетсайнс) и подправить.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср июн 05, 2019 11:44:29 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
trengtor писал(а):
Что-то, видимо, в библиотеке.
у Peter Fleury в библиотеке есть один баг, но с описанной проблемой он никак не связан. баг в том, что при вычислении адреса ячейки ОЗУ для дисплеев с числом строк больше 2 он использует не битовое ИЛИ, а обычное суммирование. Для двух строк выходит так, что переполнение при сложении не возникает, а для остальных получается так, что возникает перенос битов при суммировании... если заменить + на | - все начинает работать отлично.
это просто к слову

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср июн 05, 2019 14:57:28 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср мар 15, 2017 18:52:10
Сообщений: 43
Рейтинг сообщения: 0
ARV, я так понимаю, эта строка? (Мне как раз и нужно будет 4-строчным дисплеем рулить)
Код:
    lcd_command((1<<LCD_DDRAM)+addressCounter);

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
СообщениеДобавлено: Ср июн 05, 2019 14:58:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
да, только там этих строк больше - внутри функции lcd_gotoxy

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

Мой уютный бложик... заходите!


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

Часовой пояс: 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