微机原理项目报.doc

上传人:大张伟 文档编号:6102016 上传时间:2020-09-10 格式:DOC 页数:17 大小:110KB
返回 下载 相关 举报
微机原理项目报.doc_第1页
第1页 / 共17页
微机原理项目报.doc_第2页
第2页 / 共17页
微机原理项目报.doc_第3页
第3页 / 共17页
微机原理项目报.doc_第4页
第4页 / 共17页
微机原理项目报.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《微机原理项目报.doc》由会员分享,可在线阅读,更多相关《微机原理项目报.doc(17页珍藏版)》请在三一文库上搜索。

1、阀门控制系统的计算机控制技术的实现项目组别:5班级:学号:姓名:课程名称:16/32位微机原理、汇编语言及接口技术指导教师: 2010年05月目录1、 摘要2、 前言3、 研究报告正文1)工程背景2)项目要求3)项目的模拟方案4)工作框图、详细程序5)模拟的实验结果、项目的结论4、主要参考文献5、感言阀门控制系统设计游诗茂(燕山大学 机械工程学院)1 摘要 近年来,随着国民经济增长,阀门行业的发展非常迅速,阀门控制也得到广泛应用。项目的目的在于通过计算机实现对阀门的控制,在此过程中用到了16位汇编语言、8255接口以及led数码管、按键、步进电机等星研实验箱上的硬件,通过老师的辅导、小组成员互

2、相的讨论以及实验课上的调试,达到了模拟实现阀门控制的目的。从此可以看出,设计思路决定控制系统功能、程序的严谨程度有助于提高的稳定性。2 前言本项目的目的是应用16/32位微机原理、汇编语言及接口技术教材所学知识,在星研系统实验箱上模拟实现阀门控制。由于实验器材有限,最终的模拟结果只能通过按键实现数值的输入,通过led数码管实现数据的显示,以及通过步进电机的运转状况表示阀门的开闭程度。工程上实现阀门控制常用到的是各种阀门控制器,由于规格、功能上的要求各不相同,阀门市场已经进入到了百花齐放的状况,随着对阀门需求量的日益增长,阀门控制技术在领域上的研究也越来越多样化和完善化。3 研究报告正文 3.1

3、 工程背景阀门:是在流体系统中,用来控制流体的方向、压力、流量的装置。是流体输送系统中的控制部件,具有截止、调节、导流、防止逆流、稳压、分流或溢流泄压等功能。用于流体控制系统的阀门,从最简单的截止阀到极为复杂的自控系统中所用的各种阀门,其品种和规格相当繁多。阀门可用于控制空气、水、蒸汽、各种腐蚀性介质、泥浆、油品、液态金属和放射性介质等各种类型流体的流动。阀门控制:阀门依靠驱动或自动机构使启闭件作升降、滑移、旋摆或回转运动, 从而改变其流道面积的大小以实现其控制功能。市场上常用的是电动阀门控制器,其优点是阀门开与关实现了全程自动控制显示,电动控制器能数字显示阀门的开度值,不仅控制准确,不会因出

4、现超矩而损坏阀门设备,此技术可广泛应用在发电、钢铁、化工、石油、自来水等行业。 阀门控制可以通过编程来实现,市场上常见的有各种PLC控制的阀门,同样,用汇编语言也可以实现对阀门的控制。3.2 项目要求阀门控制系统设计:某化工厂输气管道用压力自动控制阀门,设计电路实现如下控制:(1)、可以把阀门开、关至某一设定值;(2)、自动检测管道压力,并设定管道压力值,当高于设定压力时阀门开度增大,当低于设定值时,阀门开度减小,至设定值停止。设计系统实现上述控制,并能记录阀门开度。3.3 项目的模拟方案3.3.1总体方案:通过led数码管显示阀门的设定开度、当前开度、管道的设定压力、当前压力,用按键来完成阀

5、门开度的设定、管道压力的设定,用步进电机的正反转来控制阀门开度的增大和减小。用8255接口完实现数据的传送。3.3.2所用硬件:8255接口、8位led、按键、步进电机3.3.2.1显示设置:阀门当前开度 阀门设定开度 管道当前压力 管道设定压力3.3.2.2按键设置:k1工作方式一 k2设定开度+1 k3设定开度+5 k4设定开度-5k5工作方式二 k6设定压力+1 k7设定压力+5 k8设定压力-53.3.3电路图:3.3.4系统连线图:8255接口连线:控制口:0f003h A口:0f000h 数码管位选 B口:0f001h 数码管段选 C口:0f002h 排线连按键,C口高四位连步进电

6、机ABCD口 3.4 工作框图、详细程序3.4.1工作框图:3.4.2详细程序:.model small.stack 1024h.datashedk dw 0000h ;设定阀门开度shedy dw 0000h ;设定管道压力nowk dw 0000h ;当前阀门开度nowy dw 0000h ;当前管道压力yl dw 0,51,22,75,36,56,14,56,99,83,$ ;检测到的管道压力.codestart: mov ax,data mov ds,ax mov si,offset yl kaishi: mov dx,0f003h mov al,10001001b out dx,al

