某生产线控制系统设计课程名称:微机原理及应用三级项目班级:13级工设(1)班学号:130110050022姓名:王志辉指导教师:王志松赵玉勤张庆玲唐艳华朱学军王鑫2016年5月17日目录1摘要 (3)2前言 (3)3正文 (4)3.1项目要求 (4)3.2模拟方案 (4)3.3流程图 (5)3.4接线图 (5)3.5程序代码 (7)3.6实验结果分析 (13)4 感想 (13)5 参考文献 (13)1摘要在计算机星研调试系统环境下,成功实现了某生产线控制系统设计及运行调试。
通过实验箱上的各部分硬件系统,模拟工程实际中的各个环节:8255和138译码器控制工位(发光管代替)切换和工位启停;1953脉冲及8253准确计时;8155控制数码管显示已完成数和已误工次数;蜂鸣器和逻辑笔发出故障警报;8255控制点阵,显示生产线状态。
2前言随着科学技术的发展,工业机械化程度也逐步加深,这不仅为企业,更为社会创造了丰厚的利润。
为了实现生产要求,现通过微机控制整个流水线作业不仅可以节约人力,还能提高生产效率,降低生产成本。
在本控制系统设计中,5个发光管代表现实生产中的5个工位,其亮灭表示实际生产中是否工作;八位数码管的低四位显示实际生产中工件完成个数,高四位显示故障发生次数。
利用定时芯片8253、并口芯片8155与8255A、1953脉冲、八位数码管、138译码器、发光管、蜂鸣器、逻辑笔及8*8点阵模块实现生产要求。
3正文3.1项目要求某生产线用于装配某机械产品,总共有5个工位,分别为A、B、C、D、E 要求使用微机控制,总计45秒完成一个产品的装配。
A、B、C、D各需要8秒,E工位需要13秒。
其中E工位是关键控制工位,如果在E工位没有按照要求的时间完成就要将A工位暂停,直到E工位完成后给A一个完成信号重新启动A 工位。
要求记录完成的工件数和生产线发生故障的次数并显示。
3.2模拟方案一、考虑用8255作为输入与输出的基本接口,同时,由于需要计时,选用8253作为计时器。
五个工位分别用五个灯亮来代替,用8253的一个计数器实现灯持续亮8秒或13秒。
二、为了表示A、B、C、D、E五个工位的运行情况,选用四个别发光二极管来显示,A、B、C、D、E五个工位进行时,分别对应五个灯亮,其他灯均灭(例如,B工位进行时,B灯亮,其他各灯均处于熄灭状态)用8255A的一个端口(A 口或B口)控制发光二极管的亮灭。
三、由于按八小时工作制计算,一天最多生产的工件数不多于3位数,所以用数码管的前四位记录工件数,用数码管后四位记录故障数。
故可选取8255的A口或B口作为位码或段码的输出接口,并由138译码器的8个输出引脚控制数码管的段码或位码。
四、8255可以通过C口的三个引脚与138译码器相连,来控制138译码器的输出。
五、误工信号的控制可以用一个误工开关和一个误工信号来实现。
故障通过由人控制开关的通断来实现开关的状态需通过8255读入计算机,故可以使8255的C口的某一个引脚与开关相连。
3.3流程图3.4接线图原理图:实物接线图:3.5程序代码stac segment stackdb 100 dup(0)stac endsdata segmentledtb db 3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fhjishu1 db 0jishu2 db 0ge1 db 0shi1 db 0bai1 db 0ge2 db 0shi2 db 0bai2 db 0data endscode segment 'code'assume cs:code,ds:data,ss:stacstart: mov ax,datamov ds,axmov al,81h ;设定8255的工作方式工作方式为方式0 A口,b口输出c口下部输入上部输出mov dx,0f003h ;控口地址out dx,almov al,11111111b ;灯全灭mov dx,0f000hout dx,almov al,11111111b ;数码管不显示mov dx,0f002hout dx,almov al,01110000b ;设定8253的1端的工作方式mov dx,0e006hout dx,alagain: mov al,11111110b ;工位Amov dx,0f000hout dx,alcall delay3 ;1号灯亮8秒again1: mov dx,0f002hin al,dxtest al,00000001bjz again1mov al,11111101b ;工位Bmov dx,0f000hout dx,alcall delay3 ;2号灯亮8秒again2: mov dx,0f002hin al,dxtest al,00000001bjz again2mov al,11111011b ;工位Cmov dx,0f000hout dx,alcall delay3 ;3号灯亮8秒again3: mov dx,0f002hin al,dxtest al,00000001bjz again3mov al,11110111b ;工位Dmov dx,0f000hout dx,alcall delay3 ;4号灯亮8秒again4: mov dx,0f002hin al,dxtest al,00000001bjz again4mov al,11101111b ;工位Emov dx,0f000hout dx,almov al,2dh ;计时mov dx,0e002hout dx,almov al,63hmov dx,0e002hout dx,alagain5: mov dx,0f002hin al,dxtest al,00000001bjz again5 ;5号灯亮13秒mov dx,0f002h ;判断是否误工in al,dxtest al,00000100bjnz disp1again6: mov al,01101111b ;发出误工信号8号灯亮五号灯继续亮mov dx,0f000hout dx,almov dx,0f002hin al,dxtest al,00000100bjz again6mov al,11111111b ;取消误工信号灯全灭mov dx,0f000hout dx,alinc jishu2 ;故障数加一disp1: mov al,11111111bmov dx,0f000hout dx,alinc jishu1 ;工件数加一call shuzhi ;调用计算各个位的子程序again7: call leddisp ;调用数码管显示子程序jmp again ;给A工位信号开始加工mov ax,4c00hint 21hshuzhi proc ;计算各个位上的数值push axpush bxpush cxpush dxwei1:xor ax,axmov al,jishu1 ;判断jishu1是几位数cmp al,100ja thr1 ;三位数cmp al,10ja two1 ;两位数one1: mov ge1,al ;一位数jmp wei2two1: mov dl,10 ;计算各个位上的数值div dl ;用除法计算各个数值mov shi1,almov ge1,ahjmp wei2thr1: mov dl,100div dlmov bai1,almov al,ahmov dl,10div dlmov shi1,almov ge1,ahwei2: xor ax,axmov al,jishu2cmp al,100ja thr2cmp al,10ja two2one2: mov ge2,aljmp wei3two2: mov dl,10div dlmov shi2,almov ge2,ahjmp wei3thr2: mov dl,100div dlmov bai2,almov al,ahmov dl,10div dlmov shi2,almov ge2,ahwei3: pop dxpop cxpop bxpop axretshuzhi endpleddisp proc ;数码管显示push axpush bxpush cxpush dxmov bx,offset ledtb ;取ledtb的段首偏移地址lnum1: mov al,bai1 ;输出百位xlatmov dx,0f001hout dx,almov al,00111111bmov dx,0f002hout dx,alcall delay ;延时mov al,shi1 ;输出十位xlatmov dx,0f001hout dx,almov dx,0f002hmov al,01011111bout dx,alcall delay ;延时mov al,ge1 ;输出个位xlatmov dx,0f001h ;b口输出数码管要显示的数值out dx,almov dx,0f002hmov al,01111111bout dx,al ;138译码器控制要显示的位call delaylnum2: mov al,bai2xlatmov dx,0f001hout dx,almov al,10111111bmov dx,0f002hout dx,alcall delaymov al,shi2xlatmov dx,0f001hout dx,almov dx,0f002hmov al,11011111bout dx,alcall delaymov al,ge2xlatmov dx,0f001hout dx,almov dx,0f002hmov al,11111111bout dx,alcall delaypop dxpop cxpop bxpop axretleddisp endpdelay proc ;时间延迟程序push bxpush cxmov bx,50hdelay1: mov cx,1000hdelay2: loop delay2dec bxjnz delay1pop cxpop bxretdelay endpdelay3 proc ;加工延时8秒子程序push axpush dxmov al,08hmov dx,0e002hout dx,almov al,3dhmov dx,0e002hout dx,alpop dxpop axretdelay3 endpcode endsend start3.6实验结果分析1、过程分析调试过程出现了很多问题:数码管显示子程序,按照书上例题编写程序然后进行调试不能出现预想的结果,经过多次探索新实验,从中总结了数码管显示的一些经验——先位选后端选数码管才能正常显示,时间控制开始采用日时钟的调用,在试验箱上无法实现,好来改为8253控制时间。