打印

PIC16F723A AD 转换问题

[复制链接]
2039|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiandan642|  楼主 | 2013-12-30 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      本人刚接触PIC16F723A ,现需要AN9跟AN11读取电压,然后比较两个值,根据结果进行不同的处理。需指点。
沙发
yuxinmei| | 2013-12-30 11:10 | 只看该作者
看datasheet,按资料给的顺序配置AD,读取AD值后根据精度需要数值转换,然后比较就可以了。需要注意的是AD采样的时间要根据管脚对地电阻值而定,电阻越大,采样时间越长。

使用特权

评论回复
板凳
yuxinmei| | 2013-12-30 11:27 | 只看该作者
贴上曾经做过的PIC16f723的程序
unsigned char ADchange(unsigned char i)
{
        unsigned char dat;
        ADCON1 = 0x53;  //0101 0011, 16分频,内部参考电压
        FVRCON = 0xA3;        //11 0000 11;参考电压4.096V
        ADCON0 = ADcon_Amp[i];  //设置模拟通道,ADcon_Amp[i]为一数组
        NOP();NOP();NOP();NOP();NOP();//电阻10K,等待采样完毕
        GODONE = 1;
        while(GODONE);//wait
        dat = ADRES;
        dat = dat >> 3; //数据转换
        if(dat > 30)
        {
                dat = 30;
        }
        return dat;
}

使用特权

评论回复
地板
Rain_King| | 2013-12-30 16:40 | 只看该作者
不知道你什么问题......但是按照数据手册上一步步来,应该就没问题了.........

使用特权

评论回复
5
yewuyi| | 2013-12-30 17:05 | 只看该作者
如果不关注信号的相位差,则可以用两路ADC分别转换两次得到AD值,然后根据AD值比较即可。

如果信号的相位差对准确判断有影响,则必须使用用电压比较器或者是可以两路同步转换的ADC才能实现。

使用特权

评论回复
6
jiandan642|  楼主 | 2014-1-11 16:36 | 只看该作者
负的电压值跟正的电压值转换方式一样吗

使用特权

评论回复
7
jiandan642|  楼主 | 2014-1-13 21:22 | 只看该作者
读到的AD值跟电压的值怎么对应起来

使用特权

评论回复
8
小屁孩彡| | 2015-3-22 15:30 | 只看该作者

楼主我连灯都点不亮,求指导啊。

int main(int argc, char** argv) {
    PORTA = 0x00;
    ANSELA = 0x00;
    TRISA = 0x00;
    while(1)
    {
        RA6=1;
        dog();
    }
    return (EXIT_SUCCESS);
}

这个程序烧进去723a里面 RA6为什么不输出高电平?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