PROGCONT.RU

Форма входа







✖
Вход

No No No

STM32F101-107 CMSIS Драйвер 8-разрядного цифрового индикатора на микросхеме MAX7219 для использования совместно с библиотеками HAL, LL и SPL.

NONO

Для упрощения создания проектов с индикацией мною была написанная библиотека предназначена для работы с 8-разрядными индикаторами с микросхемой-драйвером MAX7219. Драйвер написан на СИ с применением библиотеки CMSIS, поэтому драйвер можно использовать совместно с любой библиотекой как с HAL, так и с LL, SPL в микроконтроллерах серии STM32F101-107.

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

NO

Схема подключения, выводы подключения к микроконтроллеру менять нельзя.

NO

Скачать драйвер можно здесь, также тут находится весь необходимый материал, включая демо-программу для STM32CubeIDE.

NO

Описание функций драйвера.

Инициализация устройства выполняется функцией, которая настраивает выводы( PA7, PA5) SPI1 и вывод PA6 для захвата данных. MAX7219_Initialization( uint16_t div_clk); Функция принимает значение предделителя для тактирования SPI1. div_clk - Div_2, Div_4, Div_8, Div_16, Div_32, Div_64, Div_128, Div_256. MAX7219_Brightness( uint8_t bright); Функция устанавливает яркость экрана. bright - от 0 до 15. MAX7219_Display_Symbol( uint16_t position, uint8_t symbol); Функция выводит на экран в нужной позиции символ . position - от 1 до 8. symbol : 0-0, 1-1, 2-2, 3-3, 4-4, 5-5, 6-6, 7-7, 8-8, 9-9, 10-., 11-space, 12--, 13-A, 14-C, 15-E, 16-F, 17-G, 18-H, 19-I, 20-L, 21-P, 22-S, 23-T, 24-U, 25-b, 26-c, 27-d, 28-h, 29-i, 30-l, 31-n, 32-o, 33-r, 34-t, 35-u, 36-значок градус. MAX7219_Сlear_Symbol( uint16_t position); Функция очищает символ в нужной позиции position - от 1 до 8. MAX7219_Сlear( void); Функция очищает экран. void MAX7219_8Number_Min_Dot_Pos_Siz( uint32_t number, uint8_t minus, uint8_t dot, uint8_t position, uint8_t size); Функция выводит на экран тридцати битовое число со знаком или без, также устанавливает точку в нужной позиции. number - выводимое число minus - on отобразить, off не отображать dot - точка в нужной позиции off точка не отображается, если от 1 до 8 то отобразится в нужной позиции position - сдвиг числа на нужную позицию от 1 до 8, если 0 то не сдвигается size - отображает количество цифр, от меньшего до большого значения. MAX7219_Watch_H_M_S( uint32_t time, uint8_t separator); Функция отображает время с разделителем. time - время( в секундах) от 0 до 86399 = ч * м * с seprator - разделитель если on то отображает его off нет.

Фрагмент кода из демо программы.

int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ MAX7219_Initialization( Div_4); MAX7219_Сlear(); MAX7219_Brightness( 5); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { //Мячики for( uint8_t q = 1; q < 9; q++){ MAX7219_Display_Symbol( q, 36); HAL_Delay(200); } for( uint8_t q = 8; q > 0; q--){ MAX7219_Display_Symbol( q, 32); HAL_Delay(200); } //Вывод на экран HELLO. for( int8_t i = -5; i < 9; i++){ MAX7219_Display_Symbol( i+5, 18); MAX7219_Display_Symbol( i+4, 15); MAX7219_Display_Symbol( i+3, 20); MAX7219_Display_Symbol( i+2, 20); MAX7219_Display_Symbol( i+1, 0); HAL_Delay(300); MAX7219_Сlear(); } //Часы. for( uint8_t i = 0; i < 8; i++){ MAX7219_Watch_H_M_S( 43200+i, (43200+i)&1); HAL_Delay(1000); } MAX7219_Сlear(); //Счётчики for( int32_t count = 20; count > 0; count--){ MAX7219_8Number_Min_Dot_Pos_Siz( count, off, 2, 2, 4); HAL_Delay(200); } MAX7219_Сlear(); for( int32_t count = 0; count > -20; count--){ MAX7219_8Number_Min_Dot_Pos_Siz( (count * -1), on, 2, 0, 4); HAL_Delay(200); } MAX7219_Сlear(); for( uint8_t q = 0; q < 8; q++){ MAX7219_Display_Symbol( 5, 15); MAX7219_Display_Symbol( 4, 33); MAX7219_Display_Symbol( 3, 33); HAL_Delay(400); MAX7219_Сlear(); HAL_Delay(400); } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
Если вам понадобятся дополнительные функции в драйвере или дополнительные символы, то пишите мне в комментариях в статье на Boosty, я дополню всем необходимым драйвер!


Комментариев нет  Только зарегистрированные пользователи могут оставлять комментарии!