LCD에 부동 소수점 숫자를 표시하려면 어떻게해야합니까?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
}
}
무엇이 표시됩니까? – immibis
여기에 문제가 있습니다.'volts = (value * 5)/1023'입니다. 이들 모두는 정수이므로 계산 결과는 정수입니다. 이것은 아마도 당신이 원하는 것이 아닙니다. 'volts = (value * 5f)/1023f'를 사용해보십시오. – msandiford
밀리 볼트를 표시하는 것을 고려해보십시오. '부호없는 볼트 = (값 * 5000L + 1024/2/*이 값을 반올림 * /)/1024;'로 지정하고 FP 연산을 피하십시오. – chux