Sunteți pe pagina 1din 25

UNIVERSITATEA OVIDIUS CONSTANA

LUCRRI
DE
LABORATOR

Microprocesoare i microcontrolere

Ograzeanu Paul Mdalin


FIZICA TEHNOLOGICA
ANUL IV

[Type text]

[Type text]

CUPRINS

L I. Interfaarea dispozitivelor simple la


microcontroler ........................................................... 3
LII. Interfaarea afioarelor cu 7
segmente ................................................................................ 6
LIII. Interfaarea afioarelor inteligente (partea
I) .................................................................... 9
LIV. Interfaarea afioarelor inteligente (partea a IIa))...........................................................12
LV. Conversia analog
digital ...............................................................................................
....14
LVI. Interfaare motoarelor pas cu pas unipolare la
microcontroler .......................................18
LVII. Comunicaii seriale i conversia TTL-RS232
21

[Type text]

[Type text]

LABORATORUL I

INTERFATAREA DISPOZITIVELOR SIMPLE LA MICROCONTROLER


1.1. Scopul lucrarii
Familiarizarea cu limbajul de nivel inalt pentru microcontrolere de tip:PIC,clasa de mijloc
denumit JAL(Just Anather Language).
1.2. Aparatura necesara
Statia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler:
PIC 16F877, programatorul :Pickit2 si software-ul aferent programului.
1.3. Consideratii teoretice
Limbajul de programare JAL este un limbaj de nivel inalt in care sintaxele liniilor de cos sunt
foarte asemanatoare cu cele ale limbajului Basic pentru PC. Se poate numi Basic pentru
microcontrolere.
Prin dispozitive periferice simple intelegem led-uri, butoane, buzere sau difuzoare,motoare
de curent continu sau pas cu pas, etc.
1. Biblioteca jpic este interfata spre resursele microcontrolerului si acceseaza
registrii ce definesc porturile fizice cat si directia de comunicatie a acestora.
2. Biblioteca jdelay contine rutina de intarziere cu asteptare. Fiecare rutina intarzie
cu timpul indicat de catre programator si il inmulteste cu argumentul din
paranteza. Aceste rutine de intarziere necesita frecventa de tact a oscilatorului de
4Mhz, 10MHz si 20MHz. Precizia este de cateva procente si cu cat timpul este mai
scurt ,cu atat eroarea este mai mare.
1.4.SCHEMA ELECTRICA

[Type text]

[Type text]

D1
R2
220

LUMILED

D2

U1
13
14
1
2
3
4
5
6
7
8
9
10

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

33
34
35
36
37
38
39
40

R3
220

LUMILED

+5V

15
16
17
18
23
24
25
26

R1
10K

19
20
21
22
27
28
29
30

PIC16F877

1.5.Aplicatii
Se da urmatorul cod:
Include 16f877_20
--se defineste microcontrolerul folosit si frecventa oscilatorului
Include jpic
--interfata de baza spre resursele microcontrolerelor PIC 16x84 si 16f87x
Inclide jdelay
--biblioteca ce contine rutinele de intarziere
Pin_b0_direction= output se defineste pinul 0 din portul B ca fiind iesire
Forever loop
--start program in bucla infinita
Pin_b0 =hight
--pinul 0 din portul B trece in starea logica 1
Delay_100ms(5)
--intarziere de 0,5 secunde
Pin_b0 =low
--pinul 0 din portul B trece in starea logica 0
Delay_100ms(5)
-- intarziere de 0,5 secunde
End loop
--sfarsit bucla ,reintializeaza
Acest cod face ca ledul conectat intre pinul 0 al portului B si masa sa se aprinda timp de 500
de milisecunde si sa fie stins tot atat timp.
Se cere:
1.Modificati codul initial astfel incat led-ul sa fie aprins timp de 100 de milisecunde si sa
ramana stins timp de 400 de milisecunde.
pin_b0 = hight
delay_100ms(1)
pin_b0 = low
delay_100ms(4)
2. Instalati un al doilea led intre pinul 1 din portul B al microcontrolerului si masa, apoi
completati codul astfel incat ledul 1 sa fie aprins timp de 300 milisecunde, dupa care se stinge
cel de-al doilea led timp de 300 de milisecunde.
Include 16f877_20
Include jpic
Inclide jdelay
Pin_b0_direction= output
Pin_b1_direction = output
Forever loop
Pin_b0 =hight
Delay_100ms(3)
4

