LPC1768菜鸟学习之ADC.doc

本文详细介绍了如何在LPC1768微控制器中使用ADC功能,包括设置选管脚、初始化寄存器、进行A/D转换及数据处理等关键步骤。通过实例展示了如何利用电位器与AD0.5引脚连接,实时改变输入电压,并计算转换后的电压值。重点阐述了ADC初始化、转换过程、数据读取和计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 要使用ADC功能,就要在PCONP选择选PCADC,在PINSEL选择对应管脚为ADC管脚。

   LPC17688个引脚复用为A/D输入脚。

   12位主次逼近式模数转换器; 

   测量范围:0~VREFP(通常为3V;不超过VDDA);

要使用的寄存器:

   A/D控制寄存器 ADCR

   A/D全局数据寄存器 ADGDR  用来存储最近一次A/D转换的结果,各个通道都有自己的数据寄存器ADDR0 ~ADDR7

以下面的实例来说明。

LPC1768板子上有个电位器与AD0.5相连接,调节电位器就可以改变AD0.,5的电压。

初始化

void ADC_Init (void) {

 

  LPC_PINCON->PINSEL3 &= ~(3UL<<30);               /* P1.31 is GPIO */

  LPC_PINCON->PINSEL3 |=  (3UL<<30);               /* P1.31 is AD0.5 */

 

  LPC_SC->PCONP       |=  (1<<12);               /* Enable power to ADC block */

 

  LPC_ADC->ADCR        =  (1<< 5) |              /* select AD0.5 pin */

                          (4<< 8) |              /* ADC clock is 24MHz/5 */   

                                                //CLKDIV=4

                          (1<<21);               /* enable ADC */ 

}

ADC时钟不能超过13MHz,ADC CLK=PCLK/(CLKDIV+1).

LPC_ADC->ADCR |=  (1<<24);                     /* start conversion */

或者在之前可以加一个 LPC_ADC->ADCR &= ~(7<<24);        /* stop conversion  */ 来排除干扰之类的~~~,这个其实就是结束A/D转换的代码。

   转换出来的数据可以再两个寄存器里看到,ADGDR和ADDR5,这里我们用的是ADGDR.

   对了,还要用(LPC_ADC->ADGDR & (1UL<<31))==1来判定是否转换完成才能得到转换后的数据,

            data=( LPC_ADC->ADGDR >> 4) &0xFFF;

因为ADGDR31位,A/D转换结束置1,当数据被读出就自动清0了。

 ADC_Data = (ADC_Data * 3300)/4096;

这句话的意思就是在参考电压3300mv下得到的电压,4960=12AD的意思,不过看网上说应该4059好些,理由摘抄如下:

ADC采集出来的数据,是0~4095,不会出现4096这个值,如果你4096等分,那就不能得到3.3V了。
会比3.3V少那么一点点。
4095等分,那么可以从0~3.3V,线性变化,根据ADC转换结果,测量电压:最低是0V,最高是3.3V

好了,简单的A/D采样就到这。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值