Sunteți pe pagina 1din 15

MINISTERUL EDUCAȚIEI ȘI CERCETĂRII

AL REPUBLICII MOLDOVA
UNIVERISITATEA TEHNICĂ A MOLDOVEI
FACULTATEA ELECTRONICĂ ȘI TELECOMUNICAȚII
Departamentul TELECOMUNICAȚII ȘI SISTEME ELECTRONICE

Proiect de an
La obiectul Microprocesoare
Tema: Matrice LED 8x25 Pralel Sincron

A efectuat Studentul grupei RST-201

________________________ Namolovan A.
semnătura nume, prenume

A verificat Nicolae Secrieru


nota data semnătura nume, prenume profesor

Chisinău 2023

1
Cuprins

1. Scopul proiectului.........................................................................
2. Cite ceva despre Arduino UNO.........................................................3-7
3. Capitolul 1- Descrierea unității periferice.........................................7-11
4. Capitolul 1.2- Elaborarea interfeței...................................................12-1
5. Capitolul 1.3- Schema funcționară completă.....................................
6. Capitolul 1.4- Descrierea interacțiunii între CPU-Int.-Per.Unit........
7. Capitolul 2- Programul.......................................................................

2
Scopul proiectului este familarizarea cu interactiunea dintre
microprocesor,interfata si unitate periferica. Pentru aceasta vom folosi Arduino
UNO ,Interfata care va fi paralel-sincron si unitatea periferica care va fi LED 8x25.

Sarcina proiectari este urmatoarea: Folosind matricea LED 8x25 a se afisa o oare care
animatie.