[Type text]

[Type text]

Pin_b0 =low
Delay_100ms(7)
Pin _b1 = hight
Delay_100ms(3)
Pin_b1 = low
Delay_100ms(7)
End loop
3. Modificati codul astfel incat ambele leduri sa clipeasca in acelasi timp cu o cadenta de
4 ori pe secunda.
Forever loop
Pin_b0 = hight
Pin_b1 = hight
Delay_100ms(2)
Pin_b0 = low
Pin_b1 = low
Delay_50ms(1)
End loop
4. Instalati pe pinul 2 din portul B un push-button. Modificati si completati codul a.i.
la apasarea butonului,ledul 1 sa se aprinda cu ocadenta de 4 ori pe secunda si led-ul
2 sa fie stins cand este eliberat ledul 2 sa ramana aprins.
Pin_b0_direction = output
Pin_b1_direction = output
Pin_b2_direction = input
Forever loop
If pin_b1 = low
Pin_b0 = hight
Delay_100ms(2)
Pin_b0 = low
Delay_50ms(1)
Else pin_b1 = hight
Pin_b0 = low
End if
End loop

[Type text]

[Type text]

LABORATORUL II
INTERFAAREA AFIOARELOR CU 7 SEGMENTE
2.1. Scopul lucrarii
Interfatarea directa cu polarizare independenta si multiplexarea afisoarelor cu 7 segmente.
2.2. Aparatura necesara
Statia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler:
PIC 16F877, programatorul :Pickit2 si software-ul aferent programului.
2.3. Consideratii teoretice
Presupunem ca dispunem de un afisor cu anod comun, pinul common se va lega la sursa de
alimentare iar segmentele a...g se vor conecta la masa prin intermediul unor rezistente de
330 de ohmi.

[Type text]

[Type text]

In general afisoarele cu leduri nu consuma un curent mai mare de 20-25 mA aper segment,
asadar, se pot conecta direct la pinii microcontrolerului deoarece curentul maxim generat de
un singur pin al microcontrolerului este de maxim 20mA fara a fi nevoie de buffere externe
de curent.
Bibioteca jseven contine declaratii destinate afisarii cifrelor 0....9 pe afisoarele numerice cu
anod sau catod comun cu interfatare directa la microcontroler. Aceasta biblioteca apeleaza si
biblioteca jsevenp.
Biblioteca jsevenpcontine asignarile pinilor I/O utilizati de microcontroller pentru
conexiunea cu afisoarele numerice.Aceasta biblioteca poate fi modificata de catre
programator in functie de schema hardware pe care se lucreaza.
Instructiunea pentru afisarea pe digitii cu 7 segmente este seven_from_digit.Pentru ca
rezultatul instructiunii sa fie negat(cand sunt folosite afisoare cu catod comun) atunci
instructiunea se scrie sub forma !seven_from_digit . In JAL semnul exclamarii executa o
negatie a variabilei.
2.4.Schema electrica

U1
13
14
1
2
3
4
5
6
7
8
9
10

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

33
34
35
36
37
38
39
40

+5V

15
16
17
18
23
24
25
26

R1
10k

19
20
21
22
27
28
29
30

PIC16F877

2.5. Aplicatii
Se da urmatorul cod:
Include 16f877_20
Include jlib
Include jdelay
Include jseven

Port_b_direction = all_output
Port_c_direction = all_output
Port_c2_direction = input
Var byte multiplex1 = 0b_0001
Var byte multiplex2 = 0b_0010
Var byte digit1 = 0
Var byte digit2 = 0
Port_c = multiplex1
Port_b= ! seven_from_digit(digit1)
7

[Type text]

[Type text]

