《工艺过程微机控制》课程设计说明书_第1页
《工艺过程微机控制》课程设计说明书_第2页
《工艺过程微机控制》课程设计说明书_第3页
《工艺过程微机控制》课程设计说明书_第4页
《工艺过程微机控制》课程设计说明书_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山 东 大 学工艺过程微机控制课程设计说明书一、 课程设计的目的本课程设计的目的是培养学生应用计算机知识解决实际问题的能力。通过课程设计,使学生能巩固加深课堂所学的工艺过程微机控制的原理知识,熟悉掌握汇编语言编程技巧。本课程设计是对学生基本微机开发应用技能的训练。1学习掌握工业生产中温度采集的方法,标度变换的方式以及采用微机实施温度控制的原理和方法,学习掌握微机用于数据采集和分析处理方面的知识。2掌握相关课程内容,了解a/d转换的原理及微机接口,综合应用微机原理及应用,计算机算法语言,测温仪表及热处理设备等方面的知识。二 课程设计的内容 1 设计题目选用工业生产中应用最多,最具代表性的微机控制

2、系统微机温度控制系统软件作为本次课程设计的题目。微机控温系统由工业炉,输入通道,微型计算机,输出通道和执行机构五部分组成的闭环系统,对电炉来讲,作为被控量的温度信号首先由热电偶转变为毫伏电信号,竟放大后再由a/d转换器变为数字量进入计算机。而后,计算机对所测温度按某一控制算法进行运算,比较,分析,然后直接经过接口去控制接触器或可控硅调功器,也可经d/a转换后去控制可控硅调压器,来改变控制量电压或功率的大小,以达到控制温度的目的被控量(温度)和控制量(电压或功率)之间的定量关系,即是该系统的数学模型。由于时间,实验条件等各方面的关系,在本次课程设计中我们只进行控制软件的设计。2 设计原理控温系统

3、控制软件编制在586微型计算机上完成采用汇编语言编制源程序。根据a/d转换器原理,用00ff范围之间的八位二进制代表电偶提供并放大的0+5伏热电势信号,键盘输入,根据范围不同的热电偶分度表,将输入计算机的数字信号进行标度变换,转换为与温度热电势对应的温度值显示在计算机屏幕上,并根据设定温度分别给加热,保温及超温报警系统。系统掌握如何利用计算机实现并对工业炉温的采集和控制输出。3 设计内容所设计的温度控制软件就包括以下内容:a)开头b)包括标度变换常量表的设置及各段的设置c)各预置温度及运算结果的存放单元分配d)保持温度和报警温度的输入及存放e)系统初始化f)拟热电势数字信号输入g)标度变换,将

4、热电势信号转换为相应的十进制温度值。h)温度显示i)设定温度比较,并根据比较结果分别显示加热、保温或报警。 4设计说明(温度线性插值标度变换)在实际工程中,温度与热电势的关系不是线性的,应用是时要对其进行线性化插值处理,即将温度与热电势之间的曲线进行分段处理,用分段直线代替整条曲线。分段方法如下:a.将热电势非线形特性曲线进行等温度或等电势的分段,分别用t1 ,t2,t3, ti+1表示,对应的热电势用v0,v1,v2vi+1表示,其中vi是模拟量热电势vx经过a/d转换后的数字量(可根据a/d转换器的精度和热电偶的测控温度的范围确定)。b.分段后,对每一段用直线代替曲线,写出每段的直线方程。

5、tx=aivx+bic.经分段处理后,ai,bi均为常数,编程是,先把vx,ai,bi编制成表格,形式如数据段中。程序执行标度变换时,vx与vi依次比较,找到所在区间,再找到响应的ai,bi,算出温度值。d.标度变换数据表的存放格式,(热电势原始数据见附表)v0a0(小数)a0(整数)b0(低8位)b0(高8位)v1a1(小数)a1(整数)b1(低8位)b2(高8位)viai(小数)ai(整数)bi(低8位)bi(高8位)vmaxamax(小数)amax(整数)bmax(低8位)bmax(高8位)5.调试程序源程序编程完成后,仔细检查,在全屏幕编辑程序pe状态下输入,利用masm汇编程序及de

