计算机接口技术-AD和DA转换实验-西安唐都仪器实验

本文介绍了使用ADC0809进行A/D转换,将模拟信号转换为数字并显示在屏幕上,同时展示了如何通过DA0832生成锯齿波和方波,进行D/A转换。实验涉及变量监视和波形分析,通过示波器观察输出效果。
摘要由CSDN通过智能技术生成

1.编写实验程序,将ADC单元中提供的0V~5V信 号源作为ADC0809的模拟输入量,进 行A/D转换,转换结果通过变量进行显示。 修改A/D实验,将A/D转换的结果转成十进制在屏幕上显示.

①按实验指导pdf连接实验线路。

②编写实验程序(例程文件名为:AD0809.ASM),经编译、链接无误后装入系统。

将变量 VALUE 添加到变量监视窗口中。方法如下:打开设置\变量监控,出现如下图的界面,选中要监视的变量“VALUE”,单击“加入监视”后确定,就会在软件左侧栏的“变量区”出现该值。

③在 JMP START 语句行设置断点,使用万用表测量 ADJ 端的电压值,计算对应的采样

值,然后运行程序。

④程序运行到断点处停止运行,查看变量窗口中 VALUE 的值,与计算的理论值进行比较,看是否一致(可能稍有误差,相差不大)。

⑤调节电位器,改变输入电压,比较 VALUE 与计算值,反复验证程序功能。

可以看到上面我调节电位器,在端点处输出十进制数字,图中219对应十六进制数DB

代码如下,其中htob就是十六进制转十进制的程序:


;=========================================================
; 文件名: AD0809.ASM
; 功能说明: 进行AD采样,将结果显示。 片选为IOY0
;=========================================================


IOY0         EQU   0600H 
AD0809       EQU   IOY0+00H*2		;AD0809的端口地址

SSTACK	SEGMENT STACK
		DW 64 DUP(?)
SSTACK	ENDS
PUBLIC	VALUE				;设置全局变量以便变量监视
DATA	SEGMENT
VALUE	DB ?				;AD转换结果
DATA	ENDS
CODE	SEGMENT
		ASSUME CS:CODE, DS:DATA
START:	MOV AX, DATA
		MOV DS, AX
		MOV DX, AD0809		;启动AD采样
		OUT DX, AL
		CALL DALLY
		IN  AL, DX			;读AD采样结果
		MOV VALUE, AL		;将结果送变量
		call htod
		
		
		JMP START			;在此处设置断点, 观察变量窗口中的VALUE值
		
		
DALLY:	PUSH CX				;延时程序
		PUSH AX
		MOV CX, 100H
A5:		MOV AX, 0800H
A6:		DEC AX
		JNZ A6
		LOOP A5
		POP AX
		POP CX
		RET	
htod:
XOR AX,AX
	MOV SI,0    ;栈底用0作为标志位,与30h-39h区分开来
    PUSH SI
    MOV DX,0
    mov BX,10    ;BX作为除数
    MOV AL, VALUE  ;value为要转换的数值十六进制数
again:
    DIV BX        ;不断除以10,取余再加30H压入栈中,32位数除以16位,AX存放商,DX存放余数
    MOV CX,DX     ;余数存放在DX
    ADD CX,30H   ;转化为数字字符
    PUSH CX      ;入栈
    MOV DX,0       ;余数清零
    CMP AX,0      ;判断被除数是否除完了
    JNZ again
Output:
    POP DX        ;出栈,依次输出数字
    CMP DX,0
    JZ exit2
    mov ax,dx
    mov AH,01h   ;输出字符
    int 10h
    
    
    JMP Output
exit2: 
MOV AX, 0120H  ;空格
INT 10H   
    ret
		
		
CODE	ENDS
		END START

2、设计实验电路图实验线路并编写程序,实现D/A转 换,要求产生锯齿波、脉冲波,并用示波器观察电压波形

①按实验指导pdf连接线路

②编写实验程序(锯齿波例程文件名为:DA08321.ASM,方波例程文件名为:

DA08322.ASM),经编译、链接无误后装入系统。

③单击Run按钮,运行实验程序,用示波器测量 DA 的输出,观察实验现象。

用示波器观察波形的方法:单击虚拟仪器菜单中的按钮或直接单击工具栏的按钮,在新弹出的示波器界面上单击按钮运行示波器,观测实验波形

代码如下:


;=========================================================
; 文件名: DA08321.ASM
; 功能描述: 利用DA0832产生锯齿波,通过延时变化波形
;=========================================================

IOY0         EQU   0600H 
DA0832       EQU   IOY0+00H*2	

