仿真图:
功能简介:
采用51单片机作为控制器,最小系统由晶振和复位电路组成,设计语言采用汇编
具有2个功能按键,分别是加减输出电压,支持点按和长按控制
采用DAC芯片DAC0832,单片机驱动该芯片输出电压值经过运放之后接入LM317的ADJ管脚从而达到输出电压的控制
由于电源芯片的限制,电压输出范围为1.5到12V
芯片/模块的特点:
DAC0832特点:
分辨率:DAC0832具有8位的分辨率,即可以将数字输入转换为256个不同的模拟输出级别。它能够提供精确的模拟输出信号。
双通道输出:DAC0832具有两个独立的模拟输出通道,可以同时产生两个不同的模拟输出信号。这使得它适用于需要多个模拟输出的应用。
串行接口:DAC0832通过串行接口进行通信和控制。它使用少数几个引脚(数据引脚、时钟引脚和片选引脚),可以与主控器件进行数据交换和时钟同步。
低功耗设计:DAC0832采用低功耗设计,在工作时功耗较低。它还具有自动功耗优化功能,可以在闲置状态下自动进入低功耗模式。
内部参考电压:DAC0832内部集成了参考电压,可以为模拟输出提供稳定的参考值。它还支持外部参考电压输入,以满足不同的应用需求。
输出保持功能:DAC0832具有输出保持功能,在电源投入或重启后,可以保持上一次的模拟输出值,避免输出的不确定性。
单电源供电:DAC0832可以使用单一电源(5V)进行供电,简化了电路设计和连接。
LM317芯片的特点如下:
- 调节范围广:LM317可以通过外部两个电阻来调节输出电压,其调节范围宽,适用于多种应用场景。
- 输出电压稳定:LM317能够提供稳定的输出电压,其输出电压可以在1.25V至37V之间进行调节。
- 输出电流较大:LM317的输出电流能力较强,最大输出电流可达1.5A,适用于需要较大电流供应的应用。
- 过热和过流保护:LM317内置了过热和过流保护电路,可以自动限制芯片的工作温度和输出电流,以保护芯片不受损坏。
- 低压差:LM317芯片的压差(dropout voltage)相对较低,即在输入和输出之间的电压差较小,使得它适用于低压差应用。
- 温度稳定性好:LM317具有良好的温度稳定性,能够在各种工作温度条件下保持相对稳定的输出电压。
主程序:
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
RET
END
设计文件:
链接:https://pan.baidu.com/s/1IS_aHJk1KiBo4aqLpCqqpg?pwd=s4yo