Thông báo

Collapse
No announcement yet.

Chưong trình giao tiếp PIC với SIM300

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Chưong trình giao tiếp PIC với SIM300

    em copy trên mạng về được chương trình này nhưng không hiểu ý nghĩ chương trình thế nào. các pro nào có thể giải thích giúp e đoạn code này không ?
    Code:
    #include <16f877a.h>
    #device pic16f877a*=16adc=10
    #include <string.h>
    #fuses NOWDT,XT,PUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP
    #use delay(clock=4000000)
    #use fast_io(d)
    #use fast_io(b)
    #use fast_io(c)
    #use fast_io(a)
    #use fast_io(e)
    #byte porta=0x05
    #byte portb=0x06
    #byte portc=0x07
    #byte portd=0x08
    #byte porte=0x09
    #bit  RS=PORTE.0
    #bit  RW=PORTE.1
    #bit  E=PORTE.2
    #bit c0=portc.0
    #bit c1=portc.1
    #bit c2=portc.2
    #bit c3=portc.3
    #bit c4=portc.4
    #bit c5=portc.5
    #bit b0=portb.0
    #bit b1=portb.1
    #bit b2=portb.2
    #bit b3=portb.3
    #bit b4=portb.4
    #bit b5=portb.5
    #bit b6=portb.6
    #bit b7=portb.7
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
    
    
    char buff[90],tukhoa[5],nd_sms[20],nd_lcd[50],kt_bao_sms[9],kt[9];
    int i,vitri,k,j,nguon,n,l,y,s,x,chuc,dv,cb;
    int1 ok;
    
    
    
    #INT_RDA  
    void receive()
    {
    buff[i]=getc();
    i++;
    if (i==2)
    {ok=1;}
    }
    
    void hien();
    void xoa();
    void kt_sms();
    void tao();
    void xuat();
    void cauhinh();
    void xoa_lcd();
    void xuli_sms();
    void kt_dieukhien();
    void hienthi_nd_sms();
    void  doc_adc();
    
    void main()
    {  set_tris_b(0b00000000);
       set_tris_e(0b000);
       set_tris_d(0b00000000);
       set_tris_c(0b10100000);
       set_tris_a(0b100001);
       enable_interrupts(int_rda);
       enable_interrupts(global);
       i=0;
       portd=0;
       nguon=0;
       ok=0;
       c1=0;
       c2=0;
       c3=0;
       c4=0;
       k=0;
       strcpy (nd_lcd,"Welcome");
       hien();
       delay_ms(1000);
       strcpy (nd_lcd,"Duc - Cuong");
       hien();
       c0=1;//kich mass mo nguon
       delay_ms(5000); //mo nguon module
       c0=0;
       delay_ms(3000);
       xoa_lcd();
       strcpy (nd_lcd,"Loading");
       hien();
       delay_ms(1000);
       cauhinh();
       xoa_lcd();
       strcpy (nd_lcd,"Finish");
       hien();
       delay_ms(1000);
       xoa_lcd();
       strcpy (nd_lcd,"Call user");
       hien();   
       printf("atd0944383390;\r\n");
       delay_ms(8000);
       printf("ath\r\n");
       delay_ms(4000);
       xoa();
    ////vao vong lap chinh /////
       while (1)
       {
       strcpy (nd_lcd,"Nhiet Do:");
       hien();
    delay_ms(5);
    doc_adc();
    delay_ms(10);
    x=read_adc();
    x=x/2.049;
    chuc=cb=x/10;
    dv=x%10;
    chuc=chuc+48;
    portd=chuc;
    xuat();
    dv=dv+48;
    portd=dv;
    xuat();
    //////////////////////////////chinh sua o day////////////////
       kt_sms();
       xoa();
       if (n==1)
       {
       xoa_lcd();
       strcpy (nd_lcd,"New Mesager");
       hien();
       xoa();
       delay_ms(500);
       xuli_sms();
       delay_ms(1000);
       kt_dieukhien();
       xoa();
       printf("at+cmgd=1\r\n");
       n=0;
       delay_ms(2000);
       xoa();
       }
    if (cb>=6)
       {
          strcpy (nd_lcd,"Warning");
       hien();
       delay_ms(2000);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("Canh bao nhiet do cao tren 60 do");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       strcpy (nd_lcd,"Sent SMS");
       hien();
       delay_ms(1500);
       xoa();
       }
       }
    
       while (1)
       {}
    }
    
    
    //// VOID HIEN THI DU LIEU LEN LCD//
    void hien()
    {
    portd=0x01;
    tao();
    portd=0x38;
    tao();
    portd=0x0c;
    tao();
    portd=0x80;
    tao();
    for (l=0;l<= strlen(nd_lcd)-1;l++)
    {
    portd=nd_lcd[l];
    xuat();
    }
    }
    
    ///// VOID KHOI TAO LCD//
    void tao()
    {
    rs=0;
    rw=0;
    e=1;
    e=0;
    delay_ms(10);
    }
    
    ////VOID XUAT DU LIEU LEN LCD//
    void xuat()
    {
    e=1;
    rs=1;
    rw=0;
    e=0;
    delay_ms(10);
    }
    
    void kt_sms()
    {
    s=0;
    for (j=0;j<=80;j++)
    {
    if (buff[j]=='\r')
    {
    s++;
    }
    if (s==2)
    {
    n=1;
    }
    }
    }
    
    void cauhinh()
    {printf("a");
    delay_ms(2000);
    {printf("a");
    delay_ms(2000);
    printf("at\r\n");
    delay_ms(2000);
    xoa();
    printf("at\r\n");
    delay_ms(2000);
    while (ok==0)
       {
       xoa_lcd();
       xoa();
       strcpy (nd_lcd,"Co loi");
       hien();
       printf("at\r\n");
       delay_ms(2000);
       }
    xoa();
    strcpy (nd_lcd,"OK");
    hien();
    printf ("ate0\r\n");
    delay_ms(2000);
    printf ("at+csq\r\n");
    delay_ms(2000);
    printf ("at+cmgf=1\r\n");
    delay_ms(2000);
    printf ("at+cmgf=1\r\n");
    delay_ms(2000);
    }
    }
    
    
    //// XOA NOI DUNG CHUOI////
    void xoa()
    {
      i=0; 
      vitri=0;
     for(j=0;j<=89;j++) //Xoa chuoi[]
       {buff[j]=0;}
     for(j=0;j<=5;j++) //Xoa 
       {kt_bao_sms[i]=0;}
     for(j=0;j<=5;j++) //Xoa 
       {kt[j]=0;}
      for(j=0;j<=20;j++) //Xoa 
       {nd_sms[j]=0;}
     j=0;  
    }
    
    //// void kiem tra bao co tin nhan moi//
    
    
    
    ///////// xoa LCD /////////
    
    void xoa_lcd()
    {
     for(j=0;j<=49;j++) //Xoa nd_lcd[]
       {nd_lcd[j]=0;}
    }
    void xuli_sms()
    {xoa();
    printf("at+cmgr=1\r\n");
    delay_ms(3000);
    k=0;
    for (j=0;j<=strlen(buff)-9;j++)
    {
       if (buff[j]=='C')
       {
       k++;
          if (k==3)
          {
          vitri=j+1;
          }
       }
    }
    y=0;
    for (j=vitri;j<=strlen(buff)-9;j++)
    {
    nd_sms[y]=buff[j];
    y++;
    }
    k=0;
    vitri=0;
    y=0;
    }
    
    ////++++ kiem tra ki tu dieu khien+++
    
    void kt_dieukhien()
    {
       strcpy (nd_lcd,"Processing");
       hien();
       delay_ms(2000);
       hienthi_nd_sms();
       delay_ms(2000);
    strcpy (kt,"ON1");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c1=1;
       strcpy (nd_lcd,"CB1: ON");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat TB1");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
    strcpy (kt,"ON2");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c2=1;
       strcpy (nd_lcd,"CB 2: ON");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat TB 2");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
       strcpy (kt,"ON3");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c3=1;
       strcpy (nd_lcd,"CB 3: ON");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat TB 3");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
       strcpy (kt,"ON4");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c4=1;
       strcpy (nd_lcd,"CB4: ON");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Bao nguoi dung");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat TB4");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
    ////////////
    strcpy (kt,"OFF1");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c1=0;
       strcpy (nd_lcd,"CB1: OFF");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da tat TB 1");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
    strcpy (kt,"OFF2");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c2=0;
       strcpy (nd_lcd,"CB2: OFF");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da tat TB 2");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
       strcpy (kt,"OFF3");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c3=0;
       strcpy (nd_lcd,"CB3: OFF");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da tat TB 3");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
       strcpy (kt,"OFF4");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c4=0;
       strcpy (nd_lcd,"CB 4: OFF");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat TB 4");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
       strcpy (kt,"OFFALL");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c1=c2=c3=c4=0;
       strcpy (nd_lcd,"All CB: OFF");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call user");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da tat tat ca cac TB");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
    delay_ms(3000);
       strcpy (kt,"ONALL");
    if ( strcmp(nd_sms,kt)==0 )
       {
       c1=c2=c3=c4=1;
       strcpy (nd_lcd,"ALL CB: ON");
       hien();
       delay_ms(1500);
       strcpy (nd_lcd,"Call User");
       hien();
       printf("at+cmgs=\"0944383390\"\r\n");
       delay_ms(1000);
       printf("da bat tat ca cac TB");
       delay_ms(1000);
       putc(26);
       delay_ms(4000);
       xoa();
       }
    delay_ms(3000);
    }
    void hienthi_nd_sms()
    {
    portd=0x01;
    tao();
    portd=0x38;
    tao();
    portd=0x0c;
    tao();
    portd=0x80;
    tao();
    for (l=0;l<=strlen(nd_sms)-1;l++)
    {
    portd=nd_sms[l];
    xuat();
    }
    }
    void doc_adc()
    {
    setup_adc(adc_clock_div_4);
    setup_adc_ports(an0);
    set_adc_channel(0);
    delay_ms(20);
    }
    Thiết kế, thi công, cho thuê màn hình LED
    Liên hệ: 0902 10 80 10. Website:

Về tác giả

Collapse

Anh Ba Khía Tìm hiểu thêm về Anh Ba Khía

Bài viết mới nhất

Collapse

Đang tải...
X