当前位置:
文档之家› 波形发生器实验---微机原理
波形发生器实验---微机原理
正弦波 Y=ASIN(X):首先利用正弦函数算出各个点,一共取了 64 个点,存放在内存(SIN) 中,用 AL 指向内存首址,取第一个数,然后输出,接着内存地址加 1,延时一段时间,再取下 一个数,这样一直下去,直到读完 64 个数,并依次输出每一个点,就可得到正弦波。利用键盘
菜单选择,按键 4 就有正弦波产生。最后按键 5 可退出程序。
MOV DX,OFFSET STR1 MOV AH,9 INT 21H
MOV MOV INT MOV MOV INT MOV MOV INT MOV MOV INT LOOP1:
DX,OFFSET AH,9 21H DX,OFFSET AH,9 21H DX,OFFSET AH,9 21H DX,OFFSET AH,9 21H
;软件延时子程序
七、实验结果和思考题 1.实验结果 编译运行程序后,在操作界面中,输入 1-4 任意一个数字,将在示波器上产 生相应的波形,再次输入一个数字(1-4)后,再次生成相应波形。其中输入数 字 1,将生成方波;数字 2 产生三角波;数字 3 产生锯齿波;数字 4 生成正弦波。 退出运行界面,按数字 5。
;判断是否有按键按下 ;无按键则跳回继续循环,有则退出 ;读键盘
L05:
LOOP2: CMP JZ CMP JZ CMP JZ CMP JZ JMP FLAG,1 SQUARE FLAG,2 DELTA FLAG,3 SAWTOOTH FLAG,4 SINE LOOP1
SQUARE: MOV FLAG,1 MOV DX,DA0832 MOV AL,00H OUT DX,AL MOV CX,DANUM CALL DALLY LOOP L03 MOV DX,DA0832 MOV AL,DANUM OUT DX,AL MOV CX,DANUM CALL DALLY LOOP L04 JMP LOOP1 DELTA: MOV FLAG,2 MOV AL,00H MOV DX,DA0832 OUT DX,AL CALL DALLY ;D/A 转换起始值 ;启动 D/A 转换 ;写 00H,输出低电平
Y N
判
AL=33H N AL=34H N AL=35H Y 结束
AL,1FH 输出正弦波 出锯齿波 输输出正弦 波 出
Y 断 N 是 N 判 否 N
AL=10H
方
AL=08H
波Байду номын сангаас
AL=04H AL=02H
断 有 判 是 键 断 否 按 是 有 下 否 键 有 按 键 下 按 下
图 7-5 总体流程图
CS WR 使 DAC 寄存器处于直通方式, 另外把 ILE 接高电平, 接端口地址译码信号, 1 接 CPU 的 WR 信号,这样就可以通过一条 MOVX 指令,选中该端口,使 CS 和 WR1
有效,启动 D/A 转换。 (3)双缓冲方式 :主要在以下两种情况下需要用双缓冲方式的 D/A 转换。在需 要同步进行 D/A 转换的多路 DAC 系统中,采用双缓冲方式,可以在不同的时刻把 要转换的数据打入各 DAC 的输入寄存器,然后由一个转换命令同时启动多个 DAC 转换。先用 3 条输出指令选择 3 个端口,分别将数据写入各 DAC 的输入寄存器, 当数据准备就绪后,再执行一次写操作,使 XFER 变低同时选通 3 个 D/A 的 DAC 寄存器,实现同步转换。 2.波形发生器原理 要求能输出方波、锯齿波、三角波和正弦波,下面分别详述每一种波形是如何 实现: 方波: 首先赋给 AL 00H, 然后执行 OUT 指令输出, 然后延时一段, 再赋给 AL 0FFH, 执行 OUT 指令输出,同样延时一段时间,这一直循环下去,就可以得到方波。利用 键盘菜单选择,按键 1 时,就有方波产生。 三角波:首先赋给 AL 00H,然后执行 OUT 指令输出,在执行 INC 自动增 1,直到 AL 是否加满,未满则继续,已满,AL 置全“1” ,然后输出数据减 1,然后判断 AL 是否减到“0” ,不为 0 则继续,这样一直循环下去,就可得到连续的三角波。利用 键盘菜单选择,按键 2 就有三角波产生。 锯齿波:首先赋给 AL 00H,然后执行 OUT 指令输出,在执行 INC 自动增 1,直到 AL 是否加满,未满则继续,已满,就可以继续判断是否有键按下,这样一直循环下 去,就可得到连续的三角波。利用键盘菜单选择,按键 3 就可看到三角波。
波形发生器实验---微机原理
一、实验目的
(1) 学习掌握 D/A 转换原理及接口设计方法。 (2) 掌握 DAC0832 芯片的使用方法。 (3) 掌握微机扩展 D/A 接口和波形发生器的方法。
二、实验原理 1.DAC0832 芯片的原理
DAC0832 是双列直插式 8 位 D/A 转换器。 转换器是一种将数字量转换成模拟量的器件, D/A 其特点是:接收、保持和转换的数字信息,不存在随温度、时间漂移的问题,其电路抗干扰性 较好。大多数的 D/A 转换器接口设计主要围绕 D/A 集成芯片的使用及配置响应的外围电路。 DAC0832是8位芯片,采用CMOS工艺和R-2RT形电阻解码网络,转换结果为一对差动电流 Iout1和Iout2输出。DAC0832可处于三种不同的工作方式:DAC0832引脚如图2-1所示。主要性 能参数如表2-1示,
L03:
;写 0FH,输出高电平
L04:
UP1:
INC AL CMP AL,DANUM JNE UP1 DOWN1: MOV DX,DA0832 OUT DX,AL CALL DALLY DEC CMP JNE JMP AL AL,00H DOWN1 LOOP1
SAWTOOTH: MOV FLAG,3 MOV AL,00H L01: MOV DX,DA0832 OUT DX,AL CALL DALLY
L02:
;指向下一个数据 ;数据数减 1
QUIT:
MOV AX,4C00H INT 21H
;返回到 DOS
DALLY PROC NEAR PUSH CX PUSH AX MOV CX,0010H D1: MOV AX,0100H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RET DALLY ENDP CODE ENDS END START
(1)直通方式 :当 ILE 接高电平, CS 、 WR1 、 WR2 和 XFER 都接数字地时, DAC 处于直通方式,8 位数字量一旦到达 DI7~DI0 输入端,就立即加到 8 位 D/A 转换器,被转换成模拟量。例如在构成波形发生器的场合,就要用到这种方式,即 把要产生基本波形的数据存在 ROM 中,连续取出送到 DAC 去转换成电压信号。 (2)单缓冲方式 :只要把两个寄存器中的任何一个接成直通方式,而用另一个 锁存器数据, DAC 就可处于单缓冲工作方式。 一般的做法是将 WR2 和 XFER 都接地,
VCC
B-
104 LM324 1
BOUT
U19A 2 3
DAC0832
Vref Rfb Iout2 Iout1
8
B+
9 12 11
4
104 C19 V+12
20
VCC
七、软件流程图
产生方波
产生三角波
开始
显示菜单
有键按下
读入按键
Y
输出方波
Y
AL=31H N
输出三角波
Y
AL=32H N
输出锯齿波 输 AND
STR2
;显示字符串 2
STR3
;显示字符串 3
STR4
;显示字符串 4
STR5
;显示字符串 5
MOV AH,1 INT 16H JZ LOOP2 MOV INT CMP JZ CMP JZ CMP JZ CMP JNZ JMP CMP JNZ JMP AH,0 16H AL,31H SQUARE AL,32H DELTA AL,33H SAWTOOTH AL,34H L05 SINE AL,35H LOOP2 QUIT
六、实验记录与处理(程序)
程序功能:采用 DAC0832 芯片产生 0~-5V 的方波、三角波、锯齿波及正弦波并显示 转换的数字量。
参考程序如下所示: IOY0 EQU 0DA00H ;片选 IOY0 对应的端 口始地址 DA0832 EQU IOY0+00H*4 ;DA0832 的端口地址 DANUM EQU 0FFH STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT STR1 DB '1. Triangle Square Wave ',0ah,0dh,'$' ;定义显示的 字符串 方波 STR2 DB '2. Triangle Delta Wave ',0ah,0dh,'$' ;定义显示的 字符串 三角波 STR3 DB '3. Triangle Sawtooth Wave ',0ah,0dh,'$' ;定义显示的 字符串 锯齿波 STR4 DB '4. Triangle Sine Wave ',0ah,0dh,'$' ;定义显示的 字符串 正弦波 STR5 DB '5. Exit ',0ah,0dh,'$' ;定义显示的字符串 正弦波 FLAG DB 0 SIN DB 00H,02H,05H,09H,0FH,15H,1DH,25H DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH DB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH DB 25H,1DH,15H,0FH,09H,05H,02H,00H DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV MOV MOV MOV AX,DATA DS,AX AX,STACK1 SS,AX ;显示字符串 1