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

  Рет қаралды 11,188

Олег Волков

Олег Волков

Күн бұрын

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.

Пікірлер: 60
@sergey2940
@sergey2940 Жыл бұрын
Спасибо! Внятно, доступно, быстро, результативно! Отдельное спасибо автору библиотек! Гениально!
@user-ds2uk9vi1k
@user-ds2uk9vi1k 3 жыл бұрын
Спасибо, после Ваших видео не остаётся белых пятен, приятно слушать, интересно, а главное - понятно!
@pavelmokrov710
@pavelmokrov710 Жыл бұрын
Отличная работа.Все заводится с первого раза.Уважение автору !!!
@edmelectronics4110
@edmelectronics4110 3 жыл бұрын
Очень, очень полезное видео. Благадарю вам!
@szapsis
@szapsis Жыл бұрын
Спасибо большое за твой труд друг!
@od3417
@od3417 2 жыл бұрын
Спасибо, все получилось
@viktorvolkov7935
@viktorvolkov7935 3 жыл бұрын
Спасибо!!!
@cookiehunter8828
@cookiehunter8828 Жыл бұрын
Для тех, кто как я, в бронепоезде)))) Этому дисплейчику действительно 5В нужно, несмотря на то, что много где пишут, что хватает и 3.3... Весь вечер сидел думал. Смотрел разные библиотеки, лазал по форумам, смотрел подобные видео, менял адрес - все бестолку... Поэтому, если у вас подсветка есть, а текста нет - попробуйте подключить его на 5В. Еще пара советов, которые я открыл для себя и делюсь с вами: 1) Чтобы проверить, действительно ли вы ломитесь "по адресу" - попробуйте поотключать программно подсветку, как из либы в этом видео. Когда отключится - адрес найден. 2) Чтобы все-таки хоть что-то увидеть при 3.3в - выкрутите потенциометром яркость на максимум (на моей платке HW-061 нужно крутить ПО часовой стрелке), и смотрите на дисплей под углом снизу. Всем добра и успехов :3
@efly6630
@efly6630 7 ай бұрын
Благодарю! Помогло, когда покрутил потенциометр
@ilyamif
@ilyamif Жыл бұрын
Спасибо большое, очень помог, долго пытался решить проблему с выводом чисел и перезаписи памяти. Я даже использовал динамические массивы символов, но работало ужасно... А надо было то всего пробелы поставить!😂
@user-pp2hz7ic7h
@user-pp2hz7ic7h 3 жыл бұрын
Благодарю
@lonny_breaux
@lonny_breaux 10 ай бұрын
спасибо большое!!!!!!!!!!!!!!!!!!!
@everythingabout6066
@everythingabout6066 2 жыл бұрын
спасибо, все работает. я так же пробовал в FreeRTOS . Почему то картинка на экране мерцала постоянно.
@Solderingironspb
@Solderingironspb 2 жыл бұрын
А Вы случайно постоянную очистку экрана не делали?
@everythingabout6066
@everythingabout6066 2 жыл бұрын
@@Solderingironspb пробовал и без FreeRTOS , все нормально. Может где-то эта функция стоит по умолчанию. Хз
@alinalevina3814
@alinalevina3814 Жыл бұрын
Здравствуйте! Пользуюсь вашей библиотекой для китайских lcd1602, не могу разобраться в некотрых вещах (все работает, просто не могу понять). Функция lcd1602_Send_init_Data , как физически передается 1 в стробирующий сигнал или 0. В даташите не могу найти информации про это, получается же что передается 00001000 или 11110111?
@felixfox527
@felixfox527 3 жыл бұрын
Приветсвую. А есть ли библиотека u8g2 для стм? Приехала black pill с али. После ардуины конечно кажется сложновато.
@Solderingironspb
@Solderingironspb 3 жыл бұрын
Вы про большой LCD 128х64? Если да, то тоже в планах его рассмотреть. На счет сложности стм после ардуино - все фигня. Главное переключиться)
@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 с вибран после запетая знак после мантиса. Я попробовал сделать такая функция к твое библиотека, но меня не получилас, я не так добрый в програмирование. Подумайте об этом, если хотите расширить возможности своей библиотеки универсальной функцией.
@mobilandservice
@mobilandservice Жыл бұрын
Подскажите пожалуйста, как можно добавить функцию включение и выключение курсора (+ если есть возможность мигающий курсор). Спасибо
@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
@amonkotaro8730
@amonkotaro8730 2 жыл бұрын
Дайте ссылочку на предыдущий урок, в котором создавалась библиотека
@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;
@Selfrock_Vladimir
@Selfrock_Vladimir 2 жыл бұрын
Пардон, а как управлять контрастностью? Текст на дисплее проявляется еле еле, при крайнем положении крутилки контрастности на модуле I2C, при работе того же дисплея от ордуинки контрастность нормальная, при среднем положении крутилки контрастности. Библиотека вообще позволяет это регулировать? Пардон, все решилось запитыванием дисплея от 5 вольт.
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Да. Питание дисплея от 5 вольт)
@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-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
@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 жыл бұрын
Да, именно так. После числа ставите пробел и все. Он и будет подчищать данные)
@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.
@user-sq4we5vd7g
@user-sq4we5vd7g Жыл бұрын
*«Чем эти дисплеи ОТличаются (от чего-то)»* *«Чем эти дисплеи РАЗличаются (между собой)»*
@user-sq4we5vd7g
@user-sq4we5vd7g Жыл бұрын
Отрадно, что ведущий адекватно воспринимает дружескую критику благодарного слушателя (и слышателя).
@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 жыл бұрын
👍🏻как угодно
@do6pbiy0kot
@do6pbiy0kot 3 жыл бұрын
а что за клава ?
@Solderingironspb
@Solderingironspb 3 жыл бұрын
a4 tech kv-300h
@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?
LCD1602 - это очень просто!
22:19
Гневисть
Рет қаралды 139 М.
I’m just a kid 🥹🥰 LeoNata family #shorts
00:12
LeoNata Family
Рет қаралды 17 МЛН
UFC Vegas 93 : Алмабаев VS Джонсон
02:01
Setanta Sports UFC
Рет қаралды 225 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 134 МЛН
We Got Expelled From Scholl After This...
00:10
Jojo Sim
Рет қаралды 67 МЛН
Datasheets: 16x2 LCD By Hand (No microcontroller)
26:35
Mitch Davis
Рет қаралды 94 М.
LCD via I2C in STM32 || CUBEIDE || PCF8574
12:22
ControllersTech
Рет қаралды 77 М.
How to send String to the Nextion display || STM32F103 || CubeIDE
11:47
ИГРОВОВЫЙ НОУТ ASUS ЗА 57 тысяч
25:33
Ремонтяш
Рет қаралды 53 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 32 МЛН
#miniphone
0:16
Miniphone
Рет қаралды 3,6 МЛН
Cadiz smart lock official account unlocks the aesthetics of returning home
0:30