Дисплеи 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(аналогия работы с библиотекой)
  • НаукаНаука

Комментарии • 52

  • @user-hv5ol7re9i
    @user-hv5ol7re9i 7 месяцев назад

    Огромное спасибо за разбор! Библиотека вполне отличная. Работает сразу, без танцев с бубном. Пробовал на 12864. HAL тоже норм, за то просто и понятно.

  • @meg78337
    @meg78337 2 года назад +3

    Всё понятно и интересно, спасибо!
    Благодаря вам я начал пробовать работать с STM32)

  • @dobroliub1908
    @dobroliub1908 2 года назад +3

    Здорово, с новосельем! Ждём практических уроков по STM32.

  • @MrCrossRaccoon
    @MrCrossRaccoon Год назад

    спёр построение графика. спасибо :)

  • @alexandrvalentinovich164
    @alexandrvalentinovich164 9 месяцев назад

    Спасибо! Все доступно!

  • @sergey705
    @sergey705 Год назад

    Интересное видео! Переделал библиотечку под CMSIS и параллельный дисплей. Также размер моего дисплея 132х64. Поэтому небольшая заметка - в таких библиотеках высоту и ширину лучше обозначить через дефайны ;) Лайк, подписка!

  • @rolandtriton
    @rolandtriton Год назад

    your video helped me so much, thank you

  • @user-oi3tg8um4y
    @user-oi3tg8um4y 2 года назад +1

    Ого, как круто!!

  • @44Nemo44
    @44Nemo44 2 года назад

    Большое спасибо за ваши библиотеки. МК ST32F411 поддерживает ваша библиотека?

  • @user-lz1sh3ew5s
    @user-lz1sh3ew5s 2 года назад

    Олег, спасибо вам большое за данное видео! Есть ли у вас аналогичная библиотека для ks-0108?

    • @Solderingironspb
      @Solderingironspb  2 года назад

      добрый день! В будущем напишу библиотеку и под него)

  • @alexandrvalentinovich164
    @alexandrvalentinovich164 9 месяцев назад

    Олег, вопрос, зачем делали функцию кодирования UTF-8, в кубе (в последних версиях точно) например можно сменить кодировку файла с кодом меню Edit\Set Encoding..., тогда с русскими буквами проблем нет.

  • @daniaphilipov7984
    @daniaphilipov7984 2 года назад

    Здравствуйте, будет ли видео про OLED экран SH1106? Есть полно видео про SSD1306, а про этот на STM32 информации немного

    • @Solderingironspb
      @Solderingironspb  2 года назад

      Вполне возможно) может куплю в будущем для теста)

  • @Smart-Service
    @Smart-Service 2 года назад +1

    Супер. Я тоже прикупил такой дисплей 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 ruclips.net/video/hQMRMvXjjHE/видео.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')

  • @ambione9571
    @ambione9571 2 года назад +1

    Здравствуйте. Если есть возможность, сделайте, пожалуйста, видеоурок про то, как вы пишете такие библиотеки, можно очень подробно, как читаете даташит, куда смотреть. Был бы очень благодарен.

    • @Solderingironspb
      @Solderingironspb  2 года назад

      Здравствуйте!) в следующем году обязательно что-то подобное запишу, но это нужно делать с какой-то простенькой микросхемой, т.к. на написание более менее серьезных библиотек у меня уходят недели. В видео 20-40мин. это уместить сложно. Я в одном видео, в принципе, уже поднимал такую тему. Гляньте мое видео «8-разрядный модуль дисплея на MAX7219. Подключаем к STM32. Изучаем SPI». Там я по шагам писал функции. Работал с даташитом. Может будет полезно)

    • @ambione9571
      @ambione9571 2 года назад

      @@Solderingironspb Благодарю за ответ. Обязательно посмотрю. Мне кажется, для новичка, такого контента не может быть слишком много).

    • @user-pp2hz7ic7h
      @user-pp2hz7ic7h 2 года назад

      @@Solderingironspb здравствуйте не планируете такой ролик ? Как читать даташит чтобы начать писать свои библиотеки

    • @Solderingironspb
      @Solderingironspb  2 года назад

      @@user-pp2hz7ic7h добрый день!) сделаю)

  • @Seriyv0lk
    @Seriyv0lk 10 месяцев назад

    Привет! А не планируешь ли снять видео по работе с дисплеями типа ST7735 или ST7789? (Вывод текста, графики и пр.) А то с ардуиной всё понятно, нашёл либу, подключил и работаешь. А вот как это делать на чистом Си пока ещё не сильно понятно.

    • @Solderingironspb
      @Solderingironspb  10 месяцев назад

      Привет) пока не думал ими заниматься

    • @Seriyv0lk
      @Seriyv0lk 10 месяцев назад

      @@Solderingironspb Подумай) На ST7789 есть очень классные IPS матрицы с довольно большой плотностью пикселей и отличными цветами. Изображение по качеству получается великолепное!

    • @Solderingironspb
      @Solderingironspb  10 месяцев назад

      У меня дома валялись два st7789 240x240. Да, красивые, но из за этой плотности они получаются малютки. Поэтому я отказался от них. 240х240 цветного изображения вевести - это уже нормальная нагрузка на мк…

  • @Smart-Service
    @Smart-Service 2 года назад

    Добрый день
    есть у Вас возможность поделиться исходниками меню которое Вы демонстрировали на 2:00 мин. видео?
    или снять ролик по написанию такого меню с управлением энкодером и сохранением во внешнюю еепром.

    • @Solderingironspb
      @Solderingironspb  2 года назад

      По еепром следующее видео будет. По меню пока говнокод. С ним попозже буду думать)

  • @stari40k
    @stari40k Год назад

    Спасибо за Ваш труд. Но подскажите пожалуйста, а какой смысл вот в этом условии ? Когда оно в теории может быть выполнено ?
    if (0x00 & (1

    • @Solderingironspb
      @Solderingironspb  Год назад

      Добрый день!)
      Смысл я уже не помню..
      В данном случае - это может осталось от старых каких-то работ и оно тут в принципе не нужно, т.к. всегда будет false. Надо заново собирать отладку под это дело и перепроверить все. Как-нибудь потом гляну, поправлю.

    • @stari40k
      @stari40k Год назад

      @@Solderingironspb Используя Ваши наработки, допилил под себя. И да, выражение 0x00 & (1

  • @andrewtitoff6167
    @andrewtitoff6167 10 месяцев назад

    Да, и ещё вопрос, а почему не используешь китайский дисплей на ILI9341, он цветной QVGA и общается так-же по SPI, а ещё они с тачскрином обычно делают который тоже по SPI работает.

    • @Solderingironspb
      @Solderingironspb  10 месяцев назад

      Для него нужно больше ресурсов. Для технических устройств, которые я делаю - хватает монохрома. Нужно красиво - уже прогу под ПК пишу

    • @andrewtitoff6167
      @andrewtitoff6167 10 месяцев назад

      @@Solderingironspb Понял, жаль, понравились твои уроки, и главное они работают не только в ютубе, много чего передрать можно)

  • @andrewtitoff6167
    @andrewtitoff6167 10 месяцев назад

    по cbg128064a000-biw-r не подскажешь?, есть несколько дисплеев бу, хотелось бы подключить.

    • @Solderingironspb
      @Solderingironspb  10 месяцев назад

      Без понятия) ввожу в гугле cbg128064a display и мне особо ничего не выдает

  • @studentemail8067
    @studentemail8067 2 года назад

    Thank you for this tutorials.
    Can you make tutorials in English.

  • @yl923
    @yl923 Год назад

    У меня тогда вопрос на засыпку...
    А как сделать своего рода адаптер, что бы для какого то законченного устройства скажем с дисплеем ST7565R прикрутитить какой то другой дисплей с другим драйвером? Как обратно декодировать сигналы для ST7565R SPI?

    • @Solderingironspb
      @Solderingironspb  Год назад

      Это полнейшее извращение) да и вряд ли получится это сделать адекватно, т.к. нет определенного протокола. Но смысл в том, чтоб один МК передает по spi пакет данных другому МК, который знает протокол общения, тут же его переделывает под требуемый протокол и отправляет измененный пакет на дисплей.

    • @yl923
      @yl923 Год назад

      @@Solderingironspb Ну по крайне мере это прикладная задача, а не балловство со всякими часами и пр...
      Я вот и думал, можно логическим анализатором подключиться к spi, поочерёдно включать тестовые пиксели для обоих дисплеев и сравнивать.

  • @FastovConstantine
    @FastovConstantine Год назад

    Добрый день. Подскажите пожалуйста, можно ли как то пополнять символы? Я хочу создать мультиязычное устройство, и мне нужен польский язык в котором присутствуют буквы : "ę", "ł", "ń", "ó", "ż", "ź", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ż" и "Ź". Пользуюсь Вашей библиотекой предыдущеё версии, где Y это строка, очень удобно для менюх.

    • @Solderingironspb
      @Solderingironspb  Год назад

      Добрый день. Вам нужно будет функцию ST7920_Decode_UTF8 дописать в соответствии с кодировкой для польского языка в utf8 и массивы со шрифтами для данных символов дополнить

    • @FastovConstantine
      @FastovConstantine Год назад

      А я надеялся что просто добавлю в масив
      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 Год назад

      @@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);
      }
      }