PIC16F616的AD转换后结果不对啊?????

2020-02-08 09:10发布

本帖最后由 hmg6681 于 2012-6-16 15:37 编辑

程序:

uint vAD_get()
{
         uint ADval;
         uint ADvalf;
         asm("clrwdt");
       
         C1ON=0;
         TRISA2=1;  //定义RA0、RA2为输入
         ANS2=1;        //定义RA0、RA2为模拟输入口
         ADRESL=0;
         ADRESH=0;
         ADCON1=0x40;        //选择AD采样频率Fosc/4
         ADCON0=0x89;        //右对齐、参考电压=VDD、模拟通道AN2、使能AD采样
           delay(20,12);    //延时210us
         GO=1;                //启动AD
         while(GO);                //等待ADGO位0,表示转换已经完成
         /////////ADRESH=ADRESH;
         //////////ADRESL=ADRESL;
         ADval=ADRESH;        //读出高两位
         ADval=(ADval<<8)|ADRESL;   //把高两位和低八位合成一个数据
       
         ADvalf=(ADval/1023)*5*11;   //转化为实际值
         ADval=ADvalf*1000;         //取三位小数,电压单位由V变为mV
        return(ADval);
       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
AttTiv
1楼-- · 2020-02-09 19:06
请问 为什么要 乘以5 再 乘以 11 ???

5是不是代表 参考电压  ??

11 又 代表 什么呢?
hmg6681
2楼-- · 2020-02-09 22:26
 精彩回答 2  元偷偷看……
hmg6681
3楼-- · 2020-02-10 00:40
实际电压缩小11倍进入AD,所以在式中要乘以11
AttTiv
4楼-- · 2020-02-10 05:38
hmg6681 发表于 2012-6-25 08:42
实际电压缩小11倍进入AD,所以在式中要乘以11

哦,谢谢
szeng
5楼-- · 2020-02-10 07:00
留意你的采样电阻,不能大于10K

一周热门 更多>