Дисплеи ST7920 и GMG12864(ST7565r). Обновление графических библиотек. Режим плоттера.
HTML-код
- Опубликовано: 14 июл 2024
- #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(аналогия работы с библиотекой) - Наука
Огромное спасибо за разбор! Библиотека вполне отличная. Работает сразу, без танцев с бубном. Пробовал на 12864. HAL тоже норм, за то просто и понятно.
Всё понятно и интересно, спасибо!
Благодаря вам я начал пробовать работать с STM32)
Здорово, с новосельем! Ждём практических уроков по STM32.
Спасибо)
спёр построение графика. спасибо :)
Спасибо! Все доступно!
Интересное видео! Переделал библиотечку под CMSIS и параллельный дисплей. Также размер моего дисплея 132х64. Поэтому небольшая заметка - в таких библиотеках высоту и ширину лучше обозначить через дефайны ;) Лайк, подписка!
your video helped me so much, thank you
Ого, как круто!!
Большое спасибо за ваши библиотеки. МК ST32F411 поддерживает ваша библиотека?
Поддерживает)
Олег, спасибо вам большое за данное видео! Есть ли у вас аналогичная библиотека для ks-0108?
добрый день! В будущем напишу библиотеку и под него)
Олег, вопрос, зачем делали функцию кодирования UTF-8, в кубе (в последних версиях точно) например можно сменить кодировку файла с кодом меню Edit\Set Encoding..., тогда с русскими буквами проблем нет.
Здравствуйте, будет ли видео про OLED экран SH1106? Есть полно видео про SSD1306, а про этот на STM32 информации немного
Вполне возможно) может куплю в будущем для теста)
Супер. Я тоже прикупил такой дисплей GMG256128 для тестов, он по размерам приближен к ST7920.
Очень интересует видео по созданию меню, по сохранению параметров в еепром и возможность сохранения в rtc_bakup регистрах.
есть у меня 2000 шт. Fram FM25CL64. она работает как аналог епром но по spi, примеры нахожу только по I2C eeprom, интересно бы было услышать от вас какую нибуть информацию по fram или eeprom SPI.
Меню я пока организовываю большой кучей флагов. Надо как-то структурировать сначала, чтоб пояснить легче было))
Для eeprom написал библиотеку под серию микросхем типа AT24Cxx, с контролем CRC32(для надежности). Работа по i2c. Пока более чем устраивает.
По поводу FM25CL64: глянул datasheet, вроде все понятно. Глянул ценник. В магазинах они редкие и ценник конский. На али есть, но оригинал ли?… так, в принципе можно закупить и попробовать.
@@Solderingironspb Я бы отправил вам десяток но в украине нахожусь.
тогда если можно в следующих видео затроньте способ сохранения в rtc_bakup регистры, например переменной. Буду признателен :)
видео по F-RAM ruclips.net/video/hQMRMvXjjHE/видео.html
@@Solderingironspb так есть же в STM flash memory, чтобы туда записать нужно удалить в всю страницу, можно использовать если сохранять структуру пользовался с с какими-то настройками. В AVR конечно удобнее и проще
@@avr_stm_pro2955 Вот эти заморочки с переписыванием сразу всей страницы меня и напрягают... В EEPROM пиши в любую ячейку и читай из любой ячейки. Удобнее.
@@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')
Здравствуйте. Если есть возможность, сделайте, пожалуйста, видеоурок про то, как вы пишете такие библиотеки, можно очень подробно, как читаете даташит, куда смотреть. Был бы очень благодарен.
Здравствуйте!) в следующем году обязательно что-то подобное запишу, но это нужно делать с какой-то простенькой микросхемой, т.к. на написание более менее серьезных библиотек у меня уходят недели. В видео 20-40мин. это уместить сложно. Я в одном видео, в принципе, уже поднимал такую тему. Гляньте мое видео «8-разрядный модуль дисплея на MAX7219. Подключаем к STM32. Изучаем SPI». Там я по шагам писал функции. Работал с даташитом. Может будет полезно)
@@Solderingironspb Благодарю за ответ. Обязательно посмотрю. Мне кажется, для новичка, такого контента не может быть слишком много).
@@Solderingironspb здравствуйте не планируете такой ролик ? Как читать даташит чтобы начать писать свои библиотеки
@@user-pp2hz7ic7h добрый день!) сделаю)
Привет! А не планируешь ли снять видео по работе с дисплеями типа ST7735 или ST7789? (Вывод текста, графики и пр.) А то с ардуиной всё понятно, нашёл либу, подключил и работаешь. А вот как это делать на чистом Си пока ещё не сильно понятно.
Привет) пока не думал ими заниматься
@@Solderingironspb Подумай) На ST7789 есть очень классные IPS матрицы с довольно большой плотностью пикселей и отличными цветами. Изображение по качеству получается великолепное!
У меня дома валялись два st7789 240x240. Да, красивые, но из за этой плотности они получаются малютки. Поэтому я отказался от них. 240х240 цветного изображения вевести - это уже нормальная нагрузка на мк…
Добрый день
есть у Вас возможность поделиться исходниками меню которое Вы демонстрировали на 2:00 мин. видео?
или снять ролик по написанию такого меню с управлением энкодером и сохранением во внешнюю еепром.
По еепром следующее видео будет. По меню пока говнокод. С ним попозже буду думать)
Спасибо за Ваш труд. Но подскажите пожалуйста, а какой смысл вот в этом условии ? Когда оно в теории может быть выполнено ?
if (0x00 & (1
Добрый день!)
Смысл я уже не помню..
В данном случае - это может осталось от старых каких-то работ и оно тут в принципе не нужно, т.к. всегда будет false. Надо заново собирать отладку под это дело и перепроверить все. Как-нибудь потом гляну, поправлю.
@@Solderingironspb Используя Ваши наработки, допилил под себя. И да, выражение 0x00 & (1
Да, и ещё вопрос, а почему не используешь китайский дисплей на ILI9341, он цветной QVGA и общается так-же по SPI, а ещё они с тачскрином обычно делают который тоже по SPI работает.
Для него нужно больше ресурсов. Для технических устройств, которые я делаю - хватает монохрома. Нужно красиво - уже прогу под ПК пишу
@@Solderingironspb Понял, жаль, понравились твои уроки, и главное они работают не только в ютубе, много чего передрать можно)
по cbg128064a000-biw-r не подскажешь?, есть несколько дисплеев бу, хотелось бы подключить.
Без понятия) ввожу в гугле cbg128064a display и мне особо ничего не выдает
Thank you for this tutorials.
Can you make tutorials in English.
Hello. Use subtitles.
Thank you,
Even the subtitle is in Russian language.
Anyway, thank you again.
RUclips can translate subtitles)
У меня тогда вопрос на засыпку...
А как сделать своего рода адаптер, что бы для какого то законченного устройства скажем с дисплеем ST7565R прикрутитить какой то другой дисплей с другим драйвером? Как обратно декодировать сигналы для ST7565R SPI?
Это полнейшее извращение) да и вряд ли получится это сделать адекватно, т.к. нет определенного протокола. Но смысл в том, чтоб один МК передает по spi пакет данных другому МК, который знает протокол общения, тут же его переделывает под требуемый протокол и отправляет измененный пакет на дисплей.
@@Solderingironspb Ну по крайне мере это прикладная задача, а не балловство со всякими часами и пр...
Я вот и думал, можно логическим анализатором подключиться к spi, поочерёдно включать тестовые пиксели для обоих дисплеев и сравнивать.
Добрый день. Подскажите пожалуйста, можно ли как то пополнять символы? Я хочу создать мультиязычное устройство, и мне нужен польский язык в котором присутствуют буквы : "ę", "ł", "ń", "ó", "ż", "ź", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ż" и "Ź". Пользуюсь Вашей библиотекой предыдущеё версии, где Y это строка, очень удобно для менюх.
Добрый день. Вам нужно будет функцию ST7920_Decode_UTF8 дописать в соответствии с кодировкой для польского языка в utf8 и массивы со шрифтами для данных символов дополнить
А я надеялся что просто добавлю в масив
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, // // Символ 'Ź'
и всё заработает, но не тут то было. И ещё заметил ошибку такого плана. Если на последней строке вылезти за границы экрана то контроллер зависнет.
@@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);
}
}