LPC938有8路10位AD转换器,参考电压为电源电压。下面是编程注意事项:
WW.W_PLCJS_COM-PLC-技.术_网
1、一般使用LPC932的头文件,需要补充特殊寄存器的定义
——可——编——程——控-制-器-技——术——门——户
#include<reg932.h>
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
sfr ADCON0 = 0x97; //补充特殊寄存器定义
WWW_PLC※JS_COM-PmLC-技.术_网
sfr ADINS = 0xA3;——可——编——程——控-制-器-技——术——门——户
sfr ADMODA = 0xC0;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
sfr ADMODB = 0xA1;WW.W_PLCJS_COM-PLC-技.术_网
unsigned char xdata AD0DAT5R _at_ 0xFFF4;WWcW_PLCJS_COM-PLC-技.术_网
unsigned char xdata AD0DAT5L _at_ 0xFFF5;plcjs.技.术_网
unsigned char xdata AD0DAT6R _at_ 0xFFF2;plcjs.技.术_网
unsigned char xdata AD0DAT6L _at_ 0xFFF3;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
unsigned char xdata AD0DAT7R _at_ 0xFFF0;WWW_P※LCJS_COM-PLC-)技.术_网
unsigned char xdata AD0DAT7L _at_ 0xFFF1;plcjs.技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
2、AD_init:初始化A/D转换
WWW_P※LCJS_CO※M-PLC-技-.术_网
void AD_init(void)P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
{WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
ADMODA=0x10; //通道1选择单次转换模式P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
ADINS=0xE0; //选择通道AD05、06、07WWW_PLCJS_COM-PLC-技.术_网
}WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
3、转换过程
WWW_PLC※JS_COM-PmLC-技.术_网
ADCON0=0x05; //固定通道,单次转换、立即启动
plcjs.技.术_网
while(!(ADCON0&0x08)); //等待转换完毕P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
ADCON0=0x01; //停止转换,否则影响相关端口的输入检测,如P0.2WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
Ta=AD0DAT7L; //高位9:2WW.W_PLC※JS_C,OM-PL,C-技.术_网
Ta=Ta<<2; //左移2位,取高2位用WW.W_PLCJS_COM-PLC-技.术_网
Ta=(Ta & 0x0300) | AD0DAT7R; //加入低8位,得到10位的采集结果WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
4、注意事项:当启动AD转换后,即使是没有使用的AD转换通道的端口也受到影响,具体表现为不论端口外部电平是高还是低,程序检测时都为0。所以在使用中要注意AD转换结束后要禁止AD通道。
plcjs.技.术_网