Acest cod face ca primul digit sa afiseze valoarea variabilei de tip octet digit1acest caz
0 .Digitul este alimentat continu, starile porturilor Bsi C raman neschimbate deoarece
instructiunile au fost executate doar o singura data, neexistand o bucla FOR.Acest lucru
se numeste ca afisorul a fost polarizat independent, adica nu exista multiplexare pe
plrturile microcontrolerului.
Se cere:
1.Completati codul astfel incat ambii digiti sa afiseze cifra 0 prin multiplexarea porturilor B si C urmarind cu atentie schema electrica.
Port_c = multiplex1
port_c = multiplex2
Port_b = !seven_from_digit(digit1)
port_b = !
seven_from_digit(digit2)
Delay_1ms
delay_1ms
2.Instalati un push-button pe pinul 2 al portului C al microcontrolerului conform schemei
electrice.Modificati si completati codul a. i la apasarea butonului variabila afisata de digitul
1 sa se incrementeze cu 1 la fiecare apasare.
If pin_c2
if digit == 10 then digit1 = 0
Them delay_100ms(3)
digit1 = digit1 + 1
Digit1 = digit1 + 1
end if
End if
3.Implementati codul de eliminare a impulsurilor parazite generate de apasarea butonului
pentru o incrementare sigura a variabilei, fara sarituri.
Var byte time = 0
Forever loop
Time= time +1
If time ==10
Then digit2 = digit2 + 1
Time = 0
End if
If digit2 ==10
Then digit1 = digit1 + 1
Digit2 = 0
End if
If digit1 ==10 then digit1 = 0 digit2 = 0
End if
Port_c =multiplex1
Port_b =!seven_from_digit(digit1)
Delay_10ms(5)
Port_c = multiplex2
Port_b = !seven_from_digit(digit2)
Delay_10ms(5)
End loop

[Type text]

[Type text]

LABORATORUL III
INTERFAAREA AFIOARELOR INTELIGENTE (PARTEA I)
3.1. Scopul lucrarii
Interfaarea driver-ului Hitachi HD44780 afior inteligent alfanumeric cu cristale
lichide.
3.2. Aparatura necesara
Staia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler: PIC 16F877, programatorul: PicKit2 i software-ul aferent programatorului.
3.3. Consideratii teoretice

[Type text]

[Type text]

Hitachi HD44780 este unul dintre cele mai cunoscute circuite integrate destinate modulelor
de afiare cu simboluri alfanumerice, caractere formate din matrice de puncte (dot-matrix
display) 7x5. Afioarele cele mai rspndite sunt cele cu 16 caractere i 2 rnduri, dar sunt
disponibile de la o singura linie pn la 4 linii de cte 16 sau 20 de caractere.
Biblioteca hd447804 asigur interfaarea pe 4 bii la controlerul Hitachi HD44780. Aceast
bibliotec apeleaz i biblioteca hd44780p care conine asignrile pinilor microcontrolerului.
Aceasta biblioteca poate fi modificat de ctre programator n funcie de legturile hardware
realizate n schema electric.
Rutinele incluse n biblioteca hd44780 sunt:
- hd44780_clear terge afiorul
- hd44780_position1 (x) poziioneaz cursorul pe linia 1 i pe poziia lui x fr s stearga
afiajul
- hd44780_position2 (x) poziioneaz cursorul pe linia 2 i pe poziia lui x fr s tearga
afiajul
- hd44780_line1 poziioneaz cursorul pe linia 1, poziia 1, fr s tearg afiajul
- hd44780_line 2 poziioneaz cursorul pe linia 2, poziia2, fr s tearg afiajul
- cursor_blink (x) pentru x = 1 cursorul i caracterul pulseaz, pentru x = 2 cursorul este
afiat, pentru x = 3 cursorul este afiat i caracterul corespunztor pulseaz
- cursor_off stinge cursorul
- cursor_left mut cursorul cu o poziie la stnga
- cursor_right mut cursorul cu o poziie la dreapta
- shift_left curge ntregul text de la stnga spre dreapta
- shift_right curge ntregul text de la dreapta spre stnga

Schema electrica
LCD1
LM016L

2
3
4
5
6
7
8
9
10

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877

15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

10

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

33
34
35
36
37
38
39
40

4
5
6

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

1
2
3

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

VSS
VDD
VEE

U1
13
14
1

RS
RW
E

3.4.

