Тёмный

LCD1602/LCD2004. Подключаем к Stm32 по i2c. 

Олег Волков
Подписаться 10 тыс.
Просмотров 11 тыс.
50% 1

HD44780 (а также совместимый с ним KS0066) - контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8-битным интерфейсом. Разработан фирмой Hitachi. Управляющий интерфейс и протокол являются де-факто стандартом для такого типа дисплеев. Эти контроллеры были фактически монополистами на рынке в 90-е годы. В настоящее время все активнее вытесняются контроллерами с SPI или I2C интерфейсами, а также контроллерами цветных дисплеев.
На базе этого контроллера выпускалось огромное количество моделей с различным конструктивом и разрешением, начиная с 8x1 (восемь символов в одной строке), и заканчивая 40x4 (содержащих два независимых управляющих чипа). Часто встречаются 16x2 и 20x4, а также некоторые другие.
/*------------------------------------*/
Хочу сказать большое спасибо Константину Голинскому за помощь в написании библиотек, и также, большущее спасибо Николаю Пивневу за дисплей. Спасибо Вам, ребята! 🙏🏻
/*------------------------------------*/
Заходи в нашу группу ВК solderingiron.stm32
Материалы из практического занятия: github.com/Solderingironspb/L...
ЯндексДзен: zen.yandex.ru/id/622208eed2eb...
00:00 Введение
01:42 Про библиотеки
02:26 Собираем проект в CubeIDE, инициализируем дисплей
05:48 Вывод текста на дисплей
07:12 Про подсветку дисплея
09:05 Бегущая строка
10:53 Вывод данных на дисплей(числа и прочее)
18:29 Отправка отдельного символа
21:11 Создание собственного символа
23:39 Вывод кириллицы на дисплеях МЭЛТ, Winstar.

Наука

Опубликовано:

 

