Efect de lumină

by donpedro

Microcontrolerul 8051, primul model realizat de firma Intel, este folosit în multe aplicaţii dezvoltate în sisteme simple cum ar fi: controlul vitezei motoarelor de c.c., timere, aplicaţii de control a proceselor, aplicaţii de control a temperaturii, etc.

Figura 1 Schema electricã

Acest articol descrie una din aplicaţiile simple care utilizează microcontrolerul 8051. Conform schemei de principiu prezentată în figura 1, microcontrolerul comandă secvenţa de comutare a 8 triacuri (TR1 … TR8) prin intermediul tranzistoarelor T1 … T8.
Fiecare triac poate comanda o serie de becuri – tensiunea totală trebuie să fie de maximum 220Vca, iar curentul care parcurge triacurile BT136 nu trebuie să depăşească 4A.
Componenta principală a circuitului prezentat în figura 1 este microcontrolerul 8051. Cele mai importante caracteristici ale unui microcontroler 8051 sunt:
• unitatea centrală de procesare pe 8 biţi cu registrul acumulator A şi registrul B;
• numărătorul de adrese (programe counter – PC) este un registru pe 16 biţi;
• program status word (PSW) pe 8 biţi – cuvântul de stare al programului;
• indicatorul de stivă (stack pointer – SP) de 8 biţi;
• memorie RAM de 128 bytes;
• 4 kb memorie ROM pentru 8051 şi 4kb memorie EPROM pentru 8751;
• 5 surse de întreruperi, 2 externe şi 3 interne;
• 4 porturi intrare / ieşire programabile.
Una din cele mai importante părţi ale CPU este oscilatorul. Acesta este integrat în chip, numai cristalul de cuarţ urmează să fie conectat extern între pinii 18 şi 19.
Pentru o funcţionare normală a controlerului, domeniul de frecvenţă al cristalului de cuarţ trebuie să fie cuprins între 1MHz şi 16Mhz. Dacă această frecvenţă scade sub 1Mhz există posibilitatea pierderii datelor din memoria RAM.
Pinul 31 este pinul de acces extern al controlerului. Dacă acest pin este legat la masă, 8051 apelează programul din memoria externă ROM/EPROM conectată, iar dacă este conectat la tensiune continuă atunci programul rulează din memoria internă ROM, care are 4k spaţiu de adrese (000H – 0FFFH).
Microcontrolerul 8031 nu are memorie internă ROM deci pentru o funcţionare corectă pinul 31 trebuie legat la masă.
Dacă se foloseşte memoria ROM internă, însă programul necesită un spaţiu de adrese mai mare de 4K, atunci după ce se execută instrucţiunea de la ultima adresă – 0FFFH – programul este executat din memoria externă ROM/EPROM conectată.
Memoria externă poate fi extinsă până la 64K adică 0000H – FFFFH.
Memoria RAM de asemenea poate fi extinsă până la 64K.
Trebuie subliniat faptul că 8085 este astfel organizat încât memoria de date şi memoria de program pot fi 2 entităţi fizice diferite.
Un alt aspect important îl constituie porturile de intrare / ieşire.
Microcontrolerul 8051 are 4 porturi pe 8 biţi denumite P0, P1, P2, P3.
P0. Portul P0 poate fi folosit ca intrare şi ieşire şi ca o magistrală bidirecţională de date pentru memoria externă – aceasta este o funcţie alternativă.
P1. Portul P1 nu are funcţii alternative. Pinii portului P1 sunt utilizaţi ca interfaţă de intrare / ieşire cu alte dispozitive: convertoare A/D sau D/A, afişoare cu LCD, tastatură.
P2. Pinii portului P2 sunt liniile de adresare superioare A8 – A15. Acest port poate fi folosit ca interfaţă de intrare / ieşire cu alte dispozitive.
P3. Portul P3 funcţionează similar cu portul P1. Fiecare pin al portului P3 efectuează diferite operaţii:

P3.0 (RXD) primeşte date serial
P3.1 (TXD) transmite date serial
P3.2 (INTO) întrerupere 0 externă
P3.3 (INTI) întrerupere 1 externă
P3.4 (TO) pin pentru timerul 0
P3.5 (TI) pin pentru timerul 1
P3.6 (WR) impuls de scriere în memoria externă
P3.7 (RP) impuls de citire din memoria externă

Hardware
Interfaţa controlerului cu memoria externă (EPROM) se realizează prin intermdiul unui bistabil ‘D’ latch 74LS373.

