Obsługa przetwornika ADC w mikrokontrolerach STM32
W prezentowanym projekcie pokazano wykorzystanie 12-bitowego przetwornika analogowo-cyfrowego (ADC) wbudowanego w mikrokontroler STM32F103. W projekcie jest mierzone napięcie na wyprowadzeniu PC4 mikrokontrolera STM32 zamontowanego w zestawie ZL27ARM. Napięcie to można zmieniać za pomocy zamontowanego potencjometru. Zmierzone napięcie jest prezentowane na wyświetlaczu LCD dołączonego modułu KAmodLCD1 jako odczytana wartość rejestru przetwornika ADC mikrokontrolera, obliczona wartość napięcia oraz bargraf. Dodatkowo wartość 8 najbardziej znaczących bitów jest przedstawiana na diodach LED zestawu ZL27ARM.
|
Projekty referencyjne dla ZL27ARM Portal www.stm32.eu przygotował projekty referencyjne dla mikrokontrolerów z rodziny STM32, które zostały opublikowane tu. Są one dostępne bezpłatnie, konieczne jest tylko zarejestrowanie się jako użytkownik portalu. |
Na rysunku 1 przedstawiono sposób dołączenia modułu wyświetlacza do zestawu ZL27ARM. Połączenie wygodnie jest wykonać za pomocą kolorowych przewodów CAB_A pokazanych na rysunku 2. Na rysunku 3 pokazano wyświetlacz LCD podczas pracy programu.
Rys. 1. Sposób dołączenia wyświetlacza do mikrokontrolera STM32
Rys. 2. Kolorowe przewody CAB_A ułatwiające wykonanie połączeń
Rys. 3. Widok wyświetlacza podczas pracy programu
Rzadko jest wymagane, aby pomiar napięcia odbywał się w cyklu ciągłym. Przedstawiony program wykonuje pomiar w momencie ustawienia odpowiedniego bitu w czasie obsługi przerwania SysTick. Na listingu 1 przedstawiono funkcję main programu.
List. 1
int main(void)
{
Configuration_RCC();
Configuration_GPIO();
Configuration_Interrupts();
Configuration_ADC();
//inicjalizacja i obsługa wyświetlacza
PCD8544_INIT();
PCD8544_LCDClear();
PCD8544_LCDWriteText("Voltage", 21, 0);
PCD8544_LCDWrite();
while(1)
{
//
ADC1Reg = ADC_GetConversionValue(ADC1) & 0xFF0;
ADC1Val = (ADC1Reg * 3.3 / 4096);
//przekształcenie wartosci ADC1Val do postaci umożliwiającej prezentację na wywietlaczu
temp[0] = (uint8_t)(ADC1Val / 1.0);
temp[1] = (uint8_t)((ADC1Val - temp[0]) / 0.1) ;
temp[2] = (uint8_t)((ADC1Val - temp[0] - (temp[1] * 0.1))/ 0.01);
//prezentacja napięcia na pinie PC4 na wywietlaczu
PCD8544_LCDWriteSignDouble(temp[0] + 0x30, 12, 2);
PCD8544_LCDWriteSignDouble('.', 24, 2);
PCD8544_LCDWriteSignDouble(temp[1] + 0x30, 36, 2);
PCD8544_LCDWriteSignDouble(temp[2] + 0x30, 48, 2);
PCD8544_LCDWriteSignDouble('V', 60, 2);
//wyświetlenie wartości heksadecymalnej zmiennej ADC1Val
PCD8544_LCDWriteSign('0', 27, 1);
PCD8544_LCDWriteSign('x', 33, 1);
PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x1000 / 0x100), 39, 1);
PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x100 / 0x10), 45, 1);
PCD8544_LCDWriteSign(ASCII_HEX(ADC1Reg % 0x10 / 0x1), 51, 1);
//wyświetlenie bargrafu
PCD8544_LCDBargraph(ADC1Reg & 0xFF0,0xFF0,5);
//wyslanie danych na wyświetlacz
PCD8544_LCDWrite();
//wyzerowanie 8 najstarszych bitów GPIOB
GPIOB->BSRR = 0xFF000000;
//ustawienie 8 najstarszych bitów GPIOB
GPIOB->BSRR = (ADC1Reg << 4);
}
}






Hybrydowe architektury kosmiczne – projektowane z myślą o wydajności i pewności działania
Inżynierowie jutra nie projektują od zera. Jak narzędzia cyfrowe zmieniają pracę nad nowymi technologiami?
Automatyzacja magazynów w Polsce – Exotec i Skypod 


![https://www.youtube.com/watch?v=xeqdqGuy-Aw Michał Mitas, kierownik laboratorium Badań Urządzeń Radiowych w katowickim instytucie Łukasiewicz - AI, opowiada o badaniach urządzeń z interfejsem komunikacji bezprzewodowej, jak Wi-Fi, Bluetooth, LTE czy 5G, przeprowadzanych w komorze bezodbiciowej. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/10/00.png)

![https://www.youtube.com/watch?v=QSnLO-KmBMY O wybranych projektach realizowanych w Laboratorium Zakładu Układów Mikrofalowych – ISE PW opowiadają: mgr inż. Michał Kalisiak, dr hab. inż. Arkadiusz Lewandowski, mgr inż. Andžej Šerlat oraz dr hab. inż. Krzysztof Czuba. Zapraszamy na firm [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/09/WEiTI-PW-czolowka.png)