6、bug动态调试工具调试程序,完成后运行,给出结果。附表:no温度热电势v(mv)aibit/c未转换a/d转换dhdh000000h000h,05h000h,00h11004.102115h4.762c3h,04h000h,00h22008.134129h500h,05h-50fbh,0ffh330012.21623eh4.762c3h,04h4.76205h,00h440016.408454h4.5458ch,04h18.18212h,00h550020.6510569h4.762c3h,04h000h,00h660024.901277fh4.5458bh,04h22.72716h,00h7

7、70029.1314995h4.5458bh,04h22.72716h,00h880033.291700aah4.762c3h,04h-9.5240f5h,0ffh990037.331900beh500h,05h-500cdh,0ffh10100041.272100d2h500h,05h-500cdh,0ffh11110045.102300e6h500h,05h-500cdh,0ffh12120048.812490f9h5.26343h,05h-110.52691h,0ffh13123049.892550ffh500h,05h-450d2h,0ffh三、程序清单及注释name fuxiangl

8、an;*定义数据段*data segment para datav db 00h,00h,05h,00h,00hdb 15h,0c3h,04h,00h,00hdb 29h,00h,05h,0fbh,0ffhdb 3eh,0c3h,04h,05h,00hdb 54h,8bh,04h,12h,00hdb 69h,0c3h,04h,00h,00hdb 7fh,8bh,04h,16h,00hdb 95h,8bh,04h,16h,00hdb 0aah,0c3h,04h,0f7h,0ffhdb 0beh,00h,05h,0cdh,0ffhdb 0d2h,00h,05h,0cdh,0ffhdb 0e6h,0

9、0h,05h,0cdh,0ffhdb 0f9h,43h,05h,91h,0ffhdb 0ffh,00h,05h,0d2h,0ffhth db please input the hold temp:,0ah,0dh,$ta db please input the alarm temp:,0ah,0dh,$v1 db please input the volt:,0ah,0dh,$by db thank you for using it,0ah,0dh,$te db the temp is:,0ah,0dh,$c1 db stop heating.,0ah,0dh,$c2 db heating,0

10、ah,0dh,$c3 db danger ran away,0ah,0dh,$c4 db ,0ah,0dh,$c5 db 0ah,0dh,error!the hold temp should be smaller than the alarm temp!please input again:,0ah,0dh,$c6 db 0ah,0dh,error!the temp should be in the range(01230) .please input again,0ah,0dh,$re db 0,0,0,0v2 db 0,0th2 db 0,0,0,0ta2 db 0,0,0,0data e

11、nds;*定义数据段*stack segment para stackstack sta1 db 200 dup(?)top equ length sta1stack ends;*程序初始化*code segment paracode assume cs:code,ds:dataassume ss:stack,es:datastar proc farpush dsxor ax,axmov ax,datamov ds,axmov es,axmov ax,stackmov ss,axmov ax,topmov si,ax;*显示th字符串*mov dx,offset thmov ah,09hint

12、 21h;*输入保持温度*jmp out0out1:mov dx,offset c6 ;若大于1230显示c6字符串mov ah,09hint 21hout0:call indacmp bx,1230hja out1push bx ;若小于等于1230保存并显示c4字符串mov dx,offset c4mov ah,09hint 21h;*显示ta字符串*mov dx,offset tamov ah,09hint 21h;*输入报警温度*jmp out2out3:push bx ;输入温度小于thmov dx,offset c5 ;显示c5字符串mov ah,09hint 21hjmp out

