STC单片机通用AD转换程序[优秀]_stc单片机ad转换程序
STC单片机通用AD转换程序[优秀]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“stc单片机ad转换程序”。
福星电子网http://
#include
#include
sfr P1_ADC_EN = 0x97;//A/D转换功能允许寄存器
sfr ADC_CONTR = 0xC5;//A/D转换控制寄存器
sfr ADC_DATA = 0xC6;//A/D转换结果寄存器 高8位,sfr ADC_LOW2 = 0xC7;//A/D转换结果寄存器 低2位,如果是8位AD无此寄存器。
#define uchar unsigned char;
#define uint unsigned int;
Uintad_out1,ad_out2;
void delay(uchar delay_time)// 延时函数
{
uchar n;
uint m;
for(n=0;n
{
for(m=0;m
}
}
uchar get_AD_result(uchar channel)
{
uchar AD_finished = 0;// 存储 A/D 转换标志
ADC_DATA = 0;
ADC_CONTR = channel;// 选择 A/D 当前通道
_nop_();_nop_();_nop_();//使输入电压达到稳定
_nop_();_nop_();_nop_();
ADC_CONTR |= 0x08;//0000,1000 令 ADC_START = 1, 启动A/D 转换
AD_finished = 0;
while(AD_finished == 0)// 等待A/D 转换结束
{
AD_finished =(ADC_CONTR & 0x10);//0001,0000, ADC_FLAG ==1测试A/D转换结束否
}
ADC_CONTR &= 0xF7;//1111,0111 令 ADC_START = 0, 关闭A/D 转换,return(ADC_DATA);// 返回 A/D 转换结果
}
void main()
{
P1 = P1 | 0x01;// 0000,0001,P1.0为 A/D 转换,即通道0与1
福星电子网http://
P1_ADC_EN = 0x01;//0000,0001, P1 的P1.0设置为 A/D 转换输入脚// 断开P1.0,P1.1 内部上拉电阻
while(1)
{
get_AD_result(0);
delay(10);
//可以多采集几次求均值
//8位数据输出,参考电压5V
ad_out1=(ADC_DATA*5)/256
//8位数据输出,参考电压5V
ad_out2=((ADC_DATA*4)+ ADC_LOW2)/1024
}
}