Files
SingleDigitDisplay/Core/Src/DS_SingleDigitDisplay.c
2024-04-17 23:46:02 +03:00

201 lines
11 KiB
C

#include "DS_SingleDigitDisplay.h"
void DS_SingleDisplayInit(DS_SingleDigitDisplay *Display, GPIO_TypeDef *Port_A, uint16_t Pin_A, GPIO_TypeDef *Port_B, uint16_t Pin_B, GPIO_TypeDef *Port_C, uint16_t Pin_C, GPIO_TypeDef *Port_D, uint16_t Pin_D, GPIO_TypeDef *Port_E, uint16_t Pin_E, GPIO_TypeDef *Port_F, uint16_t Pin_F, GPIO_TypeDef *Port_G, uint16_t Pin_G, GPIO_TypeDef *Port_DP, uint16_t Pin_DP)
{
Display->Port_A = Port_A;
Display->Port_B = Port_B;
Display->Port_C = Port_C;
Display->Port_D = Port_D;
Display->Port_E = Port_E;
Display->Port_F = Port_F;
Display->Port_G = Port_G;
Display->Port_DP = Port_DP;
Display->Pin_A = Pin_A;
Display->Pin_B = Pin_B;
Display->Pin_C = Pin_C;
Display->Pin_D = Pin_D;
Display->Pin_E = Pin_E;
Display->Pin_F = Pin_F;
Display->Pin_G = Pin_G;
Display->Pin_DP = Pin_DP;
DS_SingleDisplayPoint(Display, false);
}
void DS_SingleDisplayPrint(DS_SingleDigitDisplay *Display, uint8_t Digit)
{
switch (Digit)
{
case 0:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_SET);
break;
case 1:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_SET);
break;
case 2:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 3:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 4:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 5:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 6:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 7:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_SET);
break;
case 8:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 9:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 10:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 11:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 12:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_SET);
break;
case 13:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 14:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
case 15:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_RESET);
break;
default:
HAL_GPIO_WritePin(Display->Port_A, Display->Pin_A, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_B, Display->Pin_B, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_C, Display->Pin_C, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_D, Display->Pin_D, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_E, Display->Pin_E, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_F, Display->Pin_F, GPIO_PIN_SET);
HAL_GPIO_WritePin(Display->Port_G, Display->Pin_G, GPIO_PIN_SET);
break;
}
DS_SingleDisplayPoint(Display, Display->DotEnable);
}
void DS_SingleDisplayPoint(DS_SingleDigitDisplay *Display, bool Enable)
{
Display->DotEnable = Enable;
if (Enable)
{
HAL_GPIO_WritePin(Display->Port_DP, Display->Pin_DP, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(Display->Port_DP, Display->Pin_DP, GPIO_PIN_SET);
}
}