Scopul utilizării acestuia este demultiplexarea liniilor de adresare şi a liniilor de date.
După demultiplexare ADO – AD7 formează două seturi de linii A0 – A7 = liniile de adresare şi D0 – D7 – liniile de date.

Figura 2

Liniile de adresă A8 – A15 sunt disponibile direct de la pinii microcontrolerului.

Figura 3

În timpul ciclului de accesare a memoriei, portul P0 în primul rând transmite la ieşire octetul inferior al adresei de memorie de 16 biţi şi apoi acţionează ca o magistrală bidirecţională de date pentru a citi un byte din memorie; portul P2 furnizează byte-ul superior al adresei de memorie.
Octetul inferior al adresei de memorie este reţinut în registrul extern al integratului IC2.
Pulsurile de pe semnalul ALE (address latch enable) declanşează scrierea în registrul integratului 74LS373 a octetului inferior al adresei.
Dacă se accesează memoria de instrucţiuni (de program), atunci semnalul (program store enable) trece în starea “0” şi activează memoria EPROM pentru a permite citirea codului pe magistrala de date. Rolul utilizării este de a furniza un semnal de ieşire pentru memoria de instrucţiuni. Când acest semnal trece în starea “0” controlerul poate citi octetul instrucţiunii din memoria de program.
Sub controlul programului, 8051 furnizează un semnal de ieşire la portul P1 care este conectat la baza transzistoarelor de comandă T1 … T8 (BC 574).
Un “1” logic la oricare din pinii de ieşire ai portului P1 va comanda LED-ul corespunzător şi prin intermediul acestuia poarta triaculului, declanşând iluminarea (aprinderea) becurilor conectate între terminalul A2 al triacului şi nul.
Dacă se utilizează becuri de 12V trebuie conectate în serie 20 de becuri, iar dacă se utilizează becuri de 25W atunci trebuie conectate două rânduri de becuri.
Secvenţa de declanşare a triacurilor este determinată de instrucţiunile scrise în program.

Software
Aşa cum s-a menţionat aprinderea becurilor este controlată de formatul codului de ieşire al portului P1.
În timpul execuţiei programului, codul memorat în locaţiile 00234 până la 007CH (în total 89 locaţii de memorie) va fi încărcat în acumulator şi transferat către portul P1.
Dacă formatul acestui cod sau al unei secvenţe este schimbat, ieşirea se va modifica în aceeaşi manieră.
Trebuie subliniat că o ieşire “1” logic din orice pin (echivalentă cu setarea unui bit specific) va declanşa triacul corespunzător (şi seria de becuri conectate între terminalul A2 şi nul), în timp ce o ieşire “0” logic (echivalentă cu ştergerea/setarea bitului specific) va comuta triacul în poziţia “închis”.
Formatul codului de ieşire pentru portul P1 este prezentat în figura 4.
Exemplul 1. Dacă este setat numai bitul P1.0 atunci codul de ieşire are configuraţia din figura 5. Conversia formatului de mai sus (00000001), în hexa (01) este prezentată în figura 6.
Exemplul 2. Dacă sunt setaţi biţii P1.0 şi P1.7 la ieşirea din portul P1 se obţine 81H (vezi figura 7).
Numărul total de coduri afişate este: 007CH – 0023H = 0053H, deci 59H este încărcat în programul de bază în locaţia de memorie 0012H.
Registrul R3 fiind un registru pe 8 biţi permite valoarea maximă FFH.
Figurile 2 şi 3 prezintă cablajele imprimate în mărime reală.
Tradus după “Electronics for you”

LISTĂ COMPONENTE
IC1: 8051
IC2: 74373
IC3: 2764 EPROM 8KBYTES
IC4: 7805 regulator +5V
T1 – T8: BC 547 npn
TR1 – TR8: BT 136
Led1 – Led2: Led Roşu
R1 – R6: 560 ohm/0.25W
R 17: 47 ohm/0.25W
R 18: 10k ohm/0.25W
C1, C2: 30pF
C3: 100mF/16V
C4, C5: 10mF/25V
XTAL: 12MHz cristal cuarţ
L1 – L8 Becuri (220V)
S1: Comutator

Nota redacţiei
Programul poate fi găsit la redacţie (e-mail: ea@fx.ro) şi în curând în pagina revistei pe WEB

• Ioana Enache

S-ar putea să vă placă și