Ekranas yra labai svarbi bet kurios įterptosios sistemos programos dalis, nes jis padeda vartotojams žinoti sistemos būseną ir rodo sistemos išvestį ar bet kokį įspėjamąjį pranešimą. Elektronikoje naudojami daugybė ekranų, tokių kaip 7 segmentų ekranas, LCD ekranas, TFT jutiklinio ekrano ekranas, LED ekranas ir kt.
Savo ankstesnėje mokymo programoje jau susipynėme 16x2 skystųjų kristalų ekraną su ARM7-LPC2148. Šiandien šioje pamokoje mes sujungsime 7 segmentų ekraną su ARM7-LPC2148. Prieš pradėdami detaliau, pamatysime, kaip valdyti 7 segmentų modulį, kad būtų rodomas bet koks simbolių skaičius.
7 segmentų ekranas
7 segmentų ekranai yra vieni paprasčiausių rodymo elementų, rodančių skaičius ir simbolius. Paprastai jis naudojamas skaičiams rodyti, jo apšvietimas ryškesnis ir konstrukcija paprastesnė nei taškinės matricos. Dėl ryškesnio apšvietimo į išvestį galima žiūrėti didesniu atstumu nei LCD. Kaip parodyta aukščiau pateiktame 7 segmentų ekrano vaizde, jį sudaro 8 šviesos diodai, kiekvienas šviesos diodas naudojamas vienam įrenginio segmentui apšviesti, o 8-asis LED naudojamas DOT apšvietimui 7 segmentų ekrane. „8thLED“ naudojamas, kai naudojami du ar daugiau 7 segmentų modulių, pavyzdžiui, norint rodyti (0,1). Vienas modulis naudojamas vieno skaitmens ar simbolio atvaizdavimui. Norėdami parodyti daugiau nei vieną skaitmenį ar simbolį, naudojami keli 7 segmentai.
7 segmentų ekrano kaiščiai
Yra 10 smeigtukų, kuriuose 8 smeigtukai naudojami a, b, c, d, e, f, g ir h / dp žymėti. Du viduriniai kaiščiai yra bendras visų LED šviesos diodų anodas / katodas. Šie įprasti anodai / katodai yra viduje sutrumpinti, todėl turime prijungti tik vieną COM kaištį
Priklausomai nuo ryšio, klasifikuojame 7 segmentus į du tipus:
Bendras katodas
Tuo tarpu visi 8 šviesos diodų neigiami gnybtai (katodas) yra sujungti (žr. Toliau pateiktą schemą), vadinamus COM. Ir visi teigiami gnybtai paliekami vieni arba prijungti prie mikrovaldiklio kaiščių. Jei mes naudojame mikrovaldiklį, mes nustatome logiką HIGH, kad apšviestume tam tikrą elementą, ir nustatome LOW, kad išjungtų LED.
Paprastasis anodas
Tuo tarpu visi 8 šviesos diodų teigiami gnybtai (anodai) yra sujungti, vadinami COM. Ir visi neigiami terminiai elementai paliekami vieni arba prijungti prie mikrovaldiklio kaiščių. Jei mes naudojame mikrovaldiklį, mes nustatome logiką LOW tam, kad apšviestumėte tam tikrą, o logiką - High, kad išjungtumėte LED.
Taigi, atsižvelgiant į smeigtuko vertę, tam tikrą segmentą arba 7 segmentų eilutę galima įjungti arba išjungti, kad būtų rodomas norimas skaičius ar abėcėlė. Pavyzdžiui, norėdami parodyti 0 skaitmenų, turime nustatyti kaiščius ABCDEF kaip HIGH ir tik G kaip LOW. Kadangi ABCDEF šviesos diodai įsijungia ir G yra išjungtas, tai sudaro 0 skaitmenų 7 segmentų modulyje. (Tai skirta bendram katodui, paprastam - priešingam).
Žemiau esančioje lentelėje pateikiamos HEX vertės ir atitinkamas skaitmuo pagal LPC2148 kaiščius, kad būtų galima konfigūruoti katodą.
Skaitmenų |
HEX LPC2148 vertės |
A |
B |
C |
D |
E |
F |
G |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
SVARBU: Aukščiau pateiktoje lentelėje pateikiau HEX reikšmes pagal kaiščius, kuriuos naudojau LPC2148, patikrinkite toliau pateiktą grandinės schemą. Galite naudoti visus norimus kaiščius, tačiau pagal tai galite pakeisti šešiakampes reikšmes.
Norėdami sužinoti daugiau apie 7 segmentų ekraną, eikite per nuorodą. Taip pat patikrinkite 7 segmentų ekranų sąsajas su kitais mikrovaldikliais:
- 7 segmentų ekranų sąveika su „Raspberry Pi“
- 7 segmentų ekrano sąsaja su PIC mikrovaldikliu
- 7 segmentų ekrano sąsaja su „Arduino“
- 7 segmentų ekrano sąsaja su 8051 mikrovaldikliu
- 0-99 Skaitiklis naudojant AVR mikrovaldiklį
Reikalingos medžiagos
Aparatinė įranga
- ARM7-LPC2148
- Septynių segmentų ekrano modulis (vieno skaitmens)
- Bandomoji Lenta
- Laidų sujungimas
Programinė įranga
- „Keil uVision“
- „Flash Magic“
Grandinės schema
Norint susieti 7 segmentus su LPC2148, nereikia jokių išorinių komponentų, kaip parodyta toliau pateiktoje grandinės schemoje:
Žemiau esančioje lentelėje parodytos grandinės jungtys tarp 7 segmentų modulio ir LPC2148
Septyni segmentų modulių kaiščiai |
LPC2148 kaiščiai |
A |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Dažnas |
BND |
Programavimas ARM7 LPC2148
Mes išmokome programuoti ARM7-LPC2148 naudojant „Keil“ mūsų ankstesnėje mokymo programoje. Čia mes naudojame tą patį „Keil uVision 5“, norėdami parašyti kodą ir sukurti hex failą, tada įkelti hex failą į LPC2148 naudodami „flash magic“ įrankį. Mes naudojame USB kabelį, kad galėtume įjungti ir įkelti kodą į LPC2148
Pilnas kodas su vaizdo paaiškinimu pateikiamas šios pamokos pabaigoje. Čia mes paaiškiname keletą svarbių kodo dalių.
Pirmiausia turime įtraukti antraštės failą, skirtą LPC214x serijos mikrovaldikliui
# įtraukti
Tada nustatykite kaiščius kaip išvestį
IO0DIR = IO0DIR-0xffffffff
Tai nustato kaiščius P0.0 į P0.31 kaip išvestį, bet mes naudosime tik kaiščius (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 ir P0.8.
Tada nustatykite tam tikrus kaiščius ties LOGIC HIGH arba LOW pagal rodomą skaitmeninį skaitmenį. Čia mes rodysime vertes nuo (0 iki 9). Mes naudosime masyvą, kurį sudaro HEX reikšmės nuo 0 iki 9 reikšmių.
nepasirašytas int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Vertės bus rodomos nuolat, kai kodas įvedamas, kol ciklas
o (1) { už (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // nustato atitinkamus kaiščius HIGH delay (9000); // Skambučių uždelsimo funkcija IO0CLR = IO0CLR-a; // Nustato atitinkamus kaiščius LOW } }
Čia IOSET ir IOCLR naudojami nustatyti smeigtukus atitinkamai HIGH ir LOW. Kadangi mes naudojome PORT0 kaiščius, turime IO0SET ir IO0CLR .
Jei kilpa naudojama didinti i kiekvienoje iteracijoje, ir kiekvieną kartą, kai aš didinu, 7 segmentai taip pat didina jame rodomą skaitmenį.
uždelsimo funkcija naudojama uždelsimo laikui tarp SET ir CLR generuoti
void delay (int k) // Vėlavimo funkcija { int i, j; už (i = 0; i
Pilnas kodas ir veikiantis vaizdo įrašo aprašymas pateikiamas toliau. Čia taip pat patikrinkite visus su 7 segmentais susijusius ekranus susijusius projektus.