13、2 ;重新输入out4:push bx ;输入温度大于1230mov dx,offset c6 ;显示c6字符串mov ah,09hint 21hout2:call inda ;重新输入mov dx,bxpop bx cmp dx,bx ;和th作比较jb out3cmp dx,1230h ;和1230比较ja out4push bxpush dxlea dx,c4 ;显示c4字符串mov ah,09hint 21h;*输入电压值*mov dx,offset v1 ;显示v1字符串mov ah,09hint 21hlea si,v2xor cx,cxmov cx,2inv1:mov ah,8i

14、nt 21hcmp al 08h ;判断是否是backspaceje inv3cmp al,30h ;判断是否是09jb inv1 cmp al,3ahjb inv2cmp al,41h ;判断是否是afjb inv1cmp al,47hjb inv2cmp al,61h ;判断是否是afjb inv1cmp al,66hja inv1inv3:inc cxdec si ;si-1mov dl,08h ;将原数字覆盖mov ah,2int 21hmov dl,20hmov ah,2int 21hmov dl,08hmov ah,2int 21hjmp inv1inv2:mov si,al ;满

15、足条件则在屏幕上显示出来mov dl,almov ah,2int 21hinc siloop inv1xor ah,ahlea si,v2mov bx,2com1:mov cl,sicmp cl,40hjb com2 ;数字转到com2cmp cl,60h jb com5 ;小写字母转到com5sub cl,20h ;大写字母减20h再转到com5;*ascii码转数字*com5:sub cl,37hmov si,clinc sidec bxcmp bx,00hjz com3jmp com1com2:sub cl,30hmov si,clinc sidec bxcmp bx,00hjz com

16、3jmp com1com3:lea si,v2 ;com3实现将转换完了的结果保存在al中mov al,simov cl,4shl al,clmov bl,si+1add al,bl;*标度转换读入*mov si,offset vcom4:mov bl,si ;com4实现将si指针转移cmp al,bl ;到相对应的a/d值区间内jbe con1add si,5jmp com4;*乘法运算*con1:mov bh,si-3 ;实现将bx乘以ax并保存到ax中mov bl,si-4mul bxmov cl,8shr ax,clshl dx,cladd ax,dx;*加法运算*con2:mov

17、bl,si-2mov bh,si-1adc ax,bx;*十六进制转换十进制*mov bl,10div bllea si,th2mov si+3,ahxor ah,ahdiv blmov si+2,ahxor ah,ahdiv blmov si+1,ahmov si,almov cl,4mov ah,sishl ah,cladd ah,si+1mov al,si+2shl al,cladd al,si+3push axmov dx, offset c4mov ah,9int 21h;*实际温度输出*mov dx,offset te ;显示te字符串mov ah,9int 21hmov cx,4

18、lea si,th2tn1:mov al,si ;tn1实现将数字转换成相应的ascii码add al,30hmov si,alinc siloop tn1lea si,th2mov cx,4tn2: mov dl,si ;tn2实现显示功能mov ah,2int 21h inc siloop tn2lea dx,c4 ;换行回车mov ah,9int 21h;*数据比较*pop axpop dxpop bxcmp ax,dx ;比较te,tajb hold;*报警*mov dx,offset c3 ;te大于ta显示c3字符串mov ah,09h int 21hjmp exit;*继续加热*

19、hold:cmp bx,ax ;比较th,tejb stop mov dx,offset c2 ;te小于th显示c2字符串mov ah,9int 21hjmp exit;*停止加热*stop:mov dx,offset c1 ;te大于th显示c1字符串mov ah,9int 21h;*程序结束*exit:mov dx,offset bymov ah,9int 21hmov ah,1int 21hpop dsmov ah,4chint 21hret;*数据读入子程序*inda procmov cx,4lea si,ta2;*数据的键盘输入*in1:mov ah,8hint 21hcmp al

