
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:09

Dobrodošli! Izdelava števcev sekund: z uporabo CCStudio 8 in MSP430F5529 za projekt.
C jezik za kodiranje mikro krmilnika. Uporaba načinov nizke porabe energije, časovnikov in prekinitev. Izhod je prikazan prek 7 segmentov.
1. korak: Vpogled

Začnimo!
Inicializirajte časovnik nadzornika v stanje OFF (IZKLOPLJENO) z uporabo zahtevanega gesla za časovnika nadzornika (Pomaga pri preverjanju neskončnih zank, pri čemer je procesor varen).
#vključi
/** * main.c */
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; // ustavitev časovnika nadzornika
vrnitev 0;
}
2. korak: Inicializacija vrat
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 nam pove, da je celoten PORT-3 inicializiran, da sprejme vnose.
P3DIR | = 0xFF nam pove, da je celoten PORT-3 inicializiran, da daje izhode.
P3DIR | = 0x01 je samo pin P3.0 inicializiran za izhod v PORT-3. To sledi preslikavi šestnajstiških vrat.
P4REN | = 0xFF, to pomeni, da so na zatičih PORT-4 omogočeni upori navzgor/navzdol.
Če jih želite izbrati med vlečenjem navzgor ali navzdol, uporabite navodilo P $ OUT | = 0xFF.
Če se uporablja 0xFF, se konfigurirajo kot upori navzgor, če pa 0x00, se potegnejo navzdol.
Korak: Ultra nizka poraba energije
MSP430F5529 nam omogoča zmanjšanje izgube energije iz procesorja. To je uporabno v samostojnih aplikacijah.
To zahteva deklaracijo vseh pin ali portov za izhod.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4. korak: TIMER
Uporaba časovnika za zakasnitev ene sekunde. Ta uporablja SMCLK 1MHz, časovnik deluje tudi v načinu nizke porabe energije (v naslednjem koraku, ko se štetje prekine iz LPM). Ta postopek prihrani moč in obremenitev procesorja
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Vrednosti so 999, saj je za vrnitev na nič v registru časovnika potrebno še eno štetje.
5. korak: Način nizke porabe energije
_BIS_SR (LPM0_bit+GIE);
S tem je omogočeno Splošno omogočanje prekinitve (GIE), CPU pa nastavljen na LPM0, kjer je MCLK, ki podpira procesor, izklopljen, SMCLK in ACLK pa delujeta, da ohrani časovnik. tako lahko vidimo, da je CPU izklopljen, kar je posledica varčevanja z energijo.
6. korak: ISR-Timer

#pragma vektor = TIMER0_A0_VECTOR
_ prekini void Timer_A (void)
{
z ++;
če (z> zamuda)
{
P3OUT = koda [x];
P6OUT = šifra1 [y];
x ++;
če (x == 10)
{
x = 0;
y ++;
}
če (y == 6)
y = 0;
z = 0;
}
}
vektor pragme je za predstavitev ISR v C embd.
code [x] in code1 [y] sta matriki, ki vsebujeta izhodne vrednosti za dva sedem segmentov za prikaz 60 -sekundnega števca.
7. korak: Prekinitev strojne opreme
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Tu je P2.1 razglašen za strojno prekinitev. Če pritisnete gumb, se števec ponastavi na vrednost.
preostali program je zapisan znotraj ISR tega prekinitve.
8. korak: ISR- ponastavitev/ potisni gumb
#pragma vektor = PORT2_VECTOR
_prekini void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = koda [x];
P6OUT = šifra1 [y];
v ++;
za (i = 0; i
{
P1OUT | = BIT0; //P1.0 = preklop
_odložni_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = preklop
_odstavljivi_cikli (1048576);
}
Ta ISR ponastavi števec in šteje, kolikokrat je bil pritisnjen preostanek.
(Tukaj je prikaz prikazan preko LED preklopa, lahko uporabite tudi drugo matriko in časovnik, da prikažete te vrednosti kot izhod v 7 segmentu).
9. korak: KODA

#vključi
#define delay 1000
koda char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
hlapni nepodpisani int x = 0, y = 0, z = 0;
hlapni nepodpisani int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // ustavitev časovnika nadzornika
P7DIR | = 0xFF;
P7OUT | = 0x00;
P8DIR | = 0xFF;
P8OUT | = 0x00;
P4DIR | = 0xFF;
P4OUT | = 0x00;
P5DIR | = 0xFF;
P5OUT | = 0x00;
P1DIR = 0xFF;
P3DIR = 0xFF;
P6DIR = 0xFF;
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR (LPM0_bit+GIE);
}
// Časovna rutina prekinitve časa A0
#pragma vektor = TIMER0_A0_VECTOR
_ prekini void Timer_A (void)
{
z ++;
če (z> zamuda)
{
P3OUT = koda [x];
P6OUT = šifra1 [y];
x ++;
če (x == 10)
{
x = 0;
y ++;
}
če (y == 6)
y = 0;
z = 0;
}
}
// Storitvena rutina strojne prekinitve
#pragma vektor = PORT2_VECTOR
_prekini void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = koda [x];
P6OUT = šifra1 [y];
v ++;
za (i = 0; i
{P1OUT | = BIT0; // P1.0 = preklop
_odstavljivi_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = preklop
_odstavljivi_cikli (1048576);
}
}
10. korak: Referenčna koda

Skladišče GitHub
Priporočena:
Preprost števec frekvenc z uporabo Arduina: 6 korakov

Enostaven števec frekvenc z uporabo Arduina: V tej vadnici se bomo naučili, kako narediti preprost števec frekvenc z uporabo Arduina. Oglejte si video
Arduino števec z LED zaslonom TM1637: 7 korakov

Arduino števec z LED zaslonom TM1637: V tej vadnici se bomo naučili, kako narediti preprost števec številk z LED zaslonom TM1637 in Visuinom
Arduino števec z LED zaslonom TM1637 in senzorjem za preprečevanje ovir: 7 korakov

Arduino števec z uporabo TM1637 LED zaslona in senzorja za preprečevanje ovir: V tej vadnici se bomo naučili, kako narediti preprost števec številk z LED zaslonom TM1637 ter senzorjem za izogibanje oviram in Visuinom
Števec frekvenc visoke ločljivosti: 5 korakov (s slikami)

Frekvenčni števec visoke ločljivosti: Ta navodila kažejo merilnik vzajemnih frekvenc, ki lahko hitro in z razumno natančnostjo meri frekvence. Narejen je s standardnimi komponentami in ga je mogoče izdelati čez vikend (trajalo je malo dlje :-)) EDIT: Koda je zdaj na voljo
Števec korakov - mikro: Bit: 12 korakov (s slikami)

Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu