燕山大学微机原理项目汇报

生产线控制系统的计算机控制技术的实现 课程名称:微机原理 指导教师:李艳文2012 (燕山大学车辆与能源学院) 要:在计算机星研调试系统环境下,成功实现了某生产线控制系统设计及运行调试。668.com_【官方首页】-精彩网通过实验箱上的各部分硬件系统,模拟工程实际中的各个环节:8255 和138 译码器控制工位(发光管代替)切换和 工位启停;1953 脉冲及8253 准确计时;8155 控制数码管显示已完成数和已误工次数;蜂鸣器和逻辑笔 发出故障警报;8255 控制点阵,显示生产线状态。 随着科学技术的发展,工业机械化程度也逐步加深,这不仅为企业,更为社会创造了丰厚的利润。为了实现生产要求,现通过微机控制整个流水线作业不仅可以节约人力,还能提高生产效率,降 低生产成本。在本控制系统设计中,5 个发光管代表现实生产中的5 个工位,其亮灭表示实际生产中是 否工作;八位数码管的低四位显示实际生产中工件完成个数,高四位显示故障发生次数。668.com_【官方首页】-精彩网利用定时芯片 8253、并口芯片8155 与8255A、1953 脉冲、八位数码管、138 译码器、发光管、蜂鸣器、逻辑笔及8*8 点阵模块实现生产要求。 项目题目概述及要求1.1 题目概述 某生产线用于装配某机械产品,总共有5 个工位,分别为A、B、C、D、E 要求使用 微机控制,总计45 秒完成一个产品的装配。668.com_【官方首页】-精彩网A、B、C、D 各需要8 其中E工位是关键控制工位,如果在E 工位没有按照要求的时间完成就要将A 工位暂停, 直到E 工位完成后给A 一个完成信号重新启动A 工位。要求记录完成的工件数和生产线 发生故障的次数并显示。 1.2 题目要求 1、工位准确计时(8S 与13S) 2、检测E 工位是否误工 3、发出误工警报 4、记录并显示完成工件数 5、记录并显示已误工次数 项目的模拟方案2.1 利用试验箱设计模拟方案 工位的表示:用138译码器控制发光管代替。 2、工位准确计时(8S 与13S):使用8253 及1953 脉冲。 3、检测E工位是否误工:用开关代替,误工输入低电平,正常输入高电平,用8255 检测。 4、误工警报:蜂鸣器响(警报1)、逻辑笔红灯亮(警报2) 5、记录并显示完成工件数:使用数码管低4 位表示,8155 控制。 6、记录并显示已误工次数:使用数码管高4 位表示,8155 控制。 7、显示设备生产线工作状态:8255 控制8*8 点阵显示‘x’ 2.2 模拟方案所涉及到得硬件 8255 芯片、8155 芯片、138 译码器、数码管、1953 脉冲、8253 芯片、发光二极管、 蜂鸣器、逻辑笔、点阵(由于管脚不够用,只用了8*8 显示)。 2.3 电路图 图1、电路图一 说明:8255的PA 口接点阵行控制口,PB 口接列控制口(16*16 点阵的另一列控制口接地), PC0-PC2 口接138 译码器的ABC 输入口,PC4 口接误工开关;138 译码器的Y0-Y7 输出口接发光管的控 制口;8253 的CLK0 接1953 脉冲,OUT0 接8255 的PC4 口;蜂鸣器和逻辑笔直接接到误工开关上。 说明:8155的PA 口接数码管的位控制端口,PB 口接数码管的段控制端口。 2.4 实验连线图 图3、实验连线图 3.1控制流程图 图4、控制流程图 灯亮13S(E工位) 判断误工 工位)蜂鸣器响(警报1) 逻辑笔红灯亮(警报2) 点阵显示X(设备状态) YES 已误工次数加1YES 总工件数加1 JMP 开始 3.1详细程序 .model small .stack .data LED db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh bvar db ;存数字bvar1 db dup(?);存要显示的数字代码 number dw 0,0 .code start: mov dx,0f003h mov al,88h ;8255 工作在方式0,A 口输出,B 口输出,C 高四位输入,低四位输出out dx,al mov dx,0f002h mov al,11111111b ;灯全灭 out dx,al mov al,00110000b ;设定8253 端的工作方式mov dx,0d003h out dx,al movdx,0f002h 工位工作mov al,11111000b out dx,al call delay2 movdx,0f002h 工位工作mov al,11111001b out dx,al call delay2 movdx,0f002h 工位工作mov al,11111010b out dx,al call delay2 movdx,0f002h 工位工作mov al,11111011b out dx,al call delay2 movdx,0f002h 工位工作mov al,11111100b out dx,al call delay3 xor cx,cx guz: call xians 工位工作出故障inc cx mov dx,0f002h al,00010000bcmp al,0 ;判断PC4 的电平高低 jnz next1 mov dx,0f001h ;8*8LED 点阵显示程序段 mov al,10000001b ;列>>>>PA 口接行,PB outdx,al mov dx,0f000h mov al,01111111b outdx,al call delay mov dx,0f001h mov al,01000010b outdx,al mov dx,0f000h mov al,10111111b outdx,al call delay mov dx,0f001h mov al,00100100b outdx,al mov dx,0f000h mov al,11011111b outdx,al call delay mov dx,0f001h mov al,00011000b outdx,al mov dx,0f000h moval,11101111b outdx,al call delay mov dx,0f001h mov al,00011000b outdx,al mov dx,0f000h mov al,11110111b outdx,al call delay mov dx,0f001h mov al,00100100b outdx,al mov dx,0f000h mov al,11111011b outdx,al call delay mov dx,0f001h mov al,01000010b outdx,al mov dx,0f000h mov al,11111101b outdx,al call delay mov dx,0f001h mov al,10000001b outdx,al mov dx,0f000h mov al,11111110b outdx,al jmp guz next1: dec cx jz next12 inc word ptr number[2] ;故障次数记录 next12: mov dx,0f001h mov al,00000000b ;列>>>>使点阵不亮 out dx,al mov dx,0f000h moval,11111111b outdx,al call delay mov dx,0e100h ;8155 方式控制口 mov al,03h ;8155A 口输出,B 口输出 out dx,al zi2: inc word ptr number[0] ;正常工件次数 call jishu jmp jishuproc ;计数子程序,二进制变十进制,得到要显示的代码表 push ax push si push dx push bx push di mov ax,number[0] ;低四位数存入bvar mov si,0 mov dx,0 mov bx,10 again: mov dx,0 div bx ;存余数 mov bvar[0+si],dl ;无符号数除法,低位存商,高位存余 inc si cmp ax,0 jnz again mov ax,number[2] ;高四位数存入bvar mov si,0 mov dx,0 mov bx,10 again1: mov dx,0 div bx ;存余数 mov bvar[4+si],dl inc si cmp ax,0 jnz again1 leabx,LED ;低四位数每位对应段码存入bvar1 mov cx,4 mov di,0 again2: mov al,bvar[0+di] xlat ;换码为显示代码:AL=DS:[BX+AL] mov bvar1[0+di],al inc di loop again2 ;循环4 z1:cmp byte ptr bvar1[di-1],3fh jnz next2 ;最高位和0 比较,是0 就不显示 mov byte ptr bvar1[di-1],0 dec di jmp z1 next2: lea bx,LED ;高四位数每位对应段码存入bvar1 mov cx,4 mov di,0 again3: mov al,bvar[4+di] xlat mov bvar1[4+di],al inc di loop again3 z2: cmp byte ptr bvar1[di+3],3fh jnz nz2 mov byte ptr bvar1[di+3],0 dec di jmp z2 nz2: pop di pop bx pop dx pop si pop ax ret jishu endp xians proc ;显示子程序,依次显示存入数据的每一位 push cx push si push bx 10 push ax push dx mov cx,8 mov si,0 mov bl,0feh ;位选,显示D0 again21:mov dx,0e102h moval,bvar1[si] out dx,al mov dx,0e101h moval,bl out dx,al call delay inc si rol bl,1 ;依次显示每一位 loop again21 pop dx pop ax pop bx pop si pop cx ret xians endp delay proc ;显示延时子程序 push cx push bx mov cx,14h d1: mov bx,10h d2: dec bx jnz d2 loop d1 pop bx pop cx ret delay endp delay2 proc ;8s 延时子程序 push ax 11 push dx mov dx,0d000h mov ax,3d08h out dx,al mov al,ah out dx,al del: call xians mov dx,0f002h al,dxtest al,00100000b jz del pop dx pop ax ret delay2 endp delay3 proc ;13s 延时子程序 push ax push dx mov dx,0d000h mov ax,632dh out dx,al mov al,ah out dx,al del1: call xians mov dx,0f002h al,dxtest al,00100000b jz del1 pop dx pop ax ret delay3 endp end start 12 程序调试情况及运行结果分析4.1 实验中遇到的问题 1、制定出实验的大致方案来后,发现仅用8255 芯片,I/O 接口不够用。后来通过查 资料发现8155 和8279 也可以做并行接口,最终选定了8155。 2、实验程序调试过程中,若程序采用连续单步运行,运行效果正常;若全速运行, 而运行结果却不正常。后来仔细研读实验程序,发现子程序调用和循环有问题,改正后, 效果良好。 3、当8255 的PA 口接点阵行控制口,PB 口接列控制口,而16*16 点阵的另一列控 制口未接地时,点阵的同行点阵全亮。后来将16*16 点阵的另一列控制口接地,就只有 所选用的8*8 点阵显示了。 4、将16*16 点阵的另一列控制口接地时,若将每个排针分别用单根导线接地,则接 线多而复杂。为了解决这一问题,自制了一个排线,效果很好。 5、在用电脑绘制电路图时,先是用了EWB、MAXPLUS-和Mulitisim,但这三个 软件中都没有Intel 芯片,最终选用了Protel 99 顺利将电路图画出。668.com_【官方首页】-精彩网但复印店没有Protel 软件,不能打印。后来先生成PDF 文件,再打印。 图4、自制排线照片 13 4.2 运行结果分析 在控制连续生产的实验过程中,实验结果为:指示灯A、B、C、D 依次分别亮8 然后灯E亮13 秒,若误工开关为高电平则误工信号不起作用;若E 工位在13 秒末未能 完成,就会打开误工开关,蜂鸣器和逻辑笔的红灯就会发出警报,13 秒时检验误工开关, 点阵显示‘X’(生产线工作状态为故障),在软件内部误工次数会增加1。668.com_【官方首页】-精彩网周期结束时八 位数码管的低四位计工件完成数目,高四位显示已误工次数。然后进行下一工件的装配。 运行结果如下图所示: 图5、运行结果照片一 14 图6、运行结果照片二 心得体会经过两周的努力,我的项目终于顺利完成,实验证明我所设计的方案可以满足生产 要求。 通过此次项目设计,我们更好的复习和巩固了课本所学习到的知识,并能灵活运用。 不仅提高了我们应用汇编语言的编程能力,而且加深了我们对硬件芯片接口的认识,懂 得了软件和硬件的联系,清楚了芯片的使用方法。 在项目设计中,锻炼了我们的自学能力和通过网络获取知识的能力。在以后的工作 中,需要用到的知识不一定都是我们学过的,但是我们可以借助发达的网络查找我们所 需的知识。 通过这次项目设计,提高了我们的动手能力。在实验中,为了不损坏试验箱的排针 和排线,我开动脑筋,自制了一个排线。在以后工作中,我们需要的工具不一定有成品, 这就需要我们自己制作。 通过这次项目设计,我熟练掌握了如何检测试验箱的各元件及芯片模块能否正常工 作。对于元件,可以根据元件特性,相应接高低电平,检测元件是否正常;对于芯片, 可以编写小的程序,检测芯片是否正常。 15 在项目设计中,我学会了如何写大程序已经如何进行调试修改程序错误。在庞大的 程序存在问题时,我们应该将程序按照功能分成几块,一点点修改。例如在写点阵显示 程序时,我先编一个小程序,调试效果后,再写入大程序中。 通过这次项目设计,我发现显示的延时程序并不固定,需要我们根据显示结果一点 点调整延时程序,才能使得显示效果最好,亮度最高。 在项目设计中,从拿到题目不知如何下手,到从下午四点到晚上八点一直在找“为 什么程序采用连续单步运行,运行效果正常;若全速运行,而运行结果却不正常”,我 深深感到:前面越是困难,我们越要冲上去!而每克服一个困难,我就成长了一些。所 以,不要畏惧困难!而应为没有困难感到不安! 这次项目设计,学校只给安排了7 次课,而我们课下去机房以及在图书馆看书的时 间远远超过这些时间。我感觉:大学的课堂只是引导作用,我们大部分的时间与努力应 在课下。 在我们项目设计的过程中,老师一直陪伴着我们,在机房为我们解决疑问。有时候 都晚上七点多了,老师还没回家吃晚饭。我们能做出项目,离不开老师的精心指导。谢 谢老师! 我还深刻的意识到:作为在校大学生,不论是从知识还是能力上,我们都存在不足 之处,因此,我们迫切地需要拓宽自己的知识面,提高自我能力。知识和实践相辅相成, 我应该力求在这两方面都努力提高自己,使自己的综合素质有所提高。 总之,此次项目设计让我受益匪浅。感谢学校给我们安排这次项目设计!更感谢老 师的精心指导! 参考文献: 《16/32位微机原理、汇编语言及接口技术》. 第二版,北京:机械工业出版社,2007

暂无简介

文档格式:
.doc
文档页数:
16页
文档大小:
17.62M
文档热度:
文档分类:
通信/电子  --  数据通信与网络
文档标签:
mov 微机 工位 bvar 口接 误工 最多10项 之间用 分割

更多>> 相关文档

页面底部区域 foot.htm