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