作者:谢明亮 马学强 苏向阳
论文关键词: 直流稳压电源 单片机 数字控制
论文摘要:本系统以直流电压源为核心,at89s52单片机为主控制器,通过键盘来设置直流电源的输出电压,设置步进等级可达0.1v,输出电压范围为0—9.9v,最大电流为330ma,并可由液晶屏显示实际输出电压值。系统有过流保护电路,当输出电流过大时功率管自动截至,而且有红色指示灯发出警报。本系统由单片机程控输出数字信号,经过d/a转换器(ad0832)输出模拟量,再经过运算放大器隔离放大,控制输出功率管的基极,随着功率管基极电压的变化而输出不同的电压。实际测试结果表明,本系统实际应用于需要高稳定度小功率恒压源的领域。
keywords: regulated power supply of direct current; single2ch ip m icrocomputer, digital control
abstract:this system to dc voltage source as the core, mainly at89s52 scm, through the keyboard controller to install dc power supply output voltage, setting stepping class can reach.01v output voltage, the range of 0-9.9 v, the maximum current 330ma for, and can show the actual pipe by digital output voltage values. this system consists of microcontroller program output digital signal, through d/a converter (ad0832) output analog amplifier, through isolating amplifier output power, control of base, with the power to change the passive tube voltage output of different voltage. test results show that this system application in need of high stability of small power constant-voltage source fields.
1 引言
几乎所有的电子设备都需要稳定的直流电源,因此直流稳压电源的应用非常的广泛。 直流稳压电源的电路形式有很多种,有串联型、开关型、集成电路、稳压管直流稳压电源等等。在电子设备中,直流稳压电源的故障率是最高的(长期工作在大电流和大电压下,电子元器件很容易损坏)但在直流稳压电源中,通过整流、滤波电路所获得的直流电源的电压往往是不稳定的。输出电压在电网电压波动或负载电流变化时也会随之有所改变。电子设备电源电压的不稳定,将会引起很多问题。设计出质量优良的直流稳压电源,才能满足各种电子线路的要求。因此,直流稳压电源的研究就颇为重要。目前产生直流稳压电源的方法大致分为两种:一种是模拟方法,另一种是数字方法。前者的电路均采用模拟电路控制,而后者则是通过数字电路进行自动控制。直流稳压电源朝着数字化方向发展。因此对于数控恒压源的研究是必要的。随着科学技术飞速发展,对电源可靠性、输出精度和稳定性要求越来越高,利用d/ a 转换器的高分辨率和单片机的自动检测技术设计程控电源就显示出其优越性。程控电源既能方便输入和选择预设电压值又具有较高精度和稳定性,而且可以任意设定输出电压或电流,所有功能由面板上的键盘控制单片机实现,给电路实验带来极大的方便,提高了工作效率。
2 系统方案论证与比较
方案一:采用各类数字电路来组成键盘控制系统,进行信号处理,如选用cpld等可编程逻辑器件。本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。
方案二:采用at89s52单片机作为整机的控制单元,通过改变dac0832的输入数字量来改变输出电压值,从而使输出功率管的基极电压发生变化,间接地改变输出电压的大小。为了能够使系统具备检测实际输出电压值的大小,可以将输出电压经过adc0832进行模数转换,间接用单片机实时对电压进行采样,然后进行数据处理及显示。此系统比较灵活,采用软件方法来解决数据的预置以及电压的步进控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求。
比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。
3 总体方案框图
系统总体方案框图如图1所示:
图1 系统原理框图
4 系统部分功能设计
4.1 稳压输出部分
4.1.1 稳压输出原理与电路
这部分将数控部分送来的电压控制字转换成稳定电压输出。d/a转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。稳压输出电路采用的是串联式反馈稳压电路(如图2),在电路中,q1—tip122为调整管,u6a—lm358 为比较放大器,r19、r22组成反馈网络。d/a转换电路的输出电压daout接到 u6a 的同向端,稳压电源的输出经r19、r22组成的取样电路分压后送到运放u6a的反向端,经运放比较放大后,驱动调整管q1。路平衡时,d/a电路的输出电压 与取样后的电压 相等。
稳压输出部分的过流保护电路由r21和q2组成。设 为保护动作电流,则当电源输出电流i增加到 时,r21上的压降 *r21使得q2管导通,分掉了q1上的基极电流,使输出i不再增加,起到了过流保护作用。
图2 稳压输出部分
4.1.2 稳压输出部分仿真图
图3 稳压电路仿真图
一般的直流稳压电源是用可变电阻来实现输出电压的调节,那么要在直流稳压电源的基础上实现数字控制的话,实际上很简单,我们只要将可变电阻换成数字控制部分来代替,就能实现数控恒压源这一课题。所以,首先要做的,就是选择合适的稳压输出电路并对其可行性进行了仿真。如图9,很容易就验证了此稳压输出电路的可靠。
4.2数字控制部分
4.2.1 单片机部分
图4 单片机控制部分
控制部分是系统整机协调工作和智能化管理的核心部分,采用at89s52单片机实现控制功能是其关键,采用单片机不但方便监控,并且大大减少硬件设计。
4.2.2 d/a转换部分
系统设置d/a转换接口,采用8位模数转换器dac0832。其电路如图5.
图5 d/a转换部分
d/a转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。8位字长的d/a转换器具有256种状态。当电压控制字从0,1,2,……到256时,电源输出电压为0.0,0.06,……15.0。
其时序图如图6:
图6 dac0832数模转换时序图
clk为时钟端,data为输入数据,load为输入控制信号。
每路电压输出值的计算:
ref为参考电压,data为输入8位的比特数据;
我们这里用的ref=5v;
4.2.3 a/d转换部分
a/d转换部分我们采用美国国家半导体公司生产的一种8 位分辨率、双通道a/d转换芯片adc0832。其电路图如图7所示:
图7 a/d转换部分
adc0832 是美国国家半导体公司生产的一种8 位分辨率、双通道a/d转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用adc0832 可是使我们了解a/d转换器的原理,有助于我们单片机技术水平的提高。
4.2.3.1 adc0832 具有以下特点:
· 8位分辨率;
· 双通道a/d转换;
· 输入输出电平与ttl/cmos相兼容;
· 5v电源供电时输入电压在0~5v之间;
· 工作频率为250khz,转换时间为32μs;
· 一般功耗仅为15mw;
· 8p、14p—dip(双列直插)、picc 多种封装;
· 商用级芯片温宽为0°c to +70°c,工业级芯片温宽为−40°c to +85°c;
4.2.3.2 芯片接口说明:
· cs_ 片选使能,低电平芯片使能。
· ch0 模拟输入通道0,或作为in+/-使用。
· ch1 模拟输入通道1,或作为in+/-使用。
· gnd 芯片参考0 电位(地)。
· di 数据信号输入,选择通道控制。
· do 数据信号输出,转换数据输出。
· clk 芯片时钟输入。
· vcc/ref 电源输入及参考电压输入(复用)。
adc0832 为8位分辨率a/d转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5v之间。芯片转换时间仅为32μs,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过di 数据输入端,可以轻易的实现通道功能的选择。
4.2.3.3 单片机对adc0832 的控制原理:
正常情况下adc0832 与单片机的接口应为4条数据线,分别是cs、clk、do、di。但由于do端与di端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将do和di 并联在一根数据线上使用。当adc0832未工作时其cs输入端应为高电平,此时芯片禁用,clk 和do/di 的电平可任意。当要进行a/d转换时,须先将cs使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端clk 输入时钟脉冲,do/di端则使用di端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前di端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前di端应输入2 位数据用于选择通道功能。其时序图如图8.
图8 adc0832时序表
如图所示,当此2 位数据为“1”、“0”时,只对ch0 进行单通道转换。当2位数据为“1”、“1”时,只对ch1进行单通道转换。当2 位数据为“0”、“0”时,将ch0作为正输入端in+,ch1作为负输入端in-进行输入。当2 位数据为“0”、“1”时,将ch0作为负输入端in-,ch1 作为正输入端in+进行输入。到第3 个脉冲的下沉之后di端的输入电平就失去输入作用,此后do/di端则开始利用数据输出do进行转换数据的读取。从第4个脉冲下沉开始由do端输出转换数据最高位data7,随后每一个脉冲下沉do端输出下一位数据。直到第11个脉冲时发出最低位数据data0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出datd0。随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次a/d转换的结束。最后将cs置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
4.2.4 键盘部分
由于要实现人机对话,要显示0—9.9v的电压值,我们自制3*4按键的键盘来完成整个系统控制。电路原理如图9所示。
图9 键盘与显示电路图
按键的具体意义如下:
1
2
3
4
5
6
7
8
9
0
*
enter
4.2.5显示部分
本方案采用ym12864型lcd,可直接显示4*8个汉字,界面友好,支持串并行两种连接方式,其电路连接如图10所示:
图10 lcd12864与单片机连接图
ym12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ascii字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字。 也可完成图形显示。
4.2.5.1 串行接口
*注释1:如在实际应用中仅使用串口通讯模式,可将psb接固定低电平,也可以将模块上的j8和“gnd”用焊锡短接。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的ja、jk用焊锡短接。
4.2.5.2 并行接口
管脚号
管脚名称
电平
管脚功能描述
1
vss
0v
电源地
2
vcc
3.0+5v
电源正
3
v0
-
对比度(亮度)调整
4
rs(cs)
h/l
rs=“h”,表示db7——db0为显示数据
rs=“l”,表示db7——db0为显示指令数据
5
r/w(sid)
h/l
r/w=“h”,e=“h”,数据被读到db7——db0
r/w=“l”,e=“h→l”, db7——db0的数据被写到ir或dr
6
e(sclk)
h/l
使能信号
7
db0
h/l
三态数据线
8
db1
h/l
三态数据线
9
db2
h/l
三态数据线
10
db3
h/l
三态数据线
11
db4
h/l
三态数据线
12
db5
h/l
三态数据线
13
db6
h/l
三态数据线
14
db7
h/l
三态数据线
15
psb
h/l
h:8位或4位并口方式,l:串口方式(见注释1)
16
nc
-
空脚
17
/reset
h/l
复位端,低电平有效(见注释2)
18
vout
-
lcd驱动电压输出端
19
a
vdd
背光源正端(+5v)(见注释3)
20
k
vss
背光源负端(见注释3)
*注释1:如在实际应用中仅使用并口通讯模式,可将psb接固定高电平,也可以将模块上的j8和“vcc”用焊锡短接。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的ja、jk用焊锡短接。
5 总电路软件实现流程图
图10 总流程图
程序见后面附录。
6 电源测试结果
6.1电压测试
预置电压(v)
显示电压(v)
测量电压(v)
1
1.05
1.05
1.2
1.10
1.17
1.4
1.35
1.38
1.6
1.55
1.61
1.8
1.75
1.78
2
1.95
2.00
2.6
2.55
2.60
3
3.00
3.03
3.7
3.70
3.68
5
5.00
5.01
7
7.00
6.97
8
8.10
8.06
9
8.75
8.75
9.7
9.65
9.63
6.2 性能测试
性能指标
测量条件
测量结果
测量仪表
全程输出电压
0-9.9v
dm-311型数字万用表
负载电流
=5v, =25
206ma
过流保护
330ma
用单片机控制电源时,输出直流0-9.9v,液晶屏显示清晰正确,误差较小,完美的实现了数控恒压源这一课题。
但在功能上还不够强大,没有显示预置电压等等,还可以进一步得到提高。
参考文献
[1]康华光 电子技术基础 高等教育出版社
[2]串联型直流稳压电源的仿真分析 广西师范学院学报 第21卷第2期
[3]用单片机制作的直流稳压可调电源 电子世界 2005年第11期
[4]刘华毅,李霞,徐景德 电力电子技术 第35卷第六期2001年12月
[5]陈小忠、黄宁、赵小侠 单片机接口技术实用子程序 人民邮电出版社
附录
附录1:系统总体电路图
附录2:系统总程序
;***************************************************
; 项目名称:数控恒压源
; 设计者:谢明亮,马学强,苏向阳
;本程序是设计的一个数控恒压源,先用一个3*4的键盘输入
;所用的电压,再通过dac0832输出电压。再采用一个adc08
;32将电压读回单片机,单片机再采用一片lcd串口显示出来。
;***************************************************
;以下接口定义根据硬件连线更改
adcs bit p2.5 ;使能接口
adclk bit p2.4 ;时钟接口
addo bit p2.3 ;数据输出接口(复用)
addi bit p2.3 ;数据输入接口
cs bit p3.0 ;h=data,l=com
sid bit p3.1 ;h=read,l=write
sclk bit p3.6 ;
keybuf equ 30h
com equ 41h ;控制字暂存单元
dat equ 42h ;显示数据暂存单元
coder equ 43h ;字符代码暂存单元
addr equ 44h ;地址暂存单元
org 0
ljmp start
org 3
ljmp keyscan
org 30h
start:mov sp,#90h
lcall del_40ms
lcall ini
mov 70h,#00h
mov 71h,#00h
mov 34h,#02 ;装入通道功能选择数据值
setb it0
setb ex0
mov p1,#0fh ;将p1口低4位设为输入,高4位清零
setb ea
mov keybuf,#00h ;起初输出0v电压
mov r2,#01h ;置送数时送数空间不同的标志位。
clr a
mov 24h,a ;清零24h,25h,31h,32h,33h。
mov 25h,a
mov 31h,a
mov 32h,#05h
mov 33h,#00h
mov addr,#80h
mov dptr,#wel_1
mov 40h,#16
lcall w_line
mov addr,#90h
mov dptr,#wel_2
mov 40h,#9
lcall w_line
mov addr,#95h
mov dptr,#wel_3
lcall w_line1
mov addr,#88h
mov dptr,#wel_4
mov 40h,#16
lcall w_line
mov addr,#98h
mov dptr,#wel_5
mov 40h,#16
lcall w_line
lcall del_1500ms
loop: lcall light ;调显读数与示子程序
sjmp loop
;****************************************************
;键盘扫描程序
;键码存在keybuf单元,格式为数字0-9和.号,还有enter键
;****************************************************
keyscan:push psw
push acc
push dph
push dpl
clr rs1
setb rs0 ;选择1区工作寄存器
lcall delay
mov a,p1
cpl a
anl a,#0fh
jz finish
mov dptr,#tab1
mov p1,#0efh ;扫描第一行
lcall delay
mov p1,#0efh
mov a,p1
cpl a
anl a,#0fh
jz k1 ;第一行没键按下,则扫描第二行
sjmp kend
k1: mov p1,#0dfh ;扫描第二行
lcall delay
mov p1,#0dfh
mov a,p1
cpl a
anl a,#0fh
jz k2 ;第二行没键按下,则扫描第三行
add a,#5
sjmp kend
k2: mov p1,#0bfh ;扫描第三行
lcall delay
mov p1,#0bfh
mov a,p1
cpl a
anl a,#0fh
jz k3 ;第三行没键按下,则扫描第四行
add a,#10
sjmp kend
k3: mov p1,#7fh ;扫描第四行
lcall delay
mov p1,#7fh
mov a,p1
cpl a
anl a,#0fh
jz finish ;第四行没键按下,则返回
add a,#15
kend:movc a,@a+dptr
mov keybuf,a;
mov 33h,#01h ;置有中断标志
sjmp finish
finish:mov p1,#0fh ;为下一次扫描作准备
pop dpl
pop dph
pop acc
pop psw
reti
tab1:db 00h,01h,02h,00h,03h;,00h,00h,00h,33h
db 00h,04h,05h,00h,06h;,00h,00h,00h,00h
db 00h,07h,08h,00h,09h;,00h,00h,00h,0ah
db 00h,0ah,00h,00h,0bh;,00h,00h,00h,46h
;**************************
;lcd的初始化子程序
;**************************
ini:
mov com,#30h ;功能设定,基本指令
lcall wcom
mov com,#30h ;基本指令,8-bit模式,基本指令
lcall wcom
mov com,#0ch ;显示开,游标关,反白关
lcall wcom
mov com,#01h ;清除显示
lcall wcom
mov com,#06h ;进入设定点,游标7右移,画面不移动
lcall wcom
ret
w_line:
mov com,addr
lcall wcom
mov r4,40h ;连续写入n/2个中文或者n个西文字符
w_l1:
mov a,#00h
movc a,@a+dptr
mov coder,a
lcall wcode
inc dptr
djnz r4,w_l1
ret
w_line1:
mov com,addr
lcall wcom
w_l11:
mov a,70h
anl a,#0fh
movc a,@a+dptr
mov coder,a
lcall wcode
mov a,#0bh
movc a,@a+dptr
mov coder,a
lcall wcode
mov a,71h
swap a
anl a,#0fh
movc a,@a+dptr
mov coder,a
lcall wcode
mov a,71h
anl a,#0fh
movc a,@a+dptr
mov coder,a
lcall wcode
mov a,#0ah
movc a,@a+dptr
mov coder,a
lcall wcode
;djnz r4,w_l1
ret
wcom:
lcall stwc
mov a,com
lcall w4_d ;送入高四位指令
lcall w4_0 ;连续送入四个0
lcall w4_d ;送入高四位指令
lcall w4_0 ;连续送入四个0
clr cs
lcall del_2ms
ret
wcode:
lcall stwd
mov a,coder
lcall w4_d
lcall w4_0
lcall w4_d
lcall w4_0
clr cs
lcall del_2ms
ret
stwc:
setb cs
setb sid
mov r3,#5 ;连续送入5个"1",起始
stwc1: setb sclk
clr sclk
djnz r3,stwc1
clr sid
mov r3,#3
stwc2:
setb sclk ;rw=0,rs=0,第八位"0"
clr sclk
djnz r3,stwc2
ret
stwd:
setb cs
setb sid
mov r3,#5 ;连续送入5个"1",起始
stwd1:
setb sclk
clr sclk
djnz r3,stwd1
clr sid ;rw=0
setb sclk
clr sclk
setb sid ;rs=1
setb sclk
clr sclk
clr sid ;第八位"0"
setb sclk
clr sclk
ret
w4_d:
mov r3,#4
w4_d1:
rlc a
mov sid,c
setb sclk
clr sclk
djnz r3,w4_d1
ret
w4_0:
mov r3,#4
w4_01:
clr sid
setb sclk
clr sclk
djnz r3,w4_01
ret
;********************
;2ms延时
;********************
del_2ms:
mov r0,#2
d1:
mov r1,#200
d2:
nop
nop
nop
djnz r1,d2
djnz r0,d1
ret
;********************
;40ms延时
;********************
del_40ms:
mov r5,#20
d3:
lcall del_2ms
djnz r5,d3
ret
;********************
;200ms延时
;********************
del_200ms:
mov r5,#100
d4:
lcall del_2ms
djnz r5,d4
ret
;********************
;500ms延时
;********************
del_500ms:
mov r5,#250
d5:
lcall del_2ms
djnz r5,d5
ret
;********************
;1500ms延时
;********************
del_1500ms:
lcall del_500ms
lcall del_500ms
lcall del_500ms
ret
;*************************************
;用adc0832读数并送数给显示的子程序,
;并将键盘的按键数送给dac0832让其输出。
;*************************************
;==== adc0832读数据子程序====
light:setb addi ;初始化通道选择
nop
nop
clr adcs ;拉低/cs端
nop
nop
setb adclk ;拉高clk端
nop
nop
clr adclk ;拉低clk端,形成下降沿
mov a,34h
mov c,acc.1 ;确定取值通道选择
mov addi,c
nop
nop
setb adclk ;拉高clk端
nop
nop
clr adclk ;拉低clk端,形成下降沿2
mov a,34h
mov c,acc.0 ;确定取值通道选择
mov addi,c
nop
nop
setb adclk ;拉高clk端
nop
nop
clr adclk ;拉低clk端,形成下降沿3
setb addi
nop
nop
mov r7,#8 ;准备送下后8个时钟脉冲
ad_1:
mov c,addo ;接收数据
mov acc.0,c
rl a ;左移一次
setb adclk
nop
nop
clr adclk ;形成一次时钟脉冲
nop
nop
djnz r7,ad_1 ;循环8次
mov c,addo ;接收数据
mov acc.0,c
mov b,a
mov r7,#8
ad_13:
mov c,addo ;接收数据
mov acc.0,c
rr a ;右移一次
setb adclk
nop
nop
clr adclk ;形成一次时钟脉冲
nop
nop
djnz r7,ad_13 ;循环8次
mov r7,#8
cjne a,b,light ;数据校验
mov a,b
mov dptr,#tab5 ;
movc a,@a+dptr ;
mov 72h,a ;将高位送72h单元
mov a,b
mov dptr,#tab6 ;
movc a,@a+dptr ;
mov 73h,a ;降低为送73h单元
setb adcs ;拉高/cs端
clr adclk ;拉低clk端
setb addo ;拉高数据端,回到初始状态
;========送数给显示子程序段========
mov 70h,72h
mov 71h,73h
mov addr,#95h
mov dptr,#wel_3
lcall w_line1
;=======送数给adc0832的子程序========
mov a,33h ;判断有没有中断,
jz l7 ;没有中断就转。
mov 33h,#00h ;清中断标志
l2: mov a,30h ;
cjne a,#0ah,l3 ;判断是否为点号,不为点号就转。
jmp l7 ;为点好就保持原来送数。
l3:cjne a,#0bh,l4 ;判断是否为enter键,不为就转。
mov 32h,24h
mov 31h,25h ;
l9:mov 24h,#00h ;
mov 25h,#00h ;
mov r2,#01h ;置送数时送数空间不同的标志位。
l7: mov a,32h ;将键盘的两数相与,查表,然后送数。
swap a ;
orl a, 31h ;
mov dptr,#tab4 ;
movc a,@a+dptr ;
clr p2.0
mov p0,a
ljmp l6 ;
l4:cjne r2,#01h,l5 ;将键盘的第一位数送给24h
mov a,30h ;
mov 24h,a ;
dec r2 ;清零送数时送数空间不同的标志位。
jmp l7 ;
l5:mov a,30h ;将键盘的第二位数送给25h
mov 25h,a ;
mov r2,#01h ;置送数时送数空间不同的标志位。
jmp l7 ;
l6:ret
;十六进制数转换成为2进制bcd码的码表。
; 0 1 2 3 4 5 6 7 8 9
tab5:db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h;0
db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
db 01h,01h,01h,01h,01h,01h,01h,01h,01h,01h;1
db 01h,01h,01h,01h,01h,01h,01h,01h,01h,01h
db 02h,02h,02h,02h,02h,02h,02h,02h,02h,02h;2
db 02h,02h,02h,02h,02h,02h,02h,02h,02h,02h
db 03h,03h,03h,03h,03h,03h,03h,03h,03h,03h;3
db 03h,03h,03h,03h,03h,03h,03h,03h,03h,03h
db 04h,04h,04h,04h,04h,04h,04h,04h,04h,04h;4
db 04h,04h,04h,04h,04h,04h,04h,04h,04h,04h
db 05h,05h,05h,05h,05h,05h,05h,05h,05h,05h;5
db 05h,05h,05h,05h,05h,05h,05h,05h,05h,05h
db 06h,06h,06h,06h,06h,06h,06h,06h,06h,06h;6
db 06h,06h,06h,06h,06h,06h,06h,06h,06h,06h
db 07h,07h,07h,07h,07h,07h,07h,07h,07h,07h;7
db 07h,07h,07h,07h,07h,07h,07h,07h,07h,07h
db 08h,08h,08h,08h,08h,08h,08h,08h,08h,08h;8
db 08h,08h,08h,08h,08h,08h,08h,08h,08h,08h
db 09h,09h,09h,09h,09h,09h,09h,09h,09h,09h;9
db 09h,09h,09h,09h,09h,09h,09h,09h,09h,09h
db 10h,10h,10h,10h,10h,10h,10h,10h,10h,10h;10
db 10h,10h,10h,10h,10h,10h,10h,10h,10h,10h
db 11h,11h,11h,11h,11h,11h,11h,11h,11h,11h;11
db 11h,11h,11h,11h,11h,11h,11h,11h,11h,11h
db 12h,12h,12h,12h,12h,12h,12h,12h,12h,12h;12
db 12h,12h,12h,12h,12h,12h,12h,12h,12h,12h
tab6:db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;0
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;1
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;2
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;3
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;4
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;5
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;6
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;7
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;8
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;9
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;1, , 0
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;11
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
db 00h,05h,10h,15h,20h,25h,30h,35h,40h,45h;12
db 50h,55h,60h,65h,70h,75h,80h,85h,90h,95h
; 数模转换的代码
;0 1 2 3 4 5 6 7 8 9 a b c d e f
tab4:db 00h, 02h, 04h, 06h, 08h, 0ah, 0ch, 0eh, 10h, 12h, 00h, 00h, 00h, 00h, 00h, 00h ;
db 14h, 16h, 18h, 1ah, 1ch, 1eh, 20h, 22h, 24h, 26h, 00h, 00h, 00h, 00h, 00h, 00h
db 28h, 2ah, 2ch, 2eh, 30h, 32h, 34h, 36h, 38h, 3ah, 00h, 00h, 00h, 00h, 00h, 00h
db 3ch, 3eh, 40h, 42h, 44h, 46h, 48h, 4ah, 4ch, 4eh, 00h, 00h, 00h, 00h, 00h, 00h
db 50h, 52h, 54h, 56h, 58h, 5ah, 5ch, 5eh, 60h, 62h, 00h, 00h, 00h, 00h, 00h, 00h
db 64h, 66h, 68h, 6ah, 6ch, 6eh, 70h, 72h, 74h, 76h, 00h, 00h, 00h, 00h, 00h, 00h
db 78h, 7ah, 7ch, 7eh, 80h, 82h, 84h, 86h, 88h, 8ah, 00h, 00h, 00h, 00h, 00h, 00h
db 8ch, 8eh, 90h, 92h, 94h, 96h, 98h, 9ah, 9ch, 9eh, 00h, 00h, 00h, 00h, 00h, 00h
db 0a0h, 0a2h, 0a4h, 0a6h, 0a8h, 0aah, 0ach, 0aeh, 0b0h, 0b2h, 00h, 00h, 00h, 00h, 00h, 00h
db 0b5h, 0b6h, 0b8h, 0bah, 0bch, 0beh, 0c0h, 0c2h, 0c4h, 0c6h, 00h, 00h, 00h, 00h, 00h, 00h
db 0c8h, 0cah, 0cch, 0ceh, 0d0h, 0d2h, 0d4h, 0d6h, 0d8h, 0dah, 00h, 00h, 00h, 00h, 00h, 00h
db 0dch, 0deh, 0e0h, 0e2h, 0e4h, 0e6h, 0e8h, 0eah, 0ech, 0eeh, 00h, 00h, 00h, 00h, 00h, 00h
db 0f0h, 0f2h, 0f4h, 0f6h, 0f8h, 0fah, 0fch, 0feh
;********************
;10ms延时子程序
;********************
delay:mov 50h,#10
loop1:mov r6,#250
loop2:nop
nop
djnz r6,loop2
dec 50h
djnz 50h,loop1
ret
wel_1:
db "作品:",0cah,0fdh,"控恒压源"
wel_2:
db "输出电压:"
wel_3:
db "0123456789v."
wel_4:
db "制作者:谢明亮,"
wel_5:
db "马学强,苏向阳。"
end