20、,08h ;判断是否为backspaceje in8cmp al,0dh ;判断是否为回车je in2cmp al,30h ;判断是否是数字jb in1cmp al,39hja in1mov si,almov dl,si ;若位数字则显示mov ah,2int 21hinc siloop in1jmp in5in8: ;若为backspace ,cx加1,inc cxdec si ;si-1mov dl,08h ;将原数字覆盖mov ah,2int 21hmov dl,20hmov ah,2int 21hmov dl,08hmov ah,2int 21hjmp in1in2:xor bx,bx

21、 ;先将sisi+3中的数制设定为30hmov bl,30hadd si,bladd si+1,bladd si+2,bladd si+3,blcmp cx,4 ;判断是否输入4位数je in5in3:cmp cx,3 ;判断是否输入为3位数jb in4mov bh,si-1mov si+2,bhmov si-1,blmov si+1,blmov si,bljmp in5in4:cmp cx,2 ;判断是否输入为2位数jb in6mov bh,si-1mov si+1,bhmov bh,si-2mov si,bhmov si-2,blmov si-1,bljmp in5in6:mov bh,s

22、i-1 ;判断是否输入为1位数mov si,bhmov bh,si-2mov si-1,bhmov bh,si-3mov si-2,bhmov si-3,blin5:mov cx,4lea si,ta2in7:mov al,si ;ascii码转数字sub al,30hmov si,alinc siloop in7xor ax,ax xor bx,bxmov cl,4lea si,ta2mov ah,sishl ah,clmov bh,si+1add ah,bhmov al,si+2shl al,clmov bl,si+3add al,blmov bx,axretinda endpstar e

23、ndpcode endsend star四程序编制及调试过程出现的问题及解决方案1 输入保持温度没有与报警温度做比较。于是我们在输入报警温度后加了cmp dx,bx,实现了如果报警温度低于保持温度,提示error。2 输入温度无限制。应该通过与1230比较,将报警温度和保持温度限制在01230之间如输入数字大于1230则出现提示,重新输入,直至小于1230为止。3 输入位数的问题。温度可以输入4位数,还可以实现03位数的输入而且不必补零。回车键作为输入结束的标志。实现方法:先将输入的ascii码值与0dh进行比较,若相等则证明是回车。然后将输入结果向后移位,前面缺少的为上以30h补充。4 修改

24、程序过程中,会出现乱码,溢出等现象,需要继续进行修改,寻找正确的解决办法,每次修改之后,运行之前都要保存下来。5 原程序中子程序inda中可以输入ascii码大于40h的任意字符。本程序中,通过与30h和39h作比较,将输入字符的范围设定为数字09。如果输入大于0到9和字母,不予显示。6 若输入错误,可通过键入backspace键重新输入。通过将al与08h比较,判断是否为backspace,如为backspace则用空格将原输入数字屏蔽,通过cx+1实现总位数保持不变。7 报警温度限制。通过与保持温度比较,将报警温度限制在保持温度以上。若输入报警温度小于保持温度则出现提示,重新输入,直至大于

25、保持温度为止。五程序流程图1 主程序流程图(见后页)2、inda子程序流程图(见后页)结束3、 程序功能说明程序能实现将输入的两个字节的16进制电压值v转化为相应的温度值te。并能比较te与th和ta的大小关系。当teta时,输出“danger ran away”;当teth时,输出“heating”;当thteta时,输出“stop heating”。要求:1 在“please input the hold temp:” 和“please input the alarm temp:”的提示下输入保持温度和报警温度,两温度须为10进制数(09),其他输入值不予显示;2 输入温度值可为14位数,

26、输入13位数时以回车作为输入结束的标志,输入4位时自动转入下一步,输入错误时可用backspace清除并重新输入。3 要求报警温度必须大于保持温度,否则出现“error!the hold temp should be smaller than the alarm temp!please reput again:”提示,并要求重新输入;4 两温度值都必须小于1230,否则出现“the temp should be in the range(01230). please input again.”字样,并要求重新输入。5 在“please input the volt:”的提示下输入2位16进制数

