中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        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.antipu.com.cn/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)閉