基于单片机数控直流电流源

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的数控直流电流源设计
摘要:本系统采用单片机作为核心,辅以带反馈自稳定的串调恒压源,可以连续设定20mA---2000mA的电流值,根据设定的电流值,单片机由A/D574对精密电阻康铜丝电压的监控,由D/A0832直接控制输出电流,形成闭环回路,保持恒流。

为了满足精度要求,采用单片机自动控制换档电路,形成粗调和微调结合,保证了精度。

由于使用了双闭环控制,不仅提高了系统的稳定性,而且,保证了调节电流源的精度。

系统的自我保护和报警功能,具有一定的智能性,同时,增加了其运行的安全性和可靠性。

关键词:数控;直流;单片机;电流源
目录
一引言 (1)
二课题原理 (2)
三设计方案 (3)
3.1方案设计比较与论证 (3)
3.2理论分析计算 (4)
四系统总体设计 (6)
4.1硬件设计 (6)
五软件设计 (12)
5.1系统软件流程图 (12)
5.2模块软件流程图 (13)
六调试 (15)
6.1硬件调试 (15)
6.2软件调试 (15)
6.3联机调试 (15)
七测试数据与结果分析 (15)
八结束语 (17)
参考文献 (18)
附录1:核心板FPGA IO引脚分配表 (19)
附录2:核心板FPGA 外扩IO引脚分配表 (23)
附录2:汇编程序 (26)
一、引言:
科学技术是第一生产力,科技进步与创新是推动经济和社会发展的决定性
因素。

科研与创新训练是培养创新意识、提高创新能力、培养创新型人才的有
效途径。

科研与创新训练是大学生成长成才的内在需要,科研与创新训练有利
于促进大学生专业知识和技能的学习与提高. 科研工作就其实质来说,就是一
种发现新问题、提出新见解、拟定新对策的创造性活动。

而发现、分析和解决
新问题的过程,正是一个人创新意识、创造性思维能力和创造能力及奉献科学
精神的全面展现过程。

科研与创新训练有利于培养大学生刻苦钻研的精神.收集丰富的资料,研
究最新的科技成果,掌握科学的方法论,才能具备一定的创造力,才能步入创造
的天地。

在创造过程中,肯定会遇到来自各方面的阻力和困难,有主观的也有客观的,这就要求我们树立起必胜的信念,用严谨的科技创新作风和认真钻研的科技创新态度去迎接困难、迎接挑战。

高等学校自由、民主、浓郁的学术气氛必将对大学生起着感染、熏陶作用,有利于培养大学生刻苦钻研的精神。

创新能力的培养至关重要,是对理论结合实践的能力,实际操作能力和科学作风、独立观察、发现问题、解决问题以及创新能力等进行培养的系统工程。

需要扎实的基础理论、分析问题、解决问题的能力,还需要坚忍不拔、克服困难的勇气和决心,本着学有余力,富于钻研精神、不怕困难,具有一定创造性思维的原则。

强化创新精神和创新能力,会使学生的学习热情大大提高,并带着问题创造性地学习,注意自己在专业方面的整体素质的提高,创新能力的提高必须以整体素质的全面提高为前提条件。

科研与创新训练是迎接知识经济的需要,知识经济是20世纪80年代以来,在全球范围内出现的一种新的经济形态,是建立在知识的生产、分配与消费之上的一种新型经济,是以知识为资本的经济。

知识的更新速度快、陈旧周期短是知识经济的基本特征之一。

这就要求当代大学生必须具有学习新知识、运用新知识、创造新知识的能力。

通过科研与创新训练,可以激发学习的兴趣和动力。

在科研实践的过程中,需要对不同学科进行综合分析,解决问题,在实践的过程中学
会自主学习。

二、课题原理:
数控直流电流源,输入交流200~240V,50Hz;输出直流电压≤10V。

