1、工艺过程微机限制课程设计说明书班级:无机姓名:一、课程设计的目的本课程设计的目的是培育学生应用计舞机学何解决实际问题的实力.通过课程设计,使学生能巩固加深课堂所学的工艺过程微机限制的原理学问,患识驾驭汇编语言编程技巧.本课程设计是时学生基本微机开发应用技能的训练,1 .学习智取工业生产中温度采集的方法,标度变换的方式以及采纳f机女.温度限制的原理和方法,学习与双微机用于数据果集和分析处理方面的学问.2 .驾驭相关课程内容,了解AJD转换的原理及微机接口,综合应用微机原理及应用,计算机算法语,测温仪表及热处理设备等方面的学问.二.课程设计的内容1 .设计SS目选用工业生产中应用最多,最具代表性的
2、母机限制系统微机温度限制系统软件作为本次课程设计的鹿日.做机控温系统由工业炉.输入通道.微型计算机输出通道和执行机构五部分组成的闭环系统,对电炉来讲,作为被控状的温度信号首先由热电偶转变为富伏电信号,竟放大后再由AJD转换器变为数字僦进入计算机,而后,计算机对所测温度按某限制算法进行运算,比较,分析,然后干脆经过接口去限制接触器或可控R调动器,也可经D/A转换后去限制可控硅调出器,来变更限制fib电乐或功率的大小.以达到限制温度的目的被控fit(温发)和限制限(电压或功率)之间的定最关系,即是该系统的数学模型.由于时间,试验条件等各方面的关系,在本次课程设计中我们只进行限制软件的设计,2 设计
3、原理控况系统限制软件编制在586做里计驾机上完成采纳汇弟谱吉弟制源程序.依据A/D转换器原埋.用0()-FF范困之间的八位二进制代表电偶供应并放大的0-+5伏热电势信号,途盘输入,依据莅围不同的热电偶分度去,将输入计W机的数字信号进行标度变换,转换为马温度热电势对应的温度值显示在计斯机屏幕上,并依据设定温或分别给加热,保温及超乱报警系统.系统驾驭如何利用计算机实现并对工业炉温的采集和限制输出.3 设计内容所设计的温度限制软件就包括以下内容:a)开头b)包括标度变换常盘表的设置及各段的设置c)各预置温度及运第结果的存放单元安排d)保持温度和报警温度的输入及存放O系统初始化ft拟热电势数字信号输入
4、g)玩度变换,将热电与信号转换为相应的十进制温度.h)温度显不i设定淑度比较,并依据比较结果分别显示加热、保温或报警,4 .设计说明(温度线性插值标度变换在实际J1.程中,温度与热电势的关系不是线性的.应用是时要对其进行线性化插值处理,即将温度与热电势之间的他戏is行分段处理,用分段n践代於整条曲战。分段方法如下:a将热电势非城形特性曲戏进行等海度或等电势的分段,分别用T1.,T2,T3,Ti+I表示,对应的热电势用VO.VI,V2Vi+1表示,其中V1.是模拟Jft热电势VX经过A/D转换后的数字Jit(可依据A/D转换器的精度和热电偶的测控温度的范围确定.b,分段后,对好一段用f1.线代昔
5、曲线,写出集段的口戏方程,TX=AiVN+Bic.经分段处理后,Ai.Bi均为常数,编程是,先把Vx,Ai.Bi编制成衣格,形式如数一段中.程序执行标度变换时,VX与Vi依次比较.找到所在区间再找到响应的Ai.Bi,算出潮度(ft.&标股变换数据表的存放格式,(热电势原始数据见用表)ViAi(小数)3:、山Bi(低8位)Bi高8位)VmaxA1.naX(小数)AmaX(整数)Bmax(低8位)Bmax(r11j8位)VoAtK小数)A(X整数)BOdK8位)B0(i8位)V1.A1.(小数)A1.(整数)B1.(低8位)B2(高8位5 .试程序地程序编程完成后,细致检衣,在全屏幕编辑程序PE状
6、态下输入,利用MASM汇编程序及DEBUG动态调试工具调试程序,完成后运行,给出结果.附表:三、程序清单及注科NAMEFUX1ANG1.N;No温度热电势V(mCAiBiThC未转换A/D转换DHDHO000(X)H0(M)H.05H0(X)HXXJHI1004.1021I5H4.762C3H.04H0OOH.OOH22008.134129H5H.05H-5OFBH.OFFH330012.21623EH4.762C3H,O4H4.762()5H,(X)H44(X)16.408454H4.5458CH.O4H18.18212H.(X)H550020.6510569U4.762C3H.O4U0OO
7、H.OOH6624.90127FH4.5458BH.04H22,727I6H.(X)H77)29.1314995H4.5458BH,04H22.727I6H.(X)H8X(X)33.29170OAAH4.762C3H.O4H-9.5240F5H.0EFH990037.33190OBEH5II.05H-50OCDH.OFFH10100O41.272100D2H5OOH.05H50OCDHQFFHI1.I1.OO45.102300E6H5()0H,05H-50()CDH.()FFH12120()48.812490F9H5.26343H.O5H-110.5269IH,0FFH13123049.892
8、55OFFH5(X)H.05H-450D2H.0EEHNAMEWJZM:定义数据段DATASEGMENTPARADATA,VDB00H.00H.05H.00H.HDB15H.0C3H.04H.H.0()HDB29H,00H,05H,0FBH.0FFHDB3EH,OC3H,O4H,O5H,OOHDB54H.8BH.(WHJ2H.OOHDB69H.0C3H.04H.00H.00HDB7FH.8BH.O4H.17H.(X)HDB95H,8BH.O4HJ7HX)OHDBOH.OC3H.O4H,OF7H.OFFHDBOBEH.H.O5H.OCEH.OF11IDBOD2H.(X)H.O5H.OCEH.OI
9、HDBOE6H,OOH,O5H,OCEH0FFHDBOF9H.43H.O5H.9IHiOFFHDB()FFH.OOH.()5H.OD3H.OFFHTHDBMrE1.CoMETOUSETHISPROGRAM.P1.EASEINPUTTHEHO1.DTEMP:OAH,ODH?$-ADBP1.EASEINPUTTHEA1.ARMEMP2,.0AH.()DH,TBDBP1.EASEINPUTTHECODEAOAHODHfTCDBTHECODEISWRONGP1.EASEINPUTAGAIN=OAHQDHsTDDBDOYOUWANTTOHEAT7(YN.()AII.()DHS,V1.DBP1.EASEI
10、NPUTTHEVO1.TtOAH.ODH.$BYDBTHANKFORYOURUSE.GOODBYE!OAH,()DH,5,TEDBTHETEMPISOAH.ODH.S,C1.DBSTOPHEATINGrQAHODHHC2DBHEA11NGOAH.ODH.,S,C3DBDANGERRUNAVAY!OAH.()DH.,S,C4DB,0H.0DH.,yC5DBOah.Odh.,ERROR!THEHO1.DTEMPSHOU1.DBESMA1.1.ERTHANTHEA1.ARMTEMP!P1.EASEINPUTAGA!N:OAH.ODH:SC6DBOAH,ODHTHETEMPSHOU1.DBEINTHE
11、RANGRO-1230)P1.EASEINPUTAgainooahqdhsREDB().0.0.0V2DB0,0TH2DB0.0,0.0TA2DB0.0.0.0DATAENDS定义堆栈段STACKSEGMENTMRASTACK,STCK,STA1.DB234DUP(?)TOPEQU1.ENGTHSTA1.STACKENDS产衾松*程序初始化*祎*CODESEGMENTPARACODE,ASSUMECS:CODE.DS:DAIAASSUMESS:STACK,ES:DATASTARPROCFRPUSHDSXORAX.AXMOVAX,DATAMOVDS.XMOVES.AXMOVAX.STACKMOV
12、SS.AXMOVX.TOPMOVS1.AX;*显示TB字符MOVDXiOFFSETTBM0VAH.()9HINT21H;”从键盘输入不显示的密码MOVH.8INT21H:从犍盘输入的密码和设定的密眄比较一“1.P:CMPA1.,38HJAAACMPA1.38HJBAAJMPMM产裆显示TC字符串AA:MOVDX.OFFSETTCMOVAH.09HINT2IHM0VHi8INT21HJMP1.P:显示TH字符部MM:MOVDX.0FFSETTHMOVH.09HINT2IH:”驯入保持温度JMPC)UTOOUTI:MOvDxqffsetC6MOVAH.(WHINT21HOUTO:CA1.1.IND
13、ACMPBX.123OHJAOUTIPUSHBXMOVDX.OFFSEC4MOVAH,(WHINT21H:*皿示TA字符*MOVDX.OFFSETAMOVAH,(WHINT21H:*输入报警温度*JMPoUT20UT3:PUSHBXMOVDX.OFFSETC5MOVAH.(WHINT2IHJMP0UT20UT4:PUSHBXMOVDX.OFFSETC6MOVH.09HINT2IH0UT2:CA1.1.INDAMOVDX.BXPOPBXCMPDX.BXJBOUT3CMPDX,123OH;若大于1230显示C6字符*;若小于等于1230保存并显示C4字符串;输入温度小于TH:显示C5字符串;Ht新
14、输入:输入温度大于1230;显示C6字符串;理新输入:和TH作比较;和1230比较JAOUT4PUSHBXPUSHDX1.EADX.C4MOVAH,09HINT21H输入电压伯MOVDX.OFFSETVIMOVH.()9UINT21HI.EASI.V2XORCX.CXMOVCX.2INV1.:MOVAH,8INT21HCMPA1.30IIJBINV1.CMPAI.3AHJBINV2CMPA1.41HJBINV1.CMPAI.,47HJBINV2CMPA1.61HJBINV1.CMPAI.,66HJAINVIINV2:MOVS1.A1.MOVD1.1A1.MoVAH,2INT21HINCS1.I
15、X)PINV1.XORH.H1.EASI.V2MOVBX.2COMI:MOVCU(SI1CMPC1.4011.JBCOM2CMPC1.,60HJBCOM5SUBC1.20H;显示C4字符申;显示V1.字符申:推断是否是09:推断是否是A-F;推断是否是af;满意条件则在屏幕I:显示出来:数字转到COM2:小写字母转到CoM5:大写字母诚20H再转到CoMS:ASCII码转数字COM5:SUBC1.37HMOVSI.C1.INCS1.DECBXCMPBXtOOHJZCOM3JMPCOM1COM2:SUBC1.30HMOV(SI.C1.INCS1.DECBXCMPBX.OOHJZCOM3JMP
16、COM1COM3:1.ESI.V2CoM3实现将转换完了的结果保存在A1.中MOVA1.JS1.)MOVC1.4SHI.A1.,CI.MOVB1.JSk1.IADDA1.B1.标度转换读入MovS1.offsetvCOM4:MOVB1.(S1.);COM4实现将SI指针转移CMPA1.B1.:到相对应的A/D值区间内JBECONIADDS1.5JMPCOM4:乘法运算CON1.:MOVBH.(SI3;实现将BX乘以AX并保存到AX中MOVB1.JSH)MU1.BXMOVC1.,8SHRX.C1.SH1.DX.C1.ADDAX.DX加法运第CON2:MOVB1.,(S1-2JSTOP:MOVDX
17、OFFSEC1;TE大于TH显示C1.字符小MOVAH9INT21H:程序结束EXIT:MOVDXQFFSETBYMOVAH.9INT21HMOVAHJINT2!HPOPDSMOVAH.4CH1NT2IHRET数据读入子程序本8的INDAPROCMOVCX,41.EASI.T2数据的键盘输入*8,INi:MOVAH.8HINT21HCMPA1.08HJEIN8CMPAImODHJEIN2CMPA1.30HJBIN1.CMPA1.,39HJAIN1.MOVSI.A1.MOVD1.S1MOVAH,2INT2IHINCS1.1.(X)P1.N1.JMPIN5IN8:INCCXDECS1.MOVD1
18、08HMOVAH2:推断是否为B.ACKSPACE;推断是否为何车:推断是否是数字:若位数字则显示方为BACKSPACE,cxira,;SI-1;将像数字/矗INT21HMOVD1.20HMOVAH,2INT2IHMOVD1.08HMOVAH.2INT21HJMPIN1.IN2:XORBX.BXMOVB1.JOHADDSI,B1.ADDSI+1.B1.ADDS1+2.B1.ADDSI3.B1.CMPCX.4JE1N5IN3:CMPCX.3JBIN4MOVBH.(S-1MOV(S1+2J.BHMOV(SM.BI.MOVSI+hB1.MOV(S!.B1.JMP1N5IN4:CMPCX.2JBI
19、N6MOVBH.S1-IMOV(SIhBHMOVBH.SI2MOVSI.BHMOV(S1-2.B1.MOVISI-11,B1.JMPIN5IN6:MOVBH.S1-1MOV,BHMOVBH.SI2MOV(SI1.BHMOVBH.S1-3MOV(S121,BHMOVSI-3.B1.IN5:先将SI-S13中的数制设定为MH:推断是否未输入;推断是否输入为I位数;推断是否输入为2位数:怆入为3位数的状况MOVCX.4I.EASI.TA2IN7:MOVA1.,(S1;ASCII码转数字SUBA1.30HMOV(SI.AI.INCSI1.PIN7XORAX.AXXORBX,BXMOVC1.41.EAS
20、I.TA2MOVAH.S1SHI.AH.C1.MOVBH,S1+11ADDAH.BHMOVA1.JSI+2SHI.A1.,CI.MOVB1.JSI+3ADDA1.1B1.MOVBX.AXRETINDAENDPSTARENDPCODEENDSENDSTAR四.程序一制及调试过程出现的何题及解决方案1. 输入保持祖度没有与报警温度做比较于是我们在输入报警温度后加/CMPDX.BX.实现了偎如报警温僮低于保持温度,提示error.2. 输入温度无限制。应当通过与1230比较,将报警温度和保持温度限制在01230之间如输入数字大于1230则出现提示,重新输入,H至小于1230为止。3. 输入位数的问题
21、温度可以谕入4位数,还可以实现03位数的输入而且不必补零.【可车健作为怆入结束的标记.实现方法:先将输入的ASCII码值与ODH进行比较,若相等则证明是回车.然后将输入结果向后移位,前面缺少的为上以30H补充,4. 修改程序过程中,会出现乱码,溢出等现象,须要按着进行修改,找寻IE确的解决方法,每次修改之后,运行之前都要保存下来.5. 原程序中子程序INDA中可以怆入ASCII码大于40H的随意字符.本程序中,通过与30H和39H作比较,将输入字符的范国设定为数字09,假如输入大于0到9和字母,不予显示。6. 若输入错误,可通过键入BACKSPACE犍型新蛤入.通过将A1.与OXH比较,推断
22、於否为BACKSPACE.如为BACKSPACE则用空格将原输入数字屏蔽,通过CX+1实现总位数保持不变,7. 报警温度限制,通过与保持温度比较,将报警亦度限制在保持制度以上。若验入报警温度小于保持温度则出现提示.重新输入.直至大于保持部度为止.五.程序流程图1 .主程序流程图(见后页)2、INDA子程序流程图见后页3、程序功能说明程序能实现将怆入的两个字节的16进制电压CftV转化为相应的温度CftTE.并能比较TE与TH和TA的大小关系。当TET时,输出“DANGERRANAWAY;当TE.其他输入值不予显示;2. 蛤入温度值可为1-4位数,输入1-3位数时以回车作为输入结束的标记.怆入4
23、位时自动传入下一步,怆入错误时可用BACKSPACE消除JMK新输入.3. 要求报警温度必需大于保持温度,否则出现-ERROR!THEHO1.DTEMPSHOU1.DBESMA1.1.ERTHANTHEA1.ARMTEMP!P1.EASEREPUTAGAIN/,提示,并要求重新输入:4. 两温度Ift都必益小于1230.否则出现“THETEMPSHOU1.DBEINTHERANGEo1230).P1.easeinputagain,字样,并要求电新输入,5. 在-P1.EASEINPUTTHEVO1.T:的提示下软入2位16进制数(0、9,AF,af)的电压(If.其他静入优不予显示,珀入惜误时
24、可用BACKSPACE消除并重新输入:六、课程设计总结通过这几天的上机试脸和大家的共同努力,我们终于是调试了出了一个可以运行出结果的程序,信任这几天的收获会使我们终身受益.这次的课程设计SS目.是要求我们设计一个微机温位限制系统软件.刚拿到源程序的时候,我一头雾水,惶恐万分,根本睁不下心来思索。后来在学姐和同学的梢助下,我In一边探讨,一边创新,发觉了很多问题,也解决了很多问题,同时还克服了很多困难,这次课程设计.让我们将书本学问理论付诸实践.让我们对于煽程谙言有了更深刻的相识,也对我们的期末考试打下了皇实的基础.怕任经验了这次课程设计的我的,在利来接着涉及计算机语言时,将不再胆怯。总之,这次课程设计让我学会了很多,更加理解了计算机语言的奇妙,我们不应当总是学习书本理论学问.更多的应当参加实践.才能对我们究竟驾驭了多少有个清晰的相识.而口在实践中更易发觉何时和解决问题这样才会更好.1.主程序流程图起先定义数据段,公用符号说明,引用符号说明12.INDA子程序: