float temp;//浮点保存小数点后边六位,最终一位四舍五入
uchar val_int;//用于存储整数位
uint val_decimal;//存小数位
temp = ad_dat * (5/255);//主要是这个当地的原理比较重要:首要输出数据的8个口,可以表明的无符号整数规模是0~255。而丈量电压的规模是0~5V(以参阅电压衔接决议),所以接收到的整数与想要得到的电压值存在 5/255 的数量联系。为了坚持精度,所以temp用的是float类型。
val_int = (uchar) temp;//强制转化,保存temp的整数部分,留意,这儿并不会改动temp的数据
val_decimal = (uint) ((temp – val_int) * 100);//把整数部分减去为0之后。把想要保存的小数提上来,这样数码管显现的时分作为整数来处理。
更正过错:temp = ad_dat * (5/255);这条语句中,(5/255)必须用算出值0.0196078。原句改为:temp = ad_dat * 0.0196078; 不然转化值满是0。原因还未探明,信任与数据类型有联系。