Thông báo

Collapse
No announcement yet.

giao tiếp SPI,I2C

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

  • giao tiếp SPI,I2C

    Có bác nào biết về chuẩn giao tiếp SPI và I2C là gì ko.Khái niệm cũng như ứng dụng của nó.

  • #2
    Mình thì chỉ biết chuẩn I2C thôi. Đây là chuẩn truyền dữ liệu dạng nối tiếp gồm hai dây là SDA (dữ liệu) và SCL (dây xung nhịp).
    Bên phát sẽ tạo ra xung nhịp (SCL) để bên thu dựa vào đó tính toán dữ liệu trên đường SDA.
    Chuẩn này mình hay dùng trong đồng hồ thời gian thực DS1307. Nếu bạn nào cần code cho 89C51 thì mail cho mình.
    Còn nếu dùng AVR thì bộ soạn thảo Codevision nó tạo sẵn cho bạn, bạn chỉ cần khai báo là xong thôi.
    GTH sản xuất mạch in PCB 1 mặt:
    -phủ xanh: 40.000 đ/dm2
    -không phủ xanh: 30.000 đ/dm2
    -Cung cấp mực cảm quang để làm mạch in
    email:

    Comment


    • #3
      Chao Pac gth_pcb!

      bac lam on gui cho em code cua chuan giao tiep I2C cua AT 89s51 voi DS1307 voi nhe
      em đang can lam.
      thanks bac nhieu!!!
      email cua em: jimmy_mtv21@yahoo.com
      Ko tin vào chính mình
      Tức là bạn đã thất bại một nửa trước khi bắt đầu.

      Comment


      • #4
        mình đang làm về SDI,mình ko biết nó là gì cả,ai biết thì báo mình với

        Comment


        • #5
          Giao tiếp I2C

          Nguyên văn bởi gth_pcb Xem bài viết
          Mình thì chỉ biết chuẩn I2C thôi. Đây là chuẩn truyền dữ liệu dạng nối tiếp gồm hai dây là SDA (dữ liệu) và SCL (dây xung nhịp).
          Bên phát sẽ tạo ra xung nhịp (SCL) để bên thu dựa vào đó tính toán dữ liệu trên đường SDA.
          Chuẩn này mình hay dùng trong đồng hồ thời gian thực DS1307. Nếu bạn nào cần code cho 89C51 thì mail cho mình.
          Còn nếu dùng AVR thì bộ soạn thảo Codevision nó tạo sẵn cho bạn, bạn chỉ cần khai báo là xong thôi.
          chào pác gth_pcb
          e đang làm cái đồng hồ thời gian thực dùng con 89s52 và DS12C887 có giao tiếp I2C nhưng e ko làm được pác chỉ em với nhé, e gửi code cho pác xem và giúp e phải làm như thế nào để dịch được file hex từ MikroC for 8051. trong bài viết họ để 2 đoạn code, 1 là khai báo RTC
          PHP Code:
          1Code khởi tạo RTC (nạp lần 1 để setup time cho RTC)

          #include <AT89x52.h>
          unsigned char xdata xreg[14_at_ 0xFF00;//cac thanh ghi dieu khien (second, minutes,..A,B,..) 
          unsigned char xdata theky _at_ 0xFF32;
          //////////////////// DINH DANH CAC NHAN DIEU KHIEN
          sbit CS =P3^1;
          #define sqw_on xreg[0xB]|=0x08;// phat xung vuong//SQWE=1

          #define sqw_off xreg[0xB]&=0xF7;// phat xung vuong//SQWE=0

          #define edit_on xreg[0x0B]|=0x80;// dat che do chinh sua//SET=1

          #define edit_off xreg[0x0B]&=0x7F;// tat che do chinh sua//SET=0

          #define UIE_on xreg[0x0B]|=0x10;// cho phet ngat ket thuc viec cap nhap

          #define UIE_off xreg[0x0B]&=0xEF;// khong cho phet ngat ket thuc viec cap nhap

          data unsigned char n,c1,c2;
          //////////////////// DINH NGHIA VA KHAI BAO CAC KIEU DU LIEU MOI
          void delay(unsigned char n)// thu tuc tre

           for(
          c1=0;c1<=n;c1++)
            for(
          c2=0;c2<=200;c2++);
          }

          //////////////////////////// CHUONG TRINH CHINH
          void main()
          {
           
          CS=0;//chon chan CS
           
          xreg[0xA]=0xAF;//bat chip dong ho va tan so cua SQW=2Hz;
           
          edit_on //10101111 UIP=1;DV=010;RS=1111
           
          delay(100);
           
          //xreg[0xB]|=0x04;// dat che do binary (DM=0),DSE=0
           
          xreg[0xB]|=0x04;// dat che do BCD (DM=0),DSE=0
           
          edit_on
           xreg
          [0xB]|=0x2;// dat che do kieu 24h  
           //////// dat gio va lich
           
          edit_on
           theky
          =20;//thanh ghi the ky
           
          xreg[0]=0;//dat 0 giay
           
          xreg[2]=12;//dat phut
           
          xreg[4]=22;//dat gio
           
          xreg[6]=2;// thu
           
          xreg[7]=24;// ngay
           
          xreg[8]=11;// thang
           
          xreg[9]=8;// nam
           
          edit_off
            sqw_on
           UIE_on

          và thứ 2 là phần code chính của chương trình
          PHP Code:
          //////////////////////////////////// PHAN DINH NGHIA CAC THU TUC

          2-Code chính của chương trình



          -----------------------------------------------------------
          |
          REG A UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0 |
          ---------------
          r--------------------------------------------
          |
          REG B SET PIE AIE UIE |SQWE DM |24/12DSE |  
          ------------------------------------------------------------
          |
          REG C |IRQF PF AF UF |
          ---------------
          r-----r-----r-----r---------------------------
          */
          #include <AT89x51.h>
          unsigned char xdata xreg[14_at_ 0xFF00;//vi tri cac thanh ghi gio ,phut,giay..
          unsigned char xdata theky _at_ 0xFF32;//thanh ghi the ky

          ///////////// DINH DANH CAC NHAN DIEU KHIEN///////////////////
          sbit dongheP1^0;//dinh nghia cac cong lam nut an
          sbit AMPMP1^1;//Led AM -PM
          sbit DOTP1^2;//chan H
          sbit chuong=P3^0;//bao chuong
          sbit CS=P3^1;//chon chip DS
          sbit chon=P3^3;//chon Led de dieu chinh
          sbit role=P1^6;//chon role mac dinh =0
          sbit loa=P1^7;//chon role mac dinh =1
          sbit set=P3^5;//thiet lap 
          //////////////////////////////////////////////////////
          #define sqw_on xreg[0xB]|=0x08;// phat xung vuong//SQWE=1
          #define sqw_off xreg[0xB]&=0xF7;// tat phat xung vuong//SQWE=0
          #define edit_on xreg[0x0B]|=0x80;// dat che do chinh sua//SET=1
          #define edit_off xreg[0x0B]&=0x7F;// dat che do chinh sua//SET=0
          #define intr0_on EX0=1;// cho phep ngat ngoai 0
          #define intr0_off EX0=0;// khong phep ngat ngoai 0
          #define UIE_on xreg[0x0B]|=0x10;// cho phet ngat ket thuc viec cap nhap
          #define UIE_of xreg[0x0B]&=0xEF;// khong cho phet ngat ket thuc viec cap nhap
          data unsigned char view[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // vung dem danh cho viec hien thi
          data unsigned char pp[4]={0x10,0x12,0x11};
          data unsigned char UIP,K,loi;
          ////////////////////////////////////////////////////////////////
          //////////////////// DINH NGHIA VA KHAI BAO CAC KIEU DU LIEU MOI
          data unsigned char giay,phut,gio,thu,ngay,thang,nam;
          /////////////////gio bao chuong////////////////////
          //////////////////////Khai bao cac bien du lieu/////////////////////////////
          unsigned char i,j,x,t,h,m,h,p,q,ii,jj,vao2,kk,y;
          ///////////////thu tuc tre^~///////////////////////////
          void delay(unsigned char vao)
          {
           for(
          i=0;i<=vao;i++)
            for(
          j=0;j<=100;j++);
          }
          void delay2(unsigned char vao2)
          {
           for(
          ii=0;ii<=vao2;ii++)
            for(
          jj=0;jj<=200;jj++)
            for(
          kk=0;kk<=250;kk++);
          }
          ///////////////thoi gian bao tiet///////////////////////////


          /////////khoi tao RTC chi 1 lan////////////
          /*void khoitao()
          {
            CS=0;//chon chan CS
           delay(200);
           delay(200);
           xreg[0xA]=0xEF;//reset bo giao dong cua RTC
           delay(100);
           xreg[0xA]=0xAF;//bat chip dong ho va tan so cua SQW=2Hz;
           edit_off //10101111 UIP=1;DV=010;RS=1111
           delay(100);
           edit_on
           xreg[0xB]|=0x04;// dat che do binary (DM=1),DSE=0
           xreg[0xB]|=0x2;// dat che do kieu 24h  
           //////// dat gio va lich
           theky=20;//thanh ghi the ky
           edit_on
           xreg[0]=0;//dat 0 giay
           xreg[2]=50;//dat phut
           xreg[4]=0;//dat gio
           xreg[6]=7;// thu
           xreg[7]=26;// ngay
           xreg[8]=8;// thang
           xreg[9]=06;// nam
           edit_off
            sqw_on
           UIE_on

          }

          */
          /////////////////kieu chuong////////////////
          void baochuong()
          {
          role=0;
          delay2(5);
          role=1;
          delay2(5);
          }
          //////////////////////CHUONG TRINH HIEN THI LED/////////////////////////
          void displayLed()

           
          view[0]=(unsigned char)(thu==1)?8:thu;// phan don vi cua thu <=8
           
          view[1]=(unsigned char)(ngay/10);// phan chuc cua ngay
           
          view[2]=(unsigned char)(ngay%10);// phan donvi cua ngay
           
          view[3]=(unsigned char)(thang/10);// phan chuc cua thang
           
          view[4]=(unsigned char)(thang%10);// phan donvi cua thang
           
          view[5]=(unsigned char)(nam/10);// phan chuc cua nam
           
          view[6]=(unsigned char)(nam%10);// phan donvi cua nam
           
          view[7]=(unsigned char)(gio/10);// phan chuc cua gio
           
          view[8]=(unsigned char)(gio%10);// phan donvi cua gio
           
          view[9]=(unsigned char)(phut/10);// phan chuc cua phut
           
          view[10]=(unsigned char)(phut%10);// phan donvi cua phut
           
          view[12]=(unsigned char)(giay/10);//phan donvi cua giay
           
          view[13]=(unsigned char)(giay%10);//phan don chuc cua giay
           
          view[11]=view[0];
            for(
          x=0;x<15;x++){P2=(((x+1)&0x0F)|(view[x]<<4));delay(2);}
           if(
          gio<12)AMPM=1;else if(gio>=12AMPM=0;
           while((
          gio==6)&(phut==45)&(giay<=10))baochuong();//bao chuong get up
           
          while((gio==1)&(phut==15)&(giay<=10))baochuong();//bao chuong get up
           
          if((ngay>=15)&(thang>=10))donghe=1;else donghe=0;
           
           } 
          ////////////////THU TUC PHUC VU NGAT RTC/////////////
          void intr0() interrupt 0//chuong trinh con phuc vu ngat
          {  
            
          EA=0;//cam tat ca cac ngat  
            
          h=xreg[0x0C];// REG C=0;
            
          while(xreg[0x0A]&0x80);//cho qua giai doan tu cap nhap
            
          giay=xreg[0];// lay giay
            
          phut=xreg[2];// lay phut
            
          gio=xreg[4];// lay gio
            
          thu=xreg[6];// lay thu trong tuan
            
          ngay=xreg[7];// lay ngay trong thang
            
          thang=xreg[8];// lay thang trong nam  
            
          nam=xreg[9];// lay nam 
            
          EA=1;//cho phep ngat tro lai
          }
          /////////////THU TUC PHUC VU NGAT PHIM//////////

          void intr1() interrupt 2//chuong trinh con phuc vu ngat
          {
            
          }


          //////////////////////////////////////////////////////


          ///////////////CHUONG TRINH CHINH//////////////////////////
          void main()
          {

          //khoitao();//goi ham khoi tao 1 lan;
          ////////////khoi tao ngat////////////
           
          chuong=0;//cam chuong
           
          delay2(30);
           
          role=0;//cam role
           
          loa=1;//cam loa
           
          CS=0;//bat RTC
           
          EX0=1;// phep ngat ngoai 0 cua RTC
           
          IT0=1;// ngat theo suon
            
          EX1=1;// phep ngat ngoai 0 cua RTC
           
          IT1=1;// ngat theo suon
          ///////// khoi tao RTC lien tuc 
           
          xreg[0xB]&=0x8F;// cam ngat chu ky va ngat cap nhap 
           
          edit_off//set=0;
           
          UIE_on;//bat cho phep ngat dinh ky
           
          sqw_on
          /////////// CONG VIEC CHINH CUA MAIN BAT DAU
           
          EA=1;// cho phep ngat toan cuc
           
          intr0_on// ngat RTC
           
          while(1)displayLed();
           } 
          pác giúp em cái này với
          |

          Comment

          Về tác giả

          Collapse

          bk638 Tìm hiểu thêm về bk638

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

          Collapse

          Đang tải...
          X