8086+DAC0832产生方波、三角波及正弦波波形Proteus仿真
仿真截图
代码
CODE SEGMENT
DATA SEGMENT
SQURE DB 0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255
TRIANGLE DB 0,25,50,75,100,125,150,175,200,225,250,225,200,175,150,125,100,75,50,25
SIN DB 128,168,203,232,250,255,250,232,203,168,128,88,53,24,6,0,6,24,53,88
K DB 1 DUP(?)
PORT1 EQU 80H
PORT2 EQU 82H
PORT3 EQU 84H
LEN EQU 20
DATA ENDS
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA;段分配
START:
MOV AX, DATA;段初始化
MOV DS, AX
MOV BX, 00H
BEG:
MOV AL, SQURE[BX]
OUT PORT1, AL
MOV AL, TRIANGLE[BX]
OUT PORT2, AL
MOV AL, SIN[BX]
OUT PORT3, AL
CALL DELAY
INC BX
CMP BX, LEN
JNE BEG
MOV BX, 0
JMP BEG
MAIN ENDP
DELAY PROC NEAR;延时
PUSH SI
PUSH CX
MOV SI, 1
DELAYNEXT1:
MOV CX, 1000H
DELAYNEXT2:
LOOP DELAYNEXT2
DEC SI
JNZ DELAYNEXT1
POP CX
POP SI
RET
DELAY ENDP
CODE ENDS
END MAIN
效果
思路
将方波、三角波、正弦波幅值随时间变化隔一段采用一次。该源程序中每个信号周期采样了20个点。然后通过循环输出这20个幅值给DAC0832,将其转换成模拟量,每次循环停留一段时间(即每个幅值持续一段时间)。
这个程序信号幅值不可调,频率勉强可调(通过调节DELAY子程序延时时长调节)。如果想要精确调节信号频率可采用DDS方法,调节步长。如果想要精确调节信号幅值,可以采用乘法器或数字电位器。