(预习
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
)
一、实验目的
1. 了解A/D转换的工作原理。
2. 掌握基于MCS-51的A/D转换器接口的设计
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
。
二、实验
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
1. 设计基于MCS-51系统的A/D转换器ADC0804的接口。利用ADC0804对输入的电压信号进行
转换。改变输入电压,将A/D转换器的输出数据在LCD上显示。试
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
输入信号(0~5V)与转
换结果之间的误差及线性程度。
2. 正确选择三角波信号与采样频率,利用ADC0804对输入的三角波信号进行转换。将AD转
换器的输出数据存放在外部存储器中,试分析输入信号与转换结果之间的误差及线性程度。
三、实验器材
本实验使用 ADC0804 作为模数转换器件。
ADC0804 的引脚结构:
引脚说明:
1. CS):Chip Select,与 RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低
电平时有效。
2. RD :当 CS 、RD 皆为低电平 时,ADC0804 会将转换后的数字讯号经由 DB7 ~ DB0 输
出至其它处理单元。
3. WR :启动转换的控制讯号。当 CS 、WR 皆为低电平 时 ADC0804 做清除的动作,系
统重置。当 WR 由 0→1 且 CS =0 时,ADC0804 会开始转换信号,此时 INTR 设定为高
电平。
4. CLK IN、CLKR:频率输入/输出。频率输入可连接处理单元的讯号频率范围为 100 kHz 至
800 kHz。而频率输出频率最大值无法大于 640KHz,一般可选用外部或内部来提供频率。
若在 CLK R 及 CLK IN 加上电阻及电容,则可产生 ADC 工作所需的时序,其频率约为:
5.INTR:中断请求。转换期间为高电平,等到转换完毕时 INTR 会变为低电平告知其它的
处理单元已转换完成,可读取数字数据。
6. VIN(+)、VIN(-):差动模拟讯号的输入端。输入电压 VIN=VIN(+) -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
N
Y
2、
示波器测量值 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 0.937
BF 3.73 18 0.469
DF 4.355 03 0.059
F8 4.844