资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
(预习报告) 一、实验目的 1. 了解A/D转换的工作原理。 2. 掌握基于MCS-51的A/D转换器接口的设计方法。 二、实验内容 1. 设计基于MCS-51系统的A/D转换器ADC0804的接口。利用ADC0804对输入的电压信号进行 转换。改变输入电压,将A/D转换器的输出数据在LCD上显示。试分析输入信号(05V)与转 换结果之间的误差及线性程度。 2. 正确选择三角波信号与采样频率,利用ADC0804对输入的三角波信号进行转换。将AD转 换器的输出数据存放在外部存储器中,试分析输入信号与转换结果之间的误差及线性程度。 三、实验器材 本实验使用 ADC0804 作为模数转换器件。 ADC0804 的引脚结构: 引脚说明: 1. CS):Chip Select,与 RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低 电平时有效。 2. RD : 当 CS 、 RD 皆为低电平 时, ADC0804 会将转换后的数字讯号经由 DB7 DB0 输 出至其它处理单元。 3. WR :启动转换的控制讯号。当 CS 、WR 皆为低电平 时 ADC0804 做清除的动作,系 统重置。当 WR 由 01 且 CS 0 时,ADC0804 会开始转换信号,此时 INTR 设定为高 电平。 4. CLK IN、 CLKR: 频率输入/输出。 频率输入可连接处理单元的讯号频率范围为 100 kHz 至 800 kHz。而频率输出频率最大值无法大于 640KHz,一般可选用外部或内部来提供频率。若在 CLK R 及 CLK IN 加上电阻及电容,则可产生 ADC 工作所需的时序,其频率约为: 5.INTR:中断请求。转换期间为高电平,等到转换完毕时 INTR 会变为低电平告知其它的 处理单元已转换完成,可读取数字数据。 6. VIN(+)、VIN(-):差动模拟讯号的输入端。输入电压 VINVIN(+) VIN(-),通常使用 单端输入,而将 VIN(-)接地。 四、硬件原理图 其中,ADC0804 读写地址为 6000H 在 4000H 地址处读取转换完成中断位 LCD 地址为 2000H CPLD 接口电路: 五、程序清单 1 ORG 0000H COM EQU 20H DAT EQU 21H CW_ADD EQU 0000H CR_ADD EQU 0002H DW_ADD EQU 0001H DR_ADD EQU 0003H ;LCD 初始化 MOV A,#30H ;工作方式设置指令代码 MOV DPTR,#CW_ADD ;指令口地址设置 MOV R2,#03H ;循环量=3 MOVX DPTR,A ;写指令代码 INIT1: LCALL DELAY DJNZ R2,INIT1 MOV A,#38H ;设置 8 位总线工作方式 MOVX DPTR,A MOV COM,#01H ;清屏 LCALL PR1 MOV COM,#06H ;设置输入方式 LCALL PR1 MOV COM,#0CH ;设置显示方式 LCALL PR1 TRN: MOV DPTR,#4000H MOVX DPTR,A ;启动 ADC0804 转换 MOV DPTR,#2000H L: MOVX A,DPTR JB ACC.0,L ;查询转换是否结束 MOV DPTR,#4000H MOVX A,DPTR ;读取转换结果 LCALL DISP ;显示转换结果 SJMP TRN ;显示子程序 DISP: MOV COM,#80H ;设置 DDRAM 地址为 00H(第一行第一位) LCALL PR1 MOV B,#100 DIV AB MOV R3,A ;百位暂存 R3 MOV A,#10 XCH A,B DIV AB MOV R4,A ;十位暂存 R4 MOV A,B MOV R5,A ;个位暂存 R5 MOV A,R3 ANL A,#0FH ADD A,#30H ;百位化为 ASCII 码 MOV DAT,A ;显示百位 LCALL PR2 MOV A,R4 ANL A,#0FH ADD A,#30H ;十位化为 ASCII 码 MOV DAT,A ;显示十位 LCALL PR2 MOV A,R5 ANL A,#0FH ADD A,#30H ;个位化为 ASCII 码 MOV DAT,A ;显示个位 LCALL PR2 RET ;写指令代码 PR1: PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#CR_ADD PR11: MOVX A,DPTR JB ACC.7,PR11 MOV A,COM MOV DPTR,#CW_ADD MOVX DPTR,A POP ACC POP DPL POP DPH RET ;写数据 PR2: PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#CR_ADD PR21: MOVX A,DPTR JB ACC.7,PR21 MOV A,DAT MOV DPTR,#DW_ADD MOVX DPTR,A POP ACC POP DPL POP DPH RET ;延时 5ms DELAY: MOV R6,#28H DEL1: MOV R7,#7BH DEL2:DJNZ R7,DEL2 DJNZ R6,DEL1 RET END 2、 ORG 0000H MAIN: MOV DPTR,#4000H ;启动 ADC0804 转换 MOVX DPTR,A MOV DPTR,#2000H L1: MOVX A,DPTR JB ACC.0,L1 ;查询转换是否结束 MOV DPTR,#4000H MOVX A,DPTR ;读取转换结果 MOV DPTR,#6000H ;转换结果存在外部存储器 MOVX DPTR,A INC DPTR PUSH DPH PUSH DPL MOV R0,#7FH ;转换 80H 个数据 L: MOV DPTR,#4000H ;启动 ADC0804 转换 MOVX DPTR,A MOV DPTR,#2000H L2: MOVX A,DPTR JB ACC.0,L2 ;查询转换是否结束 MOV DPTR,#4000H ;读取转换结果 MOVX A,DPTR POP DPL POP DPH MOVX DPTR,A ;转换结果存在外部存储器 INC DPTR PUSH DPH PUSH DPL DJNZ R0,L HE: SJMP HE END (实验报告) 一、硬件原理 实际试验时没有使用 LCD 显示,于是不需要额外的译码电路,直接用线选译码即可。 连线方法: 将 ADC0804 的 CS 连到 A15,则地址 7FFFH 选中 ADC0804 将两者的 WR 和 RD 分别连接并将 INTR 接到 P1.2 口,就能通过读 P1 口来查询中断信号。 二、程序清单 1、 ORG 0000H MOV A,#00H MOV DPTR,#7FFFH ;启动转换 MOVX DPTR,A MOVX A,DPTR LOOP:JB P1.2,LOOP ;查询转换是否结束 MOVX A,DPTR ;读入数据 SJMP $ END 2、 ORG 0000H MAIN: MOV A,#00H MOV R0,#00H ;记循环次数 MOV R1,#40H ;转换后的数据存在 40H 开始的单元中 MOV DPTR,#7FFFH START: LCALL ADC LCALL DELAY ;延时,控制采样频率 MOV R1,A ;存转换数据 INC R1 INC R0 CJNE R0,#80H,START ;采 80H 个数据 HE: SJMP $ DELAY:MOV R6,#080H DL1: DJNZ R6,DL1 RET ADC: MOVX DPTR,A ;启动转换 MOVX A,DPTR LOOP: JB P1.2,LOOP ;查询转换是否结束 MOVX A,DPTR ;读入数据 RET END 在做第一个实验的时候,一开始怎么也读不出 ADC 的数据,程序一直循环再 LOOP 环节, 读不到 INTR 一度怀疑是板子又坏了, 但程序放到别人的机器上跑也是跑不出来, 但是这个硬件连接从理 论上来说,应该可以的。于是我又一次运行程序,然后在程序 LOOP 的时候,用示波器探 头测量了 WR,结果发现 WR 竟然始终是低电平。 正常的 WR 时序如下: 如果 WR 一直处于低电平则 ADC 不会开始转换数据,因此,要让 WR 回到高电平,一个可 行的方法就是在向 ADC0804 发出些信号后再增加一条读指令,则写信号就回到高电平了, 于是 ADC 能够顺利运行了。 三、时序图 1、 开始 写 ADC 读 ADC 读 P1.2 中断 查询位 P1.2=1? ADC 转换值 存入 ACC Y N2、 示波器测量值 ACC 读数(HEX) Value 误差% 0 00 0 0 0.415 15 0.410 1.2 0.815 29 0.801 1.7 1.22 3E 1.211 0.7 1.62 53 1.621 0.6 2.01 68 2.031 1.0 2.40 7C 2,422 0.9 2.77 92 2.851 2.9 3.14 0A6 3.242 3.2 3.51 0BB 3.650 3.9 3.88 0D0 4.062 4.7 4.25 0E5 4.473 5.2 4.61 0F9 4.860 5.4 4.98 0FF 4.980 0 开始 R0-循环次数 R1-存储位置 写 ADC 读 ADC 读 P1.2 中断 查询位 P1.2=1? 延时 存入 R1 指 示 位 置 读 ADC R0 加一 R0=80H? 结束 Y N N Y 拟合方程: f(x) = p1*x + p2 拟合系数: p1 = 1.042 (1.016, 1.067) p2 = -0.03537 (-0.1113, 0.04057) 均方根误差 RMSE: 0.06748 三角波采样数据(freq = 32kHz, ample = 4.92V) 读数(HEX) 值 读数(HEX) 值 03 0.059 E0 4.375 1B 0.827 C8 3.906 2F 0.918 B0 3.437 4F 1.543 94 2.89 5F 1.855 80 2.5 7F 2.48 60 1.875 97 2.95 48 1.406 AF 3.418 30
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号