前言
前面介绍了ADC,今天通过实例来讲解ADC的使用
ADC的初始化
通过代码讲解
void ADCinit()
{
/*清除ADC数据寄存器*/
ADCH&=0x00;
ADCL&=0x00;
/*P0_7端口模拟 IO使能*/
APCCFG|=0x80;
/*单次转换,参考电压为电源电压,对P0_7进行采样 抽取率为512*/
ADCCON3=0xb7;
/*停止AD*/
ADCCON1=0x30;
/*启动AD*/
ADCCON1|=0x40;
}
主函数
void main()
{
LEDinit();//LED的初始化
UARTinit();//串口的初始化
ADCinit();//ADC的初始化
char temp[2];
char abcData[5];
int abc;
float num;
while(1)
{
if(ADCCON1&0x80)//等待ADC转换完成
{
/*转换完成指示*/
temp[1]=ADCL;
temp[0]=ADCH;
/*初始化ADC*/
ADCinit();
/)开启下一轮转换*/
ADCCON1|=0x40;
/*abc赋值*/
abc|=(int *)temp[1];
abc|=(int *)temp[0]<<8;
if(abc&0x8000)
{
abc=0;
}
else
{
/*定义参考电压为3.3v,14位分辨率*/
num=abc*3.3/8192;
abcData[1]=(char *)(num)%10+48;
adcData[3]=(char *)(num*10)%10+48;
UartSend_String(adcData);//发送ADC数据到PC机上
}
LED1=!LED1;
Delay(3000);
}
}
}
本次实验实现了当ADC转换时,把转换的数据通过串口发送到PC机上。当转换结束后让LED1闪烁。
下期我们开始讲无线射频技术。谢谢大家,下期见!