27、(09,af,af)的电压值,其他输入值不予显示,输入错误时可用backspace 清除并重新输入;六、课程设计总结通过这几天的上机实验和大家的共同努力,我们总算是调试了出了一个可以运行出结果的程序,相信这几天的收获会使我们终身受益。这次的课程设计题目,是要求我们设计一个微机温度控制系统软件。刚拿到源程序的时候,我一头雾水,惶恐万分,根本静不下心来思考。后来在学姐和同学的帮助下,我们一边探讨,一边创新,发现了许多问题,也解决了许多问题,同时还克服了很多困难。这次课程设计,让我们将书本知识理论付诸实践,让我们对于编程语言有了更深刻的认识,也对我们的期末考试打下了坚实的基础,相信经历了这次课程设计

28、的我们,在未来继续涉及计算机语言时,将不再害怕。总之,这次课程设计让我学会了很多,更加理解了计算机语言的神奇,我们不应该总是学习书本理论知识,更多的应该参与实践,才能对我们到底掌握了多少有个清楚的认识,而且在实践中更易发现问题和解决问题,这样才会更好。1主程序流程图输入电压显示报警温度并将报警温度压入堆栈段dx显示保持温度并将保持温度压入堆栈段bx否是判断报警温度是否大于保持温度否判断报警温度是否大于1230调用inda程序输入报警温度是否判断是否大于1230调用inda程序输入保持温度定义数据段,公用符号说明,引用符号说明开始 si-1并将原字符以空格覆盖是判断输入字符是否为09,af,af

29、否判断是否为backspace是否显示电压值并将电压值压入堆栈段分别将si指针移至和数字、字母相对应的电压地址处实现ascii码转数字标度转换将所得的温度值转为ascii码存入ax并输出释放ax,bx,dx是判断ax是否大于dx否判断ax是否大于bx是报警否停止加热继续加热结束结束开始2. inda子程序:输入字符判断是否是backspacesi-1并将原输入字符以空格覆盖 是 否判断是否是 回车将13位数通过向后移位,前方空位补0转换为4位数 是 否判断是否是数字 否 是结束减30h,将ascii码转化为数字并保存在ax中显示数字并保存 ut2apodfxxc02gybkskcww97mrq

30、qwhoj5tl15zt6jipyytycummtarp3v1n5luizi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkupxf8wfug9l2g9277g2rtipa1ypczeuqxpkbhtvdcooqozxuz3vjrzmocijym62zchmeootyes8ebmm932tbz2yo09rtszeys

31、8zrd2yktj8l6jeazvajnfbtrylvsm6ofbftoxvrffn7owiygjlamkunxjybz5rrb7r4vsur9zpfzfmfsjhcfca37lnw2vvlrkn7r8psz1bn6oric5hu5z6hcxayqynpog8duybawqsl20csg06dh2sm8hltgpkicskrgopdpuhbj1lmpk7lydvc6nnmwl3fwhzftfvyaary7lhssxj10v3ph3y19bxyr77ib7cpzsu2tijqe3hkqkkau9kskcphkxuikvvyjzpg2yijrkqfbggovyqkuxnwi9omnjtt6qilz

32、xtyrf7d20fbmabcfiixrqkusvnxbppfuxyq1fjskfsubkgs2duvqc9sz4jkbgn4qqv66pyoarjurnfj3txyfclzieeptwfjthpheipdfnqnr2hjqkv2dzwtmpdjqkbcxmovdsjqctjagjmdlskpgad2s0h0vmzgaht36gyuez7umank1ndreubeqdgrx0venqgnsyib2ilq3siqrnl4m56t7z8y8da5k0kupn5nzg4jvjdtffhyt82aogqkxo4vblmleiy2p7hthbho07rcfttxodydppdtqso7wxd0j6fkklgm4wodzp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论