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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)驅(qū)動(dòng)高精度AD芯片ADS1256的C程序

          AVR單片機(jī)驅(qū)動(dòng)高精度AD芯片ADS1256的C程序

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

          #include
          #include

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


          /*************************************************************************************/
          volatile void delay_us(unsigned char a) //挺時(shí)1uS
          {
          volatile unsigned int i=0,j=0;
          for(i=0;ifor(j=0;j<50;j++)
          ;
          }

          /*************************************************************************************/
          //ads126發(fā)送一字節(jié)的數(shù)據(jù)
          unsigned char ads_senddata(unsigned char data) //SPI發(fā)送數(shù)據(jù),要在外部保證SS = 0
          {
          SPDR =data; //啟動(dòng)數(shù)據(jù)傳輸
          while((SPSR & 0x80) == 0); // 等待傳輸結(jié)束
          data = SPDR;
          return data;
          }

          /*************************************************************************************/
          void ad_write(unsigned char reg,unsigned char data)//寫寄存器。選擇寄存器地址,寫入的數(shù)據(jù)。
          {
          PORTB&=~(1< while((PIND&0X8)!=0); //DRDY信號(hào)高時(shí)才能寫寄存器
          ads_senddata(0x50+reg);//選擇寫入寄存器
          ads_senddata(0x00); //寫入1個(gè)寄存器
          ads_senddata(data); //寫入數(shù)據(jù)
          PORTB|=(1< delay_us(1); //挺時(shí)1uS //可更改。但讀數(shù)據(jù)必須在要等待最小一個(gè)采集周期(大約90ms)后。
          }
          /*************************************************************************************/
          unsigned long int ad_read()//讀A/D數(shù)據(jù)。
          {
          unsignedlongintsum=0;
          unsigned char r=0,a=0;
          PORTB&=~(1< ads_senddata(0xfc); //SYNC AD同步
          ads_senddata(0xff); //WAKEUP 喚醒,并啟動(dòng)AD轉(zhuǎn)換
          while((PIND&0X8)!=0); //DRDY信號(hào)低時(shí)才能寫寄存器 ,等待轉(zhuǎn)換完畢
          {
          delay_us(1); //挺時(shí)1uS
          ads_senddata(0x01); //發(fā)送讀取數(shù)據(jù)命令
          delay_us(1); //挺時(shí)1uS
          for (r=0;r<3;r++) //讀取24位數(shù)據(jù)
          {
          a=ads_senddata(0x00); //讀取數(shù)據(jù),先高位,后低位
          sum|=a;
          sum=sum<<8;
          }
          sum=sum>>8;
          }
          PORTB|=(1< sum=0xffffff-sum;
          returnsum;
          delay_us(1); //挺時(shí)1uS
          }

          /*************************************************************************************/
          void ADS1256(void) //初始化ADS1256
          {
          DDRD&=~(1<PORTD|=(1<DDRD|=(1<PORTD|=(1<PORTB&=~(1<PORTB|=1<ad_write(00,0xf7); //初始化STATUS reg ID位為f,數(shù)據(jù)輸出高位在先,自動(dòng)校準(zhǔn)開,輸入緩沖關(guān)閉,DRDY高電平
          ad_write(01,0x80); //初始化MUX reg 單端輸入第0通道為選通
          ad_write(02,0x00); //初始化ADCOM reg時(shí)鐘輸出關(guān)閉,傳感器檢測(cè)關(guān)閉,放大倍數(shù)為1
          ad_write(03,0xf0); //初始化DRATE reg 數(shù)據(jù)速率為30K
          ad_write(04,0x0f); //初始化DRATE reg 定義IO為輸出高電平,節(jié)能模式
          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: AVR單片機(jī)AD芯片ADS125

          評(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); })();