Дисплеи ST7920 и GMG12864(ST7565r). Обновление графических библиотек. Режим плоттера.

  Переглядів 4,213

Олег Волков

Олег Волков

День тому

#ST7920#GMG12864#ST7565R
Обновленные графические библиотеки для дисплеев:
ST7920
GMG12864(ST7565r)
Функционал:
- Имеется 2 шрифта: 3х5 и 5х7
- Вывод текста в любой точке по x,y
- Вывод изображения любого размера в любой точке по x,y
- Декодирование UTF8 в набор символов.
- Построение графика(режим плоттера)
- Рисование геометрических фигур: прямоугольник, окружность, треугольник.
Материалы из видео:
github.com/Solderingironspb/L...
ЯндексДзен: zen.yandex.ru/id/622208eed2eb...
Купить дисплеи:
ST7920: aliexpress.ru/item/3284515514...
GMG12864: aliexpress.ru/item/1005001621...
00:00 Вступление
02:10 Сравнение максимальной скорости дисплеев
02:40 Распиновка дисплеев
03:33 Описание функций библиотек
05:24 Создаем проект под ST7920(вникание в работу с библиотекой)
23:58 Создаем проект под GMG12864(аналогия работы с библиотекой)

КОМЕНТАРІ: 52
@meg78337
@meg78337 2 роки тому
Всё понятно и интересно, спасибо! Благодаря вам я начал пробовать работать с STM32)
@user-hv5ol7re9i
@user-hv5ol7re9i 5 місяців тому
Огромное спасибо за разбор! Библиотека вполне отличная. Работает сразу, без танцев с бубном. Пробовал на 12864. HAL тоже норм, за то просто и понятно.
@dobroliub1908
@dobroliub1908 2 роки тому
Здорово, с новосельем! Ждём практических уроков по STM32.
@Solderingironspb
@Solderingironspb 2 роки тому
Спасибо)
@alexandrvalentinovich164
@alexandrvalentinovich164 7 місяців тому
Спасибо! Все доступно!
@rolandtriton
@rolandtriton Рік тому
your video helped me so much, thank you
@user-oi3tg8um4y
@user-oi3tg8um4y 2 роки тому
Ого, как круто!!
@sergey705
@sergey705 10 місяців тому
Интересное видео! Переделал библиотечку под CMSIS и параллельный дисплей. Также размер моего дисплея 132х64. Поэтому небольшая заметка - в таких библиотеках высоту и ширину лучше обозначить через дефайны ;) Лайк, подписка!
@alexandrvalentinovich164
@alexandrvalentinovich164 7 місяців тому
Олег, вопрос, зачем делали функцию кодирования UTF-8, в кубе (в последних версиях точно) например можно сменить кодировку файла с кодом меню Edit\Set Encoding..., тогда с русскими буквами проблем нет.
@MrCrossRaccoon
@MrCrossRaccoon Рік тому
спёр построение графика. спасибо :)
@user-lz1sh3ew5s
@user-lz1sh3ew5s Рік тому
Олег, спасибо вам большое за данное видео! Есть ли у вас аналогичная библиотека для ks-0108?
@Solderingironspb
@Solderingironspb Рік тому
добрый день! В будущем напишу библиотеку и под него)
@44Nemo44
@44Nemo44 2 роки тому
Большое спасибо за ваши библиотеки. МК ST32F411 поддерживает ваша библиотека?
@Solderingironspb
@Solderingironspb 2 роки тому
Поддерживает)
@Seriyv0lk
@Seriyv0lk 8 місяців тому
Привет! А не планируешь ли снять видео по работе с дисплеями типа ST7735 или ST7789? (Вывод текста, графики и пр.) А то с ардуиной всё понятно, нашёл либу, подключил и работаешь. А вот как это делать на чистом Си пока ещё не сильно понятно.
@Solderingironspb
@Solderingironspb 8 місяців тому
Привет) пока не думал ими заниматься
@Seriyv0lk
@Seriyv0lk 8 місяців тому
@@Solderingironspb Подумай) На ST7789 есть очень классные IPS матрицы с довольно большой плотностью пикселей и отличными цветами. Изображение по качеству получается великолепное!
@Solderingironspb
@Solderingironspb 8 місяців тому
У меня дома валялись два st7789 240x240. Да, красивые, но из за этой плотности они получаются малютки. Поэтому я отказался от них. 240х240 цветного изображения вевести - это уже нормальная нагрузка на мк…
@andrewtitoff6167
@andrewtitoff6167 7 місяців тому
Да, и ещё вопрос, а почему не используешь китайский дисплей на ILI9341, он цветной QVGA и общается так-же по SPI, а ещё они с тачскрином обычно делают который тоже по SPI работает.
@Solderingironspb
@Solderingironspb 7 місяців тому
Для него нужно больше ресурсов. Для технических устройств, которые я делаю - хватает монохрома. Нужно красиво - уже прогу под ПК пишу
@andrewtitoff6167
@andrewtitoff6167 7 місяців тому
@@Solderingironspb Понял, жаль, понравились твои уроки, и главное они работают не только в ютубе, много чего передрать можно)
@Smart-Service
@Smart-Service 2 роки тому
Супер. Я тоже прикупил такой дисплей GMG256128 для тестов, он по размерам приближен к ST7920. Очень интересует видео по созданию меню, по сохранению параметров в еепром и возможность сохранения в rtc_bakup регистрах. есть у меня 2000 шт. Fram FM25CL64. она работает как аналог епром но по spi, примеры нахожу только по I2C eeprom, интересно бы было услышать от вас какую нибуть информацию по fram или eeprom SPI.
@Solderingironspb
@Solderingironspb 2 роки тому
Меню я пока организовываю большой кучей флагов. Надо как-то структурировать сначала, чтоб пояснить легче было)) Для eeprom написал библиотеку под серию микросхем типа AT24Cxx, с контролем CRC32(для надежности). Работа по i2c. Пока более чем устраивает. По поводу FM25CL64: глянул datasheet, вроде все понятно. Глянул ценник. В магазинах они редкие и ценник конский. На али есть, но оригинал ли?… так, в принципе можно закупить и попробовать.
@Smart-Service
@Smart-Service 2 роки тому
@@Solderingironspb Я бы отправил вам десяток но в украине нахожусь. тогда если можно в следующих видео затроньте способ сохранения в rtc_bakup регистры, например переменной. Буду признателен :) видео по F-RAM ukposts.info/have/v-deo/oIF-hoOtj6CbqXk.html
@avr_stm_pro2955
@avr_stm_pro2955 2 роки тому
@@Solderingironspb так есть же в STM flash memory, чтобы туда записать нужно удалить в всю страницу, можно использовать если сохранять структуру пользовался с с какими-то настройками. В AVR конечно удобнее и проще
@Solderingironspb
@Solderingironspb 2 роки тому
@@avr_stm_pro2955 Вот эти заморочки с переписыванием сразу всей страницы меня и напрягают... В EEPROM пиши в любую ячейку и читай из любой ячейки. Удобнее.
@ajdarseidzade688
@ajdarseidzade688 2 роки тому
@@Smart-Service Там вроде все просто же (если с HAL-ом): /* для доступа к 'backup memory' ('backup registers') (эта ф. уже может быть в 'SystemClock_Config'()!) */ HAL_PWR_EnableBkUpAccess(); /* использование 'backup memory' (тут 32-х таки регистров 'RTC_BKP_DRxx') */ HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, (uint32_t)data); ну и батарейку на пин 'VBAT')
@daniaphilipov7984
@daniaphilipov7984 2 роки тому
Здравствуйте, будет ли видео про OLED экран SH1106? Есть полно видео про SSD1306, а про этот на STM32 информации немного
@Solderingironspb
@Solderingironspb 2 роки тому
Вполне возможно) может куплю в будущем для теста)
@ambione9571
@ambione9571 2 роки тому
Здравствуйте. Если есть возможность, сделайте, пожалуйста, видеоурок про то, как вы пишете такие библиотеки, можно очень подробно, как читаете даташит, куда смотреть. Был бы очень благодарен.
@Solderingironspb
@Solderingironspb 2 роки тому
Здравствуйте!) в следующем году обязательно что-то подобное запишу, но это нужно делать с какой-то простенькой микросхемой, т.к. на написание более менее серьезных библиотек у меня уходят недели. В видео 20-40мин. это уместить сложно. Я в одном видео, в принципе, уже поднимал такую тему. Гляньте мое видео «8-разрядный модуль дисплея на MAX7219. Подключаем к STM32. Изучаем SPI». Там я по шагам писал функции. Работал с даташитом. Может будет полезно)
@ambione9571
@ambione9571 2 роки тому
@@Solderingironspb Благодарю за ответ. Обязательно посмотрю. Мне кажется, для новичка, такого контента не может быть слишком много).
@user-pp2hz7ic7h
@user-pp2hz7ic7h Рік тому
@@Solderingironspb здравствуйте не планируете такой ролик ? Как читать даташит чтобы начать писать свои библиотеки
@Solderingironspb
@Solderingironspb Рік тому
@@user-pp2hz7ic7h добрый день!) сделаю)
@Smart-Service
@Smart-Service 2 роки тому
Добрый день есть у Вас возможность поделиться исходниками меню которое Вы демонстрировали на 2:00 мин. видео? или снять ролик по написанию такого меню с управлением энкодером и сохранением во внешнюю еепром.
@Solderingironspb
@Solderingironspb 2 роки тому
По еепром следующее видео будет. По меню пока говнокод. С ним попозже буду думать)
@andrewtitoff6167
@andrewtitoff6167 7 місяців тому
по cbg128064a000-biw-r не подскажешь?, есть несколько дисплеев бу, хотелось бы подключить.
@Solderingironspb
@Solderingironspb 7 місяців тому
Без понятия) ввожу в гугле cbg128064a display и мне особо ничего не выдает
@yl923
@yl923 Рік тому
У меня тогда вопрос на засыпку... А как сделать своего рода адаптер, что бы для какого то законченного устройства скажем с дисплеем ST7565R прикрутитить какой то другой дисплей с другим драйвером? Как обратно декодировать сигналы для ST7565R SPI?
@Solderingironspb
@Solderingironspb Рік тому
Это полнейшее извращение) да и вряд ли получится это сделать адекватно, т.к. нет определенного протокола. Но смысл в том, чтоб один МК передает по spi пакет данных другому МК, который знает протокол общения, тут же его переделывает под требуемый протокол и отправляет измененный пакет на дисплей.
@yl923
@yl923 Рік тому
@@Solderingironspb Ну по крайне мере это прикладная задача, а не балловство со всякими часами и пр... Я вот и думал, можно логическим анализатором подключиться к spi, поочерёдно включать тестовые пиксели для обоих дисплеев и сравнивать.
@studentemail8067
@studentemail8067 2 роки тому
Thank you for this tutorials. Can you make tutorials in English.
@Solderingironspb
@Solderingironspb 2 роки тому
Hello. Use subtitles.
@studentemail8067
@studentemail8067 2 роки тому
Thank you, Even the subtitle is in Russian language. Anyway, thank you again.
@Solderingironspb
@Solderingironspb 2 роки тому
UKposts can translate subtitles)
@stari40k
@stari40k Рік тому
Спасибо за Ваш труд. Но подскажите пожалуйста, а какой смысл вот в этом условии ? Когда оно в теории может быть выполнено ? if (0x00 & (1
@Solderingironspb
@Solderingironspb Рік тому
Добрый день!) Смысл я уже не помню.. В данном случае - это может осталось от старых каких-то работ и оно тут в принципе не нужно, т.к. всегда будет false. Надо заново собирать отладку под это дело и перепроверить все. Как-нибудь потом гляну, поправлю.
@stari40k
@stari40k Рік тому
@@Solderingironspb Используя Ваши наработки, допилил под себя. И да, выражение 0x00 & (1
@FastovConstantine
@FastovConstantine 11 місяців тому
Добрый день. Подскажите пожалуйста, можно ли как то пополнять символы? Я хочу создать мультиязычное устройство, и мне нужен польский язык в котором присутствуют буквы : "ę", "ł", "ń", "ó", "ż", "ź", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ż" и "Ź". Пользуюсь Вашей библиотекой предыдущеё версии, где Y это строка, очень удобно для менюх.
@Solderingironspb
@Solderingironspb 11 місяців тому
Добрый день. Вам нужно будет функцию ST7920_Decode_UTF8 дописать в соответствии с кодировкой для польского языка в utf8 и массивы со шрифтами для данных символов дополнить
@FastovConstantine
@FastovConstantine 11 місяців тому
А я надеялся что просто добавлю в масив 0x00, 0x00, 0x08, 0x14, 0x22, 0x00, // // Символ 'ę' 0x00, 0x00, 0x3E, 0x49, 0x49, 0x0A, // // Символ 'ł' 0x00, 0x00, 0x3E, 0x41, 0x41, 0x22, // // Символ 'ń' 0x00, 0x00, 0x00, 0x7F, 0x40, 0x00, // // Символ 'ó' 0x00, 0x00, 0x3E, 0x41, 0x41, 0x3E, // // Символ 'ż' 0x00, 0x00, 0x3E, 0x41, 0x40, 0x3E, // // Символ 'ź' 0x00, 0x00, 0x08, 0x14, 0x2A, 0x08, // // Символ 'Ą' 0x00, 0x00, 0x3F, 0x48, 0x48, 0x28, // // Символ 'Ć' 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, // // Символ 'Ę' 0x00, 0x00, 0x3F, 0x40, 0x40, 0x20, // // Символ 'Ł' 0x00, 0x00, 0x3F, 0x42, 0x42, 0x24, // // Символ 'Ń' 0x00, 0x00, 0x00, 0x7F, 0x44, 0x00, // // Символ 'Ó' 0x00, 0x00, 0x3F, 0x42, 0x42, 0x3F, // // Символ 'Ś' 0x00, 0x00, 0x1C, 0x22, 0x42, 0x04, // // Символ 'Ż' 0x00, 0x00, 0x1C, 0x22, 0x42, 0x3C, // // Символ 'Ź' и всё заработает, но не тут то было. И ещё заметил ошибку такого плана. Если на последней строке вылезти за границы экрана то контроллер зависнет.
@FastovConstantine
@FastovConstantine 11 місяців тому
@@Solderingironspb Я ещё немного дописал Вашу библиотеку для выравнивания текста void textAlignRight(char *tx_buffer, size_t len, uint8_t y, bool inversion) { size_t ln = len; char *leter = &tx_buffer[0]; if((uint8_t)*leter > 94) ln /= 2; // Проверяем кодировку текста 1 байт аглийский, 2 байта кирилица if(ln < 22) { // 22*6-1 = 130 > 127px ST7920_Decode_UTF8(ST7920_width - ln * 6 - 1, y, inversion, tx_buffer); } } void textAlignCenter(char *tx_buffer, size_t len, uint8_t y, bool inversion) { size_t ln = len; char *leter = &tx_buffer[0]; if((uint8_t)*leter > 94) ln /= 2; // Если кирилица! if(ln < 22) { // 22*6-1 = 130 > 127px ST7920_Decode_UTF8((ST7920_width/2) - (ln * 6)/2, y, inversion, tx_buffer); } }
КИРПИЧ ОБ ГОЛОВУ #shorts
00:24
Паша Осадчий
Переглядів 5 млн
Старейшая нерешённая задача [Veritasium]
30:08
💪Установи свой Home Assistant за 5 минут! 🏠 Умный Дом это просто!
6:04
''Бесплатные умные'' домофоны для глупых людей. За чей счет банкет?
12:48
Вадим Шегалов.Оккультные игры элиты
Переглядів 31 тис.
Как должен стоять ПК?
1:00
CompShop Shorts
Переглядів 675 тис.
Що покаже Apple, гнучкі айфони та Windows переходить на ARM
17:49
Ноталка Шелягіна
Переглядів 60 тис.
RTX 4070 Super слишком хороша. Меня это бесит
15:22
Рома, Просто Рома
Переглядів 88 тис.
Phone repairs are getting ridiculous - Here's why.
22:24
Mrwhosetheboss
Переглядів 543 тис.