Aplicatii Utilizand Microcontrolerul Stc 90c516rd+
Aplicații utilizând microcontroler-ul STC-90C516RD+
Abstract (max. 300 cuvinte)
Se prezintă o serie de aplicații cu microcontrolerul STC-90C516RD+. Pentru realiarea acestor aplicații, am folosit placa de dezvoltare PRECHIN cu microcontrolerul aferent. Pentru realizarea aplicațiilor am folosit diverse periferice: panou de 64 LED-uri, senzor de temperatură, LCD cu afișare pe 2 linii de până la 32 de caractere pe fiecare și un afișor pe 7 segmente. Pentru realizarea programelor, am scris codurile sursă în programul KEIL, care îmi generează un cod cu extensia HEX. Acest cod este introdus în programul STC-MCU care îmi transmite informația la microcontroler pentru a putea rula aplicația. Am utilizat placa de dezvoltare PRECHIN deoarece, poate fi folosită pentru realizarea mai multor proiecte, cum ar fi: afișarea unui mesaj pe un panou de 64 LED-uri sau a unui LCD; se mai poate folosi în măsurarea temperaturii; de asemenea, cu ajutorul plăcii și al microcontrolerului, se poate programa funcționarea motoarelor pas-cu-pas și a celor de curent continuu.
Cuvinte cheie: microcontroler, STC-90C516RD+, LCD, PRECHIN, LED, senzor.
Applications using the microcontroller STC-90C516RD+
Abstract
It shows a number of applications with microcontroller STC-90C516RD+. For achieve these applications, I used PRECHIN development board and microcontroller related. To achieve the applications I used peripherals: 64 LED panel, temperature sensor, LCD display with 2 lines up to 32 characters each and a 7-segment display on. For realization of the programs I have written source code in KEIL software that generates a code with HEX extension. This code is placed in STC-MCU program that will forward the information to the microcontroller to run the application. I used PRECHIN development board because it can be used to achieve several projects, such as displaying a message on a panel of 64 LED or LCD; can also be used to measure temperature; also with board and microcontroller, program operation step-by-step motors and the DC.
Keywords: microcontroller, STC-90C516RD+, LCD, PRECHIN, LED, sensor.
Listă figuri
Listă tabele
Cuprins
Introducere
Mi-am ales ca temă, aplicații cu microcontrolerul STC-90C516RD+, deoarece în anii de studiu universitar am lucrat pe plăcile de dezvoltare EASY PIC și BIG PIC cu diferite microcontrolere. Unul din avantajele pe care le prezintă microcontroler și placa de evaluare PRECHIN este acela al eficienței de lucru, al costului mult mai mic față de una din cele două plăci utilizate la facultate. Microcontrolerul STC-90C516RD+, prezintă o mai bună utilizare în domeniul aplicații lor. În plus, față de celelalte plăci de dezvoltare, are panoul de LED-uri încorporat.
În primul capitol am prezentat placa de evaluare PRECHIN, prin descrierea echipamentele adiacente precum și porturile de comunicație. Echipamentele adiacente sunt esențiale, pentru a decoda informația trimisă de microcontroler către perifiericele utilizate, cum ar fi de exemplu, panoul de LED-uri sau LCD-ul.
În capitolul doi am vorbit despre microcontrolerul STC-90C516RD+, care face parte din clasa STC-MCU. Microcontrolerul, este un dispozitiv cu un singur cip de 8 biți, cu set de instrucție complet compatibil cu microcontrolerul industrial-standard seria 8051. Acesta are o memorie flash de 64K biți incorporată pentru programul de aplicații. Sunt disponibile 35 sau 39 de porturi programabile I/O, gama frecvenței de funcționare fiind de 0.40 MHz sau 0-80 MHz, frecvența actuală de funcționare având posibilitatea de a urca până la 48MHz. Temperatura de funcționare este de 0~75 grade celsius.
În capitolul 3, am prezentat 5 aplicații pe care le-am utilizat cu ajutorul microcontroler STC-90C516RD+ și al plăcii de evaluare PRECHIN. În aplicații le mele, am folosit un panou de 64 LED-uri, un LCD, un afișor pe 7 segmente și un senzor de temperatură.
Capitolul 1 – Placa de evaluare PRECHIN
Figură 1.1 Placă de evaluare PRECHIN
1.1 Decodificator-demultiplexor 3:8 – 74HC/HCT 138
Figură 1.2 Configurarea pinilor circuitului 74HC/HCT138
Caracteristici:
Are capacitatea de a separa un semnal multiplu în componentele sale;
Permite intrări multiple;
Este ideal pentru decodarea memoriei cipului;
Ieșiri active, scăzute, reciproce și exclusive;
Capacitate ieșirii: standard ;
Categoria Icc: MSI.
Descriere generală: Decodoarele 74HC/HCT138 sunt dispozitive de mare viteza cu porti SI C-MOS și sunt compatibile din punct de vedere al pinului cu dispozitivul de putere joasa Schottky TTL (LSTTL). Acestea sunt specificate in conformitate cu standardul JEDEC numărul 7A. Dispozitivele 74HC/HCT138 acceptă trei adrese binare de intrări ponderate (A0, A1, A2) și odată activate furnizează 8 ieșiri in starea 0, care se exclud reciproc (de la Y0 la Y7). Dispozitivul “138” are trei intrări de activare: două active in stare 0 (E1 și E2) și una activa in stare 1, E3. Fiecare ieșire va fi 1 în afară de E1 și E2 care vor fi 0, iar E3 va fi 1. Această funcție multiplă de activare permite o ușoară expansiune paralelă a dispozitivului “138” spre un decodor 1-32 (între 5 și 32 de linii) cu doar patru “138” ICs și un invertor.
Dispozitivul “138” poate fi folosit ca un demultiplexor cu 8 ieșiri folosind una dintre intrările active 0 ca și o intrare de introducere de date. Intrările nefolosite trebuie sa fie in permanenta conectate cu cel mai adecvat element activ 1 sau 0. Dispozitivul “138”este identic cu dispozitivul “238”dar are ieșiri inversate.
1.2 Registru de deplasare cu încărcare paralelă și ieșire serială – 74HC/HCT165
Figură 1.3 Configurarea pinilor pentru 74HC/HCT 165
Caracteristici:
Încărcare paralela asincronă de 8-biți;
Intrare serială sincronă;
Capacitatea ieșirii: standard;
Categoria Icc: MSI.
Descriere generală: 74HC/HCT165 sunt dispozitive CMOS de mare viteză cu porti ȘI și sunt compatibile din punct de vedere al pinilor cu dispozitivul de putere joasă Schottky TTL (LSTTL). Acestea sunt specificate în conformitate cu standardul JEDEC numărul 7A. 74HC/HCT 165 sunt regiștrii de încărcare paralelă de 8 biți sau intrare serială, cu ieșiri seriale complementare (Q7 și Q7) valabile de la ultima încărcare. Când ieșirea de încărcare paralela (PL) este 0, datele paralele de la intrările D0 la D7 sunt încărcate în regiștrii asincroni. Când PL este 1, datele se introduc în registrii seriali la intrare Ds și se mută un spațiu la dreapta (Q0 – Q1 – Q2) cu fiecare perioadă pozitivă a ceasului. Aceasta caracteristică permite extinderea convertorului de la paralel la serial prin conectarea ieșirii Q7 de intrarea Ds a următorei etape. Intrarea ceasului este o structură dependentă OR care permite unei intrări să fie folosită ca și o intrare de ceas activă pe 0. Atribuirea pinului pentru intrările CP și CE este arbitrară și poate fi inversată pentru utilitatea planului general. Trecerea de la starea 0 la starea 1 a intrării CE trebuie sa aibă loc în timp ce procesul CP are starea 1. Oricare CP sau CE trebuie să fie 1 înainte de trecerea de la starea 0 la starea 1 a PL pentru a preveni inversarea datelor când PL este activat.
1.3 Registru de deplasare cu încărcare serială și ieșire serială sau paralelă – 74HC/HCT595
Figură 1.4 Configurarea pinilor circuitului 74HC/HCT595
Caracteristici:
Intrare serială de 8 biți;
Ieșire paralelă serială de 8 biți;
Registru de depozitare cu 3 ieșiri;
Schimba registrul cu ștergere directă;
Frecvență de schimbare de 100 MHz ;
Capacitatea ieșirii: – ieșiri paralele – conductor bus;
– ieșire serial – standard;
Categoria Icc: MSI.
Descriere: 74HC/HCT 595 sunt dispozitive de mare viteză cu porti SI C-MOS și sunt compatibile din punct de vedere al pinilor cu dispozitivul de putere mică Schottky (LSTTL). 74HC/HTC595 este specificat în conformitate cu standardul JEDEC numărul 7A. Dispozitivul “595” este un registru de deplasare de 8 biți având 3 iesiri. Registrul de schimbare și cel de depozitare au ceasuri separate. Informația este schimbată in tranziții pozitive în derularea intrării SHcp. Informația din fiecare registru este transferată în memoria de depozitare într-o tranziție pozitivă în derularea ieșirii STcp. Dacă ambele ceasuri sunt conectate unul de celălalt, registrul de transfer o să fie mereu cu un ceas înaintea registrului de depozitare. Registrul de schimbare are o intrare serială (Ds) și o ieșire seriala standard (Q7) pentru revarsare. Este de asemenea prevăzut cu resetare asincronă (activa în 0) pentru toate cele 8 trepte de schimbare ale registrilor. Registrul de depozitare are 3 stari de iesire. Informația din registrul de depozitare apare la ieșire de fiecare data când ieșirea care permite intrarea (OE) are starea 0.
1.4 EEPROM – AT24C01A/02/04/08/16
Figura 1.5 EEPROM AT24C01A/02/04/08/16
Caracteristici:
Operare la tensiune joasa și tensiune standard: 2.7 (Vcc=2.7V la 5.5V), 1.8 (Vcc=1.8V la5.5V);
Organizare internă 128×8 (1K), 256×8 (2K), 512×8 (4K), 1024×8 (8K) sau 2048×8 (16K);
Interfața serială cu 2 cabluri;
Mecanism de declanșare Trigger-Smith, intrări filtrate pentru suprimarea zgomotului;
Protocol pentru transferare a informației bi-direcțional compatibil 100Hz (1.8V) și 400 kHz (2.5V, 2.7V, 5V) ;
Modurile de scriere: pe 8 biți (1K , 2K), pe 16 biți (4k , 8k, 16k);
Permite scrierea partiala a paginilor;
Ciclul de scriere este auto-temporizat (5 ms maxim);
Exactitate înaltă: durata:1 milion de serii de scriere; păstrare datelor:100 ani;
Descriere: AT2424C01A/02/04/08/16 furnizează 1024/2048/4096/8192/16384 biți fiind un EEPROM organizat în 128/256/512/1024/2048 cuvinte de 8 biți fiecare. Dispozitivul este optimizat pentru utilizarea în multe aplicații industriale și comerciale unde sunt esențiale operațiunile de joasă putere și tensiune. Dispozitivul AT24C01A/02/04/08/16 este disponibil cu spațiu de stocare în cip de 8-pini PDIP, 8-pini Jedec SOIC, 8-pini MAP, 5-pini SOT23 (AT24C01A/AT24C02/AT24C04), 8-pini TSSOP și este accesat printr-o interfață serială de 2 cabluri.
1.5 Decodificatorul – DS1302
Figura 1.6 Decodorul DS1302
Figură 1.7 Diagrama bloc pentru decodorul DS 1302
Caracteristici:
Ceas de timp real: afișează secunde, minute, ore, luna, ziua, săptămâna și anul cu schimbul saltului peste ani valabil pana la 2100;
Conține un RAM nonvolatil pentru păstrarea datelor având dimensiunea de 318 biți;
Serial I/O pentru numarul minim de pini;
Operare full de la 2.0V la 5.5 V;
Folosește mai puțin de 300 mA la 2.0V;
Modul Burst pentru citirea/scrierea adreselor succesive în ceas/RAM;
8-pin Dip sau opțional 8-pin SOICs pentru fixarea suprafeței;
Interfață simplă de 3 cabluri;
Poate fi folosit la temperatura de -40 de grade celsius la +85 grade celsius;
Compatibil DS1202;
Informații despre comenzi:
DS1302 8-pin DIP(300-mil)
DS1302N 8-pin DIP(industrial)
DS1302S 8-pin SOIC(200-mil)
DS1302SN 8-pin SOIC(industrial)
DS1302Z 8-pin SOIC(150-mil)
DS1302ZN 8-pin SOIC(industrial)
DS1302S-16 16-pin SOIC (300-mil)
DS1302SN-16 16-pin SOIC(industrial)
Descrierea pinilor
X1, X2 – 32,768 kHz pini cristal
GND – Baza
RST – reset
IO – Date de intrare/ieșire
SCLK – Ceas serial
Vcc1,Vcc2 – pini pentru furnizarea puterii
Descriere: DS1302 este un cip cu încărcare lentă care conține un RTC/calendar și RAM static de 31 biți. Comunică ca un microprocesor printr-o interfață simplă serial. RTC/calendarul oferă informații despre secunde, minute, ore, ziua, data, luna și an. Sfârșitul lunii este ajustat automat pentru luni cu mai puțin de 31 de zile, incluzând corecții pentru anul bisect. Ceasul funcționează fie în formatul de 24 de ore, fie in cel de 12 ore cu un indicator AM/PM. Interfațarea cipului DS1302 cu un microprocesor este simplificată prin utilizarea comunicării seriale simultane. Sunt necesare doar 3 cabluri pentru a comunica cu ceasul/RAM-ul:
1) RST (RESET),
2) I/O (linia de date)
3) SCLK (Ceas serial)
Informația poate fi transferată către și din ceas/RAM, câte 1 bit pe rând sau până la 31 de biți. Cipul1302 8-pin DIP(300-mil)
DS1302N 8-pin DIP(industrial)
DS1302S 8-pin SOIC(200-mil)
DS1302SN 8-pin SOIC(industrial)
DS1302Z 8-pin SOIC(150-mil)
DS1302ZN 8-pin SOIC(industrial)
DS1302S-16 16-pin SOIC (300-mil)
DS1302SN-16 16-pin SOIC(industrial)
Descrierea pinilor
X1, X2 – 32,768 kHz pini cristal
GND – Baza
RST – reset
IO – Date de intrare/ieșire
SCLK – Ceas serial
Vcc1,Vcc2 – pini pentru furnizarea puterii
Descriere: DS1302 este un cip cu încărcare lentă care conține un RTC/calendar și RAM static de 31 biți. Comunică ca un microprocesor printr-o interfață simplă serial. RTC/calendarul oferă informații despre secunde, minute, ore, ziua, data, luna și an. Sfârșitul lunii este ajustat automat pentru luni cu mai puțin de 31 de zile, incluzând corecții pentru anul bisect. Ceasul funcționează fie în formatul de 24 de ore, fie in cel de 12 ore cu un indicator AM/PM. Interfațarea cipului DS1302 cu un microprocesor este simplificată prin utilizarea comunicării seriale simultane. Sunt necesare doar 3 cabluri pentru a comunica cu ceasul/RAM-ul:
1) RST (RESET),
2) I/O (linia de date)
3) SCLK (Ceas serial)
Informația poate fi transferată către și din ceas/RAM, câte 1 bit pe rând sau până la 31 de biți. Cipul DS1302 este proiectat pentru a opera la o putere foarte joasă și să rețină informația despre dată și ceas la mai puțin de 1 micro-watt.
Cipul DS1302 este succesorul cipului DS1202. În plus la funcțiile de bază ale cronometrajului de la DS1202, DS1302 are caracteristici suplimentare de pini de putere duală pentru stocare de energie primară și de back-up precum și 7 biți suplimentari de memorie scratchpad (blocnotes).
1.6 Temporizatorul NE555
Figura 1.8 Temporizatorul NE555
Figura 1.9 Diagrama bloc pentru decodorul NE 555
Caracteristici:
Frecvență de operare maximă cu timpul de închidere mic;
Frecvența maximă de operare este de 500 kHz;
Sincronizarea de la microsecunde la ore funcționează în modurile astabil și monostabile;
Descriere: Circuitul de sincronizare monolitic NE555 este un controler extrem de capabil sa producă întârzieri sau oscilații de timp precise. În modul de operare de întârziere a timpului , acesta este precis controlat de un rezistor și un condensator extern. Pentru o operare stabilă ca un oscilator, frecvența de functionare liberă și ciclul de funcționare sunt ambele atent controlate cu doi rezistori externi și un condensator. Circuitul poate fi oprit și pornit prin forme de undă ce se încadrează iar structura de ieșire poate urca până la 200 mA. NE555 este disponibil in pachet de plastic sau ceramic precum și în versiune de cutie de metal.
1.7 Convertor Analog-Digital și Digital-Analogic de 8 biți – PCF 8591
Figura 1.10 Convertor Analog-Digital și Digital-Analogic de 8 biți
Caracteristici:
Sursa de alimentare individuală;
Tensiunii de operare 2.5V la 6V;
Intrare/ieșire serială prin intermediul I2C-bus;
Rata de eșantionare dată de viteza I2C-bus;
Patru intrări analogice programabile;
Selecția canalului auto-incrementată;
Gama tensiunii analogice de la Vss la Vdd;
Conversie succesivă de 8-bit cu aproximație A/D.
Descriere general: PCF8591 este un dispozitiv cu un singur cip, o singură alimentare de putere scăzută cu achiziționarea datelor de 8-bit CMOS, cu patru intrări analogice, o ieșire analogica I o interfață serială I2C-bus. Pentru programarea adresei hardware sunt folosite 3 adrese pin A0, A1 și A2, permițând folosirea a mai mult de 8 dispozitive conectate la I2C-bus fără hardware suplimentar. Adresa, comanda I, datele de la și până la dispozitiv sunt transferate în mod serial prin intermediul celor 2 linii bidirecționale I2C-bus. Funcțiile dispozitivului includ intrare analogică multiplexată, funcția hold, conversie de la analog la digital de 8 biți și conversie de la digital la analog de 8 biți. Rata maximă de conversie este dată de viteza maximă a I2C-bus.
Capitolul 2 – Microcontroler-ul STC-90C516RD+
2.1 Introducere
Microcontrolerul STC90C51RC/RD+, produs de STC MCU Limited, este un dispozitiv cu un singur cip de 8 biți, cu set de instrucțiune complet compatibil cu microcontrolerul industrial-standard seria 8051. Acesta are o memorie flash de 64K biți incorporată pentru programul de aplicații, care este aplicat cu programele ISP si IAP. ISP permite utilizatorului să downloadeze un nou cod fără a îndepărta microcontrolerul de la produsul final actual; IAP înseamnă că dispozitivul poate scrie date non-volatile în memoria Flash în timp ce programul de aplicații execută. Pe RAM-ul încorporat sunt 1280 biți sau 512 biți care furnizează cerința din câmpul larg al aplicației. Seria STC90C51RC/RD+ păstrează toate caracteristicile lui 80C51 standard. Seria STC90xx are suplimentar: un port extra I/O(P4), 8 surse, o structură de 4 niveluri prioritare de întreruperi și un oscilator de cristal.
Figura 2.1 Microcontrolerul STC-90C516RD+
2.2 Caracteristici
Unitate centrală de prelucrare 80C51 sporită, 6T sau 12T per ciclu de mașină;
Gama tensiunilor de funcționare: 3.3V~5.5V (seria STC90C51RC/RD+) sau 2.0V~3.6V (seria STC90LE51RC/RD+);
Gama frecvenței de funcționare: 0.40 MHz sau 0-80 MHz, frecvența actuală de funcționare poate urca până la 48MHz;
Memoria de program Flash on-chip 4K/8K/13K/16K/32K/40K/48K/56K/61K cu capacitatea de flexibilitate ISP/IAP;
RAM de 256 biți/512 biți;
Este capabil să adreseze mai mult de 64K biți de hard extern;
Este capabil sa adreseze mai mult de 64K biți de memorie externă;
Dual Data Pointer (DDP) pentru a accelera transferul de date;
8 adrese-vectori, capacitatea de întrerupere prioritară pe 4 nivele;
Un UART sporit cu recunoașterea adresei hardware, cu funcția de detectare a erorilor și cu generator propriu de date de transfer;
Ceas de urmarire de 15 biți, cu pre-scala de 8 biți (activat o singură dată);
Component MAX810-circuit de resetare specializat;
Două moduri de gestionare a energiei;
Modul power-down poate fi activat de pinul IN70/P3.2, pinul INTI/P3.3,T0/P3.4, T1/P3.5/pinul RXD/P3.0, INT2/P4.3, INT3/P4.2;
Sunt disponibile 35 sau 39 de porturi programabile I/O;
Patru porturi bi-direcționale de 8 biți, suplimentar 4 biti extra P4 sunt disponibili pentru PLCC-44 si LQFP-44;
Temperatura de funcționare: -40…+85 grade celsius (industrial)/0…75 grade celsius (comercial);
2.3 Schema
Nucleul CPU de la STC90C51RC/RD+ este perfect compatibil cu microcontrolerul standard 8051, păstrează toate instrucțiunile de memorie și compatibilitatea binară. Seria STC90C51RC/RD+ are cele mai rapide instrucțiuni de 6 cicluri sau 12 cicluri (asemeni 80C51 standard). Îmbunătățirea programelor individuale depinde de instrucțiunile reale folosite.
Figura 2.2 Schema bloc a microcontrolerului
Tabelul 1. Descrierea PIN-ilor
2.4 Administrarea alimentarii și resetării
2.4.1 Modurile de administrare a puterii
Nucleul STC90C51RC/RD+ are 2 moduri de a programa puterea software-ului: inactiv și stop/modul power-down. Puterea de consum a seriilor STC90C51RC/RD+ este de aproximativ 4mA~7mA într-o operațiune normală, în timp ce acesta este mai mic de 0.1uA în starea 0 și 2mA în modul inactiv.
Starea 0 este administrată de catre bitul corespunzător din registrul de control al puterii (PCON), care este prezentat în continuare.
Tabelul 2. Registrul de control al puterii (PCON)
SMOD : Rata dublu de transfer de interfeței UART
0: Păstrează normală rata de transfer când UART este folosit în modurile 1, 2 sau 3
1: Dublează rata de transfer de biți când UART este folosit în modurile 1, 2 sau 3
SMOD0: SM0/FE bit selectează pentru SCON.7; setarea acestui bit va seta SCON.7 ca și funcție de eroare.
POF: modul pornit; este setat de acțiunea puterea-oprit-pornit și poate fi curățat doar de software.
PD: Bitul de selecție a modului power down/stop. Setarea acestui bit va aduce microcontrolerul STC90C516RC/RD+ MCU în modul Stop/Power down. Modul Stop/Power down poate fi pornit de întreruperea externă. Pentru că oscilatorul intern al MCU s-a oprit în modul Stop/Power down, CPU, UART-urile s-au oprit din rulare, doar întreruperea externă continuă să lucreze. Următoarii pini pot scoate MCU din modul Stop/Power down: INT0/P3.2, INT1/P3.3, INT2/P4.3, INT3/P4.2
IDL: Modul inactiv de selecție a bitului
Setarea acestui bit va aduce dispozitivul STC90C51RC/RD+ MCU în modul inactiv. Doar CPU intră în modul inactiv. Următorii pini pot scoate MCU din modul inactiv: INT0/P3.2, INT1/P3.3, INT2/P4.3, INT3/P4.2. Pe lângă acestea, Timer0, Timer1, Timer2 și UART-urile întrerupte pot scoate MCU din modul inactiv.
2.4.2 Modul Inactiv
O indicație care setează IDL/PCON.0 determină să fie ultima indicație executată înainte să intre în modul inactiv, ceasul intern este dependent de CPU dar nu de întreruperi, WDT și funcțiile porturilor seriale. Starea CPU este păstrată în întregime: RAM-ul, stiva pointer, contorul de program, acumulator și toate celelalte registre își mențin informațiile în timpul modului inactiv. Pinii portului își păstrează stările logice pe care le-au avut atunci când modul inactiv a fost activat. ALE si PSEN păstrează nivelul mare logic. Modul ideal lasă perifericele să ruleze cu scopul de a le permite sa se trezească CPU atunci când o întrerupere este generată. Timer 0, Timer 1, Timer 2 si UART vor continua să funcționeze în timpul modului inactiv.
Există două moduri de a opri modul inactiv. Activarea oricărei întreruperi permisă va face ca IDL/PCON.0 să fie șters de către hardware, dezactivand modul inactiv. Întreruperea va fi pentru service iar in urma RETI, următoarea instructiune care va fi executată va fi cea după indicația care a pus dispozitivul în repaus.
Biții (GF0 si GF1) pot fi folosiți pentru a da indicații daca o întrerupere a avut loc în timpul operării normale sau în timpul modului inactiv. De exemplu, o indicație care activează modul inactiv poate de asemenea seta unul sau ambii biți. Când modul inactiv este închis de către o întrerupere, serviciul de rutină pentru întreruperi poate studia biții.
Un alt mod de a scoate dispozitivul din modul inactiv este acela de a apăsa butonul reset pentru a face hardul intern să se reseteze. Deoarece ceasul oscilator incă rulează, hardware-ul care se resetează trebuie sa fie ținut activ pentru doar 2 cicluri de mașina pentru a termina resetarea.
2.4.3 Modul Stop
O indicație care setează PD/PCON.1 face ca aceasta să fie ultima indicație executată înainte să intre în modul stop. În modul stop, oscilatorul on-chip și memoria Flash sunt oprite cu scopul de a micșora consumul de energie. Doar circuitele pornite continuă să genereze putere în timpul modului stop. Conținutul RAM-ului on-chip și SFR este păstrat. Modul in starea 0 poate fi pornit prin RESET, întreruperea externă INT0~INT3, pinul RXD, pinurile T0, T1 și T2. Când este pornit de RESET, programul va executa de la adresa 0x0000. Trebuie ținut pinul RESET activ pentru cel puțin 10 minute pentru un ceas stabil. Dacă este oprit din I/O, CPU va reporni sărind la rutina de serviciu asociată cu întreruperea. Înainte ca CPU sa repornească, ceasul este blocat și numărat până la 32768 (90C version MCU) sau 2848 (HD version MCU) in ordine pentru afisarea ceasului instabil. Pentru a folosi modul I/O de activare, registrele asemănătoare întreruperilor trebuie să fie activate și programate precis înainte ca modul Power Down să fie introdus. La limita negativă a pinului de întrerupere, modul stop este oprit, oscilatorul este restartat și un timer intern începe să numere. Ceasul intern va afisa si procesorul nu va relua executarea pana ce cronometrul nu a ajuns la contor intern complet. Pentru a împiedica întreruperea sa redeclanșeze, rutina întreruptă de serviciu trebuie să dezactiveze întreruperea înainte de a reîncepe. Pinul de întrerupere trebuie sa fie păstrat in starea 0 până ce dispozitivul a expirat (a terminat pauza) și a început executarea. Utilizatorul nu trebuie să încerce să introducă (sau reintroducă) modul stop pentru minimum 4us pana după ce una dintre aceste condiții a avut loc: startul codului de execuție (după orice tip de reset) sau ieșirea din modul stop. Următorul circuit poate porni MCU prin temporizare din modul stop atunci când sursele externe întrerupte nu există.
Figura 2.3 Schema logică a modului STOP
Pașii operaționali:
1. Porturile I/O sunt înainte configurate la modul ieșire;
2. Scrierea 1s în porturi I/O;
3. Circuitul de mai sus va încărca condensatorul C1;
4. Scrierea 0S in porturi I/O, MCU va intra in modul stop;
5. Circuitul de mai sus se va descarcă atunci când energia electrica a condensatorului C1 va descărca
mai puțin de 0.8V, pinul de întrerupere externă INTx va produce o cădere a limitei și va reporni MCU din starea 0 in modul automat.
2.5 Organizarea memoriei
Seria STC90C51RC/RD+ MCU are spațiu de adrese separate programul de memorie și memoria de date. Separarea logică a memoriei de program și de date permite memoriei de date să fie accesată de adrese de 8-biti, care pot fi ușor stocate și manevrate de CPU.
Memoria de program (ROM) poate fi doar citită, nu și scrisă. În seria STC90C51RC/RD+, toată memoria de program este pe memoria Flash. Pe langa aceasta, STC90C51RC/RD+ are capabilitatea de a accesa extern 64 K biți de memorie de program.
Memoria de date ocupă un spațiu de adresă separată de memoria de program. În seria STC90C54RC/RD+ memoria internă are 256 biți și 1024 biți de RAM extinși (XRAM). În schimb, în seria STC90C51RC/RD memoria internă are 256 biți și 256 biți de RAM extinși (XRAM), iar în seria STC90C51 memoria internă are doar 256 biți.
2.5.1 Memoria de program
Memoria de program este memoria care păstrează codurile de program ale CPU pentru executare. Exista 4/8/13/16/32/40/48/56/62 K biți de memorie flash încorporată pentru program și de stocare a datelor. Proiectarea permite utilizatorului să-l configureze ca și cum în interior ar fi trei părți partajate individual. Sunt numite regiunea AP (program de utilizare), regiunea IAP (program în aplicație/în utilizare) și regiunea ISP (program în sistem). Regiunea AP este spațiul în care se află programul utilizatorului. Regiunea IAP este spațiul de stocare a informațiilor nonvolatile care poate fi folosit pentru a salva parametrii importanți de programul AP. Cu alte cuvinte, capabilitatea IAP a STC90C51RC/RD+ oferă posibilitatea utilizatorului de a citi/scrie regiunea dată flash on chip definită de utilizator să salveze nevoia de utilizare a dispozitivului EEPROM. Regiunea boot ISP este spațiul care permite unui program specific pe care îl numim „ISP program” să fie rezident. În interiorul regiunii ISP, utilizatorul poate de asemenea să activeze accesul de a citi/scrie pe un spațiu de memorie mic, de a păstra parametrii pentru scopuri precise. În general, scopul programului ISP este de a executa upgrade-ul programului AP fără să fie nevoie să se îndepărteze dispozitivul de sistem. Hardware-ul STC90C51RC/RD+ înțelege configurarea informației întrucât durata power-up se efectuează protecția hardware-ului depinzând de un criteriu pre-determinat. Criteriul este acela că programul AP poate fi accesat doar de programul ISP, regiunea IAP poate fi accesată de programul ISP și de programul AP iar regiunea ISP are acces interzis de la însuși programul AP și programul ISP. Dar dacă „data flash ISP este activată”, programul ISP poate citi/scrie acest spațiu. Când sunt făcute setări greșite pe ISP-IAP-SFRs, se întâmplă fenomenul „out-of-space” și STC90C51RC/RD+ urmează criteriul de mai sus, ignorând comanda de declanșare.
După reset, CPU începe executarea de la locația 0000H a memoriei de program, unde ar trebui să fie startul codului de aplicație a utilizatorului. Pentru a repara întreruperile, locațiile service de întrerupere (numite vectori de întrerupere) ar trebui să fie localizate în memoria de program. Fiecărei întreruperi îi este atribuită o locație fixă în memoria de program. Întreruperea face ca CPU să sară la acea locație, unde începe executarea rutinei de serviciu. De exemplu, întreruperii externe 0 îi este atribuită locația 0003H. Dacă întreruperea externă 0 va fi folosită, rutina sa de serviciu trebuie să înceapă la locatia 0003H. Dacă întreruperea nu va fi folosită, locația sa de serviciu este disponibilă ca și scop general al programului de memorie.
Locațiile de servicii de intrerupere sunt distanțate la un interval de 8 biți: 0003H pentru întreruperea externă 0, 000BH pentru timer, 0013H pentru întreruperea externă 1 , 001BH pentru timer 1, etc. Dacă o rutină service de întrerupere este destul de scurtă poate rezida în întregime în acel interval de 8 biți. Rutinele service mai lungi pot folosi o indicație de salt pentru a trece peste locațiile de întreruperi ulterioare, dacă se folosesc întreruperile.
2.5.2 Memoria de date
La fel ca și microcontrolerul convențional 8051, există 256 biți de memorie de date SRAM plus 128 biți de spațiu SFR disponibili pe STC90C51RC/RD+. Cea mai mică memorie de date de 128 biți poate fi accesată prin adresare directă sau indirectă. Memoria de date superioară de 128 biți poate fi accesată doar prin folosirea adresării indirecte. Spațiul SFR de 128 de biți poate fi accesat doar prin adresarea directă. Cei mai mici 32 de biți de memorie de date sunt grupați în 4 bancuri de 8 registre fiecare. Indicațiile de program numesc aceste registre ca și R0 pânâ la R7. Biții RS0 și RS1 din registru PSW selectează care zona din registru este folosită. Acesta permite o folosire eficientă a spațiului de cod, din moment ce registrele de indicație sunt mai scurte decât indicațiile care folosesc adresarea directă.
Următorii 16 biți (20H~2FH) de deasupra zonelor de registru formează un bloc de spațiu de memorie adresabilă. Setul de instrucțiuni 80C51 este complex. Cei 128 de biți din această zonă pot fi adresați direct de aceste instrucțiuni. Adresele de bit în această zonă sunt 00H până la 7FH.
Toți biții sub 128 pot fi accesați fie de adresarea directă sau indirectă în timp ce peste 128 pot fi accesați doar de adresarea indirectă. SFRs include porturi nefolosite, timeri, controale periferice, etc. Aceste registre pot fi accesate doar prin adresarea directă.
Tabelul 3. Registru PSW
CY: indicator. Acest bit este setat atunci când ultima operație aritmetică este rezultată într-o suma sau dintr-un împrumut. Este adus la starea 0 de toate operațiile aritmetice.
AC: indicator auxiliar (pentru operații BCD). Acest bit este setat când ultima operație aritmetică rezultată într-o suma sau dintr-un împrumut de la cel mai inalt nivel este adusă la starea 0 de toate operațiile aritmetice.
F0: indicator 0 (disponibil pentru utilizator pentru scopuri generale)
RS1: Controlul de selecție a bancului de registru bit 1
RS0: Controlul de selecție a bancului de registru bit 2
[RS1 și RS0] selectează care banc de registru este folosit în timpul accesului registrului.
Observații: Acest bit este setat la 1 în următoarele circumstanțe:
o indicație AD, ADDC sau SUBB cauzează o schimbare de semn;
o indicație DIV cauzează o condiție împărțită la 0;
Bitul OV este adus la 0 de indicațiile AD, ADDC, SUBB, MUL și DIV în toate celelalte cazuri.
F1: indicator 1-flagul definit al utilizatorului
P: indicator de paritate. Acest bit este setat la logicul 1 dacă suma a 8 biți din acumulator este impară și șters dacă suma este pară.
SP: stiva. Registru stivă este de 8 biți. Este incrementat înainte ca data să fie stocată în timpul execuțiilor “PUSH and CALL”. Conținutul poate apărea oriunde în RAM. La resetare, SP este inițializat la 07H cauzând conținutul memoriei să înceapă în locația 8H, care este de asemenea primul registru (R0) al bancului de registre 1. Astfel, dacă se va folosi mai mult de un banc de registre, SP ar trebui inițializat într-o locație în memoria de date care nu este folosită pentru stocarea datelor. Conținutul memoriei poate fi extins la mai mult de 256 biți.
Capitolul 3 – Aplicații cu microcontrolerul STC90C516RD+
În acest capitol am realizat câteva aplicații utilizând microcontrolerul STC90C516RD+. Aplicațiile au fost realizate în C++. Cu ajutorul programului KEIL am creat un fișier cu extensia .hex pe care l-am încărcat în programul STC-ISP pentru a transmite informația la microcontroler.
3.1 Aplicația 1 – afișare folosind panou de LED-uri de dimensiune 8×8
Pentru această primă aplicație am folosit un panou de leduri de dimensiune 8 rânduri și 8 coloane.
Figura 3.1 Panoul de 64 LED-uri
Informația este transmisă de la dreapta spre stânga, pentru fiecare coloană fiind scrisă o succesiun de de caractere.
Exemplu pentru afișarea literei M:
În momentul în care litera M ajunge în centru panoului va fi nevoie de scrierea codului următor:
Astfel pentru afișarea mesajului:
NUME: ISPAS MARIUS MIHAI // TEMA: APLICATII CU MICROCONTROLERUL STC90C516RD+
am declarant CHARCODE ca și matrice de caractere de dimensiune 324. Distanța dintre literele unui cuvânt este de un rând de leduri, iar dintre două cuvinte este de două rânduri de leduri.
Figura 3.2 Aplicație 1
Figura 3.3 Schema logică pentru Aplicația 1
3.2 Aplicația 2 – afișare folosind LCD
Pentru această aplicație am folosit un LCD care poate să afișeze 32 de caractere pe două rânduri și funcționează la o tensiune de 5 V.
Figura 3.4 LCD
Caracteristici:
– LCD, contrast înalt, cu display SUPERTWIST;
– intervalul de funcționare: 2.7V-5V;
– funcționează optim între 0 – 50 C;
– interfață pentru 4 și 8 magistrale de date bit;
– luminarea LED-urilor între 45mA și 150mA la 25 0C.
Microcontrolerul este programat să afișeze pe LCD mesajul pe două rânduri, astfel pe primul rând va afișa “Nume: Ispas Marius Mihai” iar pe cel de-al doilea rând “Tema: Aplicații cu microcontrolerul STC90C516RD+”.
Figura 3.5 Aplicație 2
Figura 3.3 Schema logică pentru Aplicația 2
3.3 Aplicația 3 – controlul temperaturii și afișarea pe LCD
În această aplicație am folosit un senzor de temperatură cu afișarea acesteia pe LCD. Am făcut 3 măsuratori diferite a câte 10 valori fiecare în diferite momente ale zilei (dimineața, la prânz, seara) astfel încât am obținut următoarele măsurători:
Figura 3.7 Aplicație 3
3.4 Aplicația 4 – implementarea unui numărător și afișare rezultat pe un BCD 7 segmente
Pentru această aplicație am folosit un afișor pe 7 segmente. Acest display este cel mai comun display care poate afișa cifre de la 0-9. Afișorul se găsește într-o mare varietate de dispozitive precum ceasurile electronice digitale, radiouri, cuptoare cu microunde, aparate electronice etc. Această configurație are de fapt 8 LED-uri aranjate special pentru a afișa cifrele dorite.
Figura 3.8 Afișor BCD 7 segmente
Figura 3.9 Configurarea pinilor BCD 7 segmente
Pentru această aplicație am afișat pe acest display un ciclu repetitiv de numere de la 0 la 9 cu un interval de o secundă între aceste cifre.
Figura 3.10 Implementarea unui numărător și afișarea rezultatului folosind BCD 7 segmente
3.5 Aplicația 5 – afișare dată și oră folosind LCD
Aplicația este gândită să afișeze pe un LCD data și ora atâta timp cât placa este alimentată. Astfel pe primul rând va afișa anul, luna și ziua, iar pe rândul doi va afișa ora, minutele și secundele.
Figura 3.11 Aplicație 5
Rezultate și concluzii
Pe parcursul lucrării am prezentat, câteva aplicații realizate cu ajutorul microcontrolerului STC90C516RD+. Aplicațiile au fost făcute in C++; cu ajutorul programului KEIL am creat un fișier cu extensia .hex pe care l-am introdus în programul STC-ISP pentru a transmite informația la microcontroler.
În aplicația 1 am folosit un panou de LED-uri, informația fiind transmisă de către microcontroler pentru a afișa mesajul de la dreapta la stânga în format vizual roșu.
În aplicația 2 cu ajutorul unui LCD cu afișaj pe două rânduri cu maxim 32 de caractere pe rând, am programat microcontrolerul pentru a afișa pe cele două rânduri textul respectiv, prin repetare continuă.
Pentru aplicația 3 am folosit un senzor de temperatură cu ajutorul căruia, am măsurat temperatura la anumite intervale de timp, pentru fiecare interval luând 10 măsurători la fiecare 10 secunde. Am prezentat un grafic cu fluctuațiile fiecărei măsurători.
În aplicația 4, pe un afișor pe 7 segmente am comandat microcontrolerul să afișeze numerele 0..9, la un interval de o secundă cu structură repetitivă continuă.
În aplicația 5 am setat microcontrolerul să transmită informția la un LCD astfel: pe primul rând afișează anul, luna ziua, iar pe rândul al doilea, ora, minutul și secundele. Microcontrolerul este setat să afișeze fusul orar est-European, putând reține informația pentru următorii 16 ani atâta timp cât are o sursă de alimentare.
Bibliografie
Cărți, articole de specialitate, lucrări de licență/disertație
Michael J. Pont, Programming Embedded Systems I using C [v1.2a,], University of Leicester, 2006;
Fl. Ion, G. Predușcă, Analiza și sinteza circuitelor numerice. Aplicații și probleme, Ed. Bibliotheca, Târgoviște, 2006;
Fl. Ion, Microcontrolere – note de curs , Târgoviște, 2014;
STC-90C516RD+
STC-90C516RD+ – DataSheet
KEIL, STC-ISP
Keil Software — Cx51 Compiler User’s Guide, Keil Elektronik GmbH. and Keil Software, Inc., 2001;
Michael J. Pont, Embedded C, Addison – Wesley, 2002;
http://www.prechin.com;
http://www.stc-mcu.com;
http://www.keil.com;
Anexă – coduri sursă
Aplicația 1
Aplicația 2
Aplicația 3
Aplicația 4
Aplicația 5
Bibliografie
Cărți, articole de specialitate, lucrări de licență/disertație
Michael J. Pont, Programming Embedded Systems I using C [v1.2a,], University of Leicester, 2006;
Fl. Ion, G. Predușcă, Analiza și sinteza circuitelor numerice. Aplicații și probleme, Ed. Bibliotheca, Târgoviște, 2006;
Fl. Ion, Microcontrolere – note de curs , Târgoviște, 2014;
STC-90C516RD+
STC-90C516RD+ – DataSheet
KEIL, STC-ISP
Keil Software — Cx51 Compiler User’s Guide, Keil Elektronik GmbH. and Keil Software, Inc., 2001;
Michael J. Pont, Embedded C, Addison – Wesley, 2002;
http://www.prechin.com;
http://www.stc-mcu.com;
http://www.keil.com;
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicatii Utilizand Microcontrolerul Stc 90c516rd+ (ID: 161919)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
