|
给51黑电子论坛的朋友分享一个直流数控稳压电压的proteus仿真设计
说明:本电路是一个数控稳压电源,输出电压+1.5~+12V
按动输出电压增加按钮可以使输出电压升高;按动输出电压减小按钮可以使输出电压降低。按住按键不松手可以快速调整输出电压。
仿真工程文件和源代码下载:
数控稳压电源.rar
(107.12 KB, 下载次数: 76)
直流数控稳压电源的程序:
- DAC EQU 8000H ;DAC0832的地址
- VOL EQU 30H ;存储输出电压值
- MAX EQU 229 ;输出电压最大值
- MIN EQU 5 ;输出电压最小值
- CHANGE EQU 1 ;输出电压增量
- ORG 0H
- LJMP START
- ORG 3H
- LJMP DOWN
- ORG 13H
- LJMP UP
- ;===============================================================
- ;主程序
- ;===============================================================
- ORG 30H
- START: MOV SP,#60H
- SETB EX0
- SETB EX1
- SETB IT0
- SETB IT1
- SETB EA
- MOV VOL,#MIN ;输出电压最小值
- MOV DPTR,#DAC
- MOV A,VOL
- MOVX @DPTR,A ;输出最低电压
- SJMP $
- ;================================================================
- ;外部中断1中断服务程序
- ;实现每次按键输出电压增加19.6*2.4=47.04mV
- ;按住键不松手则输出电压快速增加,每次循环(约514ms)增加19.6*5*2.4=235.2mV
- ;================================================================
- UP: PUSH PSW
- PUSH ACC
- MOV A,VOL
- ADD A,#CHANGE ;输出增加1个字
- UP4: MOV VOL,A
- CJNE A,#MAX,UP1
- SJMP UP2
- UP1: JC UP2
- MOV VOL,#MAX ;输出最大电压值
- UP2: MOV A,VOL
- MOVX @DPTR,A ;改变D/A输出电压
- LCALL DELAY
- SETB P3.3
- JB P3.3,UP3 ;按键松开则退出;否则快加。
- MOV A,VOL
- ADD A,#5 ;输出每次增加5个字
- SJMP UP4
- UP3: POP ACC
- POP PSW
- RETI
- ;================================================================
- ;外部中断0中断服务程序
- ;实现每次按键输出电压减少19.6*2.4=47.04mV
- ;按住键不松手则输出电压快速减少,每次循环(约514ms)减少19.6*5*2.4=235.2mV
- ;================================================================
- DOWN: PUSH PSW
- PUSH ACC
- SETB RS0
- MOV A,VOL
- CLR C
- SUBB A,#CHANGE ;输出减小1个字
- DOWN4: MOV VOL,A
- CJNE A,#MIN,DOWN1
- SJMP DOWN2
- DOWN1: JNC DOWN2
- MOV VOL,#MIN ;输出最小电压值
- DOWN2: MOV A,VOL
- MOVX @DPTR,A ;改变D/A输出电压
- LCALL DELAY
- SETB P3.2
- JB P3.2,DOWN3 ;按键松开则退出;否则快减。
- CLR C
- MOV A,VOL
- SUBB A,#5 ;输出每次减少5个字
- SJMP DOWN4
- DOWN3: POP ACC
- POP PSW
- RETI
- ;============================================================
- ;延时子程序
- ;对于12MHz晶振,延时时间大约514ms
- ;============================================================
- DELAY: MOV R5,#2
- D2: MOV R6,#0
- D1: MOV R7,#0
- DJNZ R7,$
- DJNZ R6,D1
- DJNZ R5,D2
- RET
- END
复制代码
|
|