本帖最后由 lilihua0721 于 2011-11-27 21:09 编辑
/******************************************************************************
函数名: void ADConversion_test(INT8U chn)
功 能: 测试24位AD转换器的采样精度
说 明: 由于采集输入端电压范围为0~5V,5V对应的满量程为0x7FFFFF
故:差分输入电压值为:U = (5*AD)/0x7FFFFF ,可以知道U必然
小于5V,乘10000后必然小于0xFFFF,所以执行以下操作不会越界
integer=(INT16U)(Value/10000);
//取字符串的整数部分
decimal=(INT16U)(Value%10000);
//取字符串的小数部分
输 入:无
输 出:无
其 他:无
*****************************************************************************/
void ADConversion_test(INT8U chn)
{
if(chn>=4)
{
return ; // 通道有误,返回!
}
memset(str,0,60);
ADdata = ADCave_ADS1211(chn,3);
UVal=ADdata;
UVal=UVal*5;
UVal=UVal/0x7FFFFF;
Value = (INT32U)(UVal*10000);
//把double型数据强制转换为32位整型数据,并放大
//10000倍
integer=(INT16U)(Value/10000);
//取字符串的整数部分
decimal=(INT16U)(Value%10000);
//取字符串的小数部分
if(chn==0)
{
//清显示区,显示第一通道时清显示区域(不是整个屏幕)
CreanLcd(0xFFFF,0x00,0x50,0x1C2,0xE0);
if(decimal<10)
sprintf(str,第一通道检测:AD值:0x%x 电压值:%d.000%dV",ADdata,integer,decimal);
else if(decimal<100)
sprintf(str,"第一通道检测:AD值:0x%x 电压值:%d.00%dV",ADdata,integer,decimal);
else if(decimal<1000)
sprintf(str ,"第一通道检测:AD值:0x%x 电压值:%d.0%dV",ADdata,integer,decimal);
else
sprintf(str ,"第一通道检测:AD值:0x%x 电压值:%d.%dV",ADdata,integer,decimal);
//发送给串口屏进行显示
UARTSend((INT8U *)str, strlen(str),0x00,0x50);
}
else if(chn==1)
{
if(decimal<10)
sprintf(str,第二通道检测:AD值:0x%x 电压值:%d.000%dV",ADdata,integer,decimal);
else if(decimal<100)
sprintf(str,"第二通道检测:AD值:0x%x 电压值:%d.00%dV",ADdata,integer,decimal);
else if(decimal<1000)
sprintf(str ,"第二通道检测:AD值:0x%x 电压值:%d.0%dV",ADdata,integer,decimal);
else
sprintf(str ,"第二通道检测:AD值:0x%x 电压值:%d.%dV",ADdata,integer,decimal);
//发送给串口屏进行显示
UARTSend((INT8U *)str, strlen(str),0x00,0x70);
}
else if(chn==2)
{
if(decimal<10)
sprintf(str,第三通道检测:AD值:0x%x 电压值:%d.000%dV",ADdata,integer,decimal);
else if(decimal<100)
sprintf(str,"第三通道检测:AD值:0x%x 电压值:%d.00%dV",ADdata,integer,decimal);
else if(decimal<1000)
sprintf(str ,"第三通道检测:AD值:0x%x 电压值:%d.0%dV",ADdata,integer,decimal)
else
sprintf(str ,"第三通道检测:AD值:0x%x 电压值:%d.%dV",ADdata,integer,decimal);
//发送给串口屏进行显示
UARTSend((INT8U *)str, strlen(str),0x00,0x90);
}
else if(chn==3)
{
if(decimal<10)
sprintf(str,第四通道检测:AD值:0x%x 电压值:%d.000%dV",ADdata,integer,decimal);
else if(decimal<100)
sprintf(str,"第四通道检测:AD值:0x%x 电压值:%d.00%dV",ADdata,integer,decimal);
else if(decimal<1000)
sprintf(str ,"第四通道检测:AD值:0x%x 电压值:%d.0%dV",ADdata,integer,decimal);
else
sprintf(str ,"第四通道检测:AD值:0x%x 电压值:%d.%dV",ADdata,integer,decimal);
//发送给串口屏进行显示
UARTSend((INT8U *)str, strlen(str),0x00,0xb0);
}
integer=0;
decimal=0;
} |