其原理示意图如下所示:
数控直流电流源原理框图
1、基本参数
(1)输出电流范围:200mA~2000mA;
(2)可设置并显示输出电流给定值,输出电流与给定值偏差的绝对值小于等于给定值的1%+10 mA;
(3)具有“+”、“-”步进调整功能,步进小于等于10mA;
(4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值小于等于输出电流值的1%+10 mA;
(5)纹波电流小于等于2mA;
2、说明
(1)输出电流可用高精度电流表测量;如果没有高精度电流表可在采样电阻上测量电压换算成电流;
(2)纹波电流的测量可用低频毫伏表测量输出纹波电压,换算成纹波电流。

三、设计方案
3.1 方案设计比较与论证
数控直流电流源电路,主要由单片机最小系统、过程通道、检测、调节电路、显示和键盘电路设计等部分组成。

通过对电压的控制间接控制电流。

其重点部分在过程通道和检测调节电路的设计。

3.1.1 过程通道的设计
包括模数转换的设计和数模转换的设计,其设计的合理与否,直接影响系统的精度。

1)模数转换的设计
方案一:模数转换选用A/D0809,作为单片机输入的采样信号,虽然也能完成模数转换,但是,0809芯片速率较低,转换时间长.为100us,重要的是,0809的最高分辨率为8位,不能满足设计要求的精度。

方案二:模数转换选用芯片A/D574,A/D574为12为的模数转换,分辨率12位,远远高于0809,而且,转换时间短,为25us,完全能够满足设计要求的精度。

因此,方案二比较适合本次设计,能够满足精度的要求。

2)数模转换的设计
方案一:数模转换使用D/A0832,0832采用了先进的C-MOS工艺,可直接与单片机连接,具有较低的功耗和较低的输出漏电流误差。

但是,其8位的分辨率不能满足设计要求的步进1mA精度,所以,不能直接用0832进行数模转换,供给单片机监控。

方案二:模数转换仍旧选用芯片AD574,数模转换选用DAC7512芯片,7512芯片在转换中的最高分辨率为12位,可分辨4096位,不但可以实现电路的基本要求,同样可以实现发挥部分的电路要求,对于此次电路制作可以说是比较合适的选择。

但由于DAC7512芯片价格较贵,在市场上也较难买到,所以无法采用。

方案三:在方案一的基础上增加一个单片机控制的自动换档电路,使用换档电路与单片机的0832形成粗调和微调相结合的调节方式,在不大幅提高设计成本的基础上,提高系统的精度,满足设计的要求。

换档电路由模拟开关CD4051和分压电阻网络实现,通过单片机控制通道输入,每个通道输入对应着不同的电流档位,单片机检测ADC的输出,并和设置电流比较结果,选择4051的通道输入。

采用这种方案,可以提高系统精度,满足设计要求。

综合以上方案,采用模数转换使用A/D574,数模转换使用D/A0832和换档电路相结合调节方式,不仅简单易于实现,成本低,而且,能够满足设计精度的
要求。

3.2.2 检测调节电路的设计
方案一:通过直接控制直流电流源电流,实现电流的控制,但是电流的控制范围在20ma—2000ma 之间,这样所要测量的范围太大,增大了测量的难度,对电路的监控也很难实现,并且,稳定性不高,电路的精度很难达到。

方案二:电压控制型直流稳压电源以一稳压电源为基础,以高性能单片机系统为控制核心以稳压驱动放大电路,采样精密电阻(阻值不随温度变化)电压电路为外围的硬件系统,在检测与控制软件的支持下间接实现对电流输出的数字控制,通过对稳压电源输出的电流的监控,从而调整和控制稳压电源的输出电流大小。

综合以上方案,方案二不仅电路控制简单,并且容易实现硬件电路的设计,在测量精度方面也更为精确。

最终选定设计方案的原理框图如图1所示:
图2 方案的原理框图
3.2 理论分析与计算
根据设计要求,需要对电流检测,而由于A/D574只能转换电压信号,因此,先将电流信号转换为电压信号,然后才能实现A/D转换。

