Extras din proiect
Semaforizare intersectie:
Aceasta tema trateaza principial modul de gestionare al semafoarelor in cadrul unei intersectii cu 2 sensuri de circulatie, pe 2 benzi cu posibilitatea de a alege : sens -- stanga, respectiv sens -- inainte_dreapta.
Pentru a putea simula semaforizarea s-au comandat cu un microcontroler Atmel 89C51 24 leduri.
Microcontrolerul Atmel 89C51 este un microcontroler de tip CISC ce dispune atat de memorie interna cat si de memorie externa. Atat memoria interna cat si cea externa au spatii de adresa separate pentru memoria de program si memoria de date. Separarea logica a memorie de program fata de cea de date permite memorie de date sa fie sa fie accesata de 8 biti de adresa care pot fi mai rapid incarcati si manipulati de un 8–bit CPU.
Deoarece memoria de program interna este de tip EEPROM, circuitului ATMEL 89C51, i se poate inscrie programul in memorie, i se poate sterge electric memoria de program si se poate reinscrie ulterior, folosind doar un calculator personal, un programator simplu si un soft adecvat de programare.
A. Circuitul ATMEL 89C51 dispune si de 4 porturi bidirectionale, fiecare port (P0–P3) contine cate un latch: un driver de iesire si un buffer de intrare.
B. Toate microcontrolerele Atmel au un on-chip oscilator care este folosit drept generator de semnale de clock pentru CPU. Pentru a fi folosit se conecteaza intre pinii XTAL1 si XTAL2 si prin condensatoare la masa.
C. De asemenea dispune si de 2 registre pentru Timer/Counter care sunt selectate logic.
A: Pentru aceasta aplicatie s-au folosit porturile P0 si P1
Astfel:
- la Portul 0 se trimit biti de comanda pentru S1 (S3) stanga, inainte_dreapta
- la Portul 1 se trimit biti de comanda pentru S2 (S4) stanga, inainte_dreapta:
P0.0 – Rosu P1.0 – Rosu
P0.1 – Galben P1.1 – Galben
P0.2 – Verde P1.2 – Verde
P0.3 – Rosu P1.3 – Rosu
P0.4 – Galben P1.4 – Galben
P0.5 – Verde P1.5 – Verde
P0.6 – 0 P1.6 – 0
P0.7 – 0 P1.7 – 0
- S1 si S3 cat S2 si S4 functioneaza identic
B: Se alege durata de temporizare pentru regim de verde/rosu = 30 sec. Iardurata pentru galben =10 sec.
- s-a ales un oscilator de frecventa 1MHz pentru a temporiza starile de galben respectiv verde
- pentru temporizare s-a folosit Timer-ul 0
Ca timer registrul se va incrementa la fiecare ciclu masina, deci numara ciclii masina. Deoarece un ciclu masina reprezinta 12 perioade de oscilator, rata de numarare este 1/12 din frecventa de oscilatie.
- Calculul temporizarii este urmatorul:
f=1MHz -- frecventa de oscilatie.
C: Pentru a temporiza 30 sec si respectiv 10 sec :
Pentru ca aceste tacte sa poata fi “numarate” se observa ca pentru un timer pe 16 biti se poate numara pana la (ffffH).
Timer-ul numara prin incrementare (denumesc aceasta temporizare) de la 0000H la ffffH , dar pentru a numara doar 25000 registrul timer se va incarca cu 65536–25000=40536, respectiv cu 65536–8334=57202.
Registrul timer se seteaza astfel:
din reg TMOD se alege Timer0 in mod 1(16-bit Timer) IE.1=1
din reg IE se seteaza bitul EA (IE.7=1) pentru ca fiecare sursa de intrerupere sa fie activata individual prin setarea sau resetarea bitului specific si ET0 (IE.1=1) pentru activare intrerupere Timer0.
Se tine cont ca registrul Timer este de 16 biti iar acesta este impartit in 2 registre de 8 biti TH0, TL0. Incarcarea Timerului se realizeaza prin incarcarea acestor 2 registre.
Functioanare program:
1. Initial se observa ca sunt necesare 8 etape de schimbare a culorii semafoarului astfel:
S2 S1
stg. i_dr stg. i_dr
starea0: R R R V
S2 S1
stg. i_dr stg. i_dr
starea1: R R G G
S2 S1
stg. i_dr stg. i_dr
starea2: R R V R
S2 S1
stg. i_dr stg. i_dr
starea3: R G G R
S2 S1
stg. i_dr stg. i_dr
starea4: R V R R
Preview document
Conținut arhivă zip
- Semaforizare Intersectie.doc