本人單片機菜鳥,剛學單片機不久,現在弄到ADC這塊(使用STC32G12K128單片機),很多東東不清楚,具體如下:我的ADC程序部分如下:
void ADCQUERY(void)
{
ADC_RES = 0;
ADC_RESL = 0;
ADC_POWER = 1;
ADC_START = 1;
DelayMs(5);
while(!ADC_FLAG); //等待ADC轉換完成
ADC_FLAG = 0; //清除ADC結束標志
DelayMs(5);
adcjg=(((u16)ADC_RES << 8) | ADC_RESL);
} //ADC結果保存在adcjg
//******************************************************************************
//【正常顯示界面】
//******************************************************************************
void xsjm(void)
{
u16 i;
u8 a,b,c,d; //定義千/百/十/個位變量
i=(0x0f4c/4096*adcjg);
//i=adcjg;
a=i/1000%10;
b=i/100%10;
c=i/10%10;
d=i/1%10;
LCDTestWord(0,0x80); //第一行第一個位置開始顯示
LCDSendWord("電壓"); //顯示兩個漢字:電壓
LCDTestWord(1,0x3a); //顯示分號
LCDTestWord(1,(u8)(a+0x30));
LCDSendWord(".");
LCDTestWord(1,(u8)(b+0x30));
LCDTestWord(1,(u8)(c+0x30));
LCDTestWord(1,(u8)(d+0x30));
現在i=adcjg的話倒是可以正常顯示,調電位器會顯示0-4095,但是按單片機說明書上的計算方法反而全顯示00000
請各位大神幫幫我,謝謝!
|