为此,在电路中串入精密电阻,一般为温度系数小的康铜、锰铜电阻丝,精密电阻上的电压通过放大以后进入系统的采样保持器,由单片机实现对电流信号的监测和控制。

为了提高控制精度,采用粗调和微调相结合的方式,即采用单片机控制的换档电路实现粗调,由单片机D/A0832的输出实现微调,调节电源输出,把A/D574的采样值和电流设置值比较、处理后,由单片机控选择换档电路的档位和D/A0832的输出,控制恒压源的给定电压,使整个系统与恒压源又形成一闭环的回路,保证电流的稳定。

由于设计要求输出20mA----2000mA的电流,并且步进为1mA,而0832的最大分
辨率为256,因此将输出电流大约分为8个等级。

又0832输出为0---5v,因此,换档的等级步进为5/8=0.625v,其等级范围为:
0---0.625v, 0.625v—1.25v, 1.25v—1.875v, 1.875v—2.5v, 2.5v—3.125v, 3.125v—3.75v, 3.75v—4.375v, 4.375v—5v
AD574为12 位的ADC,其最大分辨率为4096,可以精确到1/4096,而设计要求能够分辨1mA的电流,即分辨率为1/1980,所以,用AD574完全可以满足设计的精度要求。

本设计中采用单片机采集转换而来的电流值与设定值比较后,如果小于设定值,则提高一级换档电路的档位,再通过0832微调节,使检测值和设定值尽可能的接近,满足精度要求;大于设定值,则类似。

四、系统总体设计
本系统采用单片机作为核心,以带反馈自
稳定的大功率串调恒压源作为电源,通过功能键可以连续设定20mA---2000mA 的电流值,根据设定的电流值,单片机由A/D574对精密电阻1欧康铜丝电阻上电压的监控,由D/A0832和选档电路通过粗调和微调的调节方式,间接的控制电流,形成闭环回路,保持恒流。

采用单片机自动控制换档电路,把串调恒压源的控制给定电压0~5V 分为8个等级,先进行粗调,选择电压档位,再根据AD574采样的电流信号,由0832进行微调,以保证其精度。

由于使用了闭环控制,不仅提高了系统的精度,而且,单片机能自动的调节电流输出。

系统具有自我保护和蜂鸣器的报警功能,具有一定的智能性,增加了其运行的安全性和可靠性。

4.1 硬件设计
4.1.1 系统总体方框图
系统总体框图 :图3所示
微机系统 过程通道
4.1.2.单片机最小系统板设计
本次设计的单片机最小系统板主要有89c51、模数转换器ADC574、数模转换器DAC0832以及8279等组成,可以满足多种功能的需要。

ADC574为双极性高精度12位快速A/D转换器,其转换速度为25us,采样速度快,与单片机硬件结构简单;为了精确采样,采用通用的采样保持放大器LF398,进行采样保持。

DAC0832是8位D/A转换器,具有双缓冲功能,硬件结构简单,使用方便。

可编程键盘和显示器专用结构芯片8279可以代替单片机完成键盘和显示器的许多结构操作,从而大大减轻单片机的负担,简化硬件电路。

对于各个芯片的地址,用G16v8译码,产生个芯片的片选信号。

电路图如图4所示:
4.1.3 8279键盘和显示器LE D设计
8279不仅与单片机连接简单,而且编程简单,易于实现。

其中,8279扫描计数器有两种工作方式,在编码工作方式时,计数器提供一种二进制计数,通过管脚SL0---SL3输出后经外部译码才能提供给键盘和LED的扫描作用,在译码工作方式时,扫描计数器对最低二位进行译码,经SL0---SL3输出4选1的译码信号,作为LED和键盘的译码扫描。

8279采用软件去抖动,但确定将要闭合键时,去抖动触发器置位,启动延时电路,大约为10ms,然后再测试该键是否继续闭合。

如该键继续闭合,则该按键被确认。

