在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

            #include
            #include

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


            /*************************************************************************************/
            volatile void delay_us(unsigned char a) //挺時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; //啟動數(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信號高時才能寫寄存器
            ads_senddata(0x50+reg);//選擇寫入寄存器
            ads_senddata(0x00); //寫入1個寄存器
            ads_senddata(data); //寫入數(shù)據(jù)
            PORTB|=(1< delay_us(1); //挺時1uS //可更改。但讀數(shù)據(jù)必須在要等待最小一個采集周期(大約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 喚醒,并啟動AD轉(zhuǎn)換
            while((PIND&0X8)!=0); //DRDY信號低時才能寫寄存器 ,等待轉(zhuǎn)換完畢
            {
            delay_us(1); //挺時1uS
            ads_senddata(0x01); //發(fā)送讀取數(shù)據(jù)命令
            delay_us(1); //挺時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); //挺時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ù)輸出高位在先,自動校準(zhǔn)開,輸入緩沖關(guān)閉,DRDY高電平
            ad_write(01,0x80); //初始化MUX reg 單端輸入第0通道為選通
            ad_write(02,0x00); //初始化ADCOM reg時鐘輸出關(guān)閉,傳感器檢測關(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

            評論


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

            關(guān)閉