Sunteți pe pagina 1din 8

Ministerul Educaţiei, Culturii și Cercetării al Republicii

Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

Disciplina: Interfețe de comunicare

RAPORT
Lucrarea de laborator nr. 3
Tema: Cercetarea interfețelor standard de comunicații în cod
serie. Regim Slave.

A efectuat:
st. gr. CR-221fr Ciobanu Stanislav

A verificat:
conf. univ. Ababii Victor

Chişinău - 2024
Lucrare de laborator nr.3

1. Tema lucrării:
Cercetarea interfețelor standard de comunicații în cod serie. Regim Slave.

2. Scopul lucrării:
Cercetarea, proiectarea și programarea interfețelor standard de comunicare în cod serie (COM,
RS, UART, USART, I2C, SPI). Regim Slave. Proiectarea în mediul Proteus sau Fritzing a unui
sistem de transfer date în cod serie în baza Kit-ului Arduino UNO. Datele sunt introduse de la
tastatura KBD cu 4x4 taste. Vizualizarea datelor are loc pe osciloscopul Terminal.

3. Resurse hardware şi software necesare pentru efectuarea lucrării:


1. Calculator PC;
2. Acces la Internet;
3. Mediul de proiectare Proteus sau Fritzing;
4. Îndrumare electronice pentru utilizarea, proiectarea și programarea sistemelor în
baza Kit-ului Arduino UNO.
4. Sarcina tehnică pentru efectuarea lucrării de laborator:
1. Să se instaleze mediul de dezvoltare Arduino IDE și bibliotecile respective;
2. Să se instaleze mediul de dezvoltare Proteus și bibliotecile respective;
3. Să se asambleze schema electrică de principiu (Proteus) a sistemului pentru
achiziția datelor de la KBD, transmiterea acestora în cod serie prin portul UART
(TxD – RxD) și afișarea diagramei de timp în fereastra de dialog Terminal;
4. Să se elaboreze programul (Arduino IDE) care efectuează achiziția datelor de la
KBD cu 16 taste cu scanare în regim dinamic;
5. Să se elaboreze programul care transmite datele în portul UART în cod serie;
6. Să se incarce codul HEX al programului elaborat în mediul Proteus pentru
testare funcțională;
7. Procesul de transmitere a datelor să se analizeze în baza elementului Terminal.

I. Placa de dezvoltare Arduino UNO

Descrierea detaliată este în fișierele anexate la Lucrarea de laborator pe


platforma ELSE. Surse electronice suplimentare:
1. http://masterat.fcim.utm.md/noutati/Senzori,%20traductoare%20si%20achiz
iti i%20de%20date%20cu%20Arduino%20Uno.pdf
2. http://masterat.fcim.utm.md/noutati/Arduino-A-Quick-Start-Guide-2nd-
Edition-The-Pragmatic-Programmers-2015.pdf
3. http://masterat.fcim.utm.md/noutati/Starter-Kit-for-Arduino-user-manual.pdf
4. http://masterat.fcim.utm.md/noutati/Lectii_arduino_2pdf.pdf
5. http://masterat.fcim.utm.md/noutati/Proteus_carte%20simpo%20feb.%2020
09 (1).pdf
II. Codificarea tastelor pentru transferul datelor

Tabela de codificare a tastelor de achiziție a datelor de la KBD.


0, dec: 48, hex: 30, oct: 60, bin: 110000
1, dec: 49, hex: 31, oct: 61, bin: 110001
2, dec: 50, hex: 32, oct: 62, bin: 110010
3, dec: 51, hex: 33, oct: 63, bin: 110011
4, dec: 52, hex: 34, oct: 64, bin: 110100
5, dec: 53, hex: 35, oct: 65, bin: 110101
6, dec: 54, hex: 36, oct: 66, bin: 110110
7, dec: 55, hex: 37, oct: 67, bin: 110111
8, dec: 56, hex: 38, oct: 70, bin: 111000
9, dec: 57, hex: 39, oct: 71, bin: 111001
III. Scheme pentru cercetare

1. în mediul de proiectare Proteus să se asambleze schema pentru achiziția datelor de la