8279含基本的定时计数器链,第一个计数器是一个分频系数为2—31的前置计数器,分频系数可有程序控制,使内部频率为100KH,从而能给出5.1ms 的键盘扫描时间和10.3ms的反跳时间,其他计数器将此基本频率分频后,提供适当的按键扫描、行扫描、键盘阵列扫描,以及LED扫描次数。

电路图如图5所示:
本设计中采用8位八段LED 作为显示器,共阴极连接动态显示,可减少硬件开销,提高系统可靠性并降低成本。

如图6所示:
表1共阴极LED字形代码表
4.1.4 选档电路
DAC0832与4051组成级调电路,通过电压检测,与4051输入基准电压的比较,进行粗调和微调调整,经过LM741的衰减和反向输出基准电压,转换成控制电流,控制直流源电路。

如图7所示:
4.1.5 直流串调稳压电源的设计 如图8所示:
图7 选档电路
电流信号检测放大电路如图9所示:
放大倍数为2.5倍,放大输出电压为0---5V,在AD574的检测范围之内。

五、软件设计
5.1 系统软件流程图
系统软件主要有设置模块、比较处理模块、显示模块组成。

其中,设置模块主要实现设置电流初始值的功能,由‘+’与‘-’键、取消键与回车键以及数字键实现;处理模块主要实现由A/D574转换的电流信号和D/A转换的信号的电流信号进行比较,并控制4051的档位,在经过比较后,控制0832输出,使电流源随基准信号自动调节,实现闭环控制,并与硬件电路的自调节形成双闭环控制,进一步确保精度;显示模块主要显示交替显示设定值和实测值。

如图10所示:
图10 系统软件流程图
5.2 模块软件流程图
5.2.1设置模块流程图
如图11所示。

图11 模块设计流程图
5.2.2比较处理模块流程图
如图12所示:
图12 比较处理模块流程图
六、调试
6.1 硬件调试
包括对89c51、8279的键盘和显示电路。

检查碰线故障和其他硬件故障,杜绝出现电源短路,并测试电路的各项测试是否满足题目的要求。

同时,从硬件上适当的采取抗干扰技术,如电气隔离。

提高系统的可靠性。

尤其对运放电路的硬件调试要极为仔细。

6.2 软件调试
主要检查软件的语法错误以及程序的逻辑结构错误。

并且对各个软件模块进行测试,以便进行软硬件联机调试。

6.3 联机调试
在硬件和软件调试无误的基础上,进行软硬件联机调试。

调试重点在于程序各模块之间接口正确,并相互匹配。

另外,适当采取软件抗干扰技术,提高系统抗干扰性。

七、测试数据与结果分析
7.1测试仪器与测试方法
数字式万用表、示波器、XJ4318双踪示波器、TDS220数字式示波器
电容的一个重要特性就是隔直流,过交流的作用。

过交流的时候就是有电容ESR阻碍作用而显示的电流为纹波电流。

想知道电流就需要前路总流到后来分流后的差由电容控制通过的电流来补偿。

一般用示波器就可测量。

示波器接系统输出,调节幅度,周期。

使波形在显示屏范围内!选择测量峰值,这是看到的就是纹波加噪声。

用光标的电压选择除毛刺外的波形,就可以达到纹波电压要求。

纹波电压的测量方法是用低频毫伏表测量负载电阻上输出纹波电压,换算成纹波电流。

本设计中采用1欧的康铜丝电阻作为测量电流的电压,由于康铜丝为精密的电阻,其阻值几乎不随温度变化,故康铜丝两端的电压和电流几乎相等。

7.2 数据与结果分析
表2数据测试结果表
由于康铜丝的电阻随温度有微小的变化,所以,测的数据有细微的误差。

误差满足要求。

7.3 抗干扰技术
由于单片机控制系统会遇到各种干扰,如噪声干扰、电源干扰等,因此,对于一个完整的单片机系统是不可或缺的。

通常抗干扰措施有硬件抗干扰和软件抗干扰两个部分。

