//363530137
//363530137
//363530137
//363530137
//363530137
//363530137
//363530137
//363530137
//363530137
#include "ads1230.h"
float Weight_Maopi;//毛皮
float Weight;//重量值
float Weight_Singel;//单体重量
u32 ZiDan_num;//子弹数量
void int_ADS1230IO(void)//相关引脚初始化
{
GPIO_Init(GPIOC,GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST );
GPIO_Init(GPIOC,GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST );
GPIO_Init(GPIOC,GPIO_PIN_4, GPIO_MODE_IN_PU_NO_IT );
}
/*****************************************************************************
函数名称:ReadAD(void)
功 能:读AD
入口参数:无
返回参数:AD的转换结果,为long型
使用资源:无
******************************************************************************/
u32 ReadAD(void)
{
long ADdatatemp=0; //设置AD转换的初始值为0
while(ADS_DATA_HI);
for(u8 i = 0;i < 20;i ++) //获取20位数据
{
ADS_CLK_H();
ADS_CLK_L();
ADdatatemp = ADdatatemp << 1;
if(ADS_DATA_HI) //AD输出的数据位是1?
{
ADdatatemp ++;
}
}
ADS_CLK_H();
ADS_CLK_L();
ADdatatemp&=0XFFFFF;
if(ADdatatemp>524287)
{
ADdatatemp=1048576-ADdatatemp;
}
return(ADdatatemp);
}
void Get_Maopi(void)//获取毛皮重量
{
Weight_Maopi = ReadAD();TIMDelay_Nms(30); OffsetAD();
WriteBuf[0]=((u8 *)&Weight_Maopi)[0];//拆开
WriteBuf[1]=((u8 *)&Weight_Maopi)[1];
WriteBuf[2]=((u8 *)&Weight_Maopi)[2];
WriteBuf[3]=((u8 *)&Weight_Maopi)[3];
EEPROM_WriteNByte(WriteBuf, EEPROM_ADDR, BUF_SIZE);
TIMDelay_Nms(20);
}
void Get_Weight(void)//称重
{
if((ReadAD()>Weight_Maopi)||(ReadAD()==Weight_Maopi))
{
Weight = ReadAD() - Weight_Maopi;
}
OffsetAD();
}
/*****************************************************************************
函数名称:void OffsetAD()
功 能:一个补偿函数,补偿AD1230的标尺误差
入口参数:无
返回参数:无
使用资源:无
******************************************************************************/
void OffsetAD()
{
for(u8 i = 0;i < 26;i ++) //发送26个CLK
{
ADS_CLK_H();
Delayus();
ADS_CLK_L();
Delayus();
}
}
/*****************************************************************************
函数名称:void InitADline(void)
功 能:初始化AD控制线
入口参数:无
返回参数:无
使用资源:port2
******************************************************************************/
void InitADline(void)
{
int_ADS1230IO();//相关引脚初始化
ADS_CLK_L(); // ADS_OUT &= ~ADS_CLK_BIT;
AD_OFF(); // ADS_OUT &= ~ADS_PD_BIT;
Delayms(3);
AD_ON();
}