7、 ;默认在方式一下工作 enter1: mov dx,0f002h mov al,11111111b in al,dx cmp al,11101111b ;可跳转到方式二,按k5即可跳转 jz sijia cmp al,11111101b ;方式一,通过按k1、k2、k3设定阀门开度 jz kone cmp al,11111011b jz kfive cmp al,11110111b jz kffive cmp al,11111111b jz goon0 jmp enter1 kone: mov al,1 jmp kjia kfive: mov al,5 jmp kjia kffive: mo

8、v al,5 jmp kjian kjia: mov ah,00h add shedk,ax jmp kthen kjian: mov ah,00h sub shedk,ax kthen: call delay jmp enter1sijia: inc si ;得到检测到的管道压力,每按一次k5按钮,该值改变一次 inc si mov ax,si cmp ax,$ jz qinglin mov nowy,ax jmp enter2qinglin: mov si,offset yl mov ax,si mov nowy,ax enter2: mov dx,0f002h mov al,111111

9、11b in al,dx cmp al,11111110b ;可跳转到方式一,按k1即可跳转 jz enter1 cmp al,11011111b ;方式二,通过按k6、k7、k8设定管道压力值 jz yone cmp al,10111111b jz yfive cmp al,01111111b jz yffive cmp al,11111111b jz goon2 jmp enter2 yone: mov al,1 jmp yjia yfive: mov al,5 jmp yjia yffive: mov al,5 jmp yjian yjia: mov ah,00h add shedy,a

10、x jmp ythen yjian: mov ah,00h sub shedy,ax ythen: call delay jmp enter2 goon0: ;限定设定开度的最大值和最小值 cmp shedk,10000000b ja kzuixiao jmp goon1 kzuixiao: mov bl,00 mov shedk,bx jmp goon1 goon1: cmp shedk,99 ja kzuida jmp next0 kzuida: mov bl,99 mov shedk,bx jmp next0 goon2: ;限定设定压力的最大值和最小值 cmp shedy,100000

11、00b ja yzuixiao jmp goon3yzuixiao: mov bl,00 mov shedy,bx jmp goon3 goon3: cmp shedy,99 ja yzuida jmp next1yzuida: mov bl,99 mov shedy,bx jmp next1 next0: ;显示设定开度和当前开度 call showshedk call shownowk xor bx,bx ;比较当前开度和设定开度 mov bx,nowk cmp bx,shedk jb bujinz1 ;若前者小,则步进电机正转 ja bujinf1 ;若前者大,则步进电机反转 jmp e

12、nter1 ;若相等则跳回到方式一的输入环节 bujinz1: call buz inc bx mov nowk,bx jmp next0bujinf1: call buf dec bx mov nowk,bx jmp next0 next1: mov cx,99 ;将开度调整到与当前压力相适应的值 sub cx,nowytiaoz: call shownowk cmp nowk,cx jb bujinz3 ja bujinf3 jz shownext1 bujinz3: call buz add nowk,1 jmp tiaozbujinf3: call buf sub nowk,1 jmp

13、 tiaoz shownext1: next2: ;显示当前开度、设定压力和当前压力 call shownowk call showshedy call shownowy mov bx,nowy ;比较当前压力和设定压力 cmp bx,shedy ja bujinz2 ;若前者大,则步进电机正转 jb bujinf2 ;若前者小,则步进电机反转 jmp enter2 ;若相等则跳回到方式二的输入环节 bujinz2: call buz add nowk,1 sub nowy,1 jmp shownext1bujinf2: call buf sub nowk,1 add nowy,1 jmp s

14、hownext1 mov ax,4c00h int 21h comp proc ;显示的子程序 mov dx,0f001h cmp al,0 jz zero cmp al,1 jz one cmp al,2 jz two cmp al,3 jz three cmp al,4 jz four cmp al,5 jz five cmp al,6 jz six cmp al,7 jz seven cmp al,8 jz eight cmp al,9 jz ninezero: mov al,3fh out dx,al jmp end1 one: mov al,06h out dx,al jmp end

15、1two: mov al,5bh out dx,al jmp end1three: mov al,4fh out dx,al jmp end1 four: mov al,66h out dx,al jmp end1 five: mov al,6dh out dx,al jmp end1 six: mov al,7dh out dx,al jmp end1 seven: mov al,07h out dx,al jmp end1 eight: mov al,7fh out dx,al jmp end1 nine: mov al,6fh out dx,al jmp end1 end1: call

16、delay22 retcomp endpshowshedk proc ;显示阀门设定开度的子程序 mov ax,shedk mov cl,10 div clcomp1: push ax ;显示设定开度十位 mov dx,0f000h mov al,11011111b out dx,al pop ax call comp comp2: push ax ;显示设定开度个位 mov dx,0f000h mov al,11101111b out dx,al pop ax mov al,ah call comp retshowshedk endpshownowk proc ;显示阀门当前开度的子程序 m

