您的位置 首页 发布

AVR单片机驱动高精度AD芯片ADS1256的C程序

includeavrioh>includeavrinterrupth>includeavrsignalh>**************************************

#include

#include
#include

/*************************************************************************************/
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发送一字节的数据
unsigned char ads_senddata(unsigned char data) //SPI发送数据,要在外部确保SS = 0
{
SPDR =data; //发动数据传输
while((SPSR & 0x80) == 0); // 等候传输结束
data = SPDR;
return data;
}

/*************************************************************************************/
void ad_write(unsigned char reg,unsigned char data)//写寄存器。挑选寄存器地址,写入的数据。
{
PORTB&=~(1< while((PIND&0X8)!=0); //DRDY信号高时才能写寄存器
ads_senddata(0x50+reg);//挑选写入寄存器
ads_senddata(0x00); //写入1个寄存器
ads_senddata(data); //写入数据
PORTB|=(1< delay_us(1); //挺时1uS //可更改。但读数据有必要在要等候最小一个收集周期(大约90ms)后。
}
/*************************************************************************************/
unsigned long int ad_read()//读A/D数据。
{
unsignedlongintsum=0;
unsigned char r=0,a=0;
PORTB&=~(1< ads_senddata(0xfc); //SYNC AD同步
ads_senddata(0xff); //WAKEUP 唤醒,并发动AD转化
while((PIND&0X8)!=0); //DRDY信号低时才能写寄存器 ,等候转化结束
{
delay_us(1); //挺时1uS
ads_senddata(0x01); //发送读取数据指令
delay_us(1); //挺时1uS
for (r=0;r<3;r++) //读取24位数据
{
a=ads_senddata(0x00); //读取数据,先高位,后低位
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,数据输出高位在先,主动校准开,输入缓冲封闭,DRDY高电平
ad_write(01,0×80); //初始化MUX reg 单端输入第0通道为选通
ad_write(02,0×00); //初始化ADCOM reg时钟输出封闭,传感器检测封闭,扩大倍数为1
ad_write(03,0xf0); //初始化DRATE reg 数据速率为30K
ad_write(04,0x0f); //初始化DRATE reg 界说IO为输出高电平,节能形式
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/318433.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部