硬件中的抗干扰技术可以有效的抑制电源干扰,采用隔离变压器(对于电源干扰)、地线抗干扰(包括数字地和模拟地及保护地等)、光电隔离等,可以有效的抑制和消除噪声和干扰,提高系统的抗干扰能力,从而确保系统能在恶劣的环境下可靠的工作。

作为硬件抗干扰的补充和完善,可以及一步提高系统的抗干扰能力,常常采用数字滤波、软件陷阱等方法。

通过软硬件的结合的抗干扰措施,就可取得较为满意的效果。

八、结束语
科研与创新训练要求创新能力与科研能力的协调配合,首先,培养我们的创
新意识,养成推崇创新、不断开拓进取、勇于冲破传统观念和科学权威的理论体系、以创新为荣的思想观念;其次,培养学生的创造性思维能力,培养其敏锐的
观察力和丰富的想象力,勤于思考,善于思考,这是创新能力的基础;再次,培
养我们的创造性能力、勇于和善于提出问题和分析问题所应具备的渊博知识、广
阔的视野和综合、交叉、开拓领域的能力以及掌握必要的再学习的方法,并能自
由地从一个知识领域跳向另一知识领域。

创新能力的培养是塑造独立精神品质的重要途径。

被动实践变为主动实践,激发浓厚的求知兴趣和强烈的创新激情,促进学生独立解决问题的能力和勇挑重担的责任感。

在这个过程中,逐步形成坚定的信念、勇于冒险的精神、顽强的意志力,以及思维和行动的独立性与做事一丝不苟的品质。

创新能力的培养是提高学生就业竞争力的重要砝码,具有创新性、善于思考、具有洞察力的人,才适应社会可持续发展的需要。

创新能力作为个人综合素质的重要内容,将成为毕业生就业竞争的重要砝码。

通过本次设计,把单片机应用到测试中后,使测试实现了数字化和智能化,拥有自动检测,测量结果准确和自诊断能力很强等特点。

为了使智能稳压电源能可靠、安全地工作,本系统设置了多重监测和保护系统。

参考文献:
[1] 郭文川.单片机原理与接口技术.中国农业出版社. 2007年。

[2] 胡汉才.单片机原理及接口技术(第二版).清华大学出版社. 2003年。

[3] 李广弟等.单片机基础(修订版).北京航空航天大出版社.2001年。

