版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章绪论1.1 引言随着电力电子技术的高速发展,电力电子设备与人们的工作、生活的关系日益密切,而电子设备都离不开可靠的电源,进入80年代计算机电源全面实现了开关电源化,率先完成计算机的电源换代,进入90年代数字脉冲电源相继进入各种电子、电器设备领域,程控交换机、通讯、电力检测设备电源、控制设备电源等都已广泛地使用了数字脉冲电源,更促进了开关电源技术的迅速发展。开关电源是利用现代电力电子技术,控制开关晶体管开通和关断的时间比率,维持稳定输出电压的一种电源,数字脉冲电源一般由供电电源、数字控制器、开关管、和负载构成。数字脉冲电源和线性电源相比,二者的成本都随着输出功率的增加而增长,但二者增长速率
2、各异。随着电力电子技术的发展和创新,使得数字脉冲电源技术也在不断地创新,这一成本反转点日益向低输出电力端移动,这为数字脉冲电源提供了广阔的发展空间。数字脉冲电源高频化是其发展的方向,高频化使数字脉冲电源小型化,并使开关电源进入更广泛的应用领域,特别是在高新技术领域的应用,推动了高新技术产品的小型化、轻便化。另外数字脉冲电源的发展与应用在节约能源、节约资源及保护环境方面都具有重要的意义。1.2 数字脉冲电源的发展脉冲电镀是一项新的电镀技术。特点是由脉冲电流对电极过程动力学的特效影响所决定的。在直流电镀时,镀液中被镀出的金属离子在阴极表面附近溶液中逐渐被消耗,造成了该处被镀金属离子与溶液中该离子浓
3、度出现差别。这种差别随着使用的电流密度增高而加大。脉冲电镀时的传质过程与直流电镀时的传质过程的差异,造成了峰值电流可以大大高于平均电流,促使晶种形成的速度远远高于晶体长大的速度,使镀层结晶细化,排列紧密,孔隙减小,电阻率低。脉冲电源其电流呈脉冲方式流动,并可在瞬时产生高密度电流;在电镀时能将底层均匀地涂覆到镀件上,并使之加速,提高了效率。可以调节占空比及频率的脉冲电镀电源。脉冲电源的工作原理可以通过其输出波形直接反映。一般直流电源的输出波形见图1-1;脉冲电源的输出波形见图1-2。所谓数字脉冲电源,就是采用微处理器等数字电路对脉冲电源中的直流斩波进行控制,并实现数字显示与数字调节的一种脉冲电源
4、。它是当今最为先进的电镀电源,也是电镀电源发展的方向。它与传统的模拟脉冲电 图1-1 一般电镀电源输出波形图1-2 脉冲电源输出波形源相比有以下优点:驱动波形规整,极大的改善了斩波后的输出波形,对提高电镀质量十分有利;采用数字调控,直观简单;波形调节范围宽,调节步进可以至0.1ms;温度漂移系数小,能长期稳定连续运行。数字脉冲电源一般分为双脉冲电源与单脉冲电源2种。数字单脉冲电源的原理图。如图1-3所示。 图1-3 数字单脉冲电源原理图在目前的应用中,大多利用大功率的开关管IGBT对直流电源进行斩波,达到脉冲输出的目的。改变IGBT开关管的方波驱动信号,以实际脉宽的可调。第二章数字脉冲电源的性
5、能指标与设计要求2-1数字脉冲电源的性能指标与设计要求脉冲电镀实质上是一种通、断直流电镀。所不同的是脉冲电镀有3个独立的参数(脉冲电源密度J、导通时间t on及关断时间t off可调;而一般直流电镀只有1个参数(电流或电压可调。因此,采用脉冲电镀就为槽外控制镀层提供了有利的手段。脉冲电镀是一项既能提高镀层质量,又能提高沉积速率的经济效益很高的电镀新技术。图1-2为脉冲电源的电流波形,图中:t on:脉冲电流导通时间;t off:脉冲电流断电时间;T=t on+t off:脉冲周期;J:电流密度;Ip:电流峰值。 图1-2 脉冲电源参数图本数字单脉冲电源的性能与设计要求主要体现再以下一些指标:供
6、电电源:3相,50Hz,380V。输出峰值电流:440A,连续可调。输出峰值电压:330V,连续可调。脉冲频率:110KHz,可调。脉冲占空比:0100%,可调。脉冲电流导通时间:ton:0.1999.9ms;脉冲电流断电时间toff:0.1999.9 ms。电流、电压波形:脉冲,键盘设定。工作方式:恒流/恒压任选。电镀时间可键盘设定,为0999.9s。第三章双CPU系统方案3-1系统总体方案的思路由于系统中关键问题是定时:电镀时间的定时及驱动开关管的脉冲定时,而且后者的定时精度直接影响输出脉冲波形的频率精度。同时考虑到系统显示及按键处理的因素,本系统采用了双CPU系统设计构架。主系统主要负责
7、显示按键管理、电镀时间控制以及余兴中的暂停等控制;从系统主要负责产生开关管的驱动脉冲。数字控制系统的原理可用图3-1表示。双CPU系统的关键是主、从CPU之间的协调与通信实现。实现的约束是:(1能满足系统的实习性要求,响应及时,并能完成系统的所有设计功能;(2软、硬件实现不能过于复杂。 图3-1双CPU系统原理示意图3-2 双CPU系统的若干形式在单片机应用系统中,双CPU或多CPU系统的建构通常有以下3种形式。1.采用双口RAM方式使用一个CPU有时会导致软件编写复杂,尤其当多个外围芯片发生中断请求时,容易造成数据处理的延误。采用双口RAM和双CPU电路,整个电路分为2大部分,每个CPU编有
8、单独的程序,各管理一部分,这样可减小整个软件编写的难度,增加仪器工作的可靠性。双口RAM产品的型号和规格较多,常用的如IDT7132双口RAM。作为2个CPU交换信息的媒介,主CPU和次CPU均可通过与双口RAM相连的总线对双口RAM进行读/写。由于双口RAM对大多具有双总线,而且具有总线仲裁机构,因此这种方式的特点是硬件简单,但成本相对较高。这种方式的实现原理可用图3-2表示。 图3-2 双口RAM方式双CPU系统2.采用并口通信方式采用并口方式的双CPU系统一般有以下2种形式。(1直接连接方式这种方式是直接将2个CPU通过并行接口连接起来,实现协调与交流。以图3-3为以说明:图中P34,P
9、35作为握手联络信号。显然这种方式是以牺牲并行接口为代价的。虽然是半双工通信方式,但由于是并行通信方式,速度还是比串口方式要快。在并行接口紧张的应用场合,需要权衡。(2间接连接方式间接连接方式一般是通过并行接口电路来实现的。以图3-4为例加以说明:这种方式以2片并行接口芯片8155作为双方联系的纽带。由于8155对单片机来说只是一个外围设备,因此,这种方式可以避免总线仲裁等麻烦。 图3-3 直接并行方式 图3-4间接并行方式烦。只要设定好8155的PA,PB,PC的输入/输出方式,并以其中的若干条口线作为握手联络信号,就可以方便地实现双CPU系统。3.采用串行通信方式串行通信方式,即主、从CP
10、U之间通过串行口或模拟串行接口惊醒协调和交流。这种方式的特点是硬件简单,软件实现也很方便;但实时性相对较差,只适用于数据量小的场合。本系统即采用了这种方式。为了弥补纯串行方式的缺陷,本系统在串行通信的基础上,配合以适当的握手联络信号,以克服纯软件握手对驱动脉冲的影响。第四章系统硬件设计4.1 基于89C52的主系统设计4-1-1 主系统电路1.主系统电原理设计按照设计要求及方案,确定系统的功能模块有显示/按键电路、复位与看门狗电路、主CPU系统、从CPU系统、脉冲驱动放大电路(斩波控制电路及脉冲电源的其他电路(直流电源、斩波电路及保护环节等。主系统电原理见图4-1。2.主系统分析(1复位与看门
11、狗电路本系统有以下3种情况:上电复位、手动复位、及看门狗定时器溢出复位;采用MAX813L电源监视电路。主CPU、从CPU系统共用复位信号,目的是当系统中的任何一个子系统运行失常时,必须共同复位,以回复待机状态,避免错误运行。对从系统的软件进行适当处理,当从系统工作失常后,也能让主系统感知,然后强制电源监视电路复位,可达到引起复位的目的。这里利用通信握手信号SCOMM。这样当从系统失常、程序“跑飞”时,落入非正常程序区的握手信号始终无效,此时主系统的串行查询程序反复查询,使得“喂狗”信号无法及时送出,从而引起溢出复位。(2主CPU系统主CPU系统主要管理显示电路、按键电路、运行状态控制及向从C
12、PU 系统发送脉冲参数等,核心是89C52单片机。其中的PKEY开关为暂停开关,通过P12与单片机接口,暂停时通过P11控制暂停指示灯发光指示。“喂狗”信号由P10输出,其实质是一个负脉冲。主、从CPU系统的握手信号为R/P,SCOMM。其中R/P用来由主CPU控制从CPU的运 图4-1 主系统电原理图行与暂停;SCOMM信号是从CPU向主CPU指示通信状态的,成功结束有效;否则无效。考虑到主CPU系统对定时的要求不是很高,采用6Mhz主频。4-1-2主系统显示电路显示采用数码管;显示/键盘电路通过8279专用接口芯片与单片机接口。一共用3组数码管,每组4个数码管。前2个参数的范围为0.199
13、9.9ms,而后1个参数的范围为09999s,符合8279的设计能力。数码管采用小型超高亮共因数码管。前2个参数采用绿色,后一个参数的显示采用红色。通过P15引脚向MAX813L发出RSTK1信号,使系统复位,也即停止从CPU的脉冲输出,结束电镀运行。显示电路中的数码管电路如图3-2所示,单片机的接口电路参见图4-2。 图4-2 数码管电路4-1-3 主系统按键电路键盘设计了10个数字键09,3个参数(ton、toff及T设置键,与此配套的Enter,CLS“”等键及运行控制键Start。1.数字键09用来设置参数。在当前编辑位上输入数字,每按1个数字键,便覆盖原数字。2.参数设置键ON,OF
14、F,T 3键用来选择设置何种参数。设置流程为:按3个中任1个,以选择参数项目;再通过数字键送入第1位(最高位,通过“”键切换到下一位;再送入数字,一直到4位数字全部送完,通过回车键Enter确认。前2个参数采用定点数,小数位为一位。在输入过程中,如出现错误,则按CLS键清除该项目,重新输入。当3个参数全部送完,则设置参数不齐备,按此键无效。按键电路如图4-3所示。 图4-3按键电路4-2基于89C2051的从系统设计从CPU系统是基于89C2051单片机的单芯片系统,唯一的任务是产生斩波所需的脉冲信号。电原理图见图1-7虚线框部分。系统主频为12Mhz,其目的是为了保证最小定时0.1ms的需要
15、,在T2定时中断服务程序中完成相应动作。中断服务程序的总的执行时间必须小于0.1ms;否则,会引起失常,出现比较大的脉冲频率误差,甚至不能工作。脉冲PULSE 从P16输出,经Q1(9012小功率三极管驱动后,经光电隔离驱动斩波信号驱动电路。从系统与主系统的串行通信为直接方式,原因是双方均为TTL信号,可以直接交换,无需电平转换。4-3斩波脉冲驱动输出电路设计从系统产生的脉冲信号经高速光耦TIL117光电隔离后,送入驱动放大电路,如图4-4所示。当M1+为低电平时,光耦截止,中功率三极管BG2截止,MZ11与MZ15间无信号输出;当M1+为高电平时,则光耦导电,BG2导通,则MZ11与MZ15
16、间的电平信号约为16V,能满足斩波电路驱动信号的要求。如果调整R16,则可使输出信号在一定范围内具有可调性,以适应不同斩波用开关管的技术要求。实际应用中发现,3端稳压器的输出端不接大容量滤波电容,可以改善波形的边沿特性。 图4-4斩波用脉冲驱动电路第五章软件系统采用双CPU系统结构后,可以使2个CPU各司其职,同时使软件设计的难度也大大降低。5.1主系统软件1.主系统软件结构主系统主要由4大功能模块组成:(1主程序模块;(2串行通信模块;(3T2定时中断服务程序;(4参数编辑模块。4模块的功能分别是: 图5-1主系统主程序框图主程序模块:系统初始化及其他模块的协调与调用;串行通信模块:主要是向
17、从系统发送编辑好的t on,t off及T等参数;T2定时中断服务模块:计量电镀时间,即对T参数倒计时处理;参数编辑模块:编辑输入脉冲所需的t on,t off及T等参数。主程序框架见图5-1所示。2.主系统程序及其简要说明如下:;键值定义NUM0 EQU 00HNUM1 EQU 01HNUM2 EQU 02HNUM3 EQU 03HNUM4 EQU 04HNUM5 EQU 05HNUM6 EQU 1BHNUM7 EQU 06HNUM8 EQU 07HNUM9 EQU 08HON1 EQU 09HOFF1 EQU 0AHT1 EQU 0BHON2 EQU 0CHOFF2 EQU 0DHT2 E
18、QU 0EHTT EQU 0FHENTER EQU 10HCLS EQU 11HLEFT EQU 12HPAUSE EQU 15HSTART EQU 16HUP1 EQU 17H ;数字电位器+1键(预留DOWN1 EQU 18H ;数字电位器-1键(预留UP2 EQU 19HDOWN2 EQU 1AH;8279 地址定义I8279_CMD EQU 7FFFHI8279_DATA EQU 7EFFH;显示数码管个数DIRN EQU 0CH ;只有12个,但8279方式字必需为16个;8279 命令字: 左入, N键轮回,16 数码管KMD EQU 08H ;0AH也可;* 片内RAM分配 *D
19、ISPBUF EQU 50H ;显示缓充区首址(50H5FH,共16字节KEYBUF EQU 4FH ;键值缓冲单元;光标位置序号暂存CURSOR EQU 4EH;本次编辑项显示首址暂存单元FIRST EQU 4DH;ON时间(已转换成0.1MS的个数暂存单元ON EQU 4BH ;4BH,4CH(从高到低;OFF时间OFF EQU 49H ;49H,4AH;总的工作时间(单位为:秒WT EQU 47H ;47H,48H(从高到低:S;工作参数备份区ONBF EQU 45H ;45H,46HOFFBF EQU 43H ;43H,44HWTBF EQU 41H ;41H,42H;十进制加减工作区
20、(被减数,或被加数单元BCDJJ EQU 3FH ;3FH,40H;T0中断次数累计单元T0_COUNT EQU 3DH ;中断10为1S(10*0.1=1S;位标志定义ISON1 BIT 01H ;正在编辑ON1标志ISOFF1 BIT 02H ;正在编辑OFF1标志ISTT BIT 03H ;指示编辑TT标志CSOK BIT 04H ;参数输入完成标志CSON1 BIT 05H ;参数ON1被编辑过标志(只要编辑过即为真 CSOFF1 BIT 06HCSTT BIT 07HCSW1 BIT 08H ;参数位1已编辑标志(即已输入过数字CSW2 BIT 09HCSW3 BIT 0AHCSW4
21、 BIT 0BHDP BIT 0CH ;参数中是否要小数点标志ISOVER BIT 0DH ;工作结束标志(设定时间到了CSX BIT 0EH ;参数项标志,=1,为ON参数(T1中断用 PAUSE_FLAG BIT 0FH ;暂停键标志.=1,说明已按过暂停键TTFLAG BIT 04H ;工作时间已设定过标志;参数编辑项数标志单元CSXS EQU 23H ;如果=3,说明三个参数已都编辑过;项目内参数编辑位数计数单元XNGS EQU 24H;显示缓冲区的备份DISPBF EQU 0A0H;数字电位器控制端定义CS BIT P3.0INC1 BIT P3.4UD BIT P3.5;各显示指示
22、等控制脚定义ON_RUN BIT P3.1 ;高电平关(运行指示PAUSING BIT P1.7 ;高电平关(暂停指示RP BIT P1.6 ;运行/暂停状态线ISEND BIT P1.5 ;结束状态线SCOMM BIT P1.4 ;通讯状态线(=0,说明正常;PAU BIT P1.2 ;=0,暂停;ORG 0000HSJMP MAINORG 002BHLJMP INT_T2ORG 0030HMAIN: MOV SP, #60H ;堆栈指针初始化MOV R6, #40HLCALL DELAY ;延时,以等待8279复位完成LCALL INIT8279CLR CSOK ;清除参数输入完成标志CL
23、R CSXS ;清参数项数单元CLR CSON1 ;清各参数项已编辑标志CLR CSOFF1CLR CSTTCLR CSW1 ;当前参数项内各数位标志被清除CLR CSW2CLR CSW3CLR CSW4CLR TTFLAGMOV R0, #DISPBUF;P的代码写入首位,以显示开机符PMOV A, #0AH ;P的代码MOV R0, AMOV A, #0CH ;熄灭的代码INC R0 ;显缓的余下部分清0(即熄灭MOV R6, #0FH ;还共15个(实际只要11个 MAIN_00: MOV R0, AINC R0DJNZ R6, MAIN_00MAIN_0: LCALL DISPLAY
24、;显示LCALL READKEY ;等待按键并读键MOV KEYBUF, A ;将键值暂存CJNE A, #ON1, MAIN_1 ;判是否是ON1键?SETB ISON1 ;YES,则设置参数项标志后转参数编辑模块 CLR ISOFF1 ;此时,余下两参数项标志被清除CLR ISTTCLR CSW1 ;如果此参数还未完成,则清参数4位CLR CSW2 ;未编辑标志CLR CSW3CLR CSW4CLR CSON1 ;清参数项被编辑过标志SETB DP ;要小数点LCALL EDIT ;完成相应参数的编辑(回车键返回JNC MAIN_0 ;C=0,说明此参数项未被编辑SETB CSON1 ;C
25、=1,说明参数项被编辑过,设置标志SJMP MAIN_0MAIN_1: CJNE A, #OFF1, MAIN_2 ;NO,则继续判是否是OFF1键SETB ISOFF1CLR ISON1CLR ISTTCLR CSW1CLR CSW2CLR CSW3CLR CSW4CLR CSOFF1SETB DP ;要小数点MAIN_10: LCALL EDITJNC MAIN_0SETB CSOFF1SJMP MAIN_0MAIN_2: CJNE A, #TT, MAIN_3SETB ISTTCLR ON1CLR ISOFF1CLR CSW1CLR CSW2CLR CSW3CLR CSW4CLR CST
26、TCLR DP ;不要小数点MAIN_20: LCALL EDITJNC MAIN_0 ;C=0,则不设置CSTT标志SETB CSTT ;C=1,则设置CSTT标志SJMP MAIN_0MAIN_3: CJNE A, #START, MAIN_0 ;其它键忽略MAIN_30: MOV C, CSON1 ;运行键处理ANL C, CSOFF1ANL C, CSTT ;1*1*1=1(否则为0JC MAIN_4 ;三个参数均已被编辑过,说明参数已完成LJMP MAIN_0 ;否则,说明还有参数未被输入,则继续等待MAIN_4: LCALL INVERT ;参数转换并送存相应单元,及备份单元LCA
27、LL FS_CPU3 ;参数ON,OFF发送JNC MAIN_40 ;通讯不正常,则等待再次按开始键发送LCALL RUN ;正常,则运行(开始计时 MAIN_40: LJMP MAIN_0 ;运行完成等待下次运行(参数保留*软复位;* ;参数编辑输入:EDIT;说明: 根据相应标志,编辑输入参数,回车键结束;清除键整个项清除;光标-键可循环在项目间移动,对应位置为编辑位置;小数点位置固定;返回: C=0,说明参数未编辑; C=1,说明参数被编辑过;* EDIT: JNB ISON1, EDIT_1 ;要编辑的是ON参数项? NO,则转MOV R0, #DISPBUF ;YES,则ON1参数对
28、应显示缓冲单元首址MOV FIRST, #DISPBUF ;首地址送存FIRST单元以备后SJMP EDIT_4EDIT_1: JNB ISOFF1, EDIT_2 ;编辑OFF参数项? NO,则转MOV R0, #DISPBUF+4 ;YES,OFF1对应显示缓冲单元首址MOV FIRST, #DISPBUF+4SJMP EDIT_4EDIT_2: JNB ISTT, EDIT_3MOV R0, #DISPBUF+8 ;TT参数对应显示缓冲单元首址MOV FIRST, #DISPBUF+8SJMP EDIT_4EDIT_3: CLR C ;清标志C(实际上不可能会执行到此RET ;标志不对,
29、直接返回(不设置参数完成标志 EDIT_4: MOV CURSOR, #00H ;光标在第一位(原始位置MOV A, #14H ;_的代码MOV R0, AINC R0 ;第2位为灭CLR AEDIT_41: MOV R0, AINC R0MOV R0, A ;第3位灭INC R0 ;第4位为灭MOV R0, AEDIT_42: LCALL DISPLAY ;显示LCALL READKEY ;等待按键CJNE A, #NUM0, EDIT_43LCALL NUMKEY0 ;如为数字键0,则调用数字键处理SJMP EDIT_42EDIT_43: CJNE A, #NUM1, EDIT_44LCA
30、LL NUMKEY1SJMP EDIT_42EDIT_44: CJNE A, #NUM2, EDIT_45LCALL NUMKEY2SJMP EDIT_42EDIT_45: CJNE A, #NUM3, EDIT_46LCALL NUMKEY3SJMP EDIT_42EDIT_46: CJNE A, #NUM4, EDIT_47LCALL NUMKEY4SJMP EDIT_42EDIT_47: CJNE A, #NUM5, EDIT_48LCALL NUMKEY5SJMP EDIT_42EDIT_48: CJNE A, #NUM6, EDIT_49LCALL NUMKEY6SJMP EDIT_
31、42EDIT_49: CJNE A, #NUM7, EDIT_4ALCALL NUMKEY7SJMP EDIT_42EDIT_4A: CJNE A, #NUM8, EDIT_4BLCALL NUMKEY8SJMP EDIT_42EDIT_4B: CJNE A, #NUM9, EDIT_4CLCALL NUMKEY9SJMP EDIT_42EDIT_4C: CJNE A, #LEFT, EDIT_4DMOV A, CURSOR ;光标左移键处理CJNE A, #00H, EDIT_4C1;判当前光标是否在第一位JNB CSW1, EDIT_42 ;YES,判参数位1是否已输入数字.NO,不理睬
32、MOV CURSOR, #01HMOV A, FIRST ;首址ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元MOV R0, AMOV A, #14H ;_光标字符代码MOV R0, A ;送存相应显示缓冲单元LJMP EDIT_42 ;继续显示判键EDIT_4C1: CJNE A, #01H, EDIT_4C2JNB CSW2, EDIT_42 ;判参数位2是否已输入数字.NO,则不理睬 MOV CURSOR, #02HMOV A, FIRST ;首址ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元MOV R0, AMOV A, #14H ;_光标字符代
33、码MOV R0, A ;送存相应显示缓冲单元LJMP EDIT_42 ;继续显示判键EDIT_4C2: CJNE A, #02H, EDIT_4C3JNB CSW3, EDIT_4C23 ;判参数位3是否已输入数字.NO,则不理睬 SJMP EDIT_4C20EDIT_4C23: LJMP EDIT_42EDIT_4C20: MOV CURSOR, #03HMOV A, FIRST ;首址ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元 MOV R0, AEDIT_4C21: MOV A, #14H ;送_的代码EDIT_4C22: MOV R0, A ;送存相应显示缓冲单元
34、LJMP EDIT_42 ;继续显示判键EDIT_4C3: LJMP EDIT_42 ;光标已在第4位,左移键忽略EDIT_4D: CJNE A, #CLS, EDIT_4EMOV CURSOR, #00H ;清除键处理MOV A, FIRSTMOV R0, AMOV A, #14H ;第1位显示_MOV R0, AMOV R0, FIRSTINC R0 ;第2位灭MOV A, #0CHEDIT_4D1: MOV R0, AINC R0EDIT_4D12: MOV R0, A ;第3位灭(小数点会自动固定显示INC R0 ;第4位灭MOV R0, ACLR CSW1 ;各参数位已输入数字标志清
35、除CLR CSW2CLR CSW3CLR CSW4LJMP EDIT_42 ;继续显示并判键EDIT_4E: CJNE A, #ENTER, EDIT_4GMOV C, CSW1 ;回车键处理ANL C, CSW2 ;判4位是否已全输入数字ANL C, CSW3ANL C, CSW4JC EDIT_4E1 ;YES,则继续LJMP EDIT_42 ;NO,说明参数未编辑完,回车键忽略EDIT_4E1: SETB C ;设置已完成标志RETEDIT_4G: LJMP EDIT_42 ;其它键忽略;* ;数字键处理:NUMKEY0,.;思路: 将按键对应的数字代码写入显示缓冲单元显示,;设置已输入
36、数字标志CSWx(标明数字已输入;* NUMKEY0: MOV R7, #00HSJMP NUMKEYNUMKEY1: MOV R7, #01HSJMP NUMKEYNUMKEY2: MOV R7, #02HSJMP NUMKEYNUMKEY3: MOV R7, #03HSJMP NUMKEYNUMKEY4: MOV R7, #04HSJMP NUMKEYNUMKEY5: MOV R7, #05HSJMP NUMKEYNUMKEY6: MOV R7, #06HSJMP NUMKEYNUMKEY7: MOV R7, #07HSJMP NUMKEYNUMKEY8: MOV R7, #08HSJMP
37、 NUMKEYNUMKEY9: MOV R7, #09HNUMKEY: MOV A, FIRST ;当前编辑项显示缓冲区首址ADD A, CURSOR ;+当前光标位置MOV R0, A ;=对应显示缓冲单元地址MOV A, R7MOV R0, A ;将代码写入MOV A, CURSOR ;由当前光标位置确定CSWx中的xCJNE A, #00H, NUMKEY_1SETB CSW1 ;当前光标在第1位,则设置CSW1RETNUMKEY_1: CJNE A, #01H, NUMKEY_2SETB CSW2 ;在第2位,则设置CSW2RETNUMKEY_2: CJNE A, #02H, NUMK
38、EY_3SETB CSW3 ;小数点在显示子程序中固定显示NUMKEY_21: RETNUMKEY_3: CJNE A, #03H, NUMKEY_4SETB CSW4RETNUMKEY_4: SJMP $ ;光标位置单元出错,告警并死机;* ;运行子程序:RUN;思路: 1首先从显示缓冲单元取出相应的参数,存入参数单元;参数最终转换成延时子程序(ON,OFF参数0.1MS,总的;工作时间参数1S的个数; 2在运行过程中,按暂停键能暂停,再按暂停键继续; 3中途要退出运行则必须按复位键; 4总的设定工作时间到,则退出;* INVERT: MOV R0, #DISPBUFMOV A, R0 ;从
39、显示缓冲区取显示代码(0009ANL A, #0FH ;安全起见,屏蔽高4位SWAP A ;形成千百位BCD码的千位MOV B, A ;暂存INC R0 ;取下一代码,以形成BCD码的低位MOV A, R0ANL A, #0FHORL A, B ;形成千百位BCD码MOV R1, #ON ;送存ON单元MOV R1, AINC R1INC R0MOV A, R0ANL A, #0FHSWAP AMOV B, AINC R0MOV A, R0ANL A, #0FHORL A, BMOV R1, A ;十个位送存ON+1单元INC R0 ;开始取OFF时间MOV A, R0ANL A, #0FHS
40、WAP AMOV B, AINC R0MOV A, R0ANL A, #0FHORL A, BMOV R1, #OFFMOV R1, AINC R1INC R0MOV A, R0ANL A, #0FHSWAP AMOV B, AINC R0MOV A, R0ANL A, #0FHORL A, BMOV R1, AINC R0 ;开始取并形成WT参数MOV A, R0ANL A, #0FHSWAP AMOV B, AINC R0MOV A, R0ANL A, #0FHORL A, B ;形成总的工作时间(S的千百位 MOV R1, #WTMOV R1, AINC R0INC R1MOV A, R
41、0ANL A, #0FHSWAP AMOV B, AINC R0MOV A, R0ANL A, #0FHORL A, BMOV R1, A ;形成总的工作时间的个十位(以秒为单位 MOV R6, #06H ;将转换后的参数送到备份区备份,MOV R0, #WT ;以便计数减为0后继续置数MOV R1, #WTBFINVERT_0: MOV A, R0MOV R1, AINC R0INC R1DJNZ R6, INVERT_0RETRUN: CLR ISOVER ;清工作结束标志MOV R0, #T0_COUNTCLR AMOV R0, AMOV 0CBH, #0EBH ;定时时间常数高位MOV
42、 0CAH, #0C4H ;定时时间常数低位MOV 0CDH, #0EBH ;定时时间常数高位MOV 0CCH, #0C4H ;定时时间常数低位MOV 0C8H, #00001000B ;T2的方式(16位重装CLR PAUSE_FLAG ;清暂停标志CLR ON_RUN ;指示正在运行中SETB 0CAH ;启动T2MOV IP, #20H ;T2为高优先级MOV IE, #10100000BCLR RP ;置运行状态RUN_2: JNB ISOVER, RUN_1 ;查询结束标志为真?SETB ON_RUN ;关运行指示CLR 0CAH ;关T2CLR EA ;关中断RET ;YES,则结
43、束返回RUN_1: LCALL DISPLAY ;刷新显示JB PAU, RUN_21 ;判是否暂停.NO,则转CLR 0CAH ;关闭T2CLR EA ;不允许中断SETB PAUSE_FLAG ;设置暂停标志CLR PAUSING ;暂停指示SETB RP ;运行/暂停线(暂停SJMP RUN_2 ;继续等待RUN_21: SETB 0CAH ;启动T2SETB EASETB PAUSING ;关暂停指示(继续运行CLR RP ;运行状态SJMP RUN_2;* ;判按键否子程序;占用寄存器: DPTR,A;返回寄存器: C=1 按键了;* KEYPRESS: MOV DPTR, #I82
44、79_CMDMOVX A, DPTRANL A, #0FHJNZ KP1RETKP1: SETB C ;按键标志RET;* ;读键值子程序;占用寄存器: DPTR,A;返回寄存器: A中为键值;* READKEY1: MOV DPTR, #I8279_CMDMOV A, #40H ;读FIFO RAM命令字MOVX DPTR, AMOV DPTR, #I8279_DATA ;指向数据口MOVX A, DPTR ;读键值(没有屏蔽SHIFT,CTRL位ANL A, #3FH ;屏蔽CTRL,SHIFTRET;* ;8279初始化子程序;占用寄存器: A,DPTR;* INIT8279: MOV
45、DPTR, #I8279_CMD ;向命令口MOV A, #0D1H ;清除命令字MOVX DPTR, AIN8279_1: MOVX A, DPTRJB ACC.7, IN8279_1;等待清除完毕MOV A, #0AH ;左端输入,编码方式,N键轮回MOVX DPTR, AMOV A, #2AH ;时钟编程,20分频MOVX DPTR, ARET;* ;8279读键值;占用寄存器: DPTR,A;返回寄存器: 存储键值在 A 中;* READKEY: MOV DPTR, #I8279_CMDMOVX A, DPTRANL A, #0FHJNZ READK1SJMP READKEY ;FIF
46、O中无键值则等待READK1: MOV DPTR, #I8279_CMDMOV A, #40H ;读FIFO RAM命令字MOVX DPTR, AMOV DPTR, #I8279_DATAMOVX A, DPTRANL A, #3FHPUSH ACCMOV R3, #10H ;延时10MS,以等待按键释放READKEY_1: MOV R4, #0FFHDJNZ R4, $DJNZ R3, READKEY_1POP ACC ;返回键值RET;* ;显示段码表;* DM: DB 3FH,06H,5BH,4FH ;0,1,2,3DB 66H,6DH,7DH,07H ;4,5,6,7DB 7FH,6F
47、H,73H,80H ;8,9,P,.DB 0,0,0,0 ;DB 0,0,0,0DB 08H,88H ;_,_.DB 0BFH,86H,0DBH,0CFHDB 0E6H,0EDH,0FDH,87HDB 0FFH,0EFH,0F7H,0FCHDB 0B9H,0DEH,0F9H,0F1H;* ;显示子程序: DISPLAY;思路: 在ON,OFF参数项中的各自第3位固定显示小数点;小数点的显示方法为在原段码的基础上使最高位为1;* DISPLAY: MOV DPTR, #I8279_CMDMOV A, #90H ;显示代码写入地址00H开始MOVX DPTR, AMOV R3, #DIRN ;12
48、个字符MOV R0, #DISPBUF;显示缓充区首址DISPLAY_1: MOV DPTR, #DM ;指向显示段码区MOV A, R0MOVC A, A+DPTRMOV DPTR, #I8279_DATAPUSH ACCMOV A, R0CJNE A, #DISPBUF+2, DISPLAY_2POP ACC ;ON参数的第3位显示小数点ORL A, #80H ;段码中加入小数点段码(最高位为DPSJMP DISPLAY_4DISPLAY_2: CJNE A, #DISPBUF+6, DISPLAY_3POP ACC ;OFF参数的第3位显示小数点ORL A, #80HSJMP DISPLAY_4DISPLAY_3: POP ACCDISPLAY_4: MOVX DPTR, AINC R0DJNZ R3, DISPLAY_1RET;* ;定时器中断2: 16位重装入方式;* INT_T2: CLR EAPUSH PSWPUSH ACC ;保护现场,APUSH 00H ;R0PUSH 01H ;R1PUSH 02H ;R2PUSH 03H ;R3PUSH 04H ;R4PUSH 06H ;R6PUSH 07H ;R7CLR 0CFH ;清定时器溢出标志INC T0_COUNTMOV A, T0_COUNTCJNE A, #64H, INT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏州大学应用技术学院《中西文化概论》2025-2026学年期末试卷
- 上海电影艺术职业学院《工程测试技术》2025-2026学年期末试卷
- 上海外国语大学贤达经济人文学院《古代汉语通论》2025-2026学年期末试卷
- 上海外国语大学《传播研究方法》2025-2026学年期末试卷
- 上海科学技术职业学院《政治学概论》2025-2026学年期末试卷
- 上海邦德职业技术学院《中国工艺美术史》2025-2026学年期末试卷
- 沈阳航空航天大学《文化学概论》2025-2026学年期末试卷
- 泰州学院《高等学校教师职业道德修养》2025-2026学年期末试卷
- 上海工程技术大学《环境保护法》2025-2026学年期末试卷
- 上海济光职业技术学院《健康教育与健康促进》2025-2026学年期末试卷
- 部编四年级语文下册 全册教案 (表格式)
- 警械使用课件
- 小学语文人教三年级下册 古诗中的节日-群文阅读课例
- 分包商管理办法
- 作者利益冲突公开声明表
- 崔允漷建构新教学心得体会(共13篇)
- 输血相容性检测室内质控-课件
- 市政工程三级安全教育培训完整
- M30注浆砂浆配合比计算资料
- 《现代汉语语法词类》PPT课件(完整版)
- 电工仪表与电气测量第六章电功率的测量
评论
0/150
提交评论