Справочници, схемотехника, теория > Програмиране на микроконтролери, програматори, цифрови проекти

LED_Display_Dinamic STM32

(1/1)

EDM electronics:
Вчера докато си почивах, написах една библиотека за LED-динамична индикация с 3 бр. 7-сегментни индикатора за STM32. Използват се 11 пина - 7 за сегментите и 1 за точката и 3 за анодите.
Има готови дисплеи с последователни регистри тип SPI, но целта на занятието е, когато се пести от към излишни елементи и има доста свободни изводи на контролера. Индикатора се връзва директно на пиновете на контролера.

Примера на видеото е с най-малкия учебен контролер STM32F103C8T6, който има над 32 използваеми пина. Индикацията е динамична, т.е. 3-те индикатора бягат с  около 5 mS. Добре светят и при 1 mS.
Кръговия брояч е направен със софтуерен таймер на библиотека HAL с функцията HAL_GetTick(), която е еквивалента на millis() при Ардуино, не съм ползвал апаратен, защото е много по-лесно и универсално.
Библиотеката е универсална и може да се ползва на абсолютно всички контролери STM32, като единствено се запишат в хедер-файла кои пинове и кои портове се ползват - никакви други настройки не са нужни. Във видеото е видно как се наименуват пиновете.
Всички комутации на изходите са направени с битова маска за всеки отделен пин, не порт и по този начин е достатъчно да се именува който и да е пин на контролера, да се разменят места за удобство, това няма да има нужда на преправяне на библиотеката.

Основните функции са две: 1. за изписване на число int до 999 с ограничител и 2. изписване на масив от 3 отделни символа.

Ако има интерес, мога да споделя и библиотеката.

https://www.youtube.com/v/FrRY-pifbtM



--- Код: ---//Функции за използване в main()  loop
//================================================================


void LED_Display_Init(void);    //функция за иницииране на дисплея в satup


void LED_brightness(uint16_t value);   //функция яркост на дисплея от 1-10


void LED_Clear(void);     //функция за изчистване на дисплея - не свети


void LED_Display_int(uint16_t IntVal, uint8_t point);    //функция за изписване на  число uint16_t


void LED_Display_masiv(uint8_t mas3, uint8_t mas2, uint8_t mas1);  //функция за масив от 3 символа

//================================================================
--- Край на кода ---

Ksurnev:
ЕДМ, тук се вижда по-добре.

https://www.youtube.com/watch?v=FrRY-pifbtM

Навигация

[0] Списък на темите

Премини на пълна версия