[4] 阎石.数字电子技术基础.第五版.高等教育出版社出版.
[5] 宋涛.通用集成电路速查手册.第二版.山东科学技术出版社.
[6] 康华光.电子技术基础(数字部分)第五版.高等教育出版社.
[7] 韩广兴.电子元器件与实用电路基础.修订版.电子工业出版社
附录1 核心板FPGA IO引脚分配表:
附录2 核心板FPG A外扩IO引脚分配表:
附录3 汇编程序:
PORT EQU 0FE00H
PORTA EQU 0FE01H
PORTB EQU 0FE02H
PORTC EQU 0FE03H
DISP0 EQU 30H
DISP1 EQU 31H
DISP2 EQU 32H
DISP3 EQU 33H
DISP4 EQU 34H
DISP5 EQU 35H
DISP6 EQU 36H
DISP7 EQU 37H
WEI EQU 38H ;位码
DA TB1 EQU 27
DA TB EQU 50
PPPP EQU 85
ADAD H EQU 0FB00H ;AD地址
DAAD H EQU 0F700H ;DA地址
DBUF H EQU 3CH ;DA高四位
DBUF L EQU 3DH ;DA低八位
LENG1 EQU 24 ;双字节二进制变BCD,40H~44H
LENG2 EQU 4
LENG3 EQU 3
NUMB1 EQU 40H
NUMB2 EQU 43H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP LED
ORG 0013H
AJMP KEYSCAN
MAIN: CLR P1.1
SETB P1.1
CLR P1.1
MOV R0,#00H
MOV R1,#00H
MOV SP,#50H
SETB PT0
MOV TMOD,#01H
MOV TH0,#0F8H ;2MS,显示扫描间隔
MOV TL0,#30H
SETB EA
SETB ET0
SETB TR0
SETB IT1
SETB EX1
CLR 00H ;电流千位合法位
CLR 01H ;显示闪烁
MOV 3EH,#00H ;显示数据
MOV 3FH,#00H
MOV 39H,#00H ;合字暂存
MOV 3CH,#00H
MOV 3DH,#00H
MOV 45H,#00H ;拆字暂存
SETB P1.0 ;过载
MOV DPTR,#PORT ;AB出C口入
MOV A,#03H
MOVX @DPTR,A
MOV DPTR,#PORTA;列扫描输出低电平
MOV A,#0H
MOVX @DPTR,A
MOV 3AH,#00H
MOV 3BH,#00H
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV 37H,#0
MOV WEI,#00H
SETB RS0
SETB RS1
MOV R0,#DISP0 ;显示指针一定要用俩组
MOV R6,#8 ;显示位数
MOV R1,#DISP0 ;键盘指针
MOV R7,#4 ;键盘位数
CLR RS0
CLR RS1
LOOP: ACALL LOOPP
ACALL DTOA
ACALL A TOD
AJMP LOOP
;******************电流设置子程序***************
LOOPP: MOV A,3AH
CJNE A,#15,PASS1
ACALL SETONE
PASS1: CJNE A,#10,PASS2
ACALL JIA
PASS2: CJNE A,#11,PASS3
ACALL JIAN
PASS3:
RET
;******************DA转换子程序*****************
DTOA: PUSH PSW
SETB RS0
MOV R2,3CH
MOV R3,3DH
;MOV R2,#00H
;MOV R3,#00H
CLR P3.5
SETB P3.5
SETB P2.3
CLR C
CLR A
MOV A,R2
MOV R7,#4
LOOP11: RLC A
DJNZ R7,LOOP11
MOV R7,#4
LOOP22: LCALL PRD
DJNZ R7,LOOP22
CLR C
CLR A
MOV A,R3
MOV R7,#8
LOOP34: LCALL PRD
DJNZ R7,LOOP34
CPL P2.3
POP PSW
RET
PRD: RLC A
MOV P3.0,C
SETB P3.1
CPL P3.1
RET
;*****************************AD采样子程序****************************** A TOD:
HUMID: MOV DPTR,#0FB00H
CLR A
MOVX @DPTR,A
WAIT: JNB P3.4,READ ;转换结束信号SJMP WAIT
READ: MOVX A,@DPTR
MOV B,#8
MUL AB
MOV 40H,A ;低位
MOV 41H,B ;高位
;MOV 40H,#0F8H
;MOV 41H,#07H
MOV 42H,#00H
;双字节二进制变BCD
;入口二进制42H,41H,40H高到低
;出口44H~43H,高到低
MUBTD: MOV R0,#NUMB2
MOV R7,#LENG2
CLR A
LOOP18: MOV @R0,A
INC R0
DJNZ R7,LOOP18
MOV R7,#LENG1
LOOP48: MOV R1,#NUMB1
MOV R6,#LENG3
CLR C
LOOP28: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R6,LOOP28
MOV R5,#LENG2
MOV R0,#NUMB2
LOOP38: MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ R5,LOOP38
DJNZ R7,LOOP48
;拆字程序*************
MOV R0,#DISP4
MOV A,44H
ACALL SEPA1
MOV R0,#DISP6
MOV A,43H
ACALL SEPA1
RET
SEPA1: MOV 45H,A
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,45H
ANL A,#0FH
SWAP A
MOV @R0,A
RET
MOV DPTR,#0FB01H
CLR A
MOVX @DPTR,A
WAIT1: JNB P3.4,READ1 ;转换结束信号
SJMP WAIT1
READ1: MOVX A,@DPTR
CLR C
MOV A,#68
CJNE A,#PPPP,LLI
LLI: JNC LL2 ;集电极电压大于5V则不报警
CLR P1.0 ;负载电压大于10V
RET
LL2: SETB P1.0
RET
;闭环*****************************
CLR C
MOV A,43H
SUBB A,3FH
MOV 46H,A ;低
MOV A,44H
SUBB A,3EH
MOV 47H,A ;高
;***********键盘显示中断程序*****************
;用定时中断0,显示扫描,30H~37H是段码存放地址,38H是位码地址
;8155 PB0~PB3段码输出,PB4~PB7位码输出
;用外部中断1键盘扫描,PA0~PA3列扫描输出,PC0~PC3;输入,P2.0接CS,P2.1接IO/M
;出口数值是0~15,存在3AH中,3BH用作放键暂存
;用寄存器第3组
;已用R0,R2,R3,R4,R5,R6,其中R0,R6为显示用,R1,R2,R3,R7为键盘用,R4,R5延时用
;*******************中断显示扫描子程序*****************
LED: PUS H PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
SETB RS0
SETB RS1
MOV TH0,#0F8H ;2MS
MOV TL0,#30H
MOV A,@R0
ADD A,WEI
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,WEI
ADD A,#10H
MOV WEI,A
INC R0
ACALL DELAY
DJNZ R6,LED1
MOV WEI,#00H
MOV R0,#DISP0
MOV R6,#8
LED1: POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI
;**************中断键盘扫描子程序************
KEYSCAN: PUS H PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
SETB RS0
SETB RS1
ACALL DELAY1 ;消抖延时
JNB P3.3,LIST
MOV DPTR,#PORTA ;恢复B口输出低电平
MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI ;没有按
LIST: MOV DPTR,#PORTC
MOVX A,@DPTR
MOV 3BH,A
MOV R2,#0FEH
MOV R3,#00H
LINE0: MOV DPTR,#PORTA
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#PORTC
MOVX A,@DPTR
JB ACC.0,LINE1
MOV A,#0
AJMP TRYK
LINE1: JB ACC.1,LINE2
MOV A,#1
AJMP TRYK
LINE2: JB ACC.2,LINE3
MOV A,#2
AJMP TRYK
LINE3: JB ACC.3,NEXT
MOV A,#3
AJMP TRYK
NEXT: ;INC R3
MOV A,R3
ADD A,#4
MOV R3,A
MOV A,R2
JNB ACC.3,EXIT
RL A
MOV R2,A
AJMP LINE0
EXIT: MOV DPTR,#PORTA ;恢复B口输出低电平MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI ;没有按
TRYK: ADD A,R3
MOV 3AH,A
LETK: MOV DPTR,#PORTC
MOVX A,@DPTR
XRL A,3BH
JZ LETK
MOV DPTR,#PORTA ;恢复B口输出低电平
MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI
;*******************电流设置****************
SETONE:
SETB RS0
SETB RS1
;SETB 01H ;置显示闪烁位
SETONE1: MOV A,3AH
CJNE A,#10,L1
L1: JNC SETONE1
JB 00H,L3
CJNE A,#2,L2 ;2000MA
MOV DISP0,#2
MOV DISP1,#0
MOV DISP2,#0
MOV DISP3,#0
CLR 01H
CLR RS0
CLR RS1
PUSH PSW
SETB RS1
ACALL BCDHEX ;十六位BCD变十六进制
ACALL SUBBV ;乘2再送D A
POP PSW
CLR A
RET
L2: MOV 3AH,#0FFH
JNC SETONE1
SETB 00H
L3: MOV @R1,A ;即时刷新显示缓冲区INC R1
MOV 3AH,#0FFH
DJNZ R7,SETONE
MOV R7,#4
MOV R1,#30H
CLR 00H
;CLR 01H
CLR RS0
CLR RS1
PUSH PSW
SETB RS1
ACALL BCDHEX ;16字节BCD变二进制
ACALL SUBBV ;*5/8
POP PSW
CLR A
RET
;**********加电流
JIA: MOV 3AH,#0FFH
MOV A,DISP3
INC A
MOV DISP3,A
CJNE A,#10,OUT
MOV DISP3,#0
MOV A,DISP2
INC A
MOV DISP2,A
CJNE A,#10,OUT
MOV DISP2,#0
MOV A,DISP1
INC A
MOV DISP1,A
CJNE A,#10,OUT
MOV DISP1,#0
MOV A,DISP0
INC A
MOV DISP0,A
CJNE A,#2,OUT
MOV DISP0,#1
MOV DISP1,#9
MOV DISP2,#9
MOV DISP3,#9
OUT: PUSH PSW
SETB RS1
ACALL BCDHEX
ACALL SUBBV
POP PSW
CLR A
RET
;**********减电流
JIAN: MOV 3AH,#0FF H
MOV A,DISP3
DEC A
MOV DISP3,A
CJNE A,#0FFH,OUT1
MOV DISP3,#9
MOV A,DISP2
DEC A
MOV DISP2,A
CJNE A,#0FFH,OUT1
MOV DISP2,#9
MOV A,DISP1
DEC A
MOV DISP1,A
CJNE A,#0FFH,OUT1
MOV DISP1,#9
MOV A,DISP0
DEC A
MOV DISP0,A
CJNE A,#0FFH,OUT1
MOV DISP0,#0
MOV DISP1,#0
MOV DISP2,#0
MOV DISP3,#0 OUT1: PUS H PSW
SETB RS1
ACALL BCDHEX
ACALL SUBBV
POP PSW
CLR A
RET
BCD HEX:
MOV R7,#03H
MOV R0,#DISP0
CLR A
MOV R1,A
MOV R2,A
MOV R4,A
MOV R5,A
MOV R3,A
MOV A,@R0
MOV R1,A
CLR C
LOOP16: MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV R4,A
MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
ADD A,R3
MOV R1,A
MOV A,R2
ADDC A,R4
MOV R2,A
INC R0
MOV A,@R0
MOV R5,A
MOV A,R1
ADD A,R5
MOV R1,A
MOV A,R2
ADDC A,#00H
MOV R2,A
MOV R5,#00H
DJNZ R7,LOOP16
RET
SUBBV: MOV 3EH,R2
MOV 3FH,R1
MOV R4,3EH ;高位
MOV R3,3FH ;低位
MOV R2,#DA T B1
;********************************乘5
MULI:
MOV A,R2 ;取乘数
MOV B,R3 ;取被乘数低位
MUL AB ;计算(R3)*(R2)
MOV R5,A ; 乘积的低位送R5
MOV R6,B ; 乘积的高位送R6
MOV A,R2 ;恢复乘数
MOV B,R4 ;取被乘数高位
MUL AB ;计算(R4)*(R2)
ADD A,R6 ;(R3)*(R2)积的高位加(R4)*(R2)积的低位
MOV R6,A ;存结果
MOV A,B ;取(R4)*(R2)
ADDC A,#00H ; (R4)*(R2)积的高位加低位进位
MOV R7,A ;存最高位
RET
MOV A,R6
MOV R1,A
MOV A,R5
MOV R0,A
;*******************除8
MOV R2,#00H
MOV R3,#D A TB
MOV R4,#00H
MOV R5,#00H
MOV R7,#10H
CHU5: MOV A,R0
ADD A,R0
MOV R0,A
MOV A,R1
ADDC A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R4
ADD A,R4
MOV R4,A
MOV A,R5
ADDC A,R5
MOV R5,A
CJNE R2,#D A TB,LOOP07
LOOP07: JC LOOP17
MOV A,R2
SUBB A,R3
MOV R2,A
MOV A,R4
ADD A,#01H
MOV R4,A
MOV A,R5
ADDC A,#00H
MOV R5,A
LOOP17: DJNZ R7,CHU5
MOV 3CH,R5 ;装入DA转换
MOV 3DH,R4
RET
DELAY1: MOV R4,#100 ;消抖延时20MS 70 10MS DEL21: MOV R5,#100
DEL11: DJNZ R5,$
DJNZ R4,DEL21
RET
END
数控直流电流源
数控直流电流源。

相关文档
最新文档