实验 8 AD转换实验
------------------------------------------------------------------------------------------------
实验 8 AD转换实验
陕西科技大学实验报告
班级学号姓名实验组别
实验日期室温报告日期成绩
一、实验目的
了解LPC2103内置AD转换芯片的使用方法及硬件连接方法。
二、实验内容及说明
AD转换器特性:
10位逐次逼近式数模转换器;
测量范围:0~3.3V
10位转换时间?2.44us;
一路或多路输入的Rurst转换模式;
转换触发信号可选择;
输入引脚的跳变或定时器的匹配;
具有掉电模式
LPC2103内置AD转换器的使用主要通过对内部寄存器的设置来实现。AD转换器共包括12个寄存器分别用来控制AD转换,读取AD转换的状态,设置AD转换的中断方式,记录不同AD转换通道中的转换结果。
三、实验原理图
陕西科技大学实验报告
——————————————————————————————————————
------------------------------------------------------------------------------------------------
四、实验步骤
1. 实验连线
将电位器中间抽头接到LPC2103的模拟输入通道口如:P0.22.
2. 仿真器的设置:一般选用JTAG调试,若使用RelInFlash生成
目标时,编译连接生成的目标代码会将芯片加密。此时调试无法继续,
须将硬件调成ISP模式进行全片擦除。
3. 运行程序:ad.hex
4. 接通电源,调节电位器并观察实验板上数码管的变化。
五、流程图
六、实验程序
#include "config.h"
#define FADCLK 1000000
#define FPCLK 4500000
陕西科技大学实验报告
#define LS_DS_D (1<<6) //duan data
#define LS_DS_W (1<<7) //wei data
#define ST_CP1 (1<<8) //duan store
#define ST_CP2 (1<<11) //wei store
#define ST_CP3 (1<<12) //LED store
#define LS_DS (1<<10) //data
uint8 SEG_TAB[17] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x
——————————————————————————————————————
------------------------------------------------------------------------------------------------ a1,0x86,0x8e,0xbf}; //数码显示段码表 0 1 2 3
4 5 6 7 8 9 a b c d e f -
uint8
SEG_TABDOT[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点的段码表 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. uint8 BIT_TAB[8] =
{0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//数码显示位码表 第1位..............................第8位
uint8 flowlamp_TAB[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//第1个灯亮,第2个灯亮......第8个灯亮,构成的数组表
void AD_init()
{
ADCR= ADCR|(1<<0) //选择通道0 进行AD转换
|((FPCLK/(FADCLK-1))<<8) //AD转换频率为1Mhz
|(0<<16) //BURST=0;软件控制转换操作
|(0<<17) //CLKS=000; 10位精度的AD |(1<<21) //PDN=1;正常工作模式
|(0<<22) //TEST=00;正常工作模式 |(0<<24)
//START,,,,;不启动,,
|(0<<27); //EDGE,,;在所选CAP,MAT信号的下降
沿启动转换
——————————————————————————————————————
------------------------------------------------------------------------------------------------
}
void SENT_NUM(uint8 date,uint8 wei)
{
uint8 i;
IO0CLR=ST_CP1; //sent data
for(i=8;i>0;i--)
{
IO0CLR=LS_SH;
if((date&0x80)!=0)
{ IO0SET=LS_DS_D; }
else
{ IO0CLR=LS_DS_D; }
陕西科技大学实验报告
IO0SET=LS_SH;
}
IO0SET=ST_CP1; //sent data end
IO0CLR=ST_CP2; //sent wei
for(i=8;i>0;i--)
{
IO0CLR=LS_SH;
if((wei&0x80)!=0)
{ IO0SET=LS_DS_W; }
——————————————————————————————————————
------------------------------------------------------------------------------------------------
else
{ IO0CLR=LS_DS_W; }
wei=wei<<1;
IO0SET=LS_SH;
}
IO0SET=ST_CP2; //sent wei end
}
void delay(uint8 dly)
{
uint8 t;
for(;dly>0;dly--)
for(t=500;t>0;t--);
}
int main (void)
{// add user source code
uint32 AD_data;
int a[4],i;
PINSEL0=0; //all GPIO
PINSEL1=PINSEL1|(3<<12); //P0.22 set AIN0 other set GPIO
AD_init();
IODIR=0xffffffff;
ADCR=ADCR|(1<<24); //turn on AD transport while(1)
——————————————————————————————————————
------------------------------------------------------------------------------------------------
{
ADCR=ADCR|(1<<24);
while((AD0STAT&0x01)==0); //wait for transport end flog AD_data=AD0GDR;
AD_data=(AD_data>>6)&0x03ff; //read AD value AD_data=AD_data*3300;
AD_data=AD_data/1024; //change AD value bit to dinary a[0]=AD_data/1000;
陕西科技大学实验报告
a[2]=(AD_data%100)/10;
a[3]=AD_data%10; //计算十进制的显示数字
for(i=0;i<4;i++)
{
SENT_NUM(SEG_TAB[a[i]],BIT_TAB[7-i]); delay(40);
}
}
return 0;
}
——————————————————————————————————————
本文档为【实验 8 AD转换实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。