201 lines
11 KiB
C
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);
|
|
}
|
|
}
|