king000 发表于 2011-11-25 14:54:48

有没有做过ADS1232的啊,帮我看看程序

有没有做过ADS1232的啊,帮我看看程序

king000 发表于 2011-11-25 14:55:21

#include<ALL.h>

sbit SCLK =P0^0;
sbit SPEED=P0^1;
sbit GAIN0=P0^2;
sbit DOUT =P0^3;
sbit PDWN =P0^4;
sbit GAIN1=P0^5;
sbit A0   =P0^6;                                                                                                                                                                          


/*ADS1232初始化,参数依次为通道数,增益数,数据速率*/
void ADS_init(uchar Gal,uchar Gain,uchar DatR)
{
        PDWN = 0;                //复位或者进行初始化时必须先拉低
        switch(Gal)               //通道数
        {
                case 1:         A0 = 0; break;
                case 2:         A0 = 1; break;
        }

        switch(Gain)   //4种增益倍数
        {
                case 1:         GAIN1 = 0; GAIN0 = 0; break;
                case 2:         GAIN1 = 0; GAIN0 = 1; break;
                case 64:         GAIN1 = 1; GAIN0 = 0; break;
                case 128:        GAIN1 = 1; GAIN0 = 1; break;
        }

        switch(DatR)         //两种数据速率
        {
                case 10:        SPEED = 0; break;
                case 80:        SPEED = 1; break;       
        }                                                                                                 
        PDWN = 1;        //拉高准备工作       


        PDWN=0;                        //重新复位
        delay_ms(14);
        PDWN=1;

        SCLK=0;



        ADS_getdata(1);    //复位后校准一下

        ADS_getdata(0);           //先前不稳定的值读取掉
        ADS_getdata(0);
       
}


long ADS_getdata(uchar Singl)
{
        uchar i;
        long Result=0;

        while(DOUT);        //等待DOUT置低,可读数据信号

        for(i=0;i<24;i++)
        {
                Result<<=1;
                SCLK=1;
                if(DOUT==1)
                        Result=Result+1;
                else
                        _nop_();
                SCLK=0;
        }

        SCLK = 1;       //在第25个时钟将DOUT拉高(消除累计误差)
        _nop_();                  
        SCLK = 0;

        if(Singl)        //在第26个时钟是否进行偏移校验               
        {
                SCLK = 1;
                _nop_();        
                SCLK = 0;
        }

        return Result;
}

king000 发表于 2011-11-25 14:56:27

特别是关于参数设置和复位的问题,有没有先后等问题啊

king000 发表于 2011-11-25 15:14:48

大家支声啊,呵呵

king000 发表于 2011-11-25 15:30:57

现在有个问题是,传感器的信号越大为什么ad输出越小啊

king000 发表于 2011-11-25 15:55:20

高手们小弟急啊············
在线等·····

waterx3 发表于 2011-11-25 16:23:12

你先确定进AD的信号是正确的。

king000 发表于 2011-11-25 16:29:13

回复【6楼】waterx3
-----------------------------------------------------------------------

恩,现在信号正确,当重量增加的时候传感器输出的电压会增加

king000 发表于 2011-11-25 17:02:20

1D BF FF 0A 1A 3F FF 0A 1C EF FF 0A 1D FF FF 0A 19 FF FF 0A 1F EF FF 0A 1A FF FF 0A 1C FF FF 0A 1B FF FF 0A 16 FFFF 0A 1F BF FF 0A 17 FF FF 0A 18 2F FF 0A 19 0F FF 0A 13 FF FF 0A 1B FF FF 0A 14 BF FF 0A 1B FF FF 0A 1C FF FF 0A 11 FF FF 0A 1F 8F FF 0A 10 3F FF 0A 11 FF FF 0A 1B CF FF 0A 1F FF FF 0A 12 7F FF 0A 13 BF FF 0A 18 0F FF 0A 1F FF FF 0A 16 7F FF 0A 10 3F FF 0A 10 3F FF 0A 13 FF FF 0A 14 7F FF 0A 18 07 FF 0A 12 BF FF 0A 17 FF FF 0A 15 BF FF 0A 10 7F FF 0A 1F FF FF 0A 18 1F FF 0A 1F FF FF 0A 10 7F FF 0A 18 1F FF 0A 14 3F FF 0A 1F FF FF 0A 10 07 FF 0A
这是数据,用OA把每组数据隔开的啊,为什么后面的都是F啊,不解

风铃 发表于 2012-11-13 17:09:04

请问楼主现在ADS1232调试出来了没有?
页: [1]
查看完整版本: 有没有做过ADS1232的啊,帮我看看程序