Lumea electronicii - proiecte simple pe microcontrolerele avr

Programe simple pentru microcontrolere. Lumină de trafic

În prima parte a articolului am făcut un simulator pentru viitorul nostru proiect, acum vom compila firmware-ul. Și pentru aceasta vom folosi programul Flowcode AVR v4.3.6.61. De ce folosim o versiune depășită? Da, deoarece programul în sine costă bani, dar pe versiuni mai vechi este posibil să se găsească ușor și keygens.







Ei bine, în general, hai să mergem.

Scriem programul de control cu ​​ajutorul Flowcode AVR v4.3.6.61

Executați codul de bare AVR v4.3.6.61. Selectați "creați un nou diagram de flux", selectați tipul de microcontroler din meniul apărut, avem nevoie de "Attiny13" (fig.18,19,20). Apoi, apare o fereastră de program cu panouri. În meniul derulant "fișier" alegeți "salvați ca" și specificați calea spre dosarul pe care l-am creat în directorul rădăcină al unității "myproject", apelați fișierul numele său pe layout-ul tastaturii engleză "svetofor". Și suntem gata să scriem algoritmul programului.

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Descrierea codului fluxului

Prima bara de instrumente este bara de comenzi


Mai jos este a doua bara de instrumente.


Există o mulțime de dispozitive pe care se conectează la porturile microcontrolerului (Fig.22).

În general, mă angajez la articolul "help" în limba rusă cu privire la lucrul cu acest program, dacă asta ar trebui să te uiți acolo (deși traducerea este amuzantă, dar puteți înțelege).

În continuare, să definim algoritmul luminii de semafor și să îl descriem cu cuvintele:
1. Lumina roșie este aprinsă și aprinsă, de exemplu - 5 secunde (nu râdeți, încă nu avem o lumină de seară reală de la intersecție);
2. Lumina galbenă se aprinde timp de 2 secunde (roșu nu se stinge);
3. Roșu și galben se vor opri;
4. Se aprinde verde timp de 5 secunde;
5. Blițuri verde de 3 ori;
6. Verdele se transformă în verde;
7. Chihlimbarul devine galben timp de 2 secunde;
8. Galbenul va ieși;
9. Repetați pasul 1 (sau sfârșitul ciclului).

Acum acest algoritm trebuie programat în microcontrolerul nostru.

Vom configura ieșirile microcontrolerului, pentru aceasta selectăm "ieșiri" și "LED" pe a doua bară de instrumente, LED-ul nostru este adăugat la panou (fig.23, 24).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Faceți clic dreapta pe LED. selectați proprietățile ext, selectați culoarea, mărimea și nivelul activ (reamintește modelul nostru în proteus, LED-urile sunt conectate cu un catod comun, deci nivelul activ este selectat înalt) (fig.25-26). Acum, din nou, faceți clic dreapta pe el și selectați "conexiuni" (amintiți-vă modelul din Proteus, avem un port roșu - B0, galben - B1, verde - B2.) (Fig.27,28).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Astfel conectăm toate cele trei LED-uri (Fig.29).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Acum avem ceva de gestionat programatic.

Pe fundalul carouri vedem două elemente legate de algoritm, ele sunt întotdeauna prezente întotdeauna. Fără acestea, nu puteți face acest lucru "BEGIN" și "END", adică începutul și sfârșitul programului. Deoarece microcontrolerele AVR execută programul de la început până la sfârșit, atunci executând "corpul programului" se va ajunge la "END" și se va opri. Nu avem nevoie de acest lucru, lumina de trafic ar trebui să funcționeze tot timpul până când este deconectată.