A
pl
ic
at
ii

[Type text]

[Type text]

Se d urmtorul cod:
include 16f877_20
include hd447804
include jpic
include jlib
include jdelay
hd44780_clear
hd44780_line1
hd44780 = "H" hd44780 = "e" hd44780 = "l" hd44780 = "l" hd44780 = "o" hd44780 = " "
hd44780 = "W" hd44780 = "o" hd44780 = "r" hd44780 = "l" hd44780 = "d" hd44780 = "!"
Acest cod face ca pe linia 1, ncepnd de la poziia 1, s fie afiat mesajul: Hello World!.
Se cere:
1) Modificai codul astfel nct cuvntul: Hello, s fie afiat pe prima linie, la poziia 3, iar
cuvntul: World!, s fie afiat pe rndul 2, la poziia 8.
hd44780_position1 (3)
hd44780 = "H" hd44780 = "e" hd44780 = "l" hd44780 = "l" hd44780 = "o" hd44780 = " "
hd44780_position2 (8)
hd44780 = "W" hd44780 = "o" hd44780 = "r" hd44780 = "l" hd44780 = "d" hd44780 = "!"
2) Poziionai cursorul pe linia 2, poziia 4. Completai codul astfel nct s fie afiat cursorul
i caracterul corespunztor poziiei cursorului s pulseze.
hd44780_position2 (4)
cursor_blink (3)
3) Completai codul astfel nct s se afieze acelai mesaj: Hello World, pe primul rnd, de
la poziia 1, liter cu liter, la distana de 300 de milisecunde una fa de cealalt, folosind
rutinele de ntrziere delay.
hd44780_line1
hd44780 = "H" delay_100ms (3)
hd44780 = "e" delay_100ms (3)
hd44780 = "l" delay_100ms (3)
hd44780 = "l" delay_100ms (3)
hd44780 = "o" delay_100ms (3)
hd44780 = " " delay_100ms (3)
hd44780 = "W" delay_100ms (3)
hd44780 = "o" delay_100ms (3)
hd44780 = "r" delay_100ms (3)
hd44780 = "l" delay_100ms (3)
hd44780 = "d" delay_100ms (3)
hd44780 = "!" delay_100ms (3)
4) Completai codul astfel nct mesajul: Hello World, s circule pe prima linie a afiorului
de la dreapta spre stnga folosind o ntrziere de 100ms intr-o bucl infinit.
hd44780_clear
procedure hello is
hd44780_position1 (16)
hd44780 = "H" hd44780 = "e"
11

[Type text]

[Type text]

hd44780 = "l" hd44780 = "l"


hd44780 = "o" hd44780 = " "
hd44780 = "W" hd44780 = "o"
hd44780 = "r" hd44780 = "l"
hd44780 = "d" hd44780 = "!"
end procedure
forever loop
hello
shift_right
delay_100ms
end loop

LABORATORUL IV
INTERFAAREA AFIOARELOR INTELIGENTE (PARTEA A II-A)

3.1. Scopul lucrarii


Afiarea unei variabile n binar i zecimal cu ajutorul bibliotecii: jprint.
3.2. Aparatura necesara
Staia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler:
PIC 16F877, programatorul: PicKit2 i software-ul aferent programatorului
3.3. Schema electrica

12

[Type text]

[Type text]

LCD1

2
3
4
5
6
7
8
9
10

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

33
34
35
36
37
38
39
40

4
5
6

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

1
2
3

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

VSS
VDD
VEE

U1
13
14
1

RS
RW
E

LM016L

15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

PIC16F877

3.4.Aplicatii
Se d urmtorul cod:
include 16f877_20
include hd447804
include jpic
include jlib
include jdelay
hd44780_clear
hd44780_line1
hd44780 = "B" hd44780 = "&" hd44780 = "D" hd44780 = " " hd44780 = "d" hd44780 = "i "
hd44780 = "s" hd44780 = "p" hd44780 = "l" hd44780 = "a" hd44780 = "y"
Se cere
1) Definii o variabil: number, cu valoarea iniial: 0 i afiai-o pe HD44780 pe linia 2,
la poziia 1, innd cont c microcontrolerul lucreaz pe 8 bii, deci valoarea maxim pe care o
poate lua o variabil n cod zecimal este: 255.
var byte number = 0
hd44780_position2 (1)
print_decimal_3(hd44780, number)
2) Fixai rata de refresh a afiorului la 30 de milisecunde pentru o bucl de citire (se execut
o bucl infinit la fiecare 30 de milisecunde).
forever loop
delay_10ms (3)
end loop
3) Afiai valoarea aceleiai variabile: number, dar n cod binar, ncepnd de pe linia 2, de la
poziia 6.