KBD 4x4 taste.
2. La ieșirea TxD al Kit-ului Arduino UNO să se conecteze Sursa Terminal. Iată schema
electrică de principiu (Proteus) a sistemului pentru achiziția datelor de la KBD, transmiterea
acestora în cod serie prin portul UART (TxD – RxD) și afișarea diagramei de timp în fereastra de
dialog Terminal:
3. În mediul Arduino IDE să se elaboreze programul care achiziționeaza datele de la
KBD le codifica în conformitate cu Tabelul prezentat mai sus și le transmite în portul
UART (TxD).
4. Rezultatul compilării se încarcă în schema Proteus și se verifică funcționalitatea.
5. Rezultatele se prezintă în formă de grafice sau diagrame.
6. Pe ecranul Terminal se afișează datele achiziționate de la KBD.

Codul-sursă în limbajul C pentru afișarea cifrei tastate:


// Includem biblioteca (header-ul) pentru utilizarea tastaturii KBD
#include <Keypad.h>

// Declaram constantele numarului de coloane si randuri


// Cunoastem ca dimensiunea tastaturii este de 4x4 taste
const int ROWS = 4;
const int COLS = 4;

// Definirea unei matrici de caractere care


// reprezinta dispunerea tastelor pe tastatura
char keys[ROWS][COLS] = {
{'7','8','9', '/'},
{'4','5','6', '*'},
{'1','2','3', '-'},
{'C','0','=', '+'}
};

// Definim pinii folositi pentru randuri si coloane (tipul de date byte)


byte pin_rows[ROWS] = {2, 3, 4, 5};
byte pin_column[COLS] = {6, 7, 8, 9};
// Cream un obiect de tip Keypad si ii atribuim matricea de caractere si pinii
anteriori
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROWS, COLS);

// Definim un pin (prin constanta) pentru controlul unui LED


#define ledpin 13

// Functia de configurare
void setup()
{
// Setam pin-ul LED-ului ca iesire
pinMode(ledpin,OUTPUT);
// Il setam la nivel logic HIGH
digitalWrite(ledpin, HIGH);
// Initializam comunicarea serial
// Rata de transfer a datelor - 9600 bps (biti pe secunda)
Serial.begin(9600);
}

// Funcția principală a programului Arduino ce


// ruleaza continuu repetandu-se in mod infinit
void loop()
{
// Apelam functia de verificare daca a fost apasata o tasta pe tastatura
matriceala
char key = keypad.getKey();
// Daca o tasta a fost apasata (adica key este diferit de NULL)
if(key) {
// Switch pentru a determina acțiunea corespunzătoare tastei apasate
switch(key) {
// Dacă tasta este = (butonul de finalizare a operațiunii)
case '=':
// LED-ul asociat se stinge (se setează pin-ul LED-ului la LOW)
digitalWrite(ledpin, LOW);
break;
// Dacă tasta este C (butonul de pornire ON)
case 'C':
// LED-ul asociat se aprinde (se setează pin-ul LED-ului la HIGH)
digitalWrite(ledpin, HIGH);
break;
// Altfel, se afișeaza tasta apasata prin portul serial
default:
Serial.println(key);
}
}
}

Fișierul HEX generat de mediul Arduino IDE:


Rezultatul compilării (testarea funcțională):
Conectarea osciloscopului digital:
Concluzii
În această lucrare de laborator, am realizat un sistem simplu de interacțiune
cu o tastatură matriceală folosind o placă Arduino Uno și o bibliotecă specific
(Keypad.h). Scopul acestui proiect a fost să înțelegem cum să folosim o tastatură
matriceală KBD și să interacționăm cu ea utilizând un microcontroler Arduino. La
fel am obținut unele abilități de bază de lucru în mediul Arduino IDE pentru
elaborarea programelor și în Proteus pentru testarea funcționalității acestor
proiecte. M-am învățat să transmit și recepționez date din portul UART (emițătorul
TxD și receptorul RxD). Vreau să menționez că acestă lucrare are un rol crucial în
dezvoltarea mea ca viitor specialist, deoarece auzisem de nenumărate ori de
Arduino și chiar eram foarte cointeresat să-mi formez abilități de proiectare și
implementare a proiectelor pe baza acestuia, deoarece văd în acestea un potential
economic.

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