#include“ADC.h”
#include “config.h”
#include “display.h”
#define N 20
#define VCC 5.0
float Vin,value;
float sum = 0;
uchar ch=0x03;
/*ADC初始化*/
void ADC_init()
{
P1ASF=0xff; //设置P1口为AD口,这个与小灯泡的I/O口冲突,不能用小灯检测
ADC_RES = 0; //清除结果寄存器
ADC_RESL = 0;
ADC_CONTR = ADC_POWER | SPEEDLL;
CLK_DIV=ADRJ0;
delay(2); //ADC上电并延时
}
/*输出模拟电压*/
float ADC_P10(char a)
{
ADC_RES = 0; //AD数据寄存器高8位清空
ADC_RESL = 0;
ADC_CONTR= ADC_POWER|SPEEDHH|ADC_START| a;
delay(2);
while (!(ADC_CONTR & ADC_FLAG)); //等待ADC转换完成
ADC_CONTR &= ~ADC_FLAG; //Close ADC
value=(ADC_RES《《2)|(ADC_RESL&0x03); //高低字节拼接成一个10位数
Vin=VCC*value/1023; // 注意是1023才正确
return Vin;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !