本人单片机菜鸟,刚学单片机不久,现在弄到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
请各位大神帮帮我,谢谢!
|