با سلام
وقتی که از ADC مقادیر رو می خونم اون رو در یک متغیر float قرار می دم و بعد با استفاده از تابع sprintf مقادی رو روی lcd نماش می دهم ولی اعشاری را نشون نمیده...به صورت 212.00000
اگه میشه راهنمایی کنید. در ضمن با تغییر متغییر به double بازهم تغییری در خروجی ایجاد نشد.میکرو هم xmega32a4
این هم برنامه :
وقتی که از ADC مقادیر رو می خونم اون رو در یک متغیر float قرار می دم و بعد با استفاده از تابع sprintf مقادی رو روی lcd نماش می دهم ولی اعشاری را نشون نمیده...به صورت 212.00000
اگه میشه راهنمایی کنید. در ضمن با تغییر متغییر به double بازهم تغییری در خروجی ایجاد نشد.میکرو هم xmega32a4
این هم برنامه :
کد:
#include <avr/io.h> #include "lcd.h" #include <avr/delay.h> #include <stdio.h> #include "avr_compiler.h" #include "adc_driver.h" #define ADC_INPUT ADC_CH_MUXPOS_PIN1_gc int main(void) { float ADC_result; char lcd_buff[20]; lcd_init(LCD_DISP_ON); ADC_CalibrationValues_Load(&ADCA); ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc); ADC_Reference_Config(&ADCA, ADC_REFSEL_VCC_gc); ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV8_gc); ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,ADC_CH_INPUTMODE_SINGLEENDED_gc,ADC_CH_GAIN_1X_gc); ADC_Ch_InputMux_Config(&ADCA.CH1, ADC_INPUT, 0); ADC_Enable(&ADCA); ADC_Wait_32MHz(&ADCA); lcd_home(); lcd_puts("ADC0.1 LCD XMEGA"); _delay_ms(3000); lcd_clrscr(); while(1) { ADC_Ch_Conversion_Start(&ADCA.CH1); while(!ADC_Ch_Conversion_Complete(&ADCA.CH1)); ADC_result = ADC_ResultCh_GetWord(&ADCA.CH1); sprintf(lcd_buff,"ADC=%4.4f",ADC_result); lcd_gotoxy(0,1); lcd_puts(lcd_buff); _delay_ms(500); lcd_clrscr(); } }
دیدگاه