PIC单片机两路模拟量编程求助

2019-03-25 18:55发布

哪位大神能帮忙给个PIC单片机两路模拟量的编程例子学习一下啊,谢谢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
dingzy_2002
2019-03-26 07:29
本帖最后由 dingzy_2002 于 2016-8-25 09:28 编辑

二、C语言版:
①运算函数
void        ad_opt(void)
{
        uint8_t        ang_da,comp_da,ang_value=0,count;
        uint16_t        i;
//油量AD转换并累加:
        i=adc10_conv(fuel_ch);
        fuel_data_add+=i;
        if(fuel_ad_max<i)
                fuel_ad_max=i;
        if(fuel_ad_min>i)
                fuel_ad_min=i;
}
②子函数:
/*---------------------------------------------
        函数名:        uint16_t adc10_conv(uint8_t ad_ch)
        描述:        AD转换函数(10位结果)
        输入:        要进行转换的通道
        输出:        转换后的数据
---------------------------------------------*/
uint16_t        adc10_conv(uint8_t        ad_ch)
{
        uint16_t ad_value;        
        ADFM                =        1;                //结果右对齐
        ADCON0         =         ad_ch;        //
        ADON                =        1;                //打开AD模块
        delay_5us;
        GO         =         1;                        //启动转换
        while(GO)        ;                //等待转换完成
        ADON                =        0;                //关闭AD模块

        ad_value        = (uint16_t)(ADRESL | (ADRESH << 8));   //注意是10位的转换精度 value、temph应为unsigned int 变量
        return(ad_value);
}
/*---------------------------------------------
        函数名:        uint16_t adc8_conv(uint8_t ad_ch)
        描述:        AD转换函数(8位结果)
        输入:        要进行转换的通道
        输出:        转换后的数据
---------------------------------------------*/
uint8_t        adc8_conv(uint8_t ad_ch)
{
        ADFM                =        0;                //结果左对齐
        ADCON0         =         ad_ch;        //
        ADON                =        1;                //打开AD模块
        delay_5us;
        GO         =         1;                        //启动转换
        while(GO)        ;                //等待转换完成
        ADON                =        0;                //关闭AD模块
        return(ADRESH);
}
/*---------------------------------------------*/
/*文件结束*/

一周热门 更多>