利用80C51单片机和DAC0832 输出一个从0V开始逐渐升至5V再降至0V的可变电压
答案:4 悬赏:50
解决时间 2021-02-21 08:13
- 提问者网友:全員惡人
- 2021-02-20 22:58
要PROTEUS仿真和汇编代码,邮箱[email protected]
最佳答案
- 二级知识专家网友:苦柚恕我颓废
- 2021-02-20 23:21
ORG 0000H
LJMP SE13
ORG 00800H
SE13: MOV SP,#53H
mov p2,#0ffh
MOV A,#43H
MOV DPTR,#0FF20H
MOVX @DPTR,A
MOV 7EH,#00H
MOV 7DH,#08H
MOV 7CH,#03H
MOV 7BH,#02H ;显示缓冲区
LO20: MOV R6,#00H
LO21: MOV DPTR,#8000H
MOV A,R6
MOVX @DPTR,A ;送0832转换
MOV R0,#79H
LCALL PTDS
LCALL SSEE ;显示
MOV R2,#08H
LCALL DELYA ;延时
INC R6 ;加1
CJNE R6,#0FFH,LO21 ;不到FF继续加
LO22: MOV DPTR,#8000H
DEC R6
MOV A,R6 ;减1送0832转换
MOVX @DPTR,A
MOV R0,#79H
LCALL PTDS
LCALL SSEE ;显示
MOV R2,#08H
LCALL DELYA ;延时
CJNE R6,#00H,LO22 ;不为0继续减
SJMP LO20 ;循环
;ORG 0620H
PTDS: MOV R1,A ;拆送显示缓冲区
LCALL PTDS1
MOV A,R1
SWAP A
PTDS1: ANL A,#0FH
MOV @R0,A
INC R0
RET
SSEE: SETB RS1 ;换工作区
MOV R5,#05H
SSE2: MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SSE1: MOV A,30H
CPL A
MOV DPTR,#0FF21H ;字位送入
MOVX @DPTR,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR ;取字形代码
MOV DPTR,#0FF22H ;字形送入
MOVX @DPTR,A
MOV A,30H
RR A ;右移
MOV 30H,A
DEC 31H
MOV A,#0FFH
MOV DPTR,#0FF22H ;关显示
MOVX @DPTR,A
DJNZ R7,SSE1 ;六位显示完了吗?
DJNZ R5,SSE2
CLR RS1
RET
DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
DELYA: PUSH 02H ;延时子程序
DELYB: PUSH 02H
DELYC: PUSH 02H
DELYD: DJNZ R2,DELYD
LCALL SSEE ;调显示子程序
POP 02H
DJNZ R2,DELYC
POP 02H
DJNZ R2,DELYB
POP 02H
DJNZ R2,DELYA
RET
END
LJMP SE13
ORG 00800H
SE13: MOV SP,#53H
mov p2,#0ffh
MOV A,#43H
MOV DPTR,#0FF20H
MOVX @DPTR,A
MOV 7EH,#00H
MOV 7DH,#08H
MOV 7CH,#03H
MOV 7BH,#02H ;显示缓冲区
LO20: MOV R6,#00H
LO21: MOV DPTR,#8000H
MOV A,R6
MOVX @DPTR,A ;送0832转换
MOV R0,#79H
LCALL PTDS
LCALL SSEE ;显示
MOV R2,#08H
LCALL DELYA ;延时
INC R6 ;加1
CJNE R6,#0FFH,LO21 ;不到FF继续加
LO22: MOV DPTR,#8000H
DEC R6
MOV A,R6 ;减1送0832转换
MOVX @DPTR,A
MOV R0,#79H
LCALL PTDS
LCALL SSEE ;显示
MOV R2,#08H
LCALL DELYA ;延时
CJNE R6,#00H,LO22 ;不为0继续减
SJMP LO20 ;循环
;ORG 0620H
PTDS: MOV R1,A ;拆送显示缓冲区
LCALL PTDS1
MOV A,R1
SWAP A
PTDS1: ANL A,#0FH
MOV @R0,A
INC R0
RET
SSEE: SETB RS1 ;换工作区
MOV R5,#05H
SSE2: MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SSE1: MOV A,30H
CPL A
MOV DPTR,#0FF21H ;字位送入
MOVX @DPTR,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR ;取字形代码
MOV DPTR,#0FF22H ;字形送入
MOVX @DPTR,A
MOV A,30H
RR A ;右移
MOV 30H,A
DEC 31H
MOV A,#0FFH
MOV DPTR,#0FF22H ;关显示
MOVX @DPTR,A
DJNZ R7,SSE1 ;六位显示完了吗?
DJNZ R5,SSE2
CLR RS1
RET
DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
DELYA: PUSH 02H ;延时子程序
DELYB: PUSH 02H
DELYC: PUSH 02H
DELYD: DJNZ R2,DELYD
LCALL SSEE ;调显示子程序
POP 02H
DJNZ R2,DELYC
POP 02H
DJNZ R2,DELYB
POP 02H
DJNZ R2,DELYA
RET
END
全部回答
- 1楼网友:不羁的心
- 2021-02-21 02:51
51输出数据逐级升高,再依次降低
- 2楼网友:湫止没有不同
- 2021-02-21 02:13
你好!
你照着书弄一个出来呀,很简单的
如果对你有帮助,望采纳。
- 3楼网友:转身→时光静好
- 2021-02-21 00:36
不能用c语言的么,我这里都是C语言的,需要找我。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