📄 stc5410adc8.h
字号:
//////////////////////////////////////////////////
//* 文件名: ADC.h //
//* 描述: 自带8位AD转换 //
//* 程序员: //
//* 创建日期:2007.7.14 //
//* 修改日期:2007.7.14 //
//////////////////////////////////////////////////
#ifndef ADC_H
#define ADC_H
void ADC_Power_ON(void); //开启ADC电源
void Set_P1x_Open_Drain(unsigned char x); //设置P1x口为开漏模式
void Set_ADC_Channelx(unsigned char x); //设置AD转换通道
void Set_P1x_Normal_IO(unsigned char x); //设置成普通I0口
unsigned char Get_ADC_Result(void); //AD转换
unsigned char Get_ADC_Data(void); //读取AD转换数据
void ADC_Power_ON(void) //开启ADC电源
{
ADC_CONTR|=0x80; //adc_power=1
Delay1ms(6); //延时2MS
}
void Set_P1x_Open_Drain(unsigned char x) //设置P1x口为开漏模式
{
unsigned char temp;
temp=(1<<x);
P1M1|=temp;
P1M0|=temp;//如x=3则tmep=0000 0100B
}
void Set_P1x_Normal_IO(unsigned char x) //设置普通I/O口
{
unsigned char temp;
temp=~(1<<x);
P1M1&=temp;
P1M0&=temp;
}
void Set_ADC_Channelx(unsigned char x) //设置AD转换通道
{
unsigned char temp;
temp=(0xe0|x);
ADC_CONTR=temp;
Delay1ms(6);
}
unsigned char Get_ADC_Result(void) //获取AD转换数据
{
unsigned char temp;
ADC_DATA=0;
ADC_CONTR|=0x08; //adc_start=1,开始转换
while((ADC_CONTR&0x10)==0); //判断标志位是否为1,如果未转换完继续等待
temp=ADC_DATA;
Delay1ms(10);
ADC_CONTR&=0xe7; //adc_flag=0;清标志位,adc_start=0,停止转换
return temp; //temp为浮点数
}
unsigned char Get_ADC_Data(void) //AD转换获取数据
{
unsigned char hbyte,result=0; //参数传递一致
//unsigned char i;
//for(i=0;i<5;i++)
//{
ADC_Power_ON(); //开启电源
Delay1ms(6);
Set_P1x_Open_Drain(2); //设置P12为开漏状态
Set_ADC_Channelx(2); //设置P12为AD转换通道
hbyte=Get_ADC_Result(); //开始转换
// Set_P1x_Normal_IO(2); //设置成普通I/O口
// result+=hbyte;
//}
//result/=5; //采样五次取平均值
result=hbyte;
return result;
}
//AD转换流程--ADC_Power_ON();//开启电源 --delay(2);--Set_P1x_Open_Drain(x);//设置P1x为开漏状态--Set_ADC_Channelx(x);//设置P1x为AD转换通道
//--result=Get_ADC_Result();//开始转换--delay(10);--Set_P1x_Normal_IO(x);
#endif //ADC.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -