Top Banner

of 41

Lap Trinh CCS cho PIC

Jun 03, 2018

Download

Documents

Tùng La
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/12/2019 Lap Trinh CCS cho PIC

    1/41

    TRNG I HC KHOA HC TNHINTRNG I HC KHOA HC TNHINKHOA IN TKHOA IN T-- VIN THNGVIN THNG

    PHN 3: LP TRNH VI CCS

    1

    ngng LL KhoaKhoa

  • 8/12/2019 Lap Trinh CCS cho PIC

    2/41

    CHNG 1: CBN VCCS Ngn ngC

    Cu trc cbn mt chng trnh

    Xut nhp

    Hm delay Lp trnh vi cc vng lp v iu kin

    Lp trnh vi cc lnh logic v shc

    2

  • 8/12/2019 Lap Trinh CCS cho PIC

    3/41

    Ngn

    ngC

    3

  • 8/12/2019 Lap Trinh CCS cho PIC

    4/41

    Ngn ngC

    4

  • 8/12/2019 Lap Trinh CCS cho PIC

    5/41

    Ngn ngC

    5

  • 8/12/2019 Lap Trinh CCS cho PIC

    6/41

    Ngn ngC

    6

  • 8/12/2019 Lap Trinh CCS cho PIC

    7/41

    Cu trc cbn mt chngtrnh

    #include

    #use delay(clock=16000000)

    void main(void)

    {

    //chuong trinh C

    }

    7

  • 8/12/2019 Lap Trinh CCS cho PIC

    8/41

    Xut nhp

    8

  • 8/12/2019 Lap Trinh CCS cho PIC

    9/41

    V dVD 1: Xut gi xut ra port C gi tr0x0F

    #include

    void main()

    {

    set_tris_c(0x00);while(1)

    {

    output_c(0x0F);

    }

    }

    9

  • 8/12/2019 Lap Trinh CCS cho PIC

    10/41

    V dVD 2: c dliu port D v xut port C#include

    void main()

    {

    char data;

    set_tris_c(0x00);set_tris_d(0xff);

    while(1)

    {

    data = input_d();

    output_c(data);

    }

    }

    10

  • 8/12/2019 Lap Trinh CCS cho PIC

    11/41

    Hm delay Cn c khai bo #use delay ( clock =xxxx)

    VD : #use delay ( clock = 20000000 ) Hm delay khng sdng bt ktimer no

    delay_cycles (count )

    delay_us ( time )

    delay_ms (time )

    11

  • 8/12/2019 Lap Trinh CCS cho PIC

    12/41

    Hm delay. 1: delay_cycles (count )

    Count : hng st0 255 , l schu klnh .1 chu klnh bng 4chu kmy .

    VD : delay_cycles ( 25 ) ; // vi OSC = 20 Mhz , hm ny delay 5 us

    2: delay_us ( time )

    Time : l bin sth = 0 255 , time l 1 hng sth = 0 -65535 . 3: delay_ms (time )

    Time = 0-255 nu l bin shay = 0-65535 nu l hng s.

    VD :

    nt a = 215;elay_us ( a ) ; // delay 215 us

    elay_us ( 4356 ) ; // delay 4356 us

    elay_ms ( 2500 ) ; // delay 2 . 5 s

    12

  • 8/12/2019 Lap Trinh CCS cho PIC

    13/41

    V dVD 3: Vit chng trnh chp tt cc Led port C#include

    #use delay (clock = 16000000)void main(void)

    {

    set_tris_c(0x00);

    while(1)

    {

    output_c(0x00);

    delay_ms(500);

    output_c(0xff);

    delay_ms(500);

    }

    }13

  • 8/12/2019 Lap Trinh CCS cho PIC

    14/41

    Lp trnh vi cc vng lpVD 5: Vit chng trnh chp tt cc Led port C 5 ln#include

    #use delay (clock = 16000000)

    void main(void){

    char i;

    set_tris_c(0x00);

    for (i=0;i

  • 8/12/2019 Lap Trinh CCS cho PIC

    15/41

    Lp trnh vi iu kinVD 6: Vit chng trnh nu Port D =0 => xut Port C=0xff ngc li xut Port C=0x0f

    #include

    #use delay (clock = 16000000)

    void main(void)

    {

    char data;

    set_tris_c(0x00);

    set_tris_d(0xff);

    while(1)

    {

    data=input_d();

    if (data==0)

    output_c(0xff);

    else

    output_c(0x0f);

    }

    } 15

  • 8/12/2019 Lap Trinh CCS cho PIC

    16/41

    Php ton logic v shcVD: Vit chng trnh dch 1 led tbit thp n bit cao#include

    #use delay(clock=16000000)

    void main()

    {

    char a,i;

    _ _

    while(1)

    {

    a=0x01;

    for(i=0;i

  • 8/12/2019 Lap Trinh CCS cho PIC

    17/41

    Bi tp#

    # ( = 16000000)

    ()

    ,;

    (000);

    (0);

    (1)

    = ;

    (==0)

    (0);

    (500);

    (000);

    (500);

    (0);

    17

  • 8/12/2019 Lap Trinh CCS cho PIC

    18/41

    CHNG 2: CHUYN I

    TNG TSANG S(ADC)

    Nguyn tc hot ng ca ADC

    Cu hnh bADC

    V d

    18

  • 8/12/2019 Lap Trinh CCS cho PIC

    19/41

    Nguyn tc hot ng ca ADC ADC bchuyn i tng tsang s

    Gi trxut ra dng sphthuc vo inthanalog, in ththam chiu v sbit

    ADC 8 ( 0255 ) ADC 10 (01023 )

    V d: ADC c 10 bitADC = V/VREF * 1023

    19

  • 8/12/2019 Lap Trinh CCS cho PIC

    20/41

    Nguyn tc hot ng ca ADC Phi c khai bo #DEVICE cho bit dng

    ADC my bit (thng l 8 hay 10 bit hochn) .

    thnh ADC 8 bit bng cch chia cho 4

    C thlp trnh bng cc cp nht, hay

    dng ngt ADC

    20

  • 8/12/2019 Lap Trinh CCS cho PIC

    21/41

    21

  • 8/12/2019 Lap Trinh CCS cho PIC

    22/41

    Setup_ADC ( mode )Dng xcnh cch thc hotng b bini ADC . Xem

    chi tit tng loi PIC khc nhau. Cc tham s thngdng:

    ADC_OFF : tt hotng ADC_ _

    xung clock IC ( mt 2-6 us ) ADC_CLOCK_DIV_2 : thi gian ly mu bng

    xung clock / 2 ( mt 0.4 us trn thch anh 20MHz )

    ADC_CLOCK_DIV_8 : thi gian ly mu bngxung clock / 8 ( 1.6 us )

    ADC_CLOCK_DIV_32 : thi gian ly mu bng

    xung clock / 32 ( 6.4 us ) 22

  • 8/12/2019 Lap Trinh CCS cho PIC

    23/41

    Setup_ADC_ports ( value )Xcnh chn ly tn hiu analog vin th chun s dng .Xem chi tit tng loi PIC khc nhau. Vref : p chun , Vdd :

    p ngunSauy l cc gi tr thng dng cho value: ALL_ANALOGS : dng tt c chn sau lm analog (Vref=Vdd)

    NO_ANALOG : khng dng analog, cc chn s l chn I /O

    AN0 : A0 AN0_AN1_AN3: A0 A1 A3, Vref = Vdd

    AN0_AN1_VSS_VREF: A0 A1 VRefh = A3

    AN0_AN1_AN4_VREF_VREF: A0 A1 A5 VRefh=A3 VRefl=A2 AN0_AN1_VREF_VREF : A0 A1 VRefh=A3 VRefl=A2

    AN0_VREF_VREF : A0 VRefh=A3 VRefl=A2

    ..

    23

  • 8/12/2019 Lap Trinh CCS cho PIC

    24/41

    Setup_ADC_ports ( value ).VD :

    setup_adc_ports (AN0_AN1_AN3) ;

    // A0 , A1 , A3 nhn analog , p ngun +5V cp cho IC sli n chun .

    24

  • 8/12/2019 Lap Trinh CCS cho PIC

    25/41

    ( ) Chn chn c vo gi tranalog bng

    lnh Read_ADC ( ). Nn delay 10 us sau hm ny ri mi

    _

    Gi trchannel tuschn chc nngADC mi chip. Thng c gi tr:

    0-chn A0 , 1-chn A1, 2-chn A2, 3-chnA3

    25

  • 8/12/2019 Lap Trinh CCS cho PIC

    26/41

    ( ) D ADC ADC

    .

    H ADC ( ).

    ,

    8 , 16 #DEICE ADC 10 .

    Sly ADC tchn bn chn trong hm

    Set_ADC_channel( ) trc . M 1 , ,

    ADC( ) .

    26

  • 8/12/2019 Lap Trinh CCS cho PIC

    27/41

    ( )M , :

    #DECE 8 10 11 16 ADC=8 0255 0255 00255 00255

    ADC=10 01023

    ADC=11 02047

    ADC=16 065280 065472 065504 065535

    27

  • 8/12/2019 Lap Trinh CCS cho PIC

    28/41

    V d

    28

  • 8/12/2019 Lap Trinh CCS cho PIC

    29/41

    V d

    V d: c d liu t analog t chn AN0 xut ra port C#include

    #device *=16 ADC=8

    #use delay (clock = 16000000)

    void main (void)

    {

    int8 value;

    setup_adc(ADC_CLOCK_INTERNAL);

    setup_adc_ports(ALL_ANALOG);

    set_adc_channel(0);

    set_tris_c(0x00);

    while(1)

    {

    delay_ms(100);

    value = read_adc();

    output_c(value);

    }

    } 29

  • 8/12/2019 Lap Trinh CCS cho PIC

    30/41

    #

    # *=16 ADC=8

    # ( = 16000000)

    ()

    8 ;

    (ADCCLOCKINENAL);

    (ALLANALOG);

    (000);

    (000);(1)

    (0);

    (1);

    = ();

    ();

    (1);

    (1);

    = ();

    ();

    30

  • 8/12/2019 Lap Trinh CCS cho PIC

    31/41

    CHNG 3: GIAO TIP NI TIP Nguyn tc hot ng port ni tip

    Cc hm dng trong giao tip ni tip Cu hnh giao tip ni tip

    V d

    31

  • 8/12/2019 Lap Trinh CCS cho PIC

    32/41

    Hot ng port ni tip Chng ny sgip bn vit chng trnh giao tip PC

    VK truyn dliu cho PC xl , hoc nhn gi trtPCxl v iu khin

    P 2 :

    use e ay c oc = z

    #use rs232 (baud=19200 , parity=n ,

    xmit=pin_C6 , rcv=pin_C7 )

    // = 19200 , , C6 , C7

    32

  • 8/12/2019 Lap Trinh CCS cho PIC

    33/41

    Cc hm dng trong giao tip

    ni tip

    33

    C hm d t i ti

  • 8/12/2019 Lap Trinh CCS cho PIC

    34/41

    Cc hm dng trong giao tip

    ni tip

    34

  • 8/12/2019 Lap Trinh CCS cho PIC

    35/41

    Cc hm dng trong giao tip

    ni tip

    35

  • 8/12/2019 Lap Trinh CCS cho PIC

    36/41

    printf ( string ) Printf ( cstring , values . . . )

    Dng xut chui theo chun RS232 ra PC- string l 1 chui hng hay 1 mng k t

    .

    - value l danh sch cc bin , cch nhaubi du phy .

    B % .

    36

  • 8/12/2019 Lap Trinh CCS cho PIC

    37/41

  • 8/12/2019 Lap Trinh CCS cho PIC

    38/41

    ( ) RC6 v RC7 cho RX v TX trong giao tip cngCOM , VDK PIC trang bphn cng phc vvic ny vi thanh ghi gi v nhn v cc bitbo hiu tng ng. Do khi dng RS232 htrtphn cng th KHBIT ( ) trvTRUE nu

    v sn sng cho vic c , v trv0 nu chasn sng .

    Hm ny c thdng hi vng xem khi no cdata nhn tRS232 c .

    38

  • 8/12/2019 Lap Trinh CCS cho PIC

    39/41

    V dgi dliu qua RS232#include

    #use delay (clock = 16000000)

    #use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6,

    rcv=pin_c7 )

    char temp;

    void main (void)

    {

    set_tris_d(0x00);

    while(1)

    {printf("%u",5);

    }

    }

    39

  • 8/12/2019 Lap Trinh CCS cho PIC

    40/41

    V dnhn dliu qua RS232#include

    #use delay (clock = 16000000)

    #use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6,rcv=pin_c7 )

    char temp;

    {set_tris_d(0x00);

    while(1)

    {

    if (kbhit())temp = getc();

    output_d(temp);

    }

    } 40

  • 8/12/2019 Lap Trinh CCS cho PIC

    41/41

    41