0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat...

16
Microcontrolerul PIC16F917 Famila 16Fxxx de la Microchip este formată din microcontrolere cu arhitectura pe 8 biti şi set redus de instructiuni (RISC). Memoriile ROM, EEPROM şi SRAM sunt integrate în acelaşi chip, înlăturând nevoia de memorie externă. Majoritatea instructiunilor se execută într-un singur ciclu de ceas. Caracteristici: tensiune alimentare 2...5,5 Vcc frecvenţa max. 8Mhz 352 bytes SRAM 14K bytes ROM 256 bytes EEPROM ADC 10biţi cu 8 intrări 35 pini I/O 3 timere: două pe 8 biţi şi unul pe 16 biţi 2 numărătoare 1 interfaţă comunicare serială 1 interfaţă SPI 1 interfaţa I 2 C

Transcript of 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat...

Page 1: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Microcontrolerul PIC16F917 Famila 16Fxxx de la Microchip este formată din microcontrolere cu arhitectura pe 8 biti şi set redus de instructiuni (RISC).

Memoriile ROM, EEPROM şi SRAM sunt integrate în acelaşi chip, înlăturând nevoia de memorie externă.

Majoritatea instructiunilor se execută într-un singur ciclu de ceas.

Caracteristici:

tensiune alimentare 2...5,5 Vcc

frecvenţa max. 8Mhz

352 bytes SRAM

14K bytes ROM

256 bytes EEPROM

ADC 10biţi cu 8 intrări

35 pini I/O

3 timere: două pe 8 biţi şi unul pe 16 biţi

2 numărătoare

1 interfaţă comunicare serială

1 interfaţă SPI

1 interfaţa I2 C

Page 2: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Placa de dezvoltare

1. Soclul de 40 pini

2. Soclul de 20 pini

3. Regulatorul de tensiune şi conectorii de alimentare

4. 8 leduri

5. Display LCD cu 39 segmente conectat la 14 pini din cei 40

ai soclului microcontrolerului

6. Conector RS-232 şi componentele aferente interfeţei

7. Senzor de temperatură

8. Sensor de lumină

9. 2 potenţiometre

10. Cristal de 32.768kHz

11. 4 butoane (switch-uri) cu auto-revenire

Page 3: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

12. Conector pentru depanator în circuit(ICD)

13. Conector pentru programator serial în circuit (ICSP)

14. Circuit de protecţie la supratensiune cu buton de reset

15. 4 semipunţi MOSFET

16. Conector pentru citirea intreruperilor provenite de la senzorul

optic care sesizează numărul de rotații a M.c.c.

17. Conector de citire a intensității câmpului electromagnetic

invers care ia naștere la rotirea M.c.c.

18. Senzor optic pentru citirea vitezei M.c.c.

19. Motor de curent continuu (M.c.c.)

20. Motor pas cu pas (M.p.p.)

21. Terminale pentru alimentarea motoarelor.

22. Baterie de 9vcc

Interfaţarea dispozitivelor periferice

Butoanele, tastatura, LED-urile, afişajul cu 7 segmente cu LED-uri sau cristale lichide, buzere etc. sunt denumite generic dispozitive periferice.

În aplicaţiile următoare, va fi utilizat portul B al microcontrolerului. Acesta este un port bidirecţional de 8 biţi. Fiecare din pinii portului programat ca şi ieşire poate absorbi un curent de 8,5mA şi poate genera un curent de 3 mA.

Pentru comanda portului sunt utilizate următoarele comenzi:

- output_x(0xYZ) (unde x reprezintă portul, YZ pinii doriți a se activa);

Page 4: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

- input_x() (unde x reprezintă portul);

Pentru comanda biților portului, individual, sunt utilizate următoarele comenzi:

- output_high(PIN_XY) (unde X este numele portului, iar Y este numărul pinului) și are ca efect trecerea pinului respectiv în 1 logic;

- output_low(PIN_XY) (unde X este numele portului, iar Y este numărul pinului) și are ca efect trecerea pinului respectiv în 0 logic;

- input(PIN_XY) (unde X este numele portului, iar Y este numărul pinului) și are ca efect citirea stării logice a respectivului pin;

-

De exemplu, pentru a scrie pe portul B valoarea 108, trebuie parcurse următoarele etape:

- se calculează valoarea corespunzătoare în binar:

- în binar: PIN_B2=1

PIN_B3=1

PIN_B5=1

PIN_B6=1

- sau în hexazecimal: output_B(0x6C)

Pentru a citi portul C :

- se apelează: input_B();

Page 5: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Aplicaţie - Comanda unui LED

Cel mai simplu mod de a urmări starea logică a unui port este legarea unor diode LED pe pinii corespunzători portului respectiv. LEDvaloarea logică “1”, corespunzatoare unei tensiuni de 5V şi va fi stins pentru starea logica “0”.

