Re: 演算法

作者 Ryang 於 2017年01月06日 11:49:06
補充一下, C18 有提供一些轉換函數如 itoa( ), atoi( ) ... 可以參考一下 W401 教育訓練課程裡的第六章節,如下圖所示:


實際應用 ADC 的讀值顯示電壓值,可以參考 "W301 Advance PICC Application" 裡的練習六的寫法,如下:

程式裡顯示電壓值到 mV 是怎樣做到的?
Disp_Temp = (((unsigned long) Temp_Buff ) * 4883 ) / 100 ;
5V / 1024 = 4.883 mV , 要顯示 4.9mV 的精度
不要使用浮點數運算,只要用整數運算即可



Read_ADC
();                                // 讀取 ADC (VR2) 的轉換值
            
Temp_Buff= ADC_Result.Word & 0x3FF;        // 將無用位元遮誚 0
            
Disp_Temp=(((unsigned long)Temp_Buff)*4883)/100;     // 10-bit 解析度,1 LSB=4.883mV
                                                      // 算出實際電壓並取到 0.1mV
    
              
DisplayDigit1(Disp_Temp/10000);            // 顯示 V LCD 第一數字上
            
Disp_Temp=Disp_Temp%10000;                // 取出餘數
                
            
DisplayDigit2(Disp_Temp/1000 );            // 顯示 100mV    
            
Disp_Temp=Disp_Temp%1000;                
    
            
DisplayDigit3(Disp_Temp/100);            // 顯示 10mV
            
Disp_Temp=Disp_Temp%100;
    
            
DisplayDigit4(Disp_Temp/10);            // 顯示 mV
            
Disp_Temp=Disp_Temp%10;
    
            
DisplayDigit5(Disp_Temp);                // 顯示 0.1mV
    
             
SEG_4DP=1 ;                                // 點小數點
    
              
SEG_m = !SEG_m;                                // 顯示 mV 的符號
            
SEG_V= !SEG_V;
//            SEG_BAT=!SEG_BAT;

            
Disp_Count = 20;                        //


附加檔案:



jpg  擷取1.jpg (124.09 KB)
16_586f13a52772f.jpg 969X719 px

jpg  擷取.JPG (123.73 KB)
16_586f13aebfafd.jpg 963X724 px

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=20055&post_id=73892