打印
[其它应用]

ADC例程

[复制链接]
591|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
snow101|  楼主 | 2020-12-4 15:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

ADC 负责模拟信号到相应 12 位的数字信号的转换,支持 VDD 和外接 VREF 两种基准电
压,可通过软件启动 AD 转换,也可通过触发源触发 AD 转换,另外可配置为多通道,实现
序列转换。
测试程序介绍
Demo 程序中配置了单次转换和 8 通道的序列转换。单次转换使用 AN0 为输入口。序列
转换的顺序为 AN7~AN0,转换完成后,结果按照 AN7~AN0 的顺序存放在 ADC_res[8]数组中。

单次转换需要把 Adc.c 文件中的 define ADC_ONE 打开。
序列转换需要把 Adc.c 文件中的 define ADC_ARRAY 打开。
选择“Adc”工程,编译、加载
1) AN0~AN7 通道外接不同的电压源;
2) 在 ADC_Test 最后设置断点,可读出 ADC_res 中的转换结果。
注:本项测试只完成一次 AD 转换,要想再进行一次 AD 转换,软件需再次启动 AD 转
换。
2.10.2 寄存器简要介绍   

void init_adc()
{
        UINT16 ADC_res[8];
        UCHAR i;
        ADCON1 = 0x80;        //ADON, VDD as vref, no trigger

/***************************************************************************************
24M SYSCLK, 500ksps
****************************************************************************************/
        ADT=0x21;
        #ifdef ADC_ONE
        ADCON2 = 0x0;        //1-channel
        ADCH1 = 0x01;        //AN0
/*******************************************************************************************
启动AD转换
********************************************************************************************/
        ADCON1 |= 0x01;   //ADC GO
        while(ADCON1 & 0x01);        //check go/done
        ADC_res = ((ADDxH << 4) + (ADDxL >> 4));
        #endif
        #ifdef ADC_ARRAY
        ADCON2 = 0x72;        //8-channels,time of gap:4Tad
        ADCH1 = 0xff;        //P3.7~P3.4, P4.3~P4.0,AN7~AN0channel as adc input
//configure order of channals transaction: AN7,AN6, AN5, AN4, AN3, AN2, AN1, AN0
        SEQCON = 0x0;        //configure SEQCH0
        SEQCHx = 0x7;
        SEQCON = 0x01;        //configure SEQCH1
        SEQCHx = 0x06;
        SEQCON = 0x02;        //configure SEQCH2
        SEQCHx = 0x05;
        SEQCON = 0x03;        //configure SEQCH3
        SEQCHx = 0x04;
        SEQCON = 0x04;        //configure SEQCH4
        SEQCHx = 0x03;
        SEQCON = 0x05;        //configure SEQCH5
        SEQCHx = 0x02;
        SEQCON = 0x06;        //configure SEQCH6
        SEQCHx = 0x01;
        SEQCON = 0x07;        //configure SEQCH7
        SEQCHx = 0x0;

        SEQCON &= 0x7f;        //result left-align
/*******************************************************************************************
启动AD转换
********************************************************************************************/
        ADCON1 |= 0x01;   //ADC GO
        while(ADCON1 & 0x01);        //check go/done
        //get result.
        for(i = 0; i < 8; i++)
        {
                SEQCON = i;
                ADC_res = ((ADDxH << 4) + (ADDxL >> 4));
        }
        #endif
}

使用特权

评论回复
沙发
chenjun89| | 2020-12-4 19:05 | 只看该作者
点个赞支持一下。

使用特权

评论回复
板凳
guijial511| | 2020-12-7 20:52 | 只看该作者
中颖的mcu型号有点少啊

使用特权

评论回复
评论
wofei1314 2021-1-27 21:42 回复TA
有近百种,只是你接触不到~ 
地板
lzsky| | 2021-1-27 10:48 | 只看该作者
厉害赞

使用特权

评论回复
5
powerantone| | 2021-2-5 16:37 | 只看该作者
点个赞支持一下。

使用特权

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

本版积分规则

1

主题

7

帖子

0

粉丝