PROIECT 2v2

Embed Size (px)

Citation preview

  • 8/7/2019 PROIECT 2v2

    1/14

    UNIVERSITATEA POLITEHNICA BUCURESTIFACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMAT

    PROIECT 2TEMA 10

    PROFESOR INTRUMATOR: ELISABETA BUZOIASTUDENT: POPA MARIAN BOGD

    GRUPA: 434

    BUCURESTI 2010

  • 8/7/2019 PROIECT 2v2

    2/14

    CUPRINS

    . Enunul temei 3 . Datele de proiectare 3 . Rezumatul proiectului4 . Introducere teoretic 4 . Simulare ORCAD 8 . Implementare pe kit 10 . Bibliografie 15

  • 8/7/2019 PROIECT 2v2

    3/14

    I. ENUNTUL TEMEI

    1. S se realizeze simularea PSpice a funcionrii unui automat finit pentru comanda derespective nchiderii unei ui, prin acionarea a dou motoare, M1 i M2, folosind mediul de programORCAD.

    Comanda de acionare a motoarelor se face de la o telecomand( semnal F) n funcie de i primit de la doi senzori ( Z i O), astfel : dac ua este nchis, va porni motorul M2 careua, iar dac ua este deschis, se va porni motorul M1 care o va nchide

    n timpul funcionrii motorului M1 sau M2 semnalul de la telecomand este ignorant

    2. S se implementeze acelai automat pe kitul C8051F320.

    II. DATE DE PROIECTARE

    1. Pentru simulare: diagrama strilor care descrie funcionarea automatului:

    - Strile automatului sunt 0, 1, 2, 3- Simbolurile folosite: F=semnal telecomand; Z=sensor de u complet nchis; O

    de u complet deschis; motorul M2 deschide ua, motorul M1 nchide ua.

    Utilizm bistabile D pentru sintetizarea electronic, conform cu ecuaiile dcomand:

    D0= *F+ *Q0*Q1+ *Q1* ;D1=Q0* + *Q0+ *Q1* ;

    Ecuaiile de comand a motoarelor:

    M1=Q0*Q1; M2= *Q1;

  • 8/7/2019 PROIECT 2v2

    4/14

    III. REZUMATUL PROIECTULUI

    Proiectul isi propune atat simularea automatului in PSpice cat si implementarea pe kitul C805Acest automat permite nchiderea sau deschiderea unei ui cu ajutorul a doua motoare(M1 sa

    activarea de la telecomand(F) a unuia dintre cei doi senzori(Z sau O).

    Pentru realizarea proiectului am parcurs urmatoarele etape:

    Am obinut ecuaiile corespunztoare tranziiilor si ieirilor; Am realizat schema in Orcad folosind bistabili D, pori NAND si NOT; Am realizat organigrama programului; Am utilizat Silicon Laboratories Integrated Development Environment (IDE) pentru prog

    implementarea automatului finit.

    Ecuaiile corespunztoare tranziiilor si ieirilor le-am determinat cu ajutorul diagrameiVenn- Karnaugh(VK) n funcie de semnalele primite.

    Organigrama programului principal este elaborat conform funcionrii automatului si instrucmicrocontrolerului.

    IV. INTRODUCERE TEORETICA

    In acest proiect am folosit kit-ul C8051F320, compatibil Intel 8051. In continuare vom prezencaracteristici tuturor mC Intel 8051.

    Organizarea memorieiMemoria de program i date sunt fizic separate (Harvard)a) Memoria de program- Este de tip ROM sau EPROM- Harta memoriei are 64 kB- Pe cip se afl, de regul, 4 kB, 8 kB sau 16kB. Restul memoriei este extern- Dup RESET, (PC) 0000H- Locaii de memorie rezervate :

    Iniializare programe: 0000H 0002H

  • 8/7/2019 PROIECT 2v2

    5/14

    vector de ntrerupere tip 0: 0003H 000AHtimer 0: 000BHvector de ntrerupere tip 1: 0013H 001AHtimer 1: 001BH

    b) Memoria de date- Memoria extern are 64 kB- Memoria extern e accesat cu magistrala de date i adrese prin intermediul Port 0 i eventual Port- Validarea se face cu RD, WR - Magistrala de adrese poate avea numai 1 B sau 2 B- Memoria intern este accesat cu adrese pe 1B- Sunt 3 blocuri de cte 128 B: Lower 128, Upper 128, SFR Space.

    Upper 128 i SFR Space sunt fizic separate i adresate cu moduri de adresare diferiteUpper 128 nu e implementat n 8051 clasicUpper 128 este adresabil indirect la variantele la care e implementatLower 128: 4 bancuri de cte 8 registre R0 R7

    16 B un bloc de memorie adresabil pe bitrestul memorie de date este adresabil direct i indirect

    Moduri de adresareAdresare direct:- Adresa complet are 8 b n formatul instruciunii curente- Se poate utiliza pentru memoria de date intern (Lower 128 )- Se poate utiliza pentru SFR

    Adresare indirect:- Poate fi pe 8 b sau pe 16 b- Se pot accesa 256 B de memorie intern de date (Lower 128 i Upper 128)

    sau 64 kB de memorie extern- Pentru adresele pe 8 b se pot folosi R0, R1 sau SP- Pentru adresele pe 16 b se poate folosi doar DPTR pentru memoria extern

    Adresare implicit (n registru):- Datele sunt accesate n unul dintre cel 8 registre din setul de lucru R0,, R7- Selecia registrului vizat se face cu 3 bii n chiar codul instruciunii- Anumite instruciuni se refer la anumite registre (acumulator, pointer de date etc.)Selecia registrului se face n chiar codul instruciunii

    Adresare imediat:- O constant care se afl n formatul instruciunii curente, imediat dup cod- Constanta poate fi pe 8 b sau 16 b

    Adresare indexat:- Se folosete doar pentru memoria de program !- Pentru tabele de translatare cu DPTR sau PC ca baz i ACC intrare n tabel

    - Pentru salturi ACC conine deplasamentulC8051F320:

    Microcontroler compatibil 8051 de mare viteza 16 KB de memorie on-chip Flash Oscillator intern 12 Mhz 25 porturi I/O Patru timere de uz general pe 16 biti Memorie -2304 Octei RAM intern (1k + 256 + 1k USB FIFO)

    -16 KB Flash

  • 8/7/2019 PROIECT 2v2

    6/14

    Controller USB, 1k FIFO RAM Power-On Reset, VDD Monitor, si Missing Clock Detector pe chip Counter/Timer programabil cu 5 moduri si Watch Dog Timer On chip debugger. Referinta de tensiune , sensor de temperatura

  • 8/7/2019 PROIECT 2v2

    7/14

    Memoria Flash poate fi reprogramata ntr-un circuit, oferind capabititati de stocare a datelor psistem non-volatil, i, de asemenea, permind upgrade-uri de firmware pentru 8051.Utilizatorul software-ului are un control complet al tuturor periferice i poate nchide n mod unul sau chiar toate perifericele pentru a economisi energie. Toate periferice analogice si dig pe deplin funcionale n timpul depanrii. Functionarea fiecarui dispozitiv este specificat pen3.6 V.

  • 8/7/2019 PROIECT 2v2

    8/14

    V. SIMULARE ORCAD

    D0=

    D1=

    M1=Q0*Q1M2= *Q1

    F-semnalul de la telecomand;

    Z-senzor de u complet deschis;

    O-senzor de u complet nchis;

    M2-motorul ce deschide ua;

    M1-motorul ce nchide ua.

  • 8/7/2019 PROIECT 2v2

    9/14

    Definirea semnalelor:

    Rezultatul simularii:

  • 8/7/2019 PROIECT 2v2

    10/14

    VI. Implementarea pe kit

    Organigrama contine 3 blocuri mari: Setarile initiale si definirea variabilelor Initializarea registrelor folosite Stare automat

    Cele 3 intrari logice F, Z, O vor fi conectate la pinii de port P1.0, SW2(P1.6), P2.6.Afisarea starii de actionare a lui M1 se va face cu D1, iar cea a lui M2 cu D2.Citirea variabilelor de intrare se va face la intervale de timp de 3 secunde obinute cu programntrziere.

    Funcionarea automatului:

    Dac ua este nchis, cnd semnalul de la telecomand este 1 logic ea va ncepe s se deajutorul motorului M2. Cnd senzorul O are valoarea 1 logic atunci motorul M2 se va opri.

    Dac ua este deschis, cand semnalul de la telecomand este 1 logic ea va ncepe s se ajutorul motorului M1. Cnd senzorul Z are valoarea 1 logic atunci motorul se va opri.

    n starea 0, stare iniial, ua este nchis. Automatul rmne n aceast stare pn cnd psemnal de la telecomand, i astfel trece n starea urmtoare.

    n starea 1 M2 funcioneaz. Automatul rmne n aceast stare pn cnd semnalul de lO (u complet deschis) va fi 1 logic. Apoi trece in Starea 2, unde M2 e oprit.

    n starea 2 se ateapt din nou semnalul de la telecomand,1 logic, pentru a activa M1 i putea trece n starea 3.

    Automatul va rmne n aceast stare pn la primirea semnalului 1 logic de la senzorul Zcomplet nchis), dup care va trece n starea 0.

    STATE0 stinge orice LED aprins citeste F daca este 0, seteaza STATE0 daca este 1, seteaza STATE1

    STATE1 aprinde D2 citeste O daca este 0, seteaza STATE1 daca este 1, seteaza STATE2

    STATE2 stinge orice LED aprins citeste F daca este 0, seteaza STATE2 daca este 1, seteaza STATE3

    STATE3 aprinde D1 citeste Z daca este 0, seteaza STATE3

  • 8/7/2019 PROIECT 2v2

    11/14

    DA NU DA DA DA NU NU NU

    daca este 1, seteaza STATE0

    ORGANIGRAMA:

    START

    Setari si configurare mC

    Initializare registre

    Temporizare

    0=0

    S0 S1

    F=0F=0

    S1 S2

    Z=0

    S3 S0S2 S3

    Cautarea starii curente curegistrul contor de stare

    Citire intrari

    Stingere LED

    Citire intrari Citire intrari Citire intrari

    Aprind D2 Stingere LED Aprind D1

  • 8/7/2019 PROIECT 2v2

    12/14

    Setari si configurare mCProgramul in sine incepe cu instructiunile$NOMOD51(Dezactivarea definitiilor implicite pt registrele speciale ale 8051)$include (c8051f320.inc) (Includerea fisierului de definire pt registrele specifice kitului C8051F320Apoi pentru a usura partea de programare, asociem etichete porturilor , corespunzatoare intrarilor F equ P1.0Z equ P1.6O equ P2.5M1 equ P2.3M2 equ P2.2Se defineste vectorul de reset la adresa 0000h. In cazul unui reset se sare la rutina principala de progmain: cseg at 0x0000

    InitializareaDezactivam intreruperile: clr ea, dezactivam Watch Dog Timer: anl pca0md,#000h, activam crossbaxbr1,#40h, pinii corespunzatori intrarilor ii configuram ca intrari digitale: orl p1mdin,#0x01 orl p2miesirile digitale ca push pull: orl p2mdout,#0x0c, stingem ledurile: clr M1 clr M2.

    Bucla de intarziereCitirea variabilelor de intrare se va face la intervale de timp de 3 secunde. Pentru aceasta, vom inserintarziere inainte de citirea fiecarei variabile(avem nevoie de o frecventa de 0,33Hz.(*(*(R1*2+4)+4)+2)*8/12M=(35*(253*(253*2+4)+4)+2)*8/12M=3.01079466666 s .Codul corespunzator buclei de intarziere:Delay: mov R3, #0x23Loop1:mov R2, #0xFDLoop0:mov R1, #0xFD

    djnz R1, $djnz R2, Loop0djnz R3, Loop1

    sjmp mainLoopCautarea starii curente cu registrul contor de stareSe foloseste R1 din Bank 1State0:cjne R1,#0x00,State1;daca R1=0 se executa instructiunea imediat urmatoare, in caz contrar sEticheta State1State1:cjne R1,#0x01,State2;daca R1=1 se executa instructiunea imediat urmatoare, in caz contrar seEticheta State2State2: cjne R1,#0x02,State3;daca R1=2 se executa instructiunea imediat urmatoare, in caz contrar Eticheta State3State3: cjne R1,#0x03,State4;daca R1=3 se executa instructiunea imediat urmatoare, in caz contrar s

    Eticheta State0

  • 8/7/2019 PROIECT 2v2

    13/14

    Codul complet al programului:$NOMOD51$include (c8051f320.inc)F equ P1.0Z equ P1.6O equ P2.5M1 equ P2.2M2 equ P2.3

    cseg AT 0x0000ljmp main

    mainCodeSeg segment CODErseg mainCodeSegusing 1

    main:acall init

    mainLoop:acall Delay

    State0: cjne R1,#0x00,State1 jnb F, J0mov R1,#0x01setb M2

    J0: sjmp mainLoop

    State1: cjne R1,#0x01,State2 jnb O,J1mov R1,#0x02clr M2

    J1: sjmp mainLoop

    State2: cjne R1,#0x02,State3 jnb F,J2mov R1,#0x03setb M1

    J2: sjmp mainLoop

    State3: jnb Z,J3mov R1,#0x00clr M1

    J3: sjmp mainLoop

    Delay: mov R3, #0x23Loop1: mov R2, #0xFDLoop0: mov R1, #0xFD

    djnz R1, $djnz R2, Loop0djnz R3, Loop1sjmp mainLoop

  • 8/7/2019 PROIECT 2v2

    14/14

    init:clr EAanl PCA0MD,#0xBFmov XBR1,#0x40orl P2MDOUT,#0x0Corl P2MDIN,#0x21orl P1MDIN,#0x01clr M1clr M2mov R1,#0x00ret

    END