13

[Type text]

[Type text]

hd44780_position2 (6)
print_binary_8(hd44780, number)
4) Incrementai valoarea variabilei: number, o dat la aproximativ o secund, dar pstrnd
valoarea refresh-ului la 30 de milisecunde.
var byte number = 0
var byte time = 0
forever loop
hd44780_position2 (1)
print_decimal_3(hd44780, number)
delay_10ms (3)
time = time + 1
if time == 34 then number = number + 1 time = 0
end if
if number == 256 then number = 0
end if
end loop

LABORATORUL V
CONVERSIA ANALOGDIGITAL
4.1.Scopul lucrarii
Conversia analog-digital n microcontrolerul PIC 16F877. Msurarea i calibrarea unui
semnal analogic injectat n intrarea AN0. Afiarea rezultatului pe un display alfanumeric
HD44780.
4.2. Aparatura necesara
Staia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler: PIC 16F877, programatorul: PicKit2 i software-ul aferent programatorului.
4..3. Consideratii teoretice

14

[Type text]

[Type text]

Parametrii cei mai important ce definesc un convertor analog-digital sunt:


-rezoluia numrul de stri logice distincte maxime pentru o tensiune de intrare.
Exemplu:
Convertorul este pe 10 bii deci are 1024 de stri distincte i cap de scal 5 voli. Atunci
rezoluia va fi 5V/1024 stri posibile = 4.8 mV. Deci semnalul cel mai mic msurat nu poate fi
mai mic dect 4.8V n cazul convertorului A/D integrat n PIC 16F877.
-cap de scal (Full Scale) - cea mai mare valoare posibil la ieirea convertorului A/D
-timpul de conversie intervalul de timp necesar generrii codului binar din momentul
nceperii conversiei. Se mai numete i timp de achiziie.
-eroarea de offset valoarea digitala de ieire corespunztoare unei tensiuni de intrare nule.
Microcontrolerul PIC 16F877 are n structura intern un convertor de 10 bii cu 8 canale
multiplexate. Este un convertor de uz general suficient de precis pentru multe aplicaii
precum msurarea tensiunii i curentului n industrie pana la msurarea semnalelor
bioelectrice (foarte mici).
Biblioteca janalog apeleaz regitrii interni ai microcontrolerului pentru conversia analogdigital i conine i rutine de conversie a rezultatului n diferite formate, deoarece variabila
de lucru pentru microcontrolerul PIC 16F877 este de doar 8 bii (adic o valoare zecimal de
255). Rezultatul conversiei analog-digitale poate lua valori intre 0 i 1023, deci rezultatul va fi
spart n mai multe variabile.
Biblioteca bin2bcd3 convertete rezultatul msurtorii, care este format din doi octei
(bytes) n 3 variabile de tip octet (byte) pentru manipularea uoar a rezultatului conversiei
analog-digitale.

4.4. Schema electrica

15

[Type text]

[Type text]

4.5 Aplicatii
Se d urmtorul cod:
include f877_20
include jpic
include janalog
include jprint
include jdelay
include hd447804
hd44780_clear -- terge afiorul
ad1_noref
forever loop
ch0_on -- pornete conversia pe canalul 0
ch_write_1023 -- convertete rezultatul conversiei
hd44780_line1
print_hexadecimal_2 ( hd44780, isd, "0" )
hd44780_position1 (2)
print_hexadecimal_2 ( hd44780, lsd, "0" )
delay_100ms (3)
end loop.
Se cere:
1) Afiai pe rndul 2 al afiorului valorile parametrilor isd (intermediate significant digit) i
lsd (less significant digit) n baza 10. Pentru fiecare msurtoare trecei n tabelul 1 rezultatul fiecrui parametru.
hd44780_line2
print_decimal_2 ( hd44780, isd, "0" )
hd44780_position2 (3) -- pentru o mai bun vizualizare a celor 2 parametrii
print_decimal_2 ( hd44780, lsd, "0" )
2) ncepnd de la 0, cretei valoarea tensiunii analogice aplicat la intrarea convertorului n
pai de 500mV pn atingei capul de scal. Introducei valorile digitale msurate n tabelul
1.

