- 打卡等级:常住居民I
- 打卡总天数:75
- 最近打卡:2025-01-05 14:16:57
中级会员
- 积分
- 214
|
本帖最后由 江上酒酒 于 2024-11-2 22:23 编辑
用一箭双雕转化器和STC32G12K128试验箱进行ADC电压采集,没有反应为什么。
#include <STC32G.H>
#include <INTRINS.H>
void Delay2ms(void);
void ADC_Init(void);
unsigned int ADC_Read(unsigned char no);
unsigned int ADC_CAL_Voltage(unsigned int num);
void main()
{
unsigned int ADC_VAL;
ADC_Init();
while(1)
{
Delay2ms();
ADC_VAL=ADC_Read(0);
printf("当前ADC数\xfd值:%d\t%dmv\r\n",(int)ADC_VAL,(int)ADC_CAL_Voltage(ADC_VAL));
}
}
void Delay2ms(void) //@24.000MHz
{
unsigned char data i, j;
i = 8;
j = 197;
do
{
while (--j);
} while (--i);
}
void ADC_Init(void)
{
P1M0=0X00;
P1M1=0X01;
ADCTIM=0X3F;
ADCCFG=0X2F;
ADC_POWER=1;
}
unsigned int ADC_Read(unsigned char no)
{
unsigned int adcval;
ADC_CONTR &=0XF0;
ADC_CONTR |=no;
ADC_START=1;
_nop_();
_nop_();
while(!ADC_FLAG);
ADC_FLAG=0;
adcval=(ADC_RES<<8)+ADC_RESL;
return adcval;
}
unsigned int ADC_CAL_Voltage(unsigned int num)
{
return num*2.5*1000/4096;
}
|
|