实验报告
课程名称: 单片机原理及应用
实验项目: A/D转换实验
专业班级:
姓 名: 学 号:
实验室号: 实验组号:
实验时间: 批阅时间:
指导教师: 成 绩:
沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级: 学号: 姓名:
实验名称:A/D转换实验
附件A 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级: 学号: 姓名:
实验步骤或程序:
实验原理:
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。每采集一次需100us。
ADC0809 START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令:
MOV DPTR,#PORT
MOVX @DPTR,A
A中为何内容并不重要,这是一次虚拟写。
在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相连接。在中断处理程序中,使用如下指令即可读取A/D转换的结果:
MOV DPTR,#PORT
MOVX A,@DPTR
实验步骤:
1、0809的片选信号CS0809接CS0。
2、电位器的输出信号AN0接0809的ADIN0。
3、EOC接CPU板的INT0.
程序框图:
运行结果
程序调试运行后,手调电位器,随着电位器的变化,看到数码管显示的数字电压值也在随之变化。
六、实验总结
这次A/D转换实验相对以前的六个实验对于我来说有比较大的难度。在自主编程和绘制的过程中理论知识的欠缺就表现出来了。比如说:在使用Protues软件进行电路设计时接线的引脚连接不是很清楚,不知道正确使用AD0808芯片与单片机的接口进行总线扩展。因此,此次实验程序编写尤其显得吃力,并且在仿真的时候有不明原因的延时显示。不过经过此次实验我学到了更多的单片机和单片机资源扩展芯片的知识。
第二篇:单片机AD转换实验
一、实验目的
1、掌握单片机与ADC0809的接口设计方法 。
2、掌握Proteus软件与Keil软件的使用方法 。
二、实验要求
1、用Proteus软件画出电路原理图,在单片机的外部
扩展片外三总线,并通过片外三总线与0809接口。
2、在0809的某一模拟量输入通道上接外部模拟量。
3、在单片机的外部扩展数码管显示器。
4、分别采用延时和查询的方法编写A/D转换程序。
5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。
三、实验电路图
四、实验程序流程框图和程序清单
1、查询
ORG 0000H
START:LJMP MAIN
ORG 0100H
MAIN: MOV SP, #6FH
CLR EA
LOOP: MOV DPTR, #0fef8H
MOVX @DPTR, A
LOOP1:JNB P3.2, LOOP1
MOVX A, @DPTR
MOV B, #51
DIV AB
MOV 23H, A
MOV A, #10
MOV 22H, A
MOV A, B
LCALL CHULI
MOV 21H, A
MOV A, B
LCALL CHULI
MOV 20H, A
LCALL DIR
LJMP LOOP
DIR: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
SETB RS1
SETB RS0
MOV R0, #20H
MOV R3, #0FEH
LOOP2:MOV P2, R3
MOV DPTR, #TAB1
MOV A, @R0
MOVC A, @A+DPTR
MOV P1, A
LCALL DELAY
INC R0
MOV A, R3
JNB ACC.3, LOOP3
RL A
MOV R3, A
LJMP LOOP2
LOOP3:POP PSW
POP DPL
POP DPH
POP ACC
RET
TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH
DELAY:MOV R7, #01H
DL1: MOV R6, #8EH
DL0: MOV R5, #02H
DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
CHULI:CJNE A, #25, LP
LJMP LP2
LP: JNC LP1
LP2: MOV B, #10
MUL AB
MOV B, #51
DIV AB
LJMP LP3
LP1: CLR C
SUBB A, #25
MOV B, #10
MUL AB
CLR C
SUBB A, #5
MOV B, #51
DIV AB
ADD A, #5
LP3: RET
END
2、延时
ORG 0000H
START:LJMP MAIN
ORG 0100H
MAIN: MOV SP, #6FH
CLR EA
LOOP: MOV DPTR, #0fef8H
MOVX @DPTR, A
LCALL DELAY100
MOVX A, @DPTR
MOV B, #51
DIV AB
MOV 23H, A
MOV A, #10
MOV 22H, A
MOV A, B
LCALL CHULI
MOV 21H, A
MOV A, B
LCALL CHULI
MOV 20H, A
LCALL DIR
LJMP LOOP
DIR: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
SETB RS1
SETB RS0
MOV R0, #20H
MOV R3, #0FEH
LOOP2:MOV P2, R3
MOV DPTR, #TAB1
MOV A, @R0
MOVC A, @A+DPTR
MOV P1, A
LCALL DELAY
INC R0
MOV A, R3
JNB ACC.3, LOOP3
RL A
MOV R3, A
LJMP LOOP2
LOOP3:POP PSW
POP DPL
POP DPH
POP ACC
RET
TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH
DELAY:MOV R7, #01H
DL1: MOV R6, #8EH
DL0: MOV R5, #02H
DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
CHULI:CJNE A, #25, LP
LJMP LP2
LP: JNC LP1
LP2: MOV B, #10
MUL AB
MOV B, #51
DIV AB
LJMP LP3
LP1: CLR C
SUBB A, #25
MOV B, #10
MUL AB
CLR C
SUBB A, #5
MOV B, #51
DIV AB
ADD A, #5
LP3: RET
DELAY100: MOV R6,#01H;误差 0us
DL0:MOV R5,#2FH
DJNZ R5,$
DJNZ R6,DL0
RET
END
3、中断
ORG 0000H
START:LJMP MAIN
ORG 0003H
LJMP INTT0
ORG 0100H
MAIN: MOV SP, #6FH
SETB EA
SETB EX0
MOV DPTR, #0000H
MOVX @DPTR, A
HERE: LJMP HERE
INTT0:MOVX A, @DPTR
MOV B, #51
DIV AB
MOV 23H, A //整数部分放22H中
MOV A, #10
MOV 22H, A //小数点放22H中
MOV A, B
LCALL CHULI
MOV 21H, A //小数点后第一位放21H中
MOV A, B
LCALL CHULI
MOV 20H, A //小数点后第一位放21H中
LCALL DIR
MOV DPTR, #0000H
MOVX @DPTR, A
RETI
DIR: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
SETB RS1
SETB RS0
MOV R0, #20H
MOV R3, #01H
LOOP2:MOV P2, R3 //位控码初始值
MOV DPTR, #TAB1
MOV A, @R0
MOVC A, @A+DPTR
MOV P1, A
LCALL DELAY
INC R0
MOV A, R3
JB ACC.3 LOOP3
RL A
MOV R3, A
LJMP LOOP2
LOOP3:POP PSW
POP DPL
POP DPH
POP ACC
RET
TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,07FH
DELAY:MOV R7, #01H
DL1: MOV R6, #8EH
DL0: MOV R5, #02H
DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
CHULI:CJNE A, #25, LP
LJMP LP2
LP: JNC LP1
MOV B, #10
MUL AB
MOV B, #51
DIV AB
LJMP LP3
LP1: CLR C
SUBB A, #25
MOV B, #10
MUL AB
CLR C
SUBB A, #5
MOV B, #51
DIV AB
ADD A, #5
LJMP LP3
LP2: MOV A, #5
MOV B, #0
LP3: RET
END
五、实验结果
六、实验总结
通过本次试验掌握了A/D转换的电路设计,掌握了AD0808的使用以及编址技术,熟悉了A/D转换的方法和A/D转换的程序设计方法。