《实验四AD实验分析和总结.docx》由会员分享,可在线阅读,更多相关《实验四AD实验分析和总结.docx(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、实验四A/D实验一、实验目的1、了解模数转换的基本原理;2、掌握模数转换的编程方法。二、实验仪器JXARM9-2440教学实验箱、ADT1000仿真器和ADTIDE集成开发环境、PC机、串口连接线。三、实验原理要将模拟量转换成数字信号需经采样一一量化一一编码三个基本过程(数字化过程)。采样:按采样定理对模拟信号进行等时间间隔采样,将得到的一系列时域上的样值去代替u=f(t), 即用uO ul、un代替u=f(t)o这些样值在时间上是离散的值,但在幅度上仍然是连续模拟量。量化:在幅值上再用离散值来表示。方法是用一个量化因子Q去度量uO、ul、,便得到整量化 的数字量。uO=2.4Q 2Qul=4
2、.0Q 4Qu2=5.2Q 5Qu3=5.8Q 5Q编码:将整量化后的数字量进行编码,以便读入和识别;编码仅是对数字量的一种处理方法。例如:Q=0.5V/格,设用三位(二进编码)uO=2. 4Q 整量化 2Q 编码)(010)/ =(0x2? +1x2* +0x2)x0.57 = 1K通道0和通道工的模拟输入信号可通过实验箱的可调电阻AINO、AIN1调节。四、实验内容及步骤(一)学习例程,对其关键程序与设置进行分析。(二)1、通过可变电阻改变模拟量输入,补充程序将模拟输入进行采集和转换,观查显示结果(在串 口显小);参考程序:/*包含文件*/#include def.h include 24
3、10lib.h #include option.h include 2410addr.h include interrupt.h/ Function name/ Description/ Return type/ Argument/ Function name/ Description/ Return type/ Argument:Main:JXARM9-2410 A/D采样实验主程序实现功能:实现JXRAM9-2410的模数转换JXARM9-2410 UART0 PC COM:void:voidvoid Main(void)(/*配置系统时钟*/ChangeClockDivider(2/l)
4、;U32 mpll_val = 0 ;mpll_val = (9212)|(14)|(1);ChangeMRIIValue(mpll_val12)&0xft (mpll_val4)&0x3f, mpll_val&3);/*初始化端口 */ Port_lnit();/*初始化串口 */UartJnit(0z115200);Uart_Select(O);/*打印提示信息*/PRINTF(n-AD 采样程序一n”);PRINTF(n请将UARTO与PC串口进行连接,然后启动超级终端程序(115200, 8, N, l)n);PRINTF(“n从现在开始您将在超级终端上看到采样值,旋动旋钮AIN2和A
5、IN3改变模拟输入n“);/*开始测试*/Test_Adc(); while(l)(#define ADC_FREQ 2500000int ReadAdc(int ch);/Return type is int, Declare Prototype function=int Test_Adc(void)(int i;float 30=0,31=0,32=0,33=0,34=0,35=0,36=0,37=0; /Initialize variablesPRINTF(AD 测试n);PRINTF(旋动AINO, AIN1旋钮改变模拟输入,任意键退出n“);while(l) (a0=Adc_Get_
6、Data(0)*3.3/1024;al=Adc_Get_Data(l)*3.3/1024;PRINTF(nrAIN0: %2.4f AIN1: %2.4f/ a0,al);rADCCON=(014) | (196) | (73) | (12); /stand by mode to reduce power consumptionPRINTFCXn);PRINTF(AD 测试结束 一一nn);电压值随可变电阻的变化而变化,并显示在超级终端上。第一个 实验问题不大,第一次做的时候没有设置浮点数,显示略有问题,除 此之外比较顺利。2、将转换后的电压值结果显示在LED上和串口上(如2.345)。/*包
7、含文件*/include def.hinclude 2410lib.hH#include option.h#include 2410addr.h/ Function name/ Description/ Return type/ Argument/ Function name/ Description/ Return type/ Argumentinclude interrupt.h1:Main:JXARM9-2410 A/D采样实验主程序实现功能:实现JXRAM9-2410的模数转换JXARM9-2410 UART0 PC COM:void:void*/float ADchange(int
8、data);void TestAdc(void);void Main(void) (/*配置系统时钟*/ChangeClockDivider(2/l);U32 mpll_val = 0 ;mpll_val = (9212) | (14) | (1);ChangeMPIIValue(mpll_val12)&0xff, (mpll_val4)&0x3f/ mpll_val&3);/*初始化端口 */ Port_lnit();/*初始化串口 */UartJnit(0z115200);Uart_Select(O);/*打印提示信息*/PRINTF(n-AD 采样程序一n“);PRINTF(”n请将UA
9、RTO与PC串口进行连接,然后启动超级终端程序(115200, 8, N, l)n“);PRINTF(“n从现在开始您将在超级终端上看到采样值,旋动旋钮AIN2和AIN3改变模拟 输入n);/*开始测试*/TestAdc();while(l)#define ADC_FREQ 2500000int ReadAdc(int ch);/Return type is int, Declare Prototype function void TestAdc(void)(int j = 0;int i = 0;float A0,Al;int LedShow;int show6 = 0;unsigned c
10、har segtable10=(/* 01234567*/OxcO, 0xf9,0xa4, OxbO, 0x99,0x92,0x82, 0xf8z/* 89*/0x80,0x90;unsigned char segtablel4 = 0x40,0x79,0x24,0x30;int 30=0,31=0,32=0,33=0,34=0,35=0,36=0,37=0; /Initialize variablesPRINTF(AD 测试n);PRINTF(旋动AINO, AIN1旋钮改变模拟输入,任意键退出n“);while(l)(a0 = Adc_Get_Data(O, ADC_FREQ);al =
11、Adc_Get_Data(l, ADC_FREQ);PRINTF(nrAINO: %04d AIN1: %04dnn, aO, al);AO = ADchange(aO);Al = ADchange(al);PRINTF(rvoltage-AINO: %05f AIN1: %05fn, AO, Al);LedShow = (int)(A0*100000);show0 = LedShow%10;showl = LedShow/10%10;show2 = LedShow/100%10;show3 = LedShow/1000%10;show4 = LedShow/10000%10;show5 =
12、LedShow/100000%10;/Led动态显示for( j = 0;j 100;j+) (*(unsigned char *)0x20007000) = (1 i) & 0x3f; if(i5)*(unsigned char *)0x20006000) = segtableshowi;if(i=5)*(unsigned char *)0x20006000) = segtablelshow5;i+; i%= 6;Delay(l);)rADCCON=(014) | (196) | (73) | (12); /stand by mode to reduce power consumptionPRINTF(n);PRINTF(AD 测试结束一一nn);)float ADchange(int data)(float result;float per;per = 3.3/1024;result = per*data;return result;)第二个实验的动态显示程序问题较多,重复多次后在7段数码管上的现实才正常,大约为03V,且可显示4位小数。步骤:1)参照模板工程ad(modulesadad.apj),新建一个工程ad,添加相应的文件,并修改ad 的工程设置;创建main.c并加入到工程ad中;2)根据内容编程;3)编译、链接、调试、运行。