Valoare analogic
(V)
0
0,5
1
1,5
2
2,5
3
3,5

Valoare
afiat
0000
0102
0205
0307
0409
0512
0614
0716

Valoare isd
00
01
02
03
04
05
06
07
16

Valoare
lsd
00
02
05
07
09
18
20
22

[Type text]
4
4,5
5

[Type text]
0818
0921
1023

08
09
16

24
33
35

3) Completai codul astfel nct la fiecare valoare ntreag a tensiunii s se aprind cte un
LED.
Exemplu:
Pentru tensiunea de 1V s se aprind LED1 i aa mai departe.
if isd == 00 then if lsd == 00 then
pin_d0 = low
pin_d1 = low
pin_d2 = low
pin_d3 = low
pin_d4 = low
end if
end if
if isd >= 02 then if lsd >= 05 then
pin_d0 = high
pin_d1 = low
pin_d2 = low
pin_d3 = low
pin_d4 = low
end if
end if
if isd >= 04 then if lsd >= 09 then
pin_d0 = high
pin_d1 = high
pin_d2 = low
pin_d3 = low
pin_d4 = low
end if
end if
if isd >= 06 then if lsd >= 20 then
pin_d0 = high
pin_d1 = high
pin_d2 = high
pin_d3 = low
pin_d4 = low
end if
end if
if isd >= 08 then if lsd >= 24 then
pin_d0 = high
pin_d1 = high
pin_d2 = high
pin_d3 = high
pin_d4 = low
end if
pin_d2 = hight
end if
pin_d3 = hight
if isd >= 16 then if lsd >= 35 then
pin_d4 = hight
pin_d0 = high
end if
pin_d1 = high
end if.

17

[Type text]

[Type text]

LABORATORUL VI
INTERFAAREA MOTOARELOR PAS CU PAS UNIPOLARE LA
MICROCONTROLER

5.1.Scopul lucrarii
Interfaarea motoarelor pas cu-pas folosind driver-ele de putere ULN2003

5.2. Aparatura necesara


Staia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler: PIC
16F877, modulul cu driver-ul de putere (ULN2003), programatorul: PicKit2 i software-ul aferent
programatorului.

18

[Type text]

[Type text]

5.3. consideratii teoretice


Circuitul integrat ULN2003 conine 7 drivere de putere (figura 1), fiecare constnd din dou tranzistoare n
conexiune Darlington. Comanda lor se face ntr-o gam larg a tensiunii de deschidere, putnd fi folosite
semnale TTL (05V) ct i CMOS (030V).

Secvena de comand a motoarelor pas-cu-pas unipolare este prezentat n figura 2.

5.4. Schema electrica

19

[Type text]

[Type text]

5.5. Aplicatii

Se cere:
S se scrie un program n JAL, care la apsarea butonului B1 s acioneze motorul pas-cu-pas nainte
i la apsarea butonului B2 s acioneze motorul napoi. Timing-ul ntre secvene trebuie s fie de 500
milisecunde.
Not:
inei cont de faptul c la ieirea driverului, polaritatea semnalului este inversat; dac la pinul
microcontrolerului exist nivel logic 1, atunci ieirea driverului va lua valoarea 0!
include 16f877_20
include jpic
include jdelay
include janalog
pin_b0_direction = input
pin_b1_direction = input
port_d_low_direction = all_output
procedure forward is
port_d_low = 0b_0001
delay_100ms (5)
port_d_low = 0b_0010
delay_100ms (5)
port_d_low = 0b_0100
delay_100ms (5)
port_d_low = 0b_1000
delay_100ms (5)
end procedure
procedure backwards is
port_d_low = 0b_1000
delay_100ms(5)
delay_100ms (5)
end procedure
port_d_low = 0b_0100
forever loop
delay_100ms (5)
if pin_b0 then forward end if
port_d_low = 0b_0010
if pin_b1 then backwards end if
delay_100ms (5)
end loop.
port_d_low = 0b_0001