Generalităţi

Diodele LED sunt dispozitive realizate prin doparea unui element semiconductor pentru a realiza o jonctiune paceastă jonctiune se eliberează energie sub formă de fotoni. LEDbandă foarte restransă de lungimi de undă, facând ca lumina generată sa aibă o singură culoare. Lungimea de undă a luminii emise poate sa varieze în funcţie de tipul semiconductorului şi de modul în care se realizează doparea. Astfel se pot fabrica LED-uri care să emită în orice lungime de undă a spectrului, de la infraroşu la ultraviolet.

Cel mai simplu mod de polarizare este inserierea LEDValoarea acesteia se calculează cu relaţia:

unde: US reprezintă tensiunea de alimentare ULED reprezintă căderea de tensiune pe LED cuprinsă funcţie de culoarea acestuia I este curentul absorbit de LED ( Exemplu: pentru un LED cu Urezultă:

Comanda unui LED

Cel mai simplu mod de a urmări starea logică a unui port este legarea unor diode LED pe pinii corespunzători portului respectiv. LED-ul se va aprinde dacă bitul are valoarea logică “1”, corespunzatoare unei tensiuni de 5V şi va fi stins pentru starea

Diodele LED sunt dispozitive realizate prin doparea unui element semiconductor pentru a realiza o jonctiune p-n. La trecerea unui curent electric prin această jonctiune se eliberează energie sub formă de fotoni. LED-urile emit întrbandă foarte restransă de lungimi de undă, facând ca lumina generată sa aibă o singură culoare. Lungimea de undă a luminii emise poate sa varieze în funcţie de tipul semiconductorului şi de modul în care se realizează doparea. Astfel se pot fabrica

care să emită în orice lungime de undă a spectrului, de la infraroşu la

Cel mai simplu mod de polarizare este inserierea LED- ului cu o rezistenta. Valoarea acesteia se calculează cu relaţia:

I

UUR

LEDS−

=

reprezintă tensiunea de alimentare reprezintă căderea de tensiune pe LED cuprinsă între 1,8V şi 4V

este curentul absorbit de LED (I = 10M20mA)

ULED= 2V şi I = 20mA alimentat la o tensiune de

Ω=−

= 350020

29

A

VVR

,

Cel mai simplu mod de a urmări starea logică a unui port este legarea unor diode ul se va aprinde dacă bitul are

valoarea logică “1”, corespunzatoare unei tensiuni de 5V şi va fi stins pentru starea

Diodele LED sunt dispozitive realizate prin doparea unui element n. La trecerea unui curent electric prin

urile emit într-o bandă foarte restransă de lungimi de undă, facând ca lumina generată sa aibă o singură culoare. Lungimea de undă a luminii emise poate sa varieze în funcţie de tipul semiconductorului şi de modul în care se realizează doparea. Astfel se pot fabrica

care să emită în orice lungime de undă a spectrului, de la infraroşu la

ului cu o rezistenta.

între 1,8V şi 4V

imentat la o tensiune de US = 9V

Page 6: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Un LED poate fi conectat la microcontroler in două moduri:

- între un pin al microcontrolerului şi masă (0V); comanda pe anod - între un pin al microcontrolerului şi +U; comanda pe catod

Pentru a putea comanda aprinderea LEDconexiunea fizică între pinii microcontrolerului cablurile de conexiune roșii de lângă plăci.

Pe placa de dezvoltare LEDconectat la pinul 7 iar LED-ul

Un LED poate fi conectat la microcontroler in două moduri:

între un pin al microcontrolerului şi masă (0V); comanda pe anodîntre un pin al microcontrolerului şi +U; comanda pe catod

Pentru a putea comanda aprinderea LED-urilor, trebuie mai întâi conexiunea fizică între pinii microcontrolerului și leduri. Pentru aceasta se vor folosi

șii de lângă plăci.

Pe placa de dezvoltare LED- urile vor fi legate la pinii portului B. LEDul D0, la pinul 0 al portului.

între un pin al microcontrolerului şi masă (0V); comanda pe anod

urilor, trebuie mai întâi realizată și leduri. Pentru aceasta se vor folosi

. LED-ul D7 va fi

Page 7: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Aplicaţie - Comanda unui LED

Scopul aplicaţiei este aprinderea unui LED la alegere din cele 8 conectate la portul C al microcontrolerului.

ETAPE:

1 – se va crea un folder pe desktop pe care îl veți numi „Proiectul 1”;

2 – veți copia din C:\Program Files (x86)\PICC\Devices fișierul numit 16F917.h

(extensia „.h” este posibil să n-o puteți vedea) în folderul creat pe desktop;

3 – deschideți MPLAB IDE v8.60 aflată pe desktop;

4 – creați un nou proiect cu numele „aplicația1” urmând instrucțiunile din figurile

următoare:

Se alege această

opțiune!

Page 8: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Se apasă Next!

Se apasă aici și se va

alege PIC16F917!

După aceea se va

apăsa Next!

Page 9: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Se apasă Next!

Se apasă

Browse!

Se alege calea spre folderul creat

pe desktop! Apoi se va scrie

numele aplicației (vezi sub

comentariu!) și apoi se va apăsa

Save și Next!

Page 10: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Se alege ca fișier pentru proiect

headerul copiat deja în folder și apoi se

apasă Add>>! Apoi se va apăsa Next!

Page 11: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Această fereastră indică

faptul că s-a terminat

crearea noului proiect și

se va apăsa Finish!

Headerul corespunzător

microcontrolerului.

Page 12: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Se observă că avem un header, însă nu avem și fișerul cu codul sursă (în C). Prin

urmare vom crea un nou fișier numit „aplicatie.c” apăsând Project – Add New File

to Project, ca în figura de mai jos:

Mai departe vom alege programatorul prin intermediul căruia se vor scrie fișierele

rezultate în urma compilării în memoria microcontrolerului. Se vor urma pașii ca în

figura următoare:

Se alege această

opțiune!

Page 13: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

5 – Structura programului

#include "16F917.h" // header-ul pentru MC

#use delay(clock=8000000) // setarea frecventei de tact

void main() //functia principala

output_high(PIN_B5); //setarea pinului in 1 logic

6 – Compilarea programului

Mai departe se va compila acest cod, se va încărca în

memoria microcontrolerului și poi se va porni execuția

programului (exact în această ordine). Toate acestea sunt

ilustrate în figură:

Bineînțeles, programatorul Pickit 2 se va conecta cu săgeata în sus conform

figurii următoare:

Se alege această

opțiune!

Buton pentru

compilare.

Fișiere

rezultate în

urma

compilării. Fereastra de dialog care

specifică statutul compilării.

Butoanele de start și

respectiv stop

execuție program.

Buton care

transferă

programul în

microcontrole

r.

Page 14: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Programul de mai sus poate fi rescris sub următoarea formă pentru accesarea portului dar păstrarea aceluiași efect:

#include "16F917.h" // header-ul pentru MC

#use delay(clock=8000000) // setarea frecventei de tact

void main() //functia principala

output_B(0x20); //setarea pinului in 1 logic

Aplicaţia 2 – Aprinderea LED-urilor impare și pare Structura programului este următoarea:

1. Pentru LED-urile impare

LED LED 0 LED 1 LED 2 LED 3 LED 4 LED 5 LED 6 LED 7

Va-

loare

0 1 0 1 0 1 0 1

void main() output_B(0xAA);

void main() output_high(PIN_B7); output_high(PIN_B5); output_high(PIN_B3); output_high(PIN_B1);

Page 15: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

2. Pentru LED-urile pare

LED LED 0 LED 1 LED 2 LED 3 LED 4 LED 5 LED 6 LED 7

Va-

loare

0 0 1 0 1 0 1 0

Aplicaţia 3 – LED care pulsează

Scopul aplicaţiei este aprinderea intermitentă la un anumit interval de timp a unui LED.

Structura programului este următoarea

- cât timp condiţia „1” este îndeplinită, se execută umătorul ciclu: pinul 0 al portului B rămâne în 1 logic o perioadă de timp de 500ms după care trece în 0 logic, tot 500ms.

- efectul este aprinderea intermitentă la un interval de 500ms a LED-ului conectat la pinul 0 al portului C.

- Starea pinului 0 poate fi schimbată utilizând instrucţiunea:

output_high(PIN_B0); respectiv output_low(PIN_B0);

sau: output_B(0x01); respectiv output_B(0x00);

void main() output_B(0x54);

void main() output_high(PIN_B6); output_high(PIN_B4); output_high(PIN_B2);

Page 16: 0.Familiarizarea cu mplabul - robotics.ucv.ro fileului cu o rezistenta. între 1,8V şi 4V imentat la o tensiune de US = 9V . Un LED poate fi conectat la microcontroler in două moduri:

Aplicaţia 4 – Grup de LED-uri care pulsează

Scopul aplicaţiei este aprinderea intermitentă la un anumit interval de timp a mai multor LED-uri de exemplu ledurile 3 și 4.

Structura programului este aceeaşi ca şi în exemplul precedent.

Temă:

1. Scrieţi programul pentru a aprinde alternativ la un interval de 800 ms LED-ul 5 și LED-ul 1.

2. Scrieţi programul pentru a aprinde alternativ la un interval de 1 s LED-ul 2 și LED-ul 7.