发表于:2009/3/27 19:38:47
#0楼
lpc938有8路10位ad转换器,参考电压为电源电压。下面是编程注意事项:
1、一般使用lpc932的头文件,需要补充特殊寄存器的定义
#include
sfr adcon0 = 0x97; //补充特殊寄存器定义
sfr adins = 0xa3;
sfr admoda = 0xc0;
sfr admodb = 0xa1;
unsigned char xdata ad0dat5r _at_ 0xfff4;
unsigned char xdata ad0dat5l _at_ 0xfff5;
unsigned char xdata ad0dat6r _at_ 0xfff2;
unsigned char xdata ad0dat6l _at_ 0xfff3;
unsigned char xdata ad0dat7r _at_ 0xfff0;
unsigned char xdata ad0dat7l _at_ 0xfff1;
2、ad_init:初始化a/d转换
void ad_init(void)
{
admoda=0x10; //通道1选择单次转换模式
adins=0xe0; //选择通道ad05、06、07
}
3、转换过程
adcon0=0x05; //固定通道,单次转换、立即启动
while(!(adcon0&0x08)); //等待转换完毕
adcon0=0x01; //停止转换,否则影响相关端口的输入检测,如p0.2
ta=ad0dat7l; //高位9:2
ta=ta
4、注意事项:当启动ad转换后,即使是没有使用的ad转换通道的端口也受到影响,具体表现为不论端口外部电平是高还是低,程序检测时都为0。所以在使用中要注意ad转换结束后要禁止ad通道。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=82504&Name=zhouchs
1、一般使用lpc932的头文件,需要补充特殊寄存器的定义
#include
sfr adcon0 = 0x97; //补充特殊寄存器定义
sfr adins = 0xa3;
sfr admoda = 0xc0;
sfr admodb = 0xa1;
unsigned char xdata ad0dat5r _at_ 0xfff4;
unsigned char xdata ad0dat5l _at_ 0xfff5;
unsigned char xdata ad0dat6r _at_ 0xfff2;
unsigned char xdata ad0dat6l _at_ 0xfff3;
unsigned char xdata ad0dat7r _at_ 0xfff0;
unsigned char xdata ad0dat7l _at_ 0xfff1;
2、ad_init:初始化a/d转换
void ad_init(void)
{
admoda=0x10; //通道1选择单次转换模式
adins=0xe0; //选择通道ad05、06、07
}
3、转换过程
adcon0=0x05; //固定通道,单次转换、立即启动
while(!(adcon0&0x08)); //等待转换完毕
adcon0=0x01; //停止转换,否则影响相关端口的输入检测,如p0.2
ta=ad0dat7l; //高位9:2
ta=ta
4、注意事项:当启动ad转换后,即使是没有使用的ad转换通道的端口也受到影响,具体表现为不论端口外部电平是高还是低,程序检测时都为0。所以在使用中要注意ad转换结束后要禁止ad通道。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=82504&Name=zhouchs
欢迎光临我的BLOG