【发布时间】:2017-04-04 09:12:43
【问题描述】:
如何获取变量伏特以在 LCD 上显示浮点数?
LCD 只显示带有很多小数位的浮点值,并以 E 结尾。我只需要 2 个小数位,那么如何显示呢?
int main (void){
adcinit();
lcd_init();//initializes LCD
lcd_clear();//clear screen
lcd_home();
uint16_t value;
float volts;
while(1){
ADCSRA |= (1<<ADSC);//start ADC conversion
delay_ms(54);//delay 54 millisecond
value = ADCW;//assign ADC conversion to value
volts=(value*5)/1023;
lcd_goto_xy(0,0);// coordinates of the cursor on LCD Display
lcd_printf("ADC Value: %d ",value);//display on LCD
lcd_goto_xy(0,1);// coordinates of the cursor on LCD Display
lcd_printf("Volts: %f ",volts);//display on LCD
}
}
【问题讨论】:
-
它显示什么?
-
这里有问题
volts=(value*5)/1023。所有这些都是整数,因此计算的结果将是整数。这可能不是你想要的。尝试使用volts = (value * 5f) / 1023f。 -
或者考虑显示毫伏:
unsigned volts=(value*5000L + 1024/2 /* add this value to round */)/1024;并避免使用 FP 数学。 -
上面的代码确实显示,伏特:液晶显示屏上的 1.00000E0。
-
chux,当您说 /* 将此值添加到舍入 */ 时,您的意思是例如 2 位小数:unsignedvolts(value*5000L+1024/2*100)/1024; ?
标签: c eclipse arduino proximitysensor