当前位置:文档之家› 单片机DA转换实验报告

单片机DA转换实验报告

单片机DA转换实验报告
单片机DA转换实验报告

实验九D/A实验报告

㈠实验目的

1.掌握单片机与D/A的接口及编程方法;

2.通过D/A动态波形输出进一步理解D/A的工作原理;

3.结合实验六中的A/D来检验软硬件的正确性。

4.进一步了解单片机系统地址分配概念。

㈡实验器材

1.G6W仿真器一台

2.MCS—51实验板一台

3.PC机一台

4.信号发生器一台

5.示波器一台

㈢实验内容及要求

DAC0832是内含双锁存器且可与单片机8051直接接口的8位D/A,从实验板的电原理图可见,当0832管脚ILE为高,CS2为低时,8051对0832写入待转换的8位数字量,当对0832写入任意数(WR、CS2都为低)时,8051启动D/A转换。

把具有一定规律变化的数据连续送到0832,可用示波器在运放741输出端看到一定规律的动态波形。

将实验六中A/D所存数据直接送到0832,在D/A输出端也可用示波器观察到还原后的A/D输入端信号。

注意:在实验前,应先检查DAC0832的参考电压是否正确。

(要求DAC0832的参考电压值为Vref = -5V,用万用表观察DAC0832芯片的8脚电压值。若不对,可调节实验板上的电位器W3来改变D/A的参考电压值。)

㈣实验步骤

1.接ILE至高电平(+5V),根据CS2与高位地址线的连接情况,确定0832

在系统中的地址。

2.将微机与伟福仿真系统及51实验板相连接。

3.编写双向锯齿波或三角波输出的D/A程序,利用伟福仿真系统及计算机

汇编成目标码,运行并调试程序,用示波器观察实验结果。

4.编写送A/D数据至D/A转换程序,并将在实验六中所编写A/D采样程

序与之连接组合,运用伟福仿真系统及计算机汇编成目标码,运行并调试程序,用示波器观察对照A/D输入端和D/A输出端的波形。

㈤ 实验框图

㈥ 思考题

1. 在实验步骤4中,对比了A/D 输入端和D/A 输出端的波形,它们有什么不同?为什么?

A/D 输出端是正弦波形,而D/A 输出端是一段直流加一段正弦波形。

2. D/A 的转换时间对动态输出波形有何影响?

D/A 的转换时间会使动态波形产生一段直流空档。

3. D/A 参考电源极性与D/A 转换输出结果有什么关系? 开 始 寄存器置转换初值 送D/A 寄存器数加1 产生双向锯齿波的程序流程图 取数据 送D/A 键盘调用D/A 并置初值 开 始 调A/D 转换子程序采样N 个数据 数据地址加1 否 是

N 个数据是否送完? A/D+D/A 程序流程图

输入的数字均视为正数即二进制数的所有位都为数值位。根据电路形式或参考电压的极性不同,输出电压或为0V到正满度值,或为0V到负满度值,这种工作方式称为单极性输出方式。采用单极性输出方式时,数字输出量采用自然二进制码。

实验一代码:

ORG 0000H

AJMP MAIN

ORG 0050H

MAIN:

MOV DPTR,#0DFFFH ;寄存器置转换初值

MOV A, #00H

J: MOVX @DPTR,A ;送D/A

INC A ;寄存器数加1

AJMP J

实验二:

ORG 0000H

LJMP START

ORG 0013H ;中断入口地址

LJMP INT_1

ORG 0040H

START: ;AD转换

MOV SP,#60H

MOV R7,#0FFH ;读取数据个数初始化

MOV R1,#0B0H ;存放数据地址

MOV R0,#00H

MOV DPTR,#7FFFH ;选中A_D芯片

MOV A,#00H ;送通道号

MOVX @DPTR,A ;启动A_D

SETB IT1 ;开中断

SETB EA

SETB EX1

AA:

;MOV A,R7

;JZ MAIN

;SJMP AA ;等待中断

CJNE R7, #00H, $ ;判断数据是否传送完毕

CLR EA ;关中断

LJMP MAIN

INT_1:

MOVX A,@DPTR ;读A_D 数据

MOV DPH,R1

MOV DPL,R0

MOVX @DPTR,A ;送A_D数据

INC R0 ;存放数据地址加一

DEC R7 ;读取数据个数减一

MOV DPTR,#7FFFH

MOV A,#00H

MOVX @DPTR,A ;启动A_D

RETI

MAIN: ;DA转换

MOV R7,#0FFH ;需转换的数据个数

;MOV DPTR,#0EFFFH ;设置DA口地址

;MOV A,#00H ;输入数字量到A(初值为00H)

;MOVX @DPTR,A

MOV R0,#0B0H ;设置需读取数据地址

MOV R1,#00H

NEXT:

MOV DPH,R0 ;将读取数据地址送入DPTR

MOV DPL,R1

MOVX A,@DPTR ;将数据读到A中

MOV DPTR,#0EFFFH

MOVX @DPTR,A ;将数据送往DA口

INC R1 ;读取数据地址加一

DJNZ R7,NEXT ;数据未读完,转向NEXT继续读取

SJMP START

本次实验比较大的问题是在判断FF个数据经过A/D转换之后,要跳入MAIN程序进行D/A转换,我们本身的程序是在中断程序中间判断R7是否为0,然后为0的话跳到MIAN 程序执行,当时没有意识到是从中断程序中跳转出去后还是中断程序的一部分,所以导致程序不能实时采样。

后来我们采用了下面红色的代码,将判断语句放到中断外来执行,但是我们忽略了一点,如果判断等待过程中中断来临,可能会没有机会,而且这段代码中没有关中断。所以最后我们采用了后三行语句来判断数据是否转换完并跳转。

AA:

;MOV A,R7

;JZ MAIN

;SJMP AA ;等待中断

CJNE R7, #00H, $

CLR EA

LJMP MAIN

相关主题
文本预览
相关文档 最新文档