20

[Type text]

[Type text]

Laboratorul VII
21

[Type text]

[Type text]

COMUNICAII SERIALE I CONVERSIA TTL-RS232


7.1.Scopul lucrrii
Conversia TTL-RS232 cu circuitul integrat MAX232, transmisia i recep ia serial a datelor ctre i dinspre PC i msurarea tensiunii cu prelucrarea datelor n cod LabView.
7.2.

Aparatura necesar

Staia de lucru care are instalat compilatorul JAL, platforma de dezvoltare cu microcontroler: PIC 16F877, mediul de dezvoltare LabView, programatorul: PicKit2 i software-ul
aferent programatorului.
7.3.

Consideraii teoretice

Microcontrolerul PIC16F877 este dotat cu un modul de comunica ie serial care folose te


semnale TTL pentru transmisia i recepia serial a datelor. Pentru interfa area la standardul
RS232 este nevoie de un convertor extern care transform semnalele TTL (05V) n semnale
standardizate RS232. n acest scop este folosit circuitul integrat MAX232 sau unul
echivalent.
Exist 3 moduri de folosire al portului serial RS232, i anume:

simplex atunci cnd un echipament transmite i cellalt recep ioneaz;

half duplex echipamentele funcioneaz pe rnd; unul transmite i cellalt recep ioneaz i invers;

full duplex ambele echipamente pot transmite i recepiona n acelai timp.

Figura 1
Semnificaia pinilor RS232 este:

22

[Type text]

[Type text]
TxD ieire de date
RxD intrare de date
GND masa semnalelor
RTS Request to Send ieire de interogare a perifericelor
DTR Data Terminal Ready semnalizare terminal liber (poate primi sau
transmite date)
CTS Clear to Send intrare de acceptare a pachetului de date
DSR Data Set Ready intrare de validare a comunicaiei
DCD Data Carrier Detect intrare de semnalizare a prezentei purttoarei modemului
RI Ring Indicator intrare de semnalizare a funcionarii soneriei la terminalul
opus

Biblioteca serialso.jal conine rutinele de accesare a transceiverului serial incorporat n


PIC16F877. Pentru setarea vitezei de comunicaie se modific parametrul F877_SPBRG = X,
din interiorul bibliotecii.
Pentru transmisia datelor se folosete comanda async_tx (variabile definite de ctre programator). Pentru recepia datelor se folosete comanda async_rx (variabile definite de ctre
programator).
7.4.

Schema electric

23

[Type text]

[Type text]

7.5. Aplicaii
Se d urmtorul cod:
include f877_20
include jpic
include janalog
include jprint
include jdelay
include hd447804
include serialso
port_d_direction = all_output
port_d = 0
hd44780_clear
ad1_noref
forever loop
ch0_on
ch_write_1023
hd44780_line1
print_hexadecimal_2 ( hd44780, isd, "0" )
hd44780_position1 (2)
print_hexadecimal_2 ( hd44780, lsd, "0" )
async_tx (isd)
async_tx (lsd)
delay_10ms (5)
end loop

24

[Type text]

[Type text]

Se cere:
1) Lansai codul LabView i cretei tensiunea de intrare pn cnd atinge i capul de
scal urmrind numrul afiat pe display-ul alfanumeric. Notai valoarea tensiunii de
intrare:
2) tiind valoarea tensiunii la cap de scal, calculai cea mai mic diviziune a tensiunii
msurate innd cont de faptul c rezoluia convertorului A/D este de 10 bi i:
3) Completai codul astfel nct s afiai textul HA, HA! pe display-ul alfanumeric i
trimitei datele pe interfaa RS232. Folosii codurile ASCII aferente caracterelor din
tabela ASCII ataat.
4) Modificai viteza de transmisie a datelor seriale la 9600 baud accesnd parametrul
SPBRG din biblioteca serialso.

25

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