Pentru a face acest lucru, vom stabili un ciclu infinit de execuție a viitorului nostru program. Pentru aceasta, în prima bara de instrumente, găsiți pictograma "Buclă", care înseamnă un ciclu, și trageți această pictogramă în poziție, între "BEGIN" și "END" (Figura 30).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Acum, în corpul acestui ciclu, vom implementa algoritmul nostru. Primul punct pe care îl avem este să activați pe roșu timp de 5 secunde. Strangeti prea tare pictograma „macro componentă“, ceea ce înseamnă componenta macro și componentă avem este de LED-ne roșu (de modul în care aceasta are un nume, el este un LED0, este posibil pentru a vedea dacă faceți clic și pentru a vizualiza panoul de proprietăți - „proprietatea“ (Fig. 31,32).

Lumea electronicii - proiecte simple pe microcontrolerele avr







Lumea electronicii - proiecte simple pe microcontrolerele avr

Apoi, făcând dublu clic pe pictograma "macro a componentei" selectați LED0 și ON, ceea ce înseamnă - pentru a activa LED-ul 0 (Fig.33).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Roșul ar trebui să fie aprins timp de 5 secunde, există o pictogramă "DELAY", ceea ce înseamnă o întârziere (pauză), trageți-o și în proprietățile sale indicăm unitatea de timp și numărul (5) (Fig.

Lumea electronicii - proiecte simple pe microcontrolerele avr

Punctul 2 avem galben pe 2 secunde, în timp ce roșu nu iese. Din nou: macro-ul componentei LED1 (este galben), selectați LED1, ON, apoi DELAY. setul 2 și unitățile de măsură - secunde (figura 36).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Următorul pas 3, roșu și galben vor ieși. Și punctul 4, se aprinde verde timp de 5 secunde. Dragging: macro-ul componentei. LED0, OFF (oprit roșu), macrocomandă componentă, LED1, OFF (oprit galben), din nou macrocomandă a componentei. LED2, ON (pornit verde). Apoi trageți DELAY, 5 sec. (Figura 37).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Punctul 5, avem un verde clipește de 3 ori, adică, apoi se oprește, apoi se aprinde, se oprește și apoi iese din nou. Aici vom gândi puțin, dacă este necesar să rescrieți aceleași acțiuni de 3 ori? Bineînțeles că nu. Utilizăm un ciclu, trageți-l și faceți clic de două ori. Bifați pe ciclul de redare (ceea ce înseamnă că numărul de cicluri), ne-a pus în valoare dreapta - 3 cicluri (Figura 38). Pentru claritate, faceți o pauză între oprirea și dezactivarea verde pe 0,5 secunde (sau 500 ms). Acum corpul strangeti prea tare de triplu ciclu component macro LED2 nostru, OFF, apoi DELAY, 500 ms, LED2, ON și DELAY, 500ms. (Figura 39).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Următorul pas 6, opriți cel verde. Punctul 7 porni galben timp de 2 secunde. Punctul 8 - opriți galbenul. (LED2, OFF, LED1, ON, DELAY, 2 sec., LED1, OFF). Cred că acest record va fi de înțeles pentru dvs., deoarece aceste acțiuni au fost efectuate în mod repetat (figura 40).

Ei bine, asta e tot. Am scris algoritmul programului de control al luminii semaforului. Să verificăm ce avem. Pentru a face acest lucru, selectați opțiunea "proiect" din meniul derulant "vizualizare", se va deschide fereastra opțiunilor proiectului. Setați frecvența de ceas a microcontrolerului 4800000 Hz. (acest lucru este necesar pentru calculul corect al pauzelor) și viteza de simulare, în acest caz "cât mai rapid posibil" (Fig.41,42).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Să începem acum să compilam proiectul. În meniul drop-down "chip", selectați "compilați la hex". Se afișează o fereastră de compilator și o indicație a funcționării acesteia (Fig.43).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Ar trebui să arate imaginea, dacă "Return code = 1", verificăm calea spre fișierul proiectului. Permiteți-mi să vă reamintesc că numele tuturor folderelor din calea din directorul rădăcină și fișierul ar trebui să conțină numai caractere latine. În caz contrar, compilatorul va produce o eroare (Fig.44).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Deschideți dosarul cu proiectul și consultați fișierul firmware-ului HEX (Fig.45,46).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Și aici este fișierul nostru C (Fig.47, 48).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Și acest algoritm al programului

Lumea electronicii - proiecte simple pe microcontrolerele avr

Lumea electronicii - proiecte simple pe microcontrolerele avr

Actualul firmware pe care l-am primit (codul).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Și programul pentru SI (este în arhivă de mai jos).

Acum, înapoi la proiectul nostru în Proteus professional. Trebuie să verificăm dacă codul pe care lucrăm funcționează în modelul dispozitivului pe care l-am creat sau nu. Pentru a face acest lucru, deschide fișierul nostru svetofor.DSN (acesta se află în dosarul nostru myproject), apoi faceți dublu clic pe microcontroler, se va deschide fereastra Properties (Fig.50), așa-numitul loc Fyuz, cum ar fi în figură (WDTON = 1; CLKDIV8 = 1; RSTDISBL = 1, CKSEL = 10, SUT = 10).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Alegeți calea către "Fișierul programului" făcând clic pe butonul cu dosarul (specificați calea spre fișierul nostru HEX) (Fig.51).

Lumea electronicii - proiecte simple pe microcontrolerele avr

Apăsați butonul triunghi în jos (redare) și bucurați-vă de funcționarea circuitului.

Lumea electronicii - proiecte simple pe microcontrolerele avr







Articole similare

Trimiteți-le prietenilor: