用ADC0809和STC12C5A60S2单片机设计个简易数字电压表,四位数码管显示0到5V电压值

2025-03-13 08:29:15
推荐回答(1个)
回答1:

STC12C5A60S2本身带有AD转换模块,是10位的,而ADC0809是8位的,要它干什么?
并且若用ADC0809测5V电压,只能精确到0.02V,要小数点后3位有何意义?
我只有STC12C5A60S2 AD采集子程序,串行显示部分没作过
void adchange()//4
{
ADC_CONTR=ADC_CONTR|0X80; //10000000 开启转换电源
//延时,等待内部电源稳定,同时调节采集周期
Delay_US(m);//500 US每次m=166 200US对应61 100us每次应改为27 50US对应9
P1M0=P1M0|0X03; //设置p1.0和P1.1所在通道为开/漏模式
P1M1=P1M1|0X03;
ADC_CONTR=0xe0; //11100000 开启P1.0通道开始转换
Delay_US(m); //延时一端时间,使输入电压达到稳定
ADC_RES =0x00; //清A/D转换结果寄存器
ADC_RESL =0x00;
ADC_CONTR |= 0x08; //ADC_START=1,开始转换
while(!(ADC_CONTR&0x10)); //0001,0000 等待A/D转换结束
temp1=ADC_RES; //读取转换结果,共10位 高8位
temp2=ADC_RESL;//读取转换结果,共10位 低2位
ADC_CONTR=ADC_CONTR&0xe7; //将ADC_FLAG软件清零
P1M0=P1M0&0X00; //设置P1口为普通I/O模式,以便用P1口显示数据。
P1M1=P1M1&0X40;
}