1 Pas:Crearea schemei electronice(Schema va fi reprezentata pe Arduino UNO,findca din


pacate nu am putut utiliza in programa de asamblare a schemei .Microcontrolerul Arduino
Pro Mini.

2 Pas:Elaboararea codului(alegoritmului) pentru afisarea animetie pe unitatea periferica.

Cite ceva despre Arduino UNO:

Fig. 1.1.1 Arduiono Uno

3
 

Informatii generale

Arduino uno controler construit pe ATmega328 (descriere tehnică, pdf ). Platforma are 14 intrări digitale ( 6 dintre care pot
fi utilizate ca SHIM ), 6 intrări analogice, generator de cuarț de 16 MHz, conector USB, conector de alimentare, conector
ICSP și buton de resetare. Pentru a funcționa, trebuie să conectați platforma la computer prin cablu USB sau să o alimentați
folosind adaptorul sau bateria AC / DC.

Spre deosebire de toate plăcile anterioare care utilizează microcontrolerul USB FTDI pentru comunicații USB, un
nou Arduino Uno utilizează microcontroler ATmega8U2 (descriere tehnică, pdf).

Caracteristici

Microcontroler ATmega328

Tensiune de lucru 5V

Tensiunea de intrare ( recomandată ) 7-12 V

Tensiunea de intrare ( limită ) 6-20 V

Intrări / ieșiri digitale 14 ( 6 dintre care pot fi utilizate ca


ieșiri SHIM)

Intrări analogice 6

Curent constant prin intrare / ieșire 40 mA

DC pentru ieșire 3,3 V 50 mA

Memorie flash                                                       32 Kb ( ATMega328 ) din care 0,5 Kb sunt


utilizate pentru bootloader

RAM                                                                         2 Kb ( ATMega328 )

Eeprom 1 Kb ( ATMega328 )

Frecvența tactică 16 MHz

Schema:

4
Fig. 1.1.2 Schema de referinta.

Putere

Arduino uno poate primi energie printr-o conexiune USB sau de la o sursă de alimentare
externă. Sursa de alimentare este selectată automat.

Puterea externă ( non-USB ) poate fi furnizată prin convertorul de tensiune AC / DC ( unitate


de alimentare ) sau baterie. Convertorul de tensiune este conectat printr-un conector de 2,1
mm cu un pol pozitiv central. Firurile bateriei sunt conectate la conectorii de alimentare Gnd
și Vin.

Platforma poate funcționa cu putere externă de la 6 V la 20 V. Cu o sursă de alimentare sub 7


V, puterea de 5V poate produce mai puțin de 5 V, în timp ce platforma poate funcționa
instabil. Când utilizați tensiune peste 12 V, regulatorul de tensiune poate supraîncălzi și
deteriora circuitul. Interval recomandat de la 7 V la 12 V.

Constatări de putere:

 VIN. Intrarea este utilizată pentru a furniza energie de la o sursă externă ( în absența a 5 V de
la un conector USB sau o altă sursă de alimentare reglabilă ). Furnizarea de alimentare are loc
prin această ieșire.

5
 5V. O sursă de tensiune reglabilă utilizată pentru alimentarea microcontrolerului și a
componentelor de pe placă. Sursa de alimentare poate fi furnizată de la ieșirea VIN prin
regulatorul de tensiune sau de la conectorul USB sau o altă sursă de tensiune reglabilă de 5
V. 
 3V3. Tensiune la ieșire 3.3 În generat de regulatorul încorporat pe placă. Consumul maxim
de curent este de 50 mA.
 Gnd. Constatări la sol.

Memorie

Microcontrolerul ATmega328 are o memorie flash de 32 kB, din care 0,5 kB sunt utilizate
pentru stocarea încărcătorului, precum și 2 kB de RAM ( SRAM ) și 1 Kb EEPROM. ( care
este citit și înregistrat folosind Bibliotecile EEPROM).

Intrări și ieșiri

Fiecare dintre cele 14 concluzii digitale Uno poate fi configurat ca intrare sau ieșire folosind
funcții pinMode ( ), digitalWrite ( ), și digitalRead ( ), . Rezultatele funcționează la o tensiune
de 5 V. Fiecare ieșire are un rezistor de încărcare (, în mod implicit, este dezactivat ) 20-50
kOhm și poate trece până la 40 mA. Unele concluzii au funcții speciale:

 Anvelopă secvențială: 0 ( RX ) și 1 ( TX ). Rezultatele sunt utilizate pentru a obține ( RX ) și


pentru a transfera ( TX ) date TTL. Aceste descoperiri sunt conectate la concluziile
corespunzătoare ale cipului de bus ATmega8U2 USB-TL.
 Întrerupere externă: 2 și 3. Aceste descoperiri pot fi configurate pentru a apela la întrerupere
fie la valoarea mai mică, fie pe partea frontală sau din spate sau când valoarea se schimbă.
Detaliile sunt în descrierea funcției attachInterrupt ( ).
 SHIM: 3, 5, 6, 9, 10 și 11. Oricare dintre concluzii prevede SHIM cu o rezoluție de 8 biți
folosind o funcție analogWrite ( ).
 SPI: 10 ( SS ), 11 ( MOSI ), 12 ( MISO ), 13 ( SCK ). Folosind aceste descoperiri, SPI este
legat, pentru care este utilizat Biblioteca SPI.
 LED: 13. LED încorporat conectat la ieșirea digitală 13. Dacă valoarea la concluzie are un
potențial ridicat, LED-ul este pornit. 

Pe platforma Uno, 6 intrări analogice ( sunt desemnate A0 .. A5 ), fiecare cu o rezoluție de 10


biți ( adică poate lua 1024 valori diferite ). Concluziile standard au un interval de măsurare de
până la 5 V în raport cu solul, cu toate acestea, este posibilă modificarea limitei superioare
prin ieșirea și funcția AREF analog Referință ( ). Unele concluzii au funcții suplimentare:

 I2C: 4 ( SDA ) și 5 ( SCL ). Prin constatări, I2C ( TWI ) este conectat, pentru a cărui
creare Biblioteca de sârmă.

6
Software automat ( ) repornire

Uno proiectat astfel încât înainte de a scrie noul cod, repornirea să fie efectuată de Arduino
pe computerul propriu-zis și nu prin apăsarea butonului de pe platformă. Una dintre liniile de
cip ATmega8U2 DTR care controlează fluxul de date ( DTR ) este conectată la resetarea
repornirii la microcontrolerul ATmega328 prin condensator 100 nF. Activarea acestei linii,
adică semnalizare la nivel scăzut, repornește microcontrolerul. Programul Arduino, folosind
această funcție, încarcă codul cu clicul butonului Încărcare în mediul de programare în sine.
Feed-ul de semnal de nivel scăzut pe linia DTR este coordonat cu începutul înregistrării
codului, ceea ce reduce timpul de încărcare a încărcătorului.

Funcția are o altă aplicație. Anulați repornirile de fiecare dată când vă conectați la Arduino pe
un computer cu Mac X sau Linux ( prin USB ). Următoarea jumătate de secundă după
repornire este un bootloader. În timpul programării, mai mulți dintre primii octeți de cod sunt
întârziați pentru a evita primirea de date incorecte de către platforma ( pe lângă noul cod de
program ). Dacă se efectuează o singură depanare a schiței înregistrate pe platformă sau orice
alte date sunt introduse la prima pornire, asigurați-vă că programul de pe computer se
așteaptă într-o secundă înainte de a transfera datele.

Pe Uno, este posibil să opriți linia de resetare automată prin ruperea liniei corespunzătoare.  
Contactele microschain de la ambele capete ale liniei pot fi conectate pentru a restabili. Linia
este etichetată « RESET-EN ». De asemenea, este posibil să opriți repornirea automată prin
conectarea unui rezistor de 110 ohmi între o sursă de 5 V și această linie.

Protecție conector USB

B Arduino uno ( ) este încorporată siguranța auto-instalată, protejând portul USB al


computerului de curenții de scurtcircuit și de curent curent. Deși aproape toate computerele
au o protecție similară, cu toate acestea, această siguranță oferă o barieră
suplimentară. Siguranța este declanșată atunci când curentul trece mai mult de 500 mA prin
portul USB și închide lanțul până la restabilirea valorilor normale ale curentului.

Caracteristici fizice

Lungimea și lățimea plăcii de circuit imprimat Uno este de 6,9 și, respectiv, 5,3 cm.
Conectorul USB și conectorul de alimentare depășesc limitele acestor dimensiuni. Patru găuri
din placă vă permit să îl fixați la suprafață. Distanța dintre concluziile digitale 7 și 8 este de
0,4 cm, deși între alte concluzii este de 0,25 cm.

7
Capitolul 1
 Descrierea unității periferice

Fig 1.2.1 Matriceea 8x25(în realitate)

Lipirea matricei LED este un lucru complex. Exista o multime de moduri de a face acest
lucru si aici vom prezenta 2 metode.

Prima metodă este este ca în figura de mai sus 1.1. , așa noi am obținut un rezultat frumos de
lipire a matricei LED. Mai întâi trebuie să conectăm toate cablurile pozitive ale LED-urilor în
coloane și conductorul negativ în rânduri.

Acum faceți acest lucru luând cablul pozitiv al primului LED și îndoiți-l în jos la celelalte
LED-uri, lipiți pinii care se ating unul de celălalt, de aici luați ultimul cablu pe care l-ați lipit
și îndoiți-l din nou și repetați până când aveți toate cablurile pozitive conectate în coloană,
apoi tăiați cablurile pe care nu le-ați folosit.

Acum partea dificilă este conectarea pinilor negativi într-un rând, deoarece nu îi puteți îndoi
și lipi așa cum ați făcut cu cablurile pozitive. Acum am folosit jumperi mici de la un fir solid
și le conectăm așa cum puteți vedea în imagine.A doua metodă este să începeți la fel ca în
primul mod, dar singura diferență este în conectarea pinilor negativi. Această metodă
economisește mult timp și este mult mai simplă.

Trucul este să puneți niște bandă sau altceva pe conexiunile coloanelor pentru a le izola de
pinii negativi și dacă faceți asta puteți îndoi și cablurile negative și le conectați așa cum ați
făcut cu cele pozitive.

8
Capitolul 1.2
 Elaborarea interfeței

Acum să vedem cum putem interfața 8x25 Shift Register 74HC595


Dot Matrix LED Display cu Arduino Board pentru a afișa unele texte și numere.

Acest afișaj atrage mult curent, de aceea trebuie să rulăm modulul de la sursa de
alimentare externă în loc de alimentarea de 5V de la placa Arduino. Trebuie să
utilizați un adaptor de putere extern de 5V, 3A, conectat la Pinul 5V și GND al plăcii
Arduino.
Deoarece Registru 74HC595 necesită mult transfer de date, trebuie să se conecteze la
pinii SPI hardware de pe un microcontroler. Pentru plăcile Arduino, cum ar fi UNO /
Nano, acei pini sunt digitali 13 ( SCK ), 12 ( MISO ), 11 ( MOSI ) și 10 ( SS ).
Conectați CLK, CS, DIN Pin de 8x32 LED Dot Matrix Display la Arduino pin digital 13,
10, 11.
Utilizăm Registru 74HC595. Dacă doriți să faceți mai multe afișaje cu lanțuri de margarete
pentru a crea un afișaj mai mare, conectați DOUT-ul primului afișaj la DIN-ul următorului
afișaj. VCC, GND, CLK și CS vor fi partajate între afișaje.
Controlul modulului Registru 74HC595 este o sarcină complexă și necesită o mulțime de
linii de cod. Din fericire, biblioteca MD_Parola este disponibilă pentru a elimina acele
complexități, astfel încât să putem emite comenzi simple pentru controlul afișajului.

9
Fig.1.2.2Diagrama logica a Registrului 74HC595

Capitolul 1.3
 Schema funcționară completă

10
Fig 1.3.1 Schema funcționară completă a matricei LED

11
Capitolul 1.4
 Descrierea interacțiunii între componente

Comunicare

Pe platformă Arduino unoau fost instalate mai multe dispozitive pentru a comunica cu


computerul, alte dispozitive Arduino sau microcontrolere. ATmega328 acceptă interfața serială
UART TTL ( 5 V ), realizată prin concluziile 0 ( RX ) și 1 ( TX ). Cipul ATmega8U2 instalat pe placă
trimite această interfață prin USB, programele de pe computer „comunică” cu placa prin portul
COM virtual. Firmware-ul ATmega8U2 folosește drivere USB COM standard, nu sunt necesare
drivere terțe, dar fișierul ArduinoUNO.inf va fi necesar pentru conectarea Windows.  Monitorizarea
magistralei seriale ( Serial Monitor ) Arduino vă permite să trimiteți și să primiți date text atunci
când sunteți conectat la platformă.LED-urile RX și TX de pe platformă vor clipi atunci când
transferați date prin cipul FTDI sau conexiunea USB (, dar nu și atunci când utilizați transmisia
secvențială prin concluziile 0 și 1 ). 

Biblioteca SoftwareSerial poate crea un transfer de date consistent prin oricare dintre rezultatele
digitale ale lui Uno.

ATmega328 acceptă interfețele I2C ( TWI ) și SPI. Arduino include biblioteca Wire pentru o
ușurință de utilizare a I2C.

Programare

Platforma este programată folosind software-ul Arduino. Din meniu Instrumente > Board «
Arduino Uno » ( este selectat în funcție de microcontrolerul instalat ).

Microcontrolerul ATmega328 vine cu un bootloader înregistrat care facilitează înregistrarea de noi


programe fără a utiliza programatori externi. Comunicarea este realizată prin protocolul original
STK500.

Este posibil să nu utilizați bootloader-ul și să programați microcontrolerul prin concluziile


programării intracurricate ICSP ( ). 

Programul:

Porniți un LED
Să încercăm să pornim un LED. În primul rând, indicăm rezultatele plăților utilizate
( linia de ceas este clockPin, datele sunt dataPin, zăvorul este patchPin ).

B configurare ( ) stabilește regimul pentru ei REZULTAT și setați zăvorul la un nivel


ridicat, astfel încât registrul să nu primească semnale.

B bucla ( ) încercați să trimiteți ceva în registru. Primul set Scăzut pe zăvorul


( începem transferul de date. Acum, registrul acceptă semnale de la Arduino ). În

12
continuare, trimitem date în formă binară. De exemplu, trimiteți octetul 0b10000000 (
primul LED ) va trebui să se aprindă. La sfârșit am stabilit INALT pe zăvorul
( terminăm transmiterea datelor ).

int dataPin = 9; // к выводу 14 регистра SD


int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
}

