ESP32 Упатство 10/55 - Дигитален бројач користејќи Seven Segment Display 74HC595 - ESP32 IoT Learning kit
Во ова упатство, ќе создадеме дигитален бројач користејќи седумсегментен дисплеј управуван од ESP32 микроконтролерот. Бројачот ќе се зголемува од 0 до 9, а потоа ќе се намалува назад до 0, обезбедувајќи јасен визуелен приказ на процесот на броење. Исто така, ќе истражиме како да вклучиме поединечни сегменти и да прикажеме букви на седумсегментниот дисплеј.

Овој проект користи 74HC595 shift register за контрола на дисплејот, што ни овозможува ефикасно да управуваме со сегментите без да користиме премногу GPIO пинови на ESP32. Со испраќање на бинарни вредности до shift register-от, можеме да ги осветлиме соодветните сегменти за да претставиме броеви и букви. За подлабоко разбирање на процесот, можете да го погледнете видеото (во видеото на 03:15).
Објаснување на хардверот
Главните компоненти на овој проект вклучуваат ESP32 микроконтролер, 74HC595 shift register и седумсегментен дисплеј. ESP32 е моќен микроконтролер со вградени Wi-Fi и Bluetooth можности, што го прави погоден за IoT проекти. 74HC595 е shift register кој ни овозможува да контролираме повеќе излези користејќи само неколку влезни пинови. Тој работи така што зема сериски податоци и ги претвора во паралелен излез, што е совршено за управување со седумсегментен дисплеј.
Седумсегментниот дисплеј се состои од седум поединечни LED диоди распоредени во шема на осумка. Секој сегмент може да се вклучи или исклучи со испраќање на соодветната бинарна вредност до shift register-от. На пример, за да се прикаже бројот 0, сите сегменти освен средниот (G) треба да бидат осветлени.
Детали од техничката документација
| Производител | Texas Instruments |
|---|---|
| Број на дел | 74HC595 |
| Логички/IO напон | 2 V до 6 V |
| Напон на напојување | 2 V до 6 V |
| Излезна струја (по канал) | 6 mA |
| Врвна струја (по канал) | 35 mA |
| Насоки за PWM фреквенција | До 1 kHz |
| Прагови на влезна логика | 0.3 VCC до 0.7 VCC |
| Пад на напон / RDS(on) / заситување | 0.2 V макс |
| Термички граници | 125 °C |
| Пакет | DIP-16 |
| Белешки / варијанти | Достапен во различни пакети |
- Обезбедете соодветно напојување со напон (2 V до 6 V).
- Ограничете ја излезната струја за да спречите прегревање.
- Користете одделни отпорници за секој сегмент за оптимална осветленост.
- Бидете внимателни со жиците за да избегнете кратки споеви и неточни врски.
- Внимателно следете го распоредот на пиновите за да избегнете погрешна конфигурација.
Инструкции за поврзување

Започнете со поставување на вашата breadboard плоча. Поврзете ја земјата лента (сина линија) и лентата за напојување (црвена линија). Земјата треба да се поврзе со сината линија на едната страна од breadboard плочата, додека напојувањето треба да се поврзе со црвената линија на спротивната страна. Користете црна жица за да ја поврзете земјата на ESP32 со лентата за земја и црвена жица за да го поврзете 3.3V пинот на ESP32 со лентата за напојување.
Следно, вметнете го 74HC595 shift register-от во breadboard плочата, осигурувајќи се дека засекот е правилно ориентиран. Поврзете го пинот 11 (DS) со пинот 25 на ESP32, пинот 12 (SH_CP) со пинот 26, и пинот 14 (ST_CP) со пинот 27. Поврзете ја земјата (пин 8) на shift register-от со лентата за земја и пинот 10 (MR) со лентата за напојување за активирање.
За седумсегментниот дисплеј, поврзете ги пиновите што одговараат на сегментите (a-g) со излезните пинови на shift register-от. Користете отпорник (220 оми) во серија за секој сегмент за да ја ограничите струјата. Осигурете се дека имате правилни врски за заедничкиот пин, кој може да биде или заедничка анода или катода во зависност од типот на вашиот дисплеј.
Примери на код и објаснување
Во функцијата setup, започнуваме со дефинирање на пиновите поврзани со shift register-от како излези. Ова осигурува дека нашиот ESP32 може да ги контролира податоците што се испраќаат до дисплејот.
void setup ()
{
//постави ги пиновите како излези
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Овде, ги дефинираме STcp, SHcp и DS како пинови поврзани со ST_CP, SH_CP и DS на shift register-от, соодветно. Поставувањето на овие пинови како излези ни овозможува да го контролираме shift register-от.
Главната јамка на програмата брои од 0 до 9, испраќајќи ги соодветните вредности до дисплејот користејќи ја функцијата shiftOut.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //земја на ST_CP и држете го ниско се додека пренесувате
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //повлечете го ST_CPST_CP за да ги зачувате податоците
delay(1000);
}
Оваа јамка ја зголемува променливата num, испраќајќи ја соодветната вредност од datArray до екранот секоја секунда. Функцијата shiftOut ги пренесува податоците до регистарот за поместување, кој потоа ги осветлува соодветните сегменти.
Демонстрација / Што да очекувате
Откако жиците ќе бидат поврзани и кодот ќе биде поставен, треба да видите како седумсегментниот екран брои од 0 до 9, со кратка пауза пред да брои назад до 0. Секој број ќе биде прикажан една секунда. Ако сакате да го забрзате броењето, можете да ја прилагодите паузата во јамката (во видеото на 15:30).
Кога рачно ги управувате сегментите, запомнете да испраќате точни бинарни вредности за да прикажете букви или специфични сегменти. Ако екранот изгледа затемнет, размислете за додавање поединечни отпорници за секој сегмент за да обезбедите постојана осветленост низ екранот.
Временски ознаки на видеото
- 00:00 Почеток
- 1:53 Вовед во седум сегменти
- 4:38 Објаснување на жиците
- 13:15 Arduino код-1
- 17:01 Избор на COM порт и ESP32 плоча
- 18:43 Демонстрација-1
- 20:13 Прикажување само на една цифра
- 21:38 Бројач нагоре и надолу
- 23:07 Вклучување/исклучување на секој сегмент
- 24:53 Прикажување на A, B, C, D, E и F
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}
Common Course Links
Common Course Files
Ресурси и референци
-
ДокументацијаESP32 Tutorial 10/55 - SunFounder page for Seven Segmentdocs.sunfounder.com
Датотеки📁
Нема достапни датотеки.