Digilent Pmod i STM32 (cz. 6) – PmodACL2, PmodDPOT i PmodSSD
PmodSSD
Moduł PmodSSD jest wyposażony w dwucyfrowy wyświetlacz siedmiosegmentowy. Obie cyfry wyświetlacza mają wspólną katodę, a wybór aktywnej odbywa się za pośrednictwem jednego z sygnałów. PmodSSD posiada dwa sześciopinowe złącza GPIO typu 1. Z tego względu w przykładzie moduł podłączono do złącza ARDUINO CONNECTOR zgodnie z tabelą 3.
Tabela 3. Sygnały modułu PmodSSD podłączone do złącza ARDUINO CONNECTOR zestawu KAmeleon
| Sygnał | Numer pinu PmodSSD | Numer pinu KAmeleon ARDUINO CONNECTOR | Pin mikrokontrolera |
| AA | 1 (J1) | D6 | PD10 |
| AB | 2 (J1) | D7 | PB11 |
| AC | 3 (J1) | D8 | PD11 |
| AD | 4 (J1) | D9 | PB13 |
| GND | 5 (J1) | GND | – |
| VCC | 6 (J1) | +3,3 | – |
| AE | 1 (J2) | D10 | PB12 |
| AF | 2 (J2) | D11 | PB15 |
| AG | 3 (J2) | D12 | PB14 |
| C | 4 (J2) | D13 | PB10 |
| GND | 5 (J2) | – | – |
| VCC | 6 (J2) | – | – |
Kod przykładu
Za obsługę wyświetlacza odpowiedzialny jest kod znajdujący się w plikach inc/PmodSSD.h i src/PmodSSD.c. Na listingu 9. znajdują się definicje pinów i portów GPIO oraz konfiguracja segmentów dla cyfr od 0 do 9. Cyfry są zakodowane jako maski bitowe, w których jedynka oznacza, że segment ma być zapalony. Segment A w każdej masce zakodowano na bicie zerowym, a segment G na szóstym.
Listing 9. Definicje pinów i portów GPIO oraz masek bitowych dla cyfr 0 – 9
uint16_t segmentPins[SEGMENTS_COUNT] = {GPIO_PIN_10, GPIO_PIN_11, GPIO_PIN_11, GPIO_PIN_13,
GPIO_PIN_12, GPIO_PIN_15, GPIO_PIN_14};
GPIO_TypeDef* segmentPorts[SEGMENTS_COUNT] = {GPIOD, GPIOB, GPIOD, GPIOB, GPIOB, GPIOB, GPIOB};
uint8_t segmentsConfig[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
Za konfigurację wyprowadzeń mikrokontrolera podłączonych do wyświetlacza odpowiedzialna jest funkcja PmodSSD_Config włączająca niezbędne sygnały zegarowe i ustawiająca piny jako wyjścia w stanie niskim. Oprócz pinów obecnych w powyższych definicjach, funkcja konfiguruje także pin PB10, który służy do wybierania aktywnej cyfry wyświetlacza. Funkcję PmodSSD_Config przedstawiono na listingu 10.
Listing 10. Konfiguracja wyprowadzeń podłączonych do modułu PmodSSD
void PmodSSD_Config(void)
{
// Enable clock for all required GPIO ports.
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
// Initialize GPIOs for all segments
for(int i=0; i<SEGMENTS_COUNT; i++) {
GPIO_InitStruct.Pin = segmentPins[i];
HAL_GPIO_Init(segmentPorts[i], &GPIO_InitStruct);
HAL_GPIO_WritePin(segmentPorts[i], segmentPins[i], GPIO_PIN_RESET);
}
// Initialize display selection pin
GPIO_InitStruct.Pin = GPIO_PIN_10;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
}
Druga z funkcji znajdujących się w pliku src/PmodSSD.c – PmodSSD_DisplayNumber, służy do wyświetlania wybranej cyfry. Została ona przedstawiona na listingu 11. Funkcja ustawia stan linii C, wybierając w ten sposób jedną z cyfr. Następnie ustawia pozostałe linie GPIO zgodnie z wybraną maską bitową. Aktywna cyfra wybierana jest za pomocą argumentu typu DisplayId, zdefiniowanego w pliku inc/PmodSSD.h.
Listing 11. Wyświetlanie wybranej cyfry na wyświetlaczu
void PmodSSD_DisplayNumber(DisplayId id, uint8_t number)
{
if (number > 9)
return;
// Select the display using the C pin.
if(id == DisplayId_0)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
// Set or reset each segment bit according to the segment configuration array.
for(int i=0; i<SEGMENTS_COUNT; i++) {
if((segmentsConfig[number] >> i) & 0x01)
HAL_GPIO_WritePin(segmentPorts[i], segmentPins[i], GPIO_PIN_SET);
else
HAL_GPIO_WritePin(segmentPorts[i], segmentPins[i], GPIO_PIN_RESET);
}
}
Pętla główna programu w funkcji main wyświetla naprzemiennie cyfry na wyświetlaczu w kolejności rosnącej po prawej stronie i malejącej po lewej stronie wyświetlacza. Podłączony moduł z wyświetloną jedną z cyfr przedstawiono na fotografii 7.
Fotografia 7. Moduł PmodSSD podłączony do złącza ARDUINO CONNECTOR zestawu KAmeleon


Sześciu na dziesięciu liderów IT stawia na roboty. Tylko czterech jest na to gotowych
Precyzyjny pomiar dużych prądów
Kiedy obudowa staje się częścią projektu elektroniki? 

![https://www.youtube.com/watch?v=XkeyLmtLfxo O konkursie organizowanym przez firmę TRUMPF Huettinger i polskie uczelnie techniczne opowiada Alicja Peresada i prof. Jacek Rąbkowski oraz kilkoro nagrodzonych dyplomantów: mgr inż. Jakub Dobosz, inż. Maja Zielińska, dr inż. Jakub Kołodziej, dr inż Weronika Hryniewska-Guzik i dr inż. Grzegorz Bartyzel. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/07/TRUMPF-czolowka.png)



