2017-02-24 31 views
1

我正在Proteus中運行一個集成了ADC(10位輸出)和一個LCD顯示器的微控制器,但是當輸入5V信號時,即使LCD是完美的,它也只會顯示高達4092mV, 很好,因爲我嘗試輸出其他字符。ADC_READ沒有最大化

這是Proteus的代碼和圖片。

int tension; 
int valeurnum; 
char valeurchar[10]; 

void main() { 
    ADCON1=14; 
    TRISA=1;TRISB=0; 
    Lcd_Init(); 
    while(1){ 
      tension=ADC_Read(0); 
      valeurnum=(5000/1023)*tension; 
      Lcd_Cmd(_LCD_CLEAR); 
      Lcd_Cmd(_LCD_CURSOR_OFF); 
      IntToStr(valeurnum,valeurchar); 
      Lcd_Out(1,1,valeurchar); 
      delay_ms(1000);; 
      } 
} 

如果小夥子甲肝什麼我可以做或檢查,或者如果你需要更多的相關信息,請告訴我任何想法,感謝很多提前,有一個偉大的一天!

Proteus Layout

+1

這可能是與您的電子產品的問題,也許對ADC的基準電壓不夠好 – Ctx

+0

奇怪,因爲5V在電位去(和beeing初學者抱歉) –

+0

確定的換算公式是正確的('valeurnum =(5000/1023)*張力;')? –

回答

2

顯然,我犯了一個錯誤使用公式,除以當我失去與數字本身太多的準確性。

float valeurnum; 
char valeurchar[20]; 
void main() { 
    ADCON1=14; 
    TRISA=1;TRISB=0; 
    Lcd_Init(); 
    while(1){ 
      valeurnum=ADC_Read(0); 
      valeurnum=valeurnum*5000; 
      valeurnum=valeurnum/1024; 
      Lcd_Cmd(_LCD_CLEAR); 
      Lcd_Cmd(_LCD_CURSOR_OFF); 
      FloatToStr(valeurnum,valeurchar); 
      Lcd_Out(1,1,valeurchar); 
      delay_ms(1000);; 
      } 
} 
+2

您可以在單行中寫入'valeurnum =(ADC_Read(0)* 5000)/ 1024);' –

相關問題