Weight_Bed/CS1237.c

853 lines
16 KiB
C
Raw Permalink Normal View History

2024-05-17 15:11:04 +08:00
#include "H/Function_Init.H"
//ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ADC_DT0 P44
#define ADC_CLK0 P43
#define ADC_DT1 P05
#define ADC_CLK1 P04
#define ADC_DT2 P26
#define ADC_CLK2 P25
#define ADC_DT3 P02
#define ADC_CLK3 P01
//DOUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ADC_DT0_IN() {P4CON &= 0xEF;P4PH|=0x10;}
#define ADC_DT0_OUT() {P4CON |= 0X10;}
#define ADC_DT1_IN() { P0CON &= 0xDF;P0PH|=0x20;}
#define ADC_DT1_OUT() { P0CON |= 0x20;}
#define ADC_DT2_IN() { P2CON &= 0xBF;P2PH|=0x40;}
#define ADC_DT2_OUT() { P2CON |= 0x40;}
#define ADC_DT3_IN() {P0CON &= 0xFB;P0PH|=0x04;}
#define ADC_DT3_OUT() {P0CON |= 0x04;}
void CS1237_Init_all(void)
{
CS1237_Init();//CS1237<33><37>ʼ<EFBFBD><CABC>
CS1237_Init_1();
CS1237_Init_2();
CS1237_Init_3();
}
void CS1237_Config_all(void)
{
CS1237_Config();
CS1237_Config_1();
CS1237_Config_2();
CS1237_Config_3();
}
long Read_CS1237_all(uchar num)
{
long ret;
switch(num)
{
case 0:ret = Read_CS1237();break;
case 1:ret = Read_CS1237_1();break;
case 2:ret = Read_CS1237_2();break;
case 3:ret = Read_CS1237_3();break;
default:ret = 0;break;
}
return ret;
}
/**************************************************************
ADCоƬ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1<EFBFBD><EFBFBD>PAG<EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ͺŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹֵ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%F*S<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>İٷֱȣ<EFBFBD>
3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ܻʱ<EFBFBD><EFBFBD>
***************************************************************/
//////////////<2F><>ʼ<EFBFBD><CABC>CS1237оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>clk<6C><6B><EFBFBD><EFBFBD>PowerDown״̬
void CS1237_Init(void)
{
ADC_DT0_OUT();
ADC_DT0 = 1;
ADC_CLK0 = 1;
}
//////////////<2F><><EFBFBD><EFBFBD>CS1237оƬ
uchar CS1237_Config(void)
{
uchar i ;
uchar dat ;
uint count_i = 0;
dat =0x0c;//оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڲ<EFBFBD>REF <20><><EFBFBD><EFBFBD>40HZ PGA=128 ͨ<><CDA8>A 0X1C
// ADC_DT0_OUT();
// ADC_DT0 = 1;
ADC_DT0_IN();
ADC_CLK0 = 0;
// UART_SendByte(0x22);
while(ADC_DT0 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT0_OUT();
ADC_CLK0 = 1;
ADC_DT0 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK0=1;
Delay(1);
ADC_CLK0=0;
Delay(1);
}
ADC_DT0_OUT();
/////////////////30-36д<36><D0B4><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X65
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK0 = 1;
Delay(1);
ADC_CLK0 = 0;
Delay(1);
/////////////////38-45 д8λ<38><CEBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
for(i=0;i<8;i++)
{
ADC_CLK0 = 1;
Delay(1);
if(dat&0x80)
ADC_DT0=1;
else
ADC_DT0=0;
dat<<=1;
ADC_CLK0 = 0;
Delay(1);
}
ADC_CLK0 = 1;//46
ADC_DT0 = 1 ;
Delay(1);
ADC_CLK0 = 0;
Delay(1);
return 1;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long Read_CS1237(void)
{
uchar i;
unsigned long dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
long temp;
// ADC_DT0_OUT();
// ADC_DT0 = 1;
ADC_DT0_IN();
ADC_CLK0 = 0;
while(ADC_DT0==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT0_OUT();
ADC_CLK0 = 1;
ADC_DT0 = 1;
return 0;
}
}
dat = 0;
for(i=0;i<24;i++)
{
ADC_CLK0 = 1;
Delay(1);
dat<<=1;
if(ADC_DT0==1)
dat++;
ADC_CLK0 = 0;
Delay(1);
}
for(i=0;i<3;i++)//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>24<32><34>ʱ<EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>3<EFBFBD><33>ʱ<EFBFBD>ӣ<EFBFBD>DOUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>
{
ADC_CLK0=1;
Delay(1);
ADC_CLK0=0;
Delay(1);
}
ADC_DT0_OUT();
ADC_DT0=1;
Delay(1);
ADC_DT0_IN();
if(dat &0x00800000)//24λ<34><CEBB><EFBFBD><EFBFBD>ת32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λȡ<CEBB><C8A1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ)<29><><EFBFBD><EFBFBD>+1תԴ<D7AA><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
{
temp = -(((~dat)&0x007FFFFF)+1);
}
else
temp = dat;
return temp;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uchar Read_Config(void)
{
uchar i;
uchar dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// ADC_DT0_OUT();
// ADC_DT0 = 1;
ADC_DT0_IN();
ADC_CLK0 = 0;
// UART_SendByte(0x22);
while(ADC_DT0 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT0_OUT();
ADC_CLK0 = 1;
ADC_DT0 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK0=1;
Delay(1);
ADC_CLK0=0;
Delay(1);
}
ADC_DT0_OUT();
/////////////////30-36<33><36><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X56
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=1;ADC_CLK0=0;Delay(1);
ADC_CLK0 = 1;Delay(1);ADC_DT0=0;ADC_CLK0=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK0 = 1;
Delay(1);
ADC_DT0_IN();
ADC_CLK0 = 0;
Delay(1);
dat = 0;
for(i=0;i<8;i++)/////////38-45,<2C><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ADC_CLK0 = 1;
Delay(1);
ADC_CLK0 = 0;
Delay(1);
dat<<=1;
if(ADC_DT0==1)
dat++;
}
ADC_CLK0 = 1;//46
Delay(1);
ADC_DT0_OUT();
ADC_DT0=1;
ADC_CLK0 = 0;
Delay(1);
return dat;
}
//////////////<2F><>ʼ<EFBFBD><CABC>CS1237оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>clk<6C><6B><EFBFBD><EFBFBD>PowerDown״̬
void CS1237_Init_1(void)
{
ADC_DT1_OUT();
ADC_DT1 = 1;
ADC_CLK1 = 1;
}
//////////////<2F><><EFBFBD><EFBFBD>CS1237оƬ
uchar CS1237_Config_1(void)
{
uchar i ;
uchar dat ;
uint count_i = 0;
dat =0x0c;//оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڲ<EFBFBD>REF <20><><EFBFBD><EFBFBD>40HZ PGA=128 ͨ<><CDA8>A 0X1C
ADC_DT1_OUT();
ADC_DT1 = 1;
ADC_DT1_IN();
ADC_CLK1 = 0;
// UART_SendByte(0x22);
while(ADC_DT1 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT1_OUT();
ADC_CLK1 = 1;
ADC_DT1 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK1=1;
Delay(1);
ADC_CLK1=0;
Delay(1);
}
ADC_DT1_OUT();
/////////////////30-36д<36><D0B4><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X65
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK1 = 1;
Delay(1);
ADC_CLK1 = 0;
Delay(1);
/////////////////38-45 д8λ<38><CEBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
for(i=0;i<8;i++)
{
ADC_CLK1 = 1;
Delay(1);
if(dat&0x80)
ADC_DT1=1;
else
ADC_DT1=0;
dat<<=1;
ADC_CLK1 = 0;
Delay(1);
}
ADC_CLK1 = 1;//46
ADC_DT1 = 1 ;
Delay(1);
ADC_CLK1 = 0;
Delay(1);
return 1;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long Read_CS1237_1(void)
{
uchar i;
unsigned long dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
long temp;
// ADC_DT1_OUT();
// ADC_DT1 = 1;
ADC_DT1_IN();
ADC_CLK1 = 0;
while(ADC_DT1==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT1_OUT();
ADC_CLK1 = 1;
ADC_DT1 = 1;
return 0;
}
}
dat = 0;
for(i=0;i<24;i++)
{
ADC_CLK1 = 1;
Delay(1);
dat<<=1;
if(ADC_DT1==1)
dat++;
ADC_CLK1 = 0;
Delay(1);
}
for(i=0;i<3;i++)//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>24<32><34>ʱ<EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>3<EFBFBD><33>ʱ<EFBFBD>ӣ<EFBFBD>DOUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>
{
ADC_CLK1=1;
Delay(1);
ADC_CLK1=0;
Delay(1);
}
ADC_DT1_OUT();
ADC_DT1=1;
Delay(1);
ADC_DT1_IN();
if(dat &0x00800000)//24λ<34><CEBB><EFBFBD><EFBFBD>ת32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λȡ<CEBB><C8A1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ)<29><><EFBFBD><EFBFBD>+1תԴ<D7AA><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
{
temp = -(((~dat)&0x007FFFFF)+1);
}
else
temp = dat;
return temp;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uchar Read_Config_1(void)
{
uchar i;
uchar dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ADC_DT1_OUT();
ADC_DT1 = 1;
ADC_DT1_IN();
ADC_CLK1 = 0;
// UART_SendByte(0x22);
while(ADC_DT1 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT1_OUT();
ADC_CLK1 = 1;
ADC_DT1 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK1=1;
Delay(1);
ADC_CLK1=0;
Delay(1);
}
ADC_DT1_OUT();
/////////////////30-36<33><36><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X56
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=1;ADC_CLK1=0;Delay(1);
ADC_CLK1 = 1;Delay(1);ADC_DT1=0;ADC_CLK1=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK1 = 1;
Delay(1);
ADC_DT1_IN();
ADC_CLK1 = 0;
Delay(1);
dat = 0;
for(i=0;i<8;i++)/////////38-45,<2C><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ADC_CLK1 = 1;
Delay(1);
ADC_CLK1 = 0;
Delay(1);
dat<<=1;
if(ADC_DT1==1)
dat++;
}
ADC_CLK1 = 1;//46
Delay(1);
ADC_DT1_OUT();
ADC_DT1=1;
ADC_CLK1 = 0;
Delay(1);
return dat;
}
//////////////<2F><>ʼ<EFBFBD><CABC>CS1237оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>clk<6C><6B><EFBFBD><EFBFBD>PowerDown״̬
void CS1237_Init_2(void)
{
ADC_DT2_OUT();
ADC_DT2 = 1;
ADC_CLK2 = 1;
}
//////////////<2F><><EFBFBD><EFBFBD>CS1237оƬ
uchar CS1237_Config_2(void)
{
uchar i ;
uchar dat ;
uint count_i = 0;
dat =0x0c;//оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڲ<EFBFBD>REF <20><><EFBFBD><EFBFBD>40HZ PGA=128 ͨ<><CDA8>A 0X1C
// ADC_DT2_OUT();
// ADC_DT2 = 1;
ADC_DT2_IN();
ADC_CLK2 = 0;
// UART_SendByte(0x22);
while(ADC_DT2 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT2_OUT();
ADC_CLK2 = 1;
ADC_DT2 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK2=1;
Delay(1);
ADC_CLK2=0;
Delay(1);
}
ADC_DT2_OUT();
/////////////////30-36д<36><D0B4><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X65
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK2 = 1;
Delay(1);
ADC_CLK2 = 0;
Delay(1);
/////////////////38-45 д8λ<38><CEBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
for(i=0;i<8;i++)
{
ADC_CLK2 = 1;
Delay(1);
if(dat&0x80)
ADC_DT2=1;
else
ADC_DT2=0;
dat<<=1;
ADC_CLK2 = 0;
Delay(1);
}
ADC_CLK2 = 1;//46
ADC_DT2 = 1 ;
Delay(1);
ADC_CLK2 = 0;
Delay(1);
return 1;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long Read_CS1237_2(void)
{
uchar i;
unsigned long dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
long temp;
// ADC_DT2_OUT();
// ADC_DT2 = 1;
ADC_DT2_IN();
ADC_CLK2 = 0;
while(ADC_DT2==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT2_OUT();
ADC_CLK2 = 1;
ADC_DT2 = 1;
return 0;
}
}
dat = 0;
for(i=0;i<24;i++)
{
ADC_CLK2 = 1;
Delay(1);
dat<<=1;
if(ADC_DT2==1)
dat++;
ADC_CLK2 = 0;
Delay(1);
}
for(i=0;i<3;i++)//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>24<32><34>ʱ<EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>3<EFBFBD><33>ʱ<EFBFBD>ӣ<EFBFBD>DOUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>
{
ADC_CLK2=1;
Delay(1);
ADC_CLK2=0;
Delay(1);
}
ADC_DT2_OUT();
ADC_DT2=1;
Delay(1);
ADC_DT2_IN();
if(dat &0x00800000)//24λ<34><CEBB><EFBFBD><EFBFBD>ת32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λȡ<CEBB><C8A1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ)<29><><EFBFBD><EFBFBD>+1תԴ<D7AA><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
{
temp = -(((~dat)&0x007FFFFF)+1);
}
else
temp = dat;
return temp;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uchar Read_Config_2(void)
{
uchar i;
uchar dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ADC_DT2_OUT();
ADC_DT2 = 1;
ADC_DT2_IN();
ADC_CLK2 = 0;
// UART_SendByte(0x22);
while(ADC_DT2 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT2_OUT();
ADC_CLK2 = 1;
ADC_DT2 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK2=1;
Delay(1);
ADC_CLK2=0;
Delay(1);
}
ADC_DT2_OUT();
/////////////////30-36<33><36><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X56
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=1;ADC_CLK2=0;Delay(1);
ADC_CLK2 = 1;Delay(1);ADC_DT2=0;ADC_CLK2=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK2 = 1;
Delay(1);
ADC_DT2_IN();
ADC_CLK2 = 0;
Delay(1);
dat = 0;
for(i=0;i<8;i++)/////////38-45,<2C><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ADC_CLK2 = 1;
Delay(1);
ADC_CLK2 = 0;
Delay(1);
dat<<=1;
if(ADC_DT2==1)
dat++;
}
ADC_CLK2 = 1;//46
Delay(1);
ADC_DT2_OUT();
ADC_DT2=1;
ADC_CLK2 = 0;
Delay(1);
return dat;
}
//////////////<2F><>ʼ<EFBFBD><CABC>CS1237оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>clk<6C><6B><EFBFBD><EFBFBD>PowerDown״̬
void CS1237_Init_3(void)
{
ADC_DT3_OUT();
ADC_DT3 = 1;
ADC_CLK3 = 1;
}
//////////////<2F><><EFBFBD><EFBFBD>CS1237оƬ
uchar CS1237_Config_3(void)
{
uchar i ;
uchar dat ;
uint count_i = 0;
dat =0x0c;//оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڲ<EFBFBD>REF <20><><EFBFBD><EFBFBD>40HZ PGA=128 ͨ<><CDA8>A 0X1C
ADC_DT3_OUT();
ADC_DT3 = 1;
ADC_DT3_IN();
ADC_CLK3 = 0;
// UART_SendByte(0x22);
while(ADC_DT3 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT3_OUT();
ADC_CLK3 = 1;
ADC_DT3 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK3=1;
Delay(1);
ADC_CLK3=0;
Delay(1);
}
ADC_DT3_OUT();
/////////////////30-36д<36><D0B4><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X65
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK3 = 1;
Delay(1);
ADC_CLK3 = 0;
Delay(1);
/////////////////38-45 д8λ<38><CEBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
for(i=0;i<8;i++)
{
ADC_CLK3 = 1;
Delay(1);
if(dat&0x80)
ADC_DT3=1;
else
ADC_DT3=0;
dat<<=1;
ADC_CLK3 = 0;
Delay(1);
}
ADC_CLK3 = 1;//46
ADC_DT3 = 1 ;
Delay(1);
ADC_CLK3 = 0;
Delay(1);
return 1;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long Read_CS1237_3(void)
{
uchar i;
unsigned long dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
long temp;
ADC_DT3_OUT();
ADC_DT3 = 1;
ADC_DT3_IN();
ADC_CLK3 = 0;
while(ADC_DT3==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT3_OUT();
ADC_CLK3 = 1;
ADC_DT3 = 1;
return 0;
}
}
dat = 0;
for(i=0;i<24;i++)
{
ADC_CLK3 = 1;
Delay(1);
dat<<=1;
if(ADC_DT3==1)
dat++;
ADC_CLK3 = 0;
Delay(1);
}
for(i=0;i<3;i++)//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>24<32><34>ʱ<EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>3<EFBFBD><33>ʱ<EFBFBD>ӣ<EFBFBD>DOUT<55><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>
{
ADC_CLK3=1;
Delay(1);
ADC_CLK3=0;
Delay(1);
}
ADC_DT3_OUT();
ADC_DT3=1;
Delay(1);
ADC_DT3_IN();
if(dat &0x00800000)//24λ<34><CEBB><EFBFBD><EFBFBD>ת32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λȡ<CEBB><C8A1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ)<29><><EFBFBD><EFBFBD>+1תԴ<D7AA><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
{
temp = -(((~dat)&0x007FFFFF)+1);
}
else
temp = dat;
return temp;
}
//////////////<2F><>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uchar Read_Config_3(void)
{
uchar i;
uchar dat = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint count_i = 0;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// ADC_DT3_OUT();
// ADC_DT3 = 1;
ADC_DT3_IN();
ADC_CLK3 = 0;
// UART_SendByte(0x22);
while(ADC_DT3 ==1)
{
Delay1ms();
count_i++;
if(count_i>350)
{
ADC_DT3_OUT();
ADC_CLK3 = 1;
ADC_DT3 = 1;
return 0; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
}
}
for(i=0;i<29;i++)//1-29
{
ADC_CLK3=1;
Delay(1);
ADC_CLK3=0;
Delay(1);
}
ADC_DT3_OUT();
/////////////////30-36<33><36><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit 0X56
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=1;ADC_CLK3=0;Delay(1);
ADC_CLK3 = 1;Delay(1);ADC_DT3=0;ADC_CLK3=0;Delay(1);
/////////////////37<33>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ADC_CLK3 = 1;
Delay(1);
ADC_DT3_IN();
ADC_CLK3 = 0;
Delay(1);
dat = 0;
for(i=0;i<8;i++)/////////38-45,<2C><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ADC_CLK3 = 1;
Delay(1);
ADC_CLK3 = 0;
Delay(1);
dat<<=1;
if(ADC_DT3==1)
dat++;
}
ADC_CLK3 = 1;//46
Delay(1);
ADC_DT3_OUT();
ADC_DT3=1;
ADC_CLK3 = 0;
Delay(1);
return dat;
}