15 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 60   
@user-ds2uk9vi1k
@user-ds2uk9vi1k 3 года назад
Спасибо, после Ваших видео не остаётся белых пятен, приятно слушать, интересно, а главное - понятно!
@sergey2940
@sergey2940 Год назад
Спасибо! Внятно, доступно, быстро, результативно! Отдельное спасибо автору библиотек! Гениально!
@pavelmokrov710
@pavelmokrov710 Год назад
Отличная работа.Все заводится с первого раза.Уважение автору !!!
@edmelectronics4110
@edmelectronics4110 3 года назад
Очень, очень полезное видео. Благадарю вам!
@szapsis
@szapsis Год назад
Спасибо большое за твой труд друг!
@od3417
@od3417 2 года назад
Спасибо, все получилось
@ilyamif
@ilyamif Год назад
Спасибо большое, очень помог, долго пытался решить проблему с выводом чисел и перезаписи памяти. Я даже использовал динамические массивы символов, но работало ужасно... А надо было то всего пробелы поставить!😂
@cookiehunter8828
@cookiehunter8828 Год назад
Для тех, кто как я, в бронепоезде)))) Этому дисплейчику действительно 5В нужно, несмотря на то, что много где пишут, что хватает и 3.3... Весь вечер сидел думал. Смотрел разные библиотеки, лазал по форумам, смотрел подобные видео, менял адрес - все бестолку... Поэтому, если у вас подсветка есть, а текста нет - попробуйте подключить его на 5В. Еще пара советов, которые я открыл для себя и делюсь с вами: 1) Чтобы проверить, действительно ли вы ломитесь "по адресу" - попробуйте поотключать программно подсветку, как из либы в этом видео. Когда отключится - адрес найден. 2) Чтобы все-таки хоть что-то увидеть при 3.3в - выкрутите потенциометром яркость на максимум (на моей платке HW-061 нужно крутить ПО часовой стрелке), и смотрите на дисплей под углом снизу. Всем добра и успехов :3
@efly6630
@efly6630 7 месяцев назад
Благодарю! Помогло, когда покрутил потенциометр
@viktorvolkov7935
@viktorvolkov7935 3 года назад
Спасибо!!!
@lonny_breaux
@lonny_breaux 11 месяцев назад
спасибо большое!!!!!!!!!!!!!!!!!!!
@user-pp2hz7ic7h
@user-pp2hz7ic7h 3 года назад
Благодарю
@everythingabout6066
@everythingabout6066 2 года назад
спасибо, все работает. я так же пробовал в FreeRTOS . Почему то картинка на экране мерцала постоянно.
@Solderingironspb
@Solderingironspb 2 года назад
А Вы случайно постоянную очистку экрана не делали?
@everythingabout6066
@everythingabout6066 2 года назад
@@Solderingironspb пробовал и без FreeRTOS , все нормально. Может где-то эта функция стоит по умолчанию. Хз
@mobilandservice
@mobilandservice Год назад
Подскажите пожалуйста, как можно добавить функцию включение и выключение курсора (+ если есть возможность мигающий курсор). Спасибо
@amonkotaro8730
@amonkotaro8730 2 года назад
Дайте ссылочку на предыдущий урок, в котором создавалась библиотека
@edmelectronics4110
@edmelectronics4110 2 года назад
Сделал проба на етот Ваш пример LCD16х02, установил счетчик counter работаеть вперед и назад + и - 200. Для очистки дисплея при переход на каждой следующий разряд сделал условие if (counter == 0 || counter == -10 || counter == -100 || counter == 10 || counter == 100) { lcd1602_Clean(); lcd1602_Clean_Text(); } Установил, что очистка некоректная. Несмотря на то что каждая очиска, всегда остоется одна нуля сзади. То ест, есть ли имеем переход при вычитании от 100 к 99, после очистки екран показаваеть неверно 990, вместо 99. В Ардуино библиотека LCD есть одна харошая функция print (), каторая универсалная и спасобна показывает как стринг, так и переменыя любова типа, включая float с вибран после запетая знак после мантиса. Я попробовал сделать такая функция к твое библиотека, но меня не получилас, я не так добрый в програмирование. Подумайте об этом, если хотите расширить возможности своей библиотеки универсальной функцией.
@alinalevina3814
@alinalevina3814 Год назад
Здравствуйте! Пользуюсь вашей библиотекой для китайских lcd1602, не могу разобраться в некотрых вещах (все работает, просто не могу понять). Функция lcd1602_Send_init_Data , как физически передается 1 в стробирующий сигнал или 0. В даташите не могу найти информации про это, получается же что передается 00001000 или 11110111?
@felixfox527
@felixfox527 3 года назад
Приветсвую. А есть ли библиотека u8g2 для стм? Приехала black pill с али. После ардуины конечно кажется сложновато.
@Solderingironspb
@Solderingironspb 3 года назад
Вы про большой LCD 128х64? Если да, то тоже в планах его рассмотреть. На счет сложности стм после ардуино - все фигня. Главное переключиться)
@svbHiTek
@svbHiTek 9 месяцев назад
Привет, в начале видео подключаешь библиотеки, а можешь сделать краткий обзор по ним, какие есть в стандартной комплектации и для чего используются, искал информацию, но не нашел((( Заранее спасибо.
@Solderingironspb
@Solderingironspb 9 месяцев назад
привет. stdbool - Для работы с булиевой логикой. stdio - Реализует основные возможности ввода и вывода в языке Си. string - Для работы с различными видами строк. math - Для вычисления основных математических функций. Список стандартных библиотек можете посмотреть здесь: ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%D0%B8
@Danchkin_Sab
@Danchkin_Sab 2 года назад
Спасибо большое за урок, только вопрос, всё работает как надо, но единственное - программа не хочет выводить текст на экран, с чем это может быть связано ?
@Solderingironspb
@Solderingironspb 2 года назад
А курсор правильно выставляете?
@Danchkin_Sab
@Danchkin_Sab 2 года назад
@@Solderingironspb Вроде да, у меня стандартный дисплей 16 на 2, ставлю курсор на 0 и 0
@user-ng3in1jo1p
@user-ng3in1jo1p 2 года назад
Та же проблема, ума не приложу с чем может быть проблема. Дисплей загорается, но текста нет. Какую вы плату используете?
@cookiehunter8828
@cookiehunter8828 Год назад
@@user-ng3in1jo1p Здравствуйте. Если Вы нашли решение данной проблемы - напишите его сюда, пожалуйста :) Столкнулся с тем же самым.
@maxdm2737
@maxdm2737 Год назад
Спасибо, хороший урок. С STM32f103С8T6 работает без проблем, а вот с STM32f103С6T6 не хочет. В чем может быть проблема, подскажите пожалуйста.
@maxdm2737
@maxdm2737 Год назад
Разобрался. Cubide для этой микросхемы не генерирует GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
@user-er7je6xe9m
@user-er7je6xe9m 2 года назад
Не выходит выводить текст, подсветка дисплея работает, курсор (0,0). Дисплей 16х2 qapass с i2c модулем.
@egorbunakov
@egorbunakov 2 года назад
Здравствуйте, вы как то решили эту проблему?
@user-hq6rm2ps9m
@user-hq6rm2ps9m Год назад
pcf8574AT (pcf8574T) имеют адрес 0x3F, а pcf8574 и pcf8574A - 0x27 надо менять в библиотеке lcd1602_i2c_lib.c
@Selfrock_Vladimir
@Selfrock_Vladimir 2 года назад
Пардон, а как управлять контрастностью? Текст на дисплее проявляется еле еле, при крайнем положении крутилки контрастности на модуле I2C, при работе того же дисплея от ордуинки контрастность нормальная, при среднем положении крутилки контрастности. Библиотека вообще позволяет это регулировать? Пардон, все решилось запитыванием дисплея от 5 вольт.
@Solderingironspb
@Solderingironspb 2 года назад
Да. Питание дисплея от 5 вольт)
@edmelectronics4110
@edmelectronics4110 2 года назад
Извини меня, я открил проблема с очистки. Забъл сказат вперед, что сделал допалнительная функция, в каторая поставена функция spritf и там забыл поставит несколька пауза после знака %d. Сейчас все заработало и нет необходимости даже чистить экран. Вот и самая функция: void lcd1602_Print_data(int value) { sprintf(lcd1602_tx_buffer, "%d", value); for (int i = 0; i < strlen(lcd1602_tx_buffer); i++) { lcd1602_Print_symbol(lcd1602_tx_buffer[i]); } Поменял: sprintf(lcd1602_tx_buffer, "%d ", value);
@Solderingironspb
@Solderingironspb 2 года назад
Да, именно так. После числа ставите пробел и все. Он и будет подчищать данные)
@edmelectronics4110
@edmelectronics4110 2 года назад
Контролер питается от 3,3V, ето ясно, но с какое напрежение вы питаете LCD-дисплей, от 3,3V или от 5V?
@Solderingironspb
@Solderingironspb 2 года назад
Данный дисплей питается от 5в
@edmelectronics4110
@edmelectronics4110 2 года назад
@@Solderingironspb Спасибо. Однако у меня есть еще один вопрос: когда я инициализирую контроллер с помощью графического программатора Cube MX после написания кода в главной while(1) и генерирую код с помощью кнопки, он удаляет все, что я написал. Как это побороть? Если, например, я хочу добавить еще один ввод или вывод из Cuba MX и сгенерировать код, я удаляю все, что написал, и остается только код, созданный графическим программистом.
@Solderingironspb
@Solderingironspb 2 года назад
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //Пишем код здесь. }
@edmelectronics4110
@edmelectronics4110 2 года назад
@@Solderingironspb Огромное спасибо, все заработало как надо. Потерял очень много время за ето....Спасибо....
@user-sq4we5vd7g
@user-sq4we5vd7g 2 года назад
*«Чем эти дисплеи ОТличаются (от чего-то)»* *«Чем эти дисплеи РАЗличаются (между собой)»*
@user-sq4we5vd7g
@user-sq4we5vd7g 2 года назад
Отрадно, что ведущий адекватно воспринимает дружескую критику благодарного слушателя (и слышателя).
@znakomiy_42
@znakomiy_42 2 года назад
ААААА.... Я уже голову сломал... кучу всего перерыл.... дисплей китай 1602, подключаю по I2C по адресу 0х27(проверил по порту), плата nucleof411re настраиваю через cubeMX (бросил I2C1 на PB8-9 c PB6-7 - удобней подключать, но пробовал и без переключения), подключаю ваши библиотеки, да и все делаю строго по видео. при подключении на lcd постоянно горит верхняя строчка. Жму RUN и тишина... 0 реакции. Подкинул analayzer24MHz8CH - на выводах штиль. Что не так? P.S. Совсем недавно переставлял систему и снова качал с stcom софт. Может что-то до установить нужно??? А и еще, сама nucleo работает - простенькая программа с кнопкой и светодиодом работает
@Solderingironspb
@Solderingironspb 2 года назад
Напишите мне на почту или вконтакте. Попробую удаленно подключиться и помочь.
@maxdm2737
@maxdm2737 Год назад
@@Solderingironspb Такая же проблема. В чем может быть причина?
@Solderingironspb
@Solderingironspb Год назад
@@maxdm2737 в данном случае, у человека была проблема в кривой nucleo.
@do6pbiy0kot
@do6pbiy0kot 3 года назад
а что за клава ?
@Solderingironspb
@Solderingironspb 3 года назад
a4 tech kv-300h
@lunokhodtoy
@lunokhodtoy 3 года назад
void lcd1602_Backlight(bool state) { if (state) { backlight = true; } else { backlight = false; } } Может так? :) void lcd1602_Backlight(bool state) { backlight = state; }
@Solderingironspb
@Solderingironspb 3 года назад
👍🏻как угодно
@sasha-bj5tt
@sasha-bj5tt 3 года назад
Кривая реализация преобразования русского алфавита
@sasha-bj5tt
@sasha-bj5tt 3 года назад
попробуй использовать словари или массивы с соответствием, символ - код.
@Solderingironspb
@Solderingironspb 3 года назад
Вы можете доделать библиотеку и поделиться со всеми)
@sasha-bj5tt
@sasha-bj5tt 3 года назад
я не имею дисплея поддерживающего русский текст, из-за чего тестирование библиотеки является затруднительным.
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
Спасибо!!
@avr_stm_pro2955
@avr_stm_pro2955 3 года назад
Спасибо!!
@ashotkarapetyan4719
@ashotkarapetyan4719 3 года назад
где найти библятеку для SPL?
Далее
Datasheets: 16x2 LCD By Hand (No microcontroller)
26:35
LCD1602 - это очень просто!
22:19
Просмотров 140 тыс.
#engineering #diy #amazing #electronic #fyp
0:59
Просмотров 658 тыс.
Главная Ai фишка Samsung
0:37
Просмотров 189 тыс.