北航微机原理实验之四(数模转换)

  • 格式:doc
  • 大小:157.50 KB
  • 文档页数:6

2011- 2012 学年 第一学期
微机原理实验四:数/模转换
班级 392311 学院 高等工程
姓名 李 柏 学号 3903·2415

2011年12月17日
1.实验目的
了解数模转换的原理,学习数模转换芯片的使用方法,掌握利用数模转换芯片产生方波及正弦波的方法。
2.实验内容
在数据段中存放好对应于产生方波和正弦波的数字量,正弦波要求20个值。编写程序将数据段中的数字
量送到DAC0832的输出端产生方波和正弦波,本实验只需CS与290H连接。

3.程序清单

正弦波生成代码
PORTA EQU 0EF00H-280H+290H
STACK SEGMENT STACK
DB 100 DUP()
STACK ENDS
DATA SEGMENT
X1 DB 128,163,203,232,250,255,250,232,203,168
DB 128,88,53,24,6,0,6,24,53,88
X2 DB 'PLEASE INPUT NUMBER$'
DATA ENDS
CODE SEGMENT
ASSUME CSCODE,DSDATA,SSSTACK
MAIN PROC
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET X2
MOV AH,9
INT 21H

NEXT1 MOV DX, PORTA
MOV CX, 20
MOV SI, OFFSET X1
NEXT2 MOV DX,PORTA
MOV AL,[SI]
OUT DX,AL
INC SI
NEXT4 MOV DL,0FFH
MOV AH,6
INT 21H
JNZ NEXT3
JMP NEXT4
NEXT3 LOOP NEXT2
JMP NEXT1
MOV AH, 4CH
INT 21H
MAIN ENDP
CODE ENDS
MAIN ENDS

方波生成代码

PORTCS EQU 0EF00H-280H+290H
STACK SEGMENT STACK
DW 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
MAIN PROC
NEXT:
MOV DX,PORTCS
MOV AL,0
OUT DX,AL
CALL DELAY
MOV AH,1
INT 21H
MOV AL,0FFH
OUT DX,AL
CALL DELAY
MOV AH,1
INT 21H
MOV DL,0FFH
MOV AH,6
INT 21H
JZ NEXT
MOV AH,4CH
INT 21H
MAIN ENDP
DELAY PROC
PUSH CX

MOV CX,1000
NEXT1:
LOOP NEXT1
POP CX
RET
DELAY ENDP
CODE ENDS
END MAIN

三角波
INADRESS EQU 0EFF0H-280H+290H
STACK SEGMENT STACK
DW 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE;SS:STACK
MAIN PROC
MOV AL,0
NEXT1: MOV DX,INADRESSS
OUT DX,AL
CALL DELAY
INC AL
JNZ NEXT1
NEXT2: DEC AL
OUT DX,AL
CALL DELAY
JNZ NEXT2
MOV DL,0FFH
MOV AH,6
INT 21H
JZ NEXT1
MOV AH,4CH
INT 21H
MAIN ENDP
DELAY PROC
PUSH CX
MOV CX,1000
NEXT3: LOOP NEXT3
POP CX
RET
DELAY ENDP
CODE ENDS
END MAIN
正弦波:
2.3mv 1.559v 2.924v 4.05v4.76v 4.95v 4.76v 4.05v 2.924v 1.559v 3mv -1.536v -2.889v -4.00v -4.70v
-4.00v -2.889v -1.536v
方波:
高4.95v 低-4.98v

4.收获与心得
这次实验的硬件连线比较容易。在实验过程中,很快就得到了实验结果。但实验过程中的一
个环节还是给了我一些启示。实验过程中有一个步骤是要在输出端测输出电压。刚开始我测
试数据的时候发现万用表测出的数据一直是变动中的,无法获得稳定的电压值。我开始认为
是连线接触不良导致的这种情况,又重新检查了一下程序,并回忆老师上课讲过的一些实验
中会遇到的问题,我突然想到是因为程序中少了一段延时程序才导致输出电压无法测出。再
加入了一个延时子程序后果然顺利的得到了稳定的电压值。这次实验我最大的收获就是明白
了理论如何转化成正确的实践成果。老师课堂上并没有讲过输出要延时一段时间,但是具体
实践却要求我们必须这样做才能获得正确的结果。这就需要我们自己具备这种分析问题,并
结合实际情况改进理论指导的能力。
5.实验流程图
开始

将方波数字量存入数
据段

将I/O端口地址送入
DX寄存器

将该数字量输出至I/O端
口,并调用延时子程序

将数据段中第二个方波数
字量放入AL寄存器中

初始化

N
返回DOS

将数据段中第一个方波
数字量放入AL寄存器中

将第一位数字量偏移
地址存入SI寄存器

检查是否有键按下 将该数字量输出至I/O端口,并调用延时子程序 Y

开始
将正弦波数字量存入
数据段

将I/O端口地址送入
DX寄存器

将该数字量输出至I/O端
口,并调用延时子程序

SI和BX寄存器的
值自加

初始化

N
检查是否有
键按下

返回DOS
Y

将数据段中第一个正
弦波数字量放入AL寄
存器中

将第一位数字量偏移
地址存入SI寄存器,
BX寄存器置零

BX和20是否相等 比较BX和20的大小 Y

N