void loop() {
digitalWrite(latchPin, LOW); // начинаем передачу данных
shiftOut(dataPin, clockPin, LSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}
Dacă în shiftOut ( ) schimba LSBFIRST pe MsbfirST, apoi se va porni nu primul, ci
ultimul LED din lanțul de circuite.

Când lucrați cu mai multe LED-uri, nu este foarte convenabil să scrieți constant trei
linii de cod pentru fiecare LED individual. Prin urmare, vom emite codul ca funcție și
vom clipi un al treilea LED.

int dataPin = 9; // к выводу 14 регистра SD


int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
}

void loop() {
setByte(0b00100000);
delay(1000);
setByte(0b00000000);
delay(1000);
}

void setByte(byte value) {


digitalWrite(latchPin, LOW); // начинаем передачу данных
// устанавливаем нужный байт
shiftOut(dataPin, clockPin, LSBFIRST, value);
digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}

Animatie LED

13
O altă schiță.

int dataPin = 9; // к выводу 14 регистра


int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

byte path[4] = {
B11000011,
B00111100,
B00100100,
B00011000
};

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {
for (int i = 0; i < 4; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, path[i]);
digitalWrite(latchPin, HIGH);
delay(250);
}
for (int i = 0; i < 4; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, path[3 - i]);
digitalWrite(latchPin, HIGH);
delay(250);
}
}
B calea [ ] indicăm secvența LED-urilor pornite și oprite. Între aceste secvențe va
apărea animație.

Pentru a anima luminile de rulare, puteți implementa sarcina prin funcție bitWrite ( ).

int dataPin = 9; // к выводу 14 регистра


int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {
byte byteToSend = 0; //Создаем пустой байт B00000000
for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится
позиция изменяемого бита
byteToSend = 0; // Обнуляем байт при каждом проходе
bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим
B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д.

14
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем
сигнал при помощи MSBFIRST, грузим с первого бита
digitalWrite(latchPin, HIGH);
delay(50);
}
}

Concluzie

Bibliografie
1)https://www.techopedia.com/definition/2874/microprocessor
2)https://www.instructables.com/810-LED-Matrix-with-4017/
3)https://www.tutorialspoint.com/microprocessor/
microprocessor_8086_overview.htm
4)https://en.wikipedia.org/wiki/Intel_8086#/media/File:Intel_C8086.jpg
5)https://www.techopedia.com/definition/2874/microprocessor
6)https://www.elprocus.com/ic-4017-pin-configuration-application/

15

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