<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          PIC單片機(jī)IIC通信程序

          作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
          #include

          #define uchar unsigned char
          #define uint unsigned int
          __CONFIG(0X3B31);
          const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
          0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
          uchar a1,a2,a3,a4;
          void delay(uint x)
          {
          uint a,b;
          for(a=x;a>0;a--)
          for(b=110;b>0;b--);
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/320590.htm

          void port_init()
          {
          TRISD=0;
          TRISB=0;
          TRISC=0xff;
          PORTD=0;
          PORTB=0;
          }

          void IIC_init()
          {
          SSPSTAT=0x80;
          SSPCON=0x38;//CKP高電平空閑,因?yàn)镮2C必須加上拉電阻,所以設(shè)定高電平空閑
          SSPCON2=0;//開(kāi)始設(shè)為0,在讀寫的過(guò)程中相應(yīng)改變其中的寄存器
          SSPADD=0x09;//設(shè)置波特率,時(shí)鐘=Fosc/[4*(SSPAD+1)
          }

          void write(uchar add,uchar wdate)
          {
          SSPIF=0;
          SEN=1; //啟動(dòng)信號(hào)
          while(SSPIF==0); //1的時(shí)候是真 0的時(shí)候是假 !SSPIF為非真,為假退出語(yǔ)句
          SSPIF=0; //軟件清零 不會(huì)自動(dòng)清零
          SSPBUF=0XA0; //發(fā)送設(shè)備地址
          while(SSPIF==0); //判斷是否發(fā)送完畢
          SSPIF=0;
          SSPBUF=add; //發(fā)送存儲(chǔ)地址 add隨自己設(shè)置
          while(SSPIF==0); //監(jiān)測(cè)數(shù)據(jù)是否發(fā)完
          SSPIF=0;

          SSPBUF=wdate; //寫入數(shù)據(jù)
          while(SSPIF==0); //每發(fā)送一個(gè)數(shù)據(jù)都要檢測(cè)是否成功
          SSPIF=0;

          PEN=1; //發(fā)送停止信號(hào)
          while(SSPIF==0);//如果收到停止信號(hào)同樣會(huì)置位
          SSPIF=0;
          delay(10);
          }


          uchar read(uchar add)
          {
          uchar rdate;
          SSPIF=0;
          SEN=1;
          while(SSPIF==0);
          SSPIF=0;
          SSPBUF=0xA0;//傳輸設(shè)備地址
          while(SSPIF==0);
          SSPIF=0;
          SSPBUF=add;//add為讀地?cái)?shù)據(jù)地址,靈活設(shè)置
          while(SSPIF==0);
          SSPIF=0;

          RSEN=1;
          while(SSPIF==0);
          SSPIF=0;
          SSPBUF=0xA1;//A仍然為外接設(shè)備地址,1表示輸入,開(kāi)始從外接設(shè)備讀取數(shù)據(jù)
          while(SSPIF==0);
          SSPIF=0;

          RCEN=1;
          while(SSPIF==0);
          rdate=SSPBUF;
          while(SSPIF==0);
          SSPIF=0;


          ACKDT=1;//寫入應(yīng)答信號(hào)
          ACKEN=1;//發(fā)送應(yīng)答信號(hào)
          while(SSPIF==0);
          SSPIF=0;

          PEN=1;
          while(SSPIF==0);
          SSPIF=0;
          return(rdate);
          }

          void display(uchar num1,uchar num2,uchar num3,uchar num4)
          {
          PORTB=0XF7;
          PORTD=table[num1];

          delay(2);
          PORTB=0XFB;
          PORTD=table[num2];


          delay(2);
          PORTB=0XFD;
          PORTD=table[num3];

          delay(2);
          PORTB=0XFE;
          PORTD=table[num4];

          delay(2);
          }

          void main()
          {
          port_init();
          IIC_init();
          delay(100);
          write(0,123);//8位為存儲(chǔ)器,如果寫入的值大于255就溢出了
          uchar read(uchar add);
          while(1)
          {
          uchar lednum;
          lednum=read(0);
          a1=lednum/1000;
          a2=lednum00/100;
          a3=lednum0/10;
          a4=lednum;
          display(a1,a2,a3,a4);
          }
          }



          關(guān)鍵詞: PIC單片機(jī)IIC通信程

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();