你好
我在AD轉換操作使用上有點問題請問
我使用的是 dsPIC30F4011
我使用五組ADC,兩組為實驗版APP020本身的輸入
其他三組為外加 0V~5V的類比訊號
而我附上的程式則是修改老師的範例程式
而裡面的問題則是
他原本是 8bit 輸出
我改成 10 bit 輸出
不過丟給 LCM 模組顯示時
當我轉動 VR1 會變成有四組的0 ~ 255 變化
而不是 從 0 ~ 1023 的變化
而且我在更改 char 成 int 時就會出現錯誤
不知道要如何才會使得我在 LCM 上有 0 ~ 1023 的輸出?
謝謝
敬祝安康
主程式部分:
.......
........
void Show_ADC(void)
{
unsigned int ADCValue[5];
IFS0bits.ADIF = 0;
ADCON1bits.ASAM = 1; while(!IFS0bits.ADIF) ;
ADCON1bits.ASAM = 0; ADCValue[0] = ReadADC10(0); // VR1
ADCValue[1] = ReadADC10(1); // AC
ADCValue[2] = ReadADC10(2); // AV
ADCValue[3] = ReadADC10(3); // TEMP
ADCValue[4] = ReadADC10(4) ; // SWX
setcurLCD(12,1) ;put_Num_LCD( ADCValue[0] ) ;
setcurLCD(2,1) ; put_Num_LCD( ADCValue[3] ) ;
setcurLCD(3,0) ; put_Num_LCD( ADCValue[2] ) ;
setcurLCD(10,0) ; put_Num_LCD( ADCValue[1] ) ;
setcurLCD(15,0) ; putcLCD( AN_Key( ADCValue[4] ) );
}
副程式部分
void put_Num_LCD(unsigned char The_Number)
//The_Number宣告成char只剩下8位元,不過宣告成 int 會造成錯誤
{
unsigned char Temp_Char_1000, Temp_Char_100, Temp_Char_10, Temp_Char ;
Temp_Char_1000 = The_Number /1000 ; //取千位數的數字
putcLCD( Temp_Char_1000 + '0' ) ; //轉換為ASCII編碼,'0'的編碼加數字大小
Temp_Char_100 = (The_Number - Temp_Char_1000*1000) /100 ;
//取百位數的數字
putcLCD( Temp_Char_100 + '0' ) ; //轉換為ASCII編碼,'0'的編碼加數字大小
Temp_Char_10 = (The_Number - Temp_Char_100*100) /10 ;
//取十位數的數字
putcLCD( Temp_Char_10 + '0' ) ;
Temp_Char = The_Number - ( Temp_Char_100*100 + Temp_Char_10 * 10 ) ;
//取個位數的數字
putcLCD( Temp_Char + '0' ) ;
}