stc12c5a60s2单片机ad转换
扫描二维码
随时随地手机看文章
A/D转换寄存器总表:
(1) P1_ADC_EN:特殊功能寄存器
P1.x作为A/D转换输入通道来用允许特殊功能寄存器。相应位为“1”时,对应的P1.x口作为A/D转换使用,内部上拉电阻自动断开。
ADC_START是模拟/数字转换(ADC)启动控制位,设置为1时,开始转换。
ADC_FLAG是模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。
(3) ADC_DATA: A/D转换结果特殊功能寄存器
模拟/数字转换结果计算公式为 结果=256×Vin/Vcc
Vin是模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。
内置ADC的使用例程:
STC_ADC.h:
sfr P1_ADC_EN=0x97;
sfr ADC_CONTR=0xc5;
sfr ADC_DATA=0xc6;
int GetAD(unsigned char channel)//channel为要取的通道号(0~7)
{
unsigned char AD_finished=0;
ADC_DATA=0;
ADC_CONTR=channel;
ADC_CONTR|=0x08;
while(!AD_finished)
AD_finished=(ADC_CONTR&0x10);
ADC_CONTR&=0xF7;
return (ADC_DATA);
}
void AD_Init(unsigned char ADin)// ADC 初始化,ADin为八位2进制数,分别对应AD7~0,置1代表打开此路
{
P1=P1|ADin;//要设置为A/D转换的P1.x口,先设为高
P1_ADC_EN=ADin;
}
_main.c:
#include
#include
/*
-------------------------------------------------
此程序用以说明STC单片机ADC的使用方法
-------------------------------------------------
*/
void delay(unsigned time)
{
while(time--);
}
void main()
{
AD_Init(0x63);//0110,0011,要设置为A/D转换的P1.x口,先设置为高
//0110,0011,P1的P1.0,P1.1,P1.5,P1.6设置为A/D转换输入脚
//断开P1.0,P1.1,P1.5,P1.6内部上拉电阻
while(1)
{
P2=GetAD(0);
delay(10000);
P2=GetAD(1);
delay(10000);
P2=GetAD(5);
delay(10000);
P2=GetAD(6);
delay(10000);
}
}