怎么用汇编语言使dac0832产生三角波
展开全部
DAC0832是8位的D/A转换集成芯片。只需要调整传送到DAC0832的数据循环先递增,后递减即可使DAC0832的输出为三角波。
电路原理图如下:
汇编语言代码如下:
注意:实际生成波形时可能需要对三角波频率进行调整,为了确保三角波的幅值和精度,可以采用添加延时来调整每个模拟数输出值持续的时间来调整三角波的频率。
扩展资料
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。
1、单缓冲方式
单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
2、双缓冲方式
双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。
3、直通方式
直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统。
展开全部
DAC832是一个数模转换芯片,要用它产生三角波,只需要将AD转换的值从低到高,再从高到低传送给它就可以实现了,以下是具体例程:
ORG 0000H
JMP START
ORG 0030H
START:
CLR A
LOOP: ;该循环产生上升波形
MOV P1, A ;输出,D/A 转换
INC A
CALL DELAY ;延时
CJNE A,#250,LOOP
LOOP1: ;该循环产生下降波形
DEC A
MOV P1,A
JNZ LOOP1
SJMP START
DELAY: ;延时子程序
MOV R6, #2
DEL1:
MOV R7, #250
DEL2:
DJNZ R7, DEL2 ;内循环250遍
DJNZ R6, DEL1 ;外循环2遍
RET
END
ORG 0000H
JMP START
ORG 0030H
START:
CLR A
LOOP: ;该循环产生上升波形
MOV P1, A ;输出,D/A 转换
INC A
CALL DELAY ;延时
CJNE A,#250,LOOP
LOOP1: ;该循环产生下降波形
DEC A
MOV P1,A
JNZ LOOP1
SJMP START
DELAY: ;延时子程序
MOV R6, #2
DEL1:
MOV R7, #250
DEL2:
DJNZ R7, DEL2 ;内循环250遍
DJNZ R6, DEL1 ;外循环2遍
RET
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己生成一个"完整周期"或者“半周期”的数值表,放在代码里,然后一个个输出,如
MOV DPTR, #8000; DAC0832端口号
AGAIN:
;前半段
MOV R1, #0FFH
MOV R0, #TAB
NEXT: MOVC A, @R0
INC R0
MOVX @DPTR, A
DJNZ R1, NEXT
;后半段
MOV R1, #0FFH
NEXT: MOVC A, @R0
DEC R0
MOVX @DPTR, A
DJNZ R1, NEXT
JMP AGAIN
TAB DB 0FFH, 0FEH,0FDH,0FCH....00H
MOV DPTR, #8000; DAC0832端口号
AGAIN:
;前半段
MOV R1, #0FFH
MOV R0, #TAB
NEXT: MOVC A, @R0
INC R0
MOVX @DPTR, A
DJNZ R1, NEXT
;后半段
MOV R1, #0FFH
NEXT: MOVC A, @R0
DEC R0
MOVX @DPTR, A
DJNZ R1, NEXT
JMP AGAIN
TAB DB 0FFH, 0FEH,0FDH,0FCH....00H
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询