17、ov ax,nowk mov cl,10 div cl comp3: push ax ;显示当前开度十位 mov dx,0f000h mov al,01111111b out dx,al pop ax call comp comp4: push ax ;显示当前开度个位 mov dx,0f000h mov al,10111111b out dx,al pop ax mov al,ah call compretshownowk endpshowshedy proc ;显示设定管道压力的子程序 mov ax,shedy mov cl,10 div cl comp5: push ax ;显示设定压力

18、十位 mov dx,0f000h mov al,11111101b out dx,al pop ax call comp comp6: push ax ;显示设定压力个位 mov dx,0f000h mov al,11111110b out dx,al pop ax mov al,ah call comp retshowshedy endpshownowy proc ;显示当前管道压力的子程序 mov ax,nowy mov cl,10 div cl comp7: push ax ;显示当前压力十位 mov dx,0f000h mov al,11110111b out dx,al pop ax

19、 call comp comp8: push ax ;显示当前压力个位 mov dx,0f000h mov al,11111011b out dx,al pop ax mov al,ah call compretshownowy endpbuz proc ;步进电机正转的子程序 mov dx,0f003h mov al,10000001b out dx,al mov dx,0f002h mov al,00010000b out dx,al call delay33 mov al,00100000b out dx,al call delay33 mov al,01000000b out dx,a

20、l call delay33 mov al,10000000b out dx,al call delay33 mov dx,0f003h mov al,10001001b out dx,al retbuz endp buf proc ;步进电机反转的子程序 mov dx,0f003h mov al,10000001b out dx,al mov dx,0f002h mov al,10000000b out dx,al call delay33 mov al,01000000b out dx,al call delay33 mov al,00100000b out dx,al call dela

21、y33 mov al,00010000b out dx,al call delay33 mov dx,0f003h mov al,10001001b out dx,al retbuf endp delay proc ;按键时的延迟 push bx push cx mov bx,1 delay1: xor cx,cx delay2: loop delay2 dec bx jnz delay1 pop cx pop bx ret delay endp delay22 proc ;显示的延迟 push cx push bx mov bx,1delay3: mov cx,08ffhdelay4: lo

22、op delay4 dec bx jnz delay3 pop bx pop cx ret delay22 endp delay33 proc ;步进电机的延迟 push cx push bx mov bx,1delay5: mov cx,0fffhdelay6: loop delay6 dec bx jnz delay5 pop bx pop cx ret delay33 endp end start3.5 模拟的实验结果、项目的结论调试结果表明,led数码管显示情况、按键输入情况、步进电机运转情况以及程序中所用到的数据皆正常,达到了预期目的。但若要应用于工程中,还有待改进。在工程实际中,阀

23、门开度的范围以及管道压力的范围应根据步进电机、阀门的具体规格、参数进行调试设定。当压力超出正常范围时应有报警装置,并紧急关闭阀门,等待维护人员处理。4 参考文献16/32位微机原理、汇编语言及接口技术(第2版)/钱晓捷,陈涛编著. 北京:机械工业出版社,2005.25 感言这次的微机原理项目对我来说是难忘的。从最开始拿到题目后的盲目,再到老师指点后的开始有思路,到最后坚持自己的想法把项目做完,这一路走来,我收获颇多。刚开始由于只有理论基础,缺乏对工程应用的了解,感觉自己很难下手,后面通过老师的指点,通过在网上查找资料,我渐渐了解了自己所做的项目,对于这么一个来源于工程实际的项目,在没有任何经验

24、的情况下要把它做好实属不易,但是本着熟练课本知识,增强实践经验的原则,我坚持用己所学、尽己所能,努力去完成该项目。在此过程中,经历了不少坎坷、失落,但正是这样的逆境才更能促使人进步。从整体方案的设计中我体会到了全面考虑问题的必要性,整体方案就像是一栋大楼的根基,一旦它有什么差错,那对后边的影响将是毁灭性的。从程序的编写中我意识到了思维严谨有多么重要,程序起到的是大脑的作用,一旦这个“大脑”出了什么问题,后果也不堪设想,可见,做一名优秀的编程人员有多么不易。另外,在程序调试的过程中尽可能的把程序的每一种状况都调试一下,要不厌其烦的去找问题,而不是只满足于一种状态的成功,因为,你所写的程序是要能经受得起工程实际中的考验的,在调试中出现错误比以后在工程实际中出错会好很多,这也是老师常在课堂上提到的编程人员应一切为用户考虑,对自己的程序要负起应有的责任。通过完成此次微机原理项目,我巩固了课本知识,在实践中加深了对所学知识的理解,同时也了解了本课程在工程中的是如何应用的,体会到了编程人员的艰辛。这样的项目对我来说是一笔宝贵的财富,相信对我今后的工作实践中会有很大帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1