1、ADC数字值16进制转换成字符,变为电压值,ADC基准3V,12位ADC:
int string_shift(char* outdata,int inport,int inportWidth,int typeLen)
{
float i,buffer;
int j;
i =(float)inport;
buffer = (i/4095)*3000;
j =(int)buffer;
outdata[7] =j/1000+'0'; // 取小数点前一位
outdata[9] =(j%1000)/100+'0'; //取小数点后一位
outdata[10] =(j%100)/10+'0'; // 取小数点后二位
outdata[11] =j%10+'0'; // 取小数点后三位
return 0;
}
2、ADC数字值转换成字符,十进制:
int string_shift(char* outdata,int inport,int inportWidth,int typeLen)
{
int i;
i =inport;
outdata[7] =i/1000+'0'; // 取千位
outdata[8] =(i%1000)/100+'0'; //取百位
outdata[9] =(i%100)/10+'0'; // 取十位
outdata[10] =i%10+'0'; // 取个位
return 0;
}
3、将16进制数值转换成字符,按位转换
int string_shift_hex(char* outdata,unsigned int inport)
{
unsigned int j;
j=25;
if(((inport>>12) & 0x000f)>9)
{
outdata[j++] =(((inport>>12) & 0x000f)+55);
}
else
{
outdata[j++] =((inport>>12) & 0x000f)+'0';
} //取高4位
if(((inport>>8) & 0x000f)>9)
{
outdata[j++] =(((inport>>8) & 0x000f)+55);
}
else
{
outdata[j++] =((inport>>8) & 0x000f)+'0';
} //取中高4位
if(((inport>>4) & 0x000f)>9)
{
outdata[j++] =(((inport>>4) & 0x000f)+55);
}
else
{
outdata[j++] =((inport>>4) & 0x000f)+'0';
} //取中低4位
if(((inport>>0) & 0x000f)>9)
{
outdata[j++] =(((inport>>0) & 0x000f)+55);
}
else
{
outdata[j++] =((inport>>0) & 0x000f)+'0';
} //取低4位
return 0;
}