《实验十一__A_D转换实验实验.doc》由会员分享,可在线阅读,更多相关《实验十一__A_D转换实验实验.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA实验报告之 实验十一 A/D转换实验1、 实验目的 (1)掌握A/D转换器与单片机接口的方法;(2)了解A/D芯片0809的转换性能及编程方法;(3)通过实验了解数据采集、处理的基本方法。2、实验要求 利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,在数码管的最高两位显示出数字量来。另外要把模拟量值在数码管的最低三位显示出来。例如显示“80 2.50”( 其中80是采样数值,而2.50是电压值。要求程序可连续运行以便测量不同的模拟电压(类似于电压表)(注意:多次采集求平均值可提高转换精度)3、实验说明1) 原理图参看LAB
2、6000使用手册、图示帮助等;2) 连线方式与LAB6000给出的有所不同,这里的实验用数码管显示结果(原实验则用LED显示结果);3) EOC可接中断、其它引脚或不接,对应的获取数据方法为中断、查询、延迟,建议采用中断方法;4)注意ADC0809各连线接在了什么位置。4、写出实验报告(包括6位LED显示的部分电路图)。5、 实验内容5.1使用仪器、仪表,开发平台型号本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,若干连线,串行数据线。5.2性能指标、技术要求、思路方案、流程图5.2.1性能指标、技术要求见实验目的和实验要求。5.2.2思路方案:先将所有中断使能位置位,
3、然后启动A/D转换。在主程序中显示缓冲区的内容,判断4次中断已满的标志位是否置位,是的话调用计算子程序计算数字平均值和模拟值,这个过程反复循环的进行。5.2.3流程图:5.3源程序;采样的数字值放在20H开始的单元中,修改R6的值(4);可以控制采样的个数(为了方便我们选择2,4,8等2的倍数),上限为256个ORG0000HLJMP BEGIN ;ORG 0003H ;外部中断0LJMP INT0ORG0030H;=BEGIN:FLAGEQU50H;对应到16进制的是2A单元,四次中断是否满的标志位TRANSEQU51H;是否一次转换完毕的标志位MOV R0,#20H ;采样数据存储单元MO
4、V R6,#4 ;采样4次求均值CLRFLAGCLRTRANSSETB EA ; 开所有中断SETB IT0 ; INT0边沿触发SETB EX0 ; 允许INT0中断MOV DPTR,#8000H ; 指向0809 IN0通道地址MOVX DPTR,A;=LOOP:LCALLDISPLAYJNBTRANS,LOOP;判断是否发生EOC,为0时转移CLRTRANSJNBFLAG,CONTINUE;为0时转移CLRFLAGLCALLCOMPUTEECONTINUE:MOV DPTR,#8000HMOVX DPTR,A ; 启动A/D转换,因为与A值无关,故不管ALJMPLOOP;=;中断服务程序
5、INT0:MOVX A,DPTR ; 读A/D转换结果MOV R0,AINCR0DJNZ R6,RETURNSETBFLAGMOVR6,#4MOV R0,#20HRETURN:SETBTRANSRETI;=DISPLAY:MOV R4,#02H;=BEGIN0:MOVA,#01H;位选择字节MOVR2,#5;5次MOVR1,#60H;数据地址LOOOP:MOVDPTR,#9002H;位选输出地址MOVXDPTR,ARLA;修改位信号PUSHAMOVDPTR,#9004H;数据输出地址MOVA,R1LCALLCHECK;查表CJNE R1,#62H,PEIORL A,#80HPEI:MOVXDP
6、TR,ALCALL DELAYINCR1POPADJNZR2,LOOOPLCALL DELAY ;为了两轮显示间时间间隔久一些DJNZ R4,BEGIN0RET;=DELAY:MOV R5,#02HMOV R3,#09FHLOOPP:DJNZ R3,$DJNZ R5,LOOPPRET;=;计算数字平均值和模拟值COMPUTEE: ;计算采样值总和,放在BA单元,前者为高位MOVR1,#20H;指向20H单元MOVR5,#4CLRCCLRAMOVB,ALLOOPP:ADDA,R1JNCGOONINCB;C为1是加一CLRCGOON:INCR1DJNZR5,LLOOPP;=MOVR5,#2;2的2
7、倍是4次DIVISION:;数字平均值最后在A中,B移位完后为0PUSHAMOVA,BCLRCRRCAMOVB,A;暂存POPARRCADJNZR5,DIVISION;=;这部分程序是为了获得模拟值和将数字量分别存为两个字节里面PUSH APUSH AANLA,#0FHMOV 63H,APOP AANL A,#0F0HSWAP AMOV 64H,APOP AMOV B,#5MUL ABMOV 62H,BMOV B,#10MUL ABMOV 61H,BMOV B,#10MUL ABMOV 60H,BRET;=CHECK:INCAMOVCA,A+PCRETTABLE:DB3FH,06H,5BH,4
8、FH,66HDB6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79HDB71H5.4实验步骤,完成情况5.4.1在WAVE 6000中新建文件,并将代码写入文件中,保存为EXPERIMENT11.ASM;5.4.2在WAVE 6000中新建项目,并在模块文件中包含上述EXPERIMENT11.ASM文件,最后保存为EXPERIMENT11.PRG。5.4.3编译程序,按照提示改正错误的地方,直到没有语法错误为止。5.4.4完成上一步后,检查是否有逻辑错误。5.4.5按连线图连好线,经师兄确认后打开电源。5.4.6转动电位器,观察数码管输出的时间是否正确,精度是否正确
9、。如果错误,检查连线,源程序,并修改错误的地方,直到调试出正确的波形为止。5.4.7结果正确后,等师兄检查完毕。然后收拾实验仪器,包括电源线、导线、串口线,示波器等,收拾桌面和凳子。6、本实验遇到问题及解决方案6.1R2是指向采样数据存储单元的地址,但由于在另一个子程序里也用到了这个寄存器,导致出现问题。解决方案:将另一个子程序里用到的寄存器换成R1,解决。6.2计算模拟量的程序开始是自己写的,但又冗长又难懂。解决方案:后来换成了大家普遍采用的方案,解决问题。一点提示:用充分利用资源(网络,书本)等等,闭门造车是不会进步的。7、对本实验的改进建议和疑难问题:7.1改进建议:为了增进难度,可以强行要求采样奇数次(如5,7,9等)采样,求平均值,这样就不能用移位来做除法。O(_)O7.1疑难问题:在算模拟值的小数部分的时候,本来我用的是用划分区间,用与划分段值来比较的方法来得到小数部分,但这种算法的问题是冗长。故后来换成如上方法,不过这种方法的原理还是比较模糊。2009-5-20
限制150内