4111|4

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

那位高手能提供ADS1211的驱动源代码 [复制链接]

我利用三路通道采集数据,谁能提供ADS1211进行数据采集的源码,小弟在此谢过了.

最新回复

ADS1230,网上的. #include #include #include #define uint unsigned int #define ulong unsigned long #define uchar unsigned char uchar dispcnt; uchar tmscnt; uint cnt; sbit dout=P3^4;        sbit sclk=P3^5;                       //     0     1    2    3           4    5         6          7 code uchar duanma[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,                           //       8    9    U          P    -    0.                                            0xfe,0xf6,0x7c,0xce,0x02,0xfd,0x00};                                                 code uchar dispbitcode[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; data uchar vlog[8]={14,14,0,0,0,0,0,0}; ulong sum[2]={0,0};//滑动滤波值的存储 void delay1ms(void); ulong adcover(void); ulong filter(ulong ad); ulong filter1(ulong ad); void zijian(void); void jieguo(void); /****************主程序*********************/ void main() { uint i;   TMOD=0x01;          //100/0.5425=184;256-184=72=0x48;定时100us   TH0=(65536-1840)/256;   TL0=(65536-1840)%256;   TR0=1;   ET0=1;   EA=1;   P3_2=0;   zijian();   while(1) {           jieguo();   for(i=0;i  详情 回复 发表于 2008-12-21 21:43
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
刚做了ADS1230的采集,都是TI的应该差不多吧,是用软件模拟时序的吗?
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是啊,小弟第一次做,不知道该如何入手啊
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
ding
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
ADS1230,网上的.

#include
#include
#include

#define uint unsigned int
#define ulong unsigned long

#define uchar unsigned char
uchar dispcnt;
uchar tmscnt;
uint cnt;

sbit dout=P3^4;       
sbit sclk=P3^5;       

               //     0     1    2    3           4    5         6          7
code uchar duanma[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,
                          //       8    9    U          P    -    0.  
                                         0xfe,0xf6,0x7c,0xce,0x02,0xfd,0x00};      
                                         
code uchar dispbitcode[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

data uchar vlog[8]={14,14,0,0,0,0,0,0};

ulong sum[2]={0,0};//滑动滤波值的存储

void delay1ms(void);

ulong adcover(void);

ulong filter(ulong ad);

ulong filter1(ulong ad);

void zijian(void);

void jieguo(void);
/****************主程序*********************/
void main()

{ uint i;
  TMOD=0x01;          //100/0.5425=184;256-184=72=0x48;定时100us
  TH0=(65536-1840)/256;
  TL0=(65536-1840)%256;
  TR0=1;
  ET0=1;
  EA=1;
  P3_2=0;
  zijian();
  while(1)
{        
  jieguo();

  for(i=0;i<50;i++)//改显示延时
     {
delay1ms();
         }
}

}

/************延时1ms子程序***************************/
void delay1ms(void)  //延时1ms
{
  uint i;
  for(i=0;i<922;i++) //0.5425*2*922
  {  _nop_();
  }
}
/***************开机自检程序***************************/

  void zijian(void)
{
  uint i,j,k;
  vlog[0]=12;
  vlog[1]=12;
  vlog[2]=12;
  vlog[3]=10;
  vlog[4]=11;
  vlog[5]=12;
  vlog[6]=13;
  vlog[7]=1;

  for(i=0;i<500;i++)                 //显示---UP-0.1后延时一秒
  {
  delay1ms();

  }
  for(i=0;i<10;i++)                         //显示数字0---9;
  {
    for(j=0;j<8;j++)
           {
            vlog[j]=i;
           }
         
         for(k=0;k<250;k++)
           {         
            delay1ms();
           }
   }

        for(i=0;i<8;i++)
        {
          vlog=14;
        }

}
/**************AD转换程序**********************/

ulong adcover(void)
{
ulong result;
// ulong result1;
  uint rice=0;   
  uchar i;
  uchar rice1=0;
  
sclk=0;
_nop_();
_nop_();

if(dout==0)                  //dout为低,开始读取数据
{
//        EA=0;//关显示中断
  for(i=0;i<4;i++)
    {
      _nop_();
          _nop_();
         }

  for(i=0;i<12;i++)                         //高12位
  { sclk=1;
    _nop_();
        _nop_();
        sclk=0;
     if(dout==1)
      rice=(rice<<1)|0x0001;
      
         else   
      rice=rice<<1;
         _nop_();
         _nop_();       

   }

   for(i=0;i<8;i++)                  //低八位
   {
    sclk=1;
    _nop_();
        _nop_();
        sclk=0;
     if(dout==1)
      rice1=(rice1<<1)|0x01;
      
         else   
      rice1=rice1<<1;
         _nop_();
         _nop_();       

    }
           dout=1;
    for(i=0;i<2;i++)
        {
          _nop_();
          _nop_();
         }
// EA=1;
}   
// EA=0;
result=0;

result=(ulong)rice*256+(ulong)rice1;

if(result>524287)
    {
    result=1048576-result;
    }
//result1=(float)result*0.0308166;
//result=(ulong)result1;

return result;
  //EA=1;
  
}
/************滑动平均法数字滤波**************************/
ulong filter(ulong ad)
{
static ulong buff[9]={0,0,0,0,0,0,0,0,0}; //滤波缓冲区的大小,改的话6可以改,下面也要改,3个要改动
static uchar in=0;
static ulong total=0;

total-=buff[in];
buff[in]=ad;
    in++;
   if(in==9)
   {
    in=0;
        }
    total+=ad;

return (total/9);
}
/*************算术平均值滤波***************************
ulong filter1(ulong ad)
{
ulong total=0;
uchar i;
for(i=0;i<3;i++)
{
  total+=ad;
  }
  return(total/3);
}
/****************显示锁定**************************/
/***************写缓冲区**********************/
void jieguo(void)
{   
  ulong temp;
  ulong sum1;
  ulong sum2;
   EA=0;
temp=sum[0];
sum[0]=sum[1];
sum[1]=filter(adcover()); //判断sum[0]与sum[1]的大小
if(abs(sum[0]-sum[1])<=14)        //如果小于给定,则sum[1]内容不变,100是内码的变化量,可调这个
   {
   sum[1]=sum[0];
   }
   sum2=sum[1];
   sum1=(float)sum2*0.034518;
   sum1=(ulong)sum1;
   
    //vlog[2]=(sum1%1000000)/100000;
    vlog[3]=(sum1%100000)/10000;
    vlog[4]=(sum1%10000)/1000;
    vlog[5]=(sum1%1000)/100;
    vlog[6]=(sum1%100)/10;
    vlog[7]=sum1%10;
        EA=1;
}

/*************中断显示程序*************************/
void t0() interrupt 1 using 0                 //每周期的时间为0.545s        定时时间为100us
{
  TH0=(65536-1840)/256;                        //1ms
  TL0=(65536-1840)%256;
  tmscnt++;
  //if(tmscnt==1) //1ms
// {
//   tmscnt=0;
        P0=0x00;
    P2=duanma[vlog[dispcnt]];
    P0=dispbitcode[dispcnt];
      dispcnt++;
     if(dispcnt==8)
      {
          dispcnt=0;
      }
        }               
//}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表