使用STC单片机进行AD转换,如何显示出完整的转换结果。
使用STC单片机进行AD转换,如何显示出完整的转换结果。由于转换出来的数据肯定是带小数点的,如何将该数据用串口输出。最好是有程序,谢谢...
使用STC单片机进行AD转换,如何显示出完整的转换结果。
由于转换出来的数据肯定是带小数点的,如何将该数据用串口输出。最好是有程序,谢谢 展开
由于转换出来的数据肯定是带小数点的,如何将该数据用串口输出。最好是有程序,谢谢 展开
1个回答
展开全部
你哪来的 “转换出来的数据肯定是带小数点”
u16 ADC_VALE = 0;
ADC_VALE = ADC_DATA << 2; //10位AD的高8位
ADC_VALE |= (ADC_LOW2 & 0x03);//10位AD的低2位
这就是最原始的AD采样值,数值范围: 0 ~ 1023
u16 ADC_VALE = 0;
ADC_VALE = ADC_DATA << 2; //10位AD的高8位
ADC_VALE |= (ADC_LOW2 & 0x03);//10位AD的低2位
这就是最原始的AD采样值,数值范围: 0 ~ 1023
追问
比如按照10位数据转换VALUE=1024*Vin / Vcc;得出的AD转换后的数据。毕竟是模拟输入肯定不是一个整数。我想用两个十六进制表示出我的模拟输入电压,该如何表示。请大神指教,谢谢啦!
追答
所谓AD采样你可以理解成采样的电压VADC和VCC电压进行比较,10位AD就是把5V分成1024级,然后把VADC和分级电压逐一比较直至电压相等,系统电压5V时采样精度5V/1024=0.00488V
当AD值为512时,即512 * 5 * 1000 / 1024= 2500mv
如果有分压电阻,就乘以分压系数K,如25V分压K10倍为2.5V,当AD采样到2.5V时AD值为512,利用公式Vin = ADC_VALE* VCC*K / 1024 =512*5*1000*10/1024=25000mv
那就发送以mv为单位的电压信息了, ADC_VALUE= 1024*Vin / Vcc
Vin = ADC_VALE / 1024 * VCC ——》Vin =(u16)((u32) ADC_VALE * VCC * 1000 / 1024),也就是放大1000倍,要强制为32位变量,要不然会溢出
比如VCC为5V,AD采样值为512,也就是2.5V,那么送vin=512 * 5 * 1000 / 1024= 2500mv
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询