STACK	SEGMENT STACK
		DW 32 DUP(?)
STACK	ENDS
CODE	SEGMENT
ASSUME	CS:CODE, SS:STACK
START:	MOV AX, 00H				; 产生锯齿波
		MOV DX, DA0832
		MOV AL, 00H
AA1:	OUT DX, AL
		CALL DELAY
		INC AL
		JMP AA1	   
DELAY:	PUSH CX
		MOV CX, 03FFH
AA2:	PUSH AX
		POP  AX
		LOOP AA2
		POP CX
		RET  
CODE	ENDS
		END START



;=========================================================
; 文件名: DA08322.ASM
; 功能描述: 利用DA0832产生方波,通过延时变化波形
;=========================================================

IOY0         EQU   0600H 
DA0832       EQU   IOY0+00H*2	

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS
CODE	SEGMENT
		ASSUME CS:CODE
START:	MOV AX, 00H				; 产生方波
		MOV DX, DA0832
AA1:	MOV AL, 00H
		OUT DX, AL
		CALL DELAY
		MOV AL, 7FH
		OUT DX, AL
		CALL DELAY
		JMP AA1
DELAY:	PUSH CX
		MOV CX,0FF00H
AA2:	PUSH AX
		POP  AX
		LOOP AA2
		POP CX
		RET
CODE	ENDS
		END START

3、将DA输出送AD输入,在屏幕上成对显示D/A和A/D的 输出值,每组用符号隔开开(D/A输出用锯齿波,注意要加大相邻两次D/A间的延迟时间,否则屏幕输出太快)。

代码中2行绿色代码被注释,解除注释可以检查DA输出的数字和AD输入的数字是否相同

DA输出信号,要延迟,AD接收信号前也延迟,转十进制的程序用回第一题的程序。

截图的输出结果,相邻2个数字有差别,不是一定递增,但多个数字输出大体上是递增,从0到255,然后又从0到255

连线时,DA转换器选中IOY0端口,AD转换器选中IOY1端口,注意!!

代码如下:

;=========================================================
; 文件名: DA08321newnewnew.ASM
; 功能描述: 利用DA0832产生锯齿波,通过延时变化波形,AD接收并输出
;=========================================================

IOY0         EQU   0600H 
DA0832       EQU   IOY0+00H*2	
IOY1         EQU   0640H 
AD0809       EQU   IOY1+00H*2		;AD0809的端口地址

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS
PUBLIC VALUE
DATA	SEGMENT
VALUE	DB ?				;AD转换结果
DATA	ENDS


CODE	SEGMENT
ASSUME	CS:CODE, DS:DATA,SS:SSTACK
START:	
MOV AX, DATA
		MOV DS, AX
		MOV DX, AD0809		;启动AD采样
		OUT DX, AL
CALL DELAY
MOV AX, 00H				; 产生锯齿波
		MOV DX, DA0832
		mov DI,00H
		
AA1:	
		MOV BX,DI
		MOV DX, DA0832
		MOV AL, BL
		OUT DX, AL
		;MOV VALUE, AL		;将结果送变量
		;call htod
		CALL DELAY
		MOV DX, AD0809
		MOV AX,DATA
		OUT DX,AL
		CALL DELAY
		IN  AL, DX			;读AD采样结果
		
		MOV VALUE, AL		;将结果送变量
		call htod
		INC DI
		JMP AA1	
		
		
		
		   
DELAY:	PUSH CX
		MOV CX, 0FFFH
AA2:	
		mov si,3H
LL5:    PUSH AX
		POP  AX
		dec si
		cmp SI,0
		JNZ LL5
		LOOP AA2
		POP CX
		RET  
		
htod:
XOR AX,AX
	MOV SI,0    ;栈底用0作为标志位,与30h-39h区分开来
    PUSH SI
    MOV DX,0
    mov BX,10    ;BX作为除数
    MOV AL, VALUE  ;value为要转换的数值十六进制数
again:
    DIV BX        ;不断除以10,取余再加30H压入栈中,32位数除以16位,AX存放商,DX存放余数
    MOV CX,DX     ;余数存放在DX
    ADD CX,30H   ;转化为数字字符
    PUSH CX      ;入栈
    MOV DX,0       ;余数清零
    CMP AX,0      ;判断被除数是否除完了
    JNZ again
Output:
    POP DX        ;出栈,依次输出数字
    CMP DX,0
    JZ exit2
    mov ax,dx
    mov AH,01h   ;输出字符
    int 10h
    
    
    JMP Output
exit2: 
MOV AX, 0120H  ;空格
INT 10H   
    ret
		
		
		
		
		
		
CODE	ENDS
		END START

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值