《基于单片机的生产线糖果计数与包装控制.docx》由会员分享,可在线阅读,更多相关《基于单片机的生产线糖果计数与包装控制.docx(31页珍藏版)》请在三一办公上搜索。
1、燕山大学课 程 设 计 说 明 书题目: 基于单片机的生产线中的糖果计数与包装控制 学院(系): 电院自动化系 年级专业: 学 号: 学生姓名: 指导教师: 吴忠强 刘剑鸣 教师职称 教授 副教授 电气工程学院课程设计任务书课程名称: 微机控制课程设计 基层教学单位: 自动化系 指导教师: 学号学生姓名(专业)班级设计题目生产线中的糖果计数与包装控制设计技术参数对生产线上的糖果计数与包装进行控制,计数控制值可以任意设定,要求最大显示3位十进制数设计要求1说明书一份,不少于6000字(如打印用小四号字)。2说明书封面与内容需一致(打印或本人手抄)。3完成A3图纸一张。4鼓励学生进行创造性的设计和
2、发明。参考资料反馈控制理论、工厂电器、半导体变流技术、电力拖动及自动化、电子技术、计算机控制、制图、计算机原理、单片机原理及应用、电力电子技术、计算机操作系统、计算机控制系统等课程教课书及相关专业报纸、杂志和论文。周次第一周第二周应完成内容1、 定系统总体设计方案(包括方案的选择说明)。2、 选择系统控制变量和被控参数,检测与转换器件、控制器和执行器。3、选择计算机的类型,并对系统控制参数进行整定。1、完成计算机、外设及被控设备的连接、调试、检验和计算机软件编程。修正、改进系统的硬、软件设计。2、编写说明书一份,绘制A3图纸一张。3、完成课程设计考核,评分。指导教师签字基层教学单位主任签字说明
3、:1、此表一式三份,系、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。电气工程学院 教务科燕山大学课程设计评审意见表指导教师评语:成绩: 指导教师: 2014年 1 月 4 日答辩小组评语:成绩: 评阅人: 2014年 1 月 4 日课程设计总成绩:答辩小组成员签字:2014年 1 月 4 日 燕 山 大 学 课 程 设 计 说 明 书摘 要在工业生产中,常常需要对产品进行计数、装箱,像是生产线中的糖果计数与包装控制。如果用人工不但麻烦,而且效率低、劳动强度大。随着微机控制的普及,特别是单片机的应用,给该系统的设计带来了极大的方便。本论文设计了一种以AT89C5
4、1单片机为核心的流水线生产糖果计数及包装控制系统,可以对工业自动化生产流水线上的产品进行精确的计数和包装。为了读键盘给定值及检测和控制,专门扩展一个8255A可编程接口及程序存储器EPROM2732(4K*8 200ns可用紫外线擦除标准EPROM)。扩展的8255A的B口用于给定值或产品计数显示。对微型机控制装箱系统进行全面的论述和系统设计。关键词:计数;包装;自动控制;51单片机目录一、课题设计目的及要求31.1自动包装控制系统的设计意义31.2设计内容及功能要求3二、总体方案设计42.1控制方案列举分析及确定42.2自动装箱系统配置方案4三、控制系统硬件设计73.1微机系统硬件设计73.
5、2控制电路设计9四、软件设计134.1程序流程图134.2系统内存单元分配17五、电路仿真及程序书写17六、结论18参考文献19附录20一、 课题设计目的及要求在工业生产过程中,经常需要对流水线上的产品进行计数和包装,传统的人工方法不仅容易漏计、错计、劳动强度大、效率较低。本设计介绍一种AT89C51单片机为核心的流水线产品计数及装箱,可以对工业自动化生产流水线上的产品进行精确计数和装箱。1.1 自动包装控制系统的设计意义自动化水平在制造工业中不断提高,应用范围正在拓展。自动装箱的关键在于依据装箱过程,设计出一个能够得以实现自动控制的结构方案。具有革命意义的自动化浪潮改变着自动装箱的方方面面:
6、优秀的自动控制装箱系统,无论从提高产品质量和生产效率方面,还是从消除加工误差和减轻劳动强度方面,都能起到十分明显的作用。1.2设计内容及功能要求从上面分析论述,由系统功能要求、方案选择和设备配置,我们可以设计出一个自动装箱系统,其原理图如图1.1所示:检测器2检测器1传送带1传送带2图 1.1 产品自动装箱系统原理图在图1.1中,该系统带有两个传送带,及包装箱传送带和糖果传送带,在空包装箱传送带的中间装一检测控制器1,用以检测包装箱是否到位。糖果传送带将产品从车间传送到包装箱。当某一产品被送到传送带的末端,会自动落入包装箱内,并由检测器2转换成计数脉冲。二、总体方案设计2.1 控制方案列举分析
7、及确定在这个系统中,从上面对系统要求的分析中可以看出:生产过程中的机器按确定的先后顺序连续不断的进行开(ON)和关(OFF),所以为顺序控制。而顺序控制一般有下列几种控制方法:1) 继电器顺序控制(RLC) RLC的缺点是:线路复杂;触点的频繁开闭产生电磁干扰信号,降低了使用寿命,使可靠性大为降低;不能随意更改线路以适应其他用途。可见这种控制方案实现完全自动化较难,功能也较少,不适宜于本系统。2) 可编程序顺序控制器 这种顺控器将计算机通用灵活和继电器逻辑控制简单、操作方便、价格便宜的优点结合起来,被称为Programmable Logic Controller (可编程控制器),简称PLC。
8、3) 单片机:随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。 单片机具有体积小、成本低,性能稳定、使用方便、使用寿命长、功耗低等特点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的。综上所述,通过对各种控制方案的分析比较,再加上对本系统实际情况、功能要求的结合,我们可以看出,采用单片机实现控制的方案将容易实现。单片机控制系统功能强大、精度高、性能稳定可靠、使用方便、性价比高。所以采用
9、单片机控制系统来实现自动控制。2.2 自动装箱系统配置方案选定了单片机之后,为了实现自动装箱系统,然后开始进行硬件配置。2.2.1 单片机微型计算机类型及相应芯片的选择单片机类型:对于单片机的型号,由于系统不是特别复杂的较大型系统,我们在这里采用应用广泛、性能较高、这几年在我国非常流行的AT89C51单片机,它是由美国ATMEL公司开发生产的。由于系统需要较多接口,所以必须进行接口扩展,在这里由于系统不需扩展数据储存器(RAM)。采用有较多的I/O接口的8255A芯片而不采用8155芯片进行接口扩展。2.2.2 检测原理及传感器选择本系统所需的检测,判断的对象有:(1)判断空箱是否到位。判断空
10、箱是否到位的方法是利用传感检测器进行检测,有红外线探测器和光电传感器两,但红外线探测器由于是利用物体辐射接收信号,所以信号较弱不准确,而且红外线传感器价格较贵、易受干扰、成本也高;光电式传感器是以光电器件作为转换元件的传感器,光电检测方法具有精度高、应用快、非接触等优点,而可测参数多,光电传感器的结构简单,形式灵活多变因此,光电式传感器在检测和控制中应用非常广泛。可见利用光电式传感器进行检测较好。(2)判断箱子是否已装满产品。这里判断箱子是否已装满产品的方法采用产品进行计数:当数量达到要求时就做出箱子已装满的判断,计数的方法又有两种,即红外线照射和光敏电阻照射两种,如(1)的方法所述,所以我们
11、在这里采用光电传感器来进行信号检测。 2.2.3 输入输出设备的选择输入输出设备是指系统与各种人机之间的对话设备。(1)输入设备的选择输入设备有按钮、开关、键盘等,本系统由于不但需要开关,而且要输入数据,故可采用包括开始、停止两个命令功能键和数字等多个键的键盘来作为输入设备。(2)显示设备的选择本系统的较小型简单的显示设备有两种:采用发光二极管显示器LED(Light Emitting Diode)显示和采用液晶显示器LCD(Liquid Crystal Diode)显示。后者虽然有功耗小、体积小、重量轻的优点,但价格较高,多用于珍袖仪表和低功耗的系统中 。而在本系统中,为了降低产品成本、使显
12、示清晰容易辨认,而且对功耗和体积重量等捕捉很大要求,所以采用发光二极管显示器LED显示。 2.2.4 电机类型及其控制方案的选择由于对电机的控制输入的信号为开关量,传送动力不用很大,而且传送产品和箱子时需要精确定位,所以我们在这里采用由开关量控制的伺服同步电机。不需要可逆调速,所以选择交流电机,因为对箱子和产品的传送过程中都需要精确定位以便实现自动装箱,所以要求电机能快速停止,在此选择了220V交流伺服同步电机。由于在传动过程中,传送箱子的电机负荷较大,所以选用堵转力矩和转子惯量较大的HD18-1电机。由于对电机需要大电压来控制,而微机系统输出的开关量为不能直接用来驱动电机的低电平,还有也为了
13、提高系统的抗干扰能力,我们采用光电隔离技术。而对电机可以采用多种方法控制,如继电器、固态继电器(SSR)、可控硅(SCR)、电磁阀及大功率场效应管等。其中继电器是电气控制中最常用的控制器,但在控制时容易发生触点产生火花,并且因触点容易氧化而影响系统稳定性;而固态继电器输入电流小,输出无触点,与电磁式继电器相比具有体积小、重量轻、无机械噪声、无抖动和回跳、开关速度快、工作可靠等优点。故我们在这里采用无触点的固态继电器进行控制。 2.2.5 确定自动装箱控制系统总体方案由以上分析可得:本系统采用型号为8051的单片机及其8255A等系列芯片进行微机控制。采用STD标准总线作为系统总线。采用光电式传
14、感检测器进行检测信号。采用带有开始和停止命令功能键的编码键盘。采用LED显示器进行信号显示。采用220V交流电机进行同步伺服电机传送,产品传动采用堵转力矩可转子惯量较小的HD5-1电机、箱子传动选用堵转力矩可转子惯量较大的HD18-1电机,电机的控制则采用光电隔离接口和固态继电器进行控制。采用专用厂家生产的成品的开关电源 。只要达到下列要求即可:(1)电源具有足够的功率,以免满负荷或超负荷时发热严重,精度降低。(2)电源变压器将有良好的屏蔽并在电源入口处设置了交流稳压器和交流滤波器、分布式电抗等,以做好抗干扰、提高稳压和滤波效果。(3)要求能提供包括+5V等的多档次的电压。本系统结构框图如下:
15、三、 控制系统硬件设计 3.1 微机系统硬件设计硬件图说明为达到本系统功能,采用AT89C51单片机设计系统,为读键盘给定值,同时实行检测和控制,专门扩展一个8255A可编程接口,扩展的8255A的B口用于给定值或产品计数显示。其系统原理图如附录A所示。AT89C51、74LS373(8位I/O锁存器)、2732组成最小系统。其中各芯片及引脚说明如下:(1) AT89C51: 4K字节可编程FLASH存储器全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路(2) 825
16、5A :8255A基本特性:8255A是一个具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口的接口芯片,它是Intel系列CPU与外部设备之间提供TTL电平兼容的接口,如A/D、D/A转换器、键盘、步进电机以及需要同时两位以上信息传递的一切形式的并行接口;8255A能适应CPU与I/O接口之间的多种数据传送方式的要求;8255A可执行功能很强,内容丰富的两条命令(方式字和控制字)为用户根据外界条件来使用8255A构成多种接口电路提供了灵活方便的编程环境;8255A的PC口的使用比较特殊,除作数据口外,还可作状态口,进行按位控制等;(3)74LS373:8位输入8位输出锁存器
17、,引脚功能如下:VCC:接电源端;G:存储器允许信号; (4)开关电源: 开关电源选用+12V ATX电源。在整个开关接通期间,电源向负载提供能量;当开关断开时,输入电源便中断了能量的控制,输入电源向负载提供的能量是断续的。(5)光电传感器:光电传感器选用CH3系列。光电传感器的敏感范围远远超过了电感、电容、磁力、超声波传感器的范围,此外光电传感器的体积很小,而敏感范围很宽,加上机壳有很多样式,几乎可以到处使用。光电传感器的原理图如图3.1所示:3.2 控制电路设计 3.2.1 信号检测(数据采集)电路本系统的基本原理主要是单片机和光电检测技术的结合,经过分析,光电脉冲转换电路如图3.3所示,
18、BG1为光敏二极管,当光线照射BG1时,产生光电流,使R2上压降增大,导致晶体管导通,触发由晶体管BG2组成的射极耦合触发器,使U0为低位;反之,U0为高电位。该脉冲信号U0可送到计数电路计数。图3.1 电脉冲转换电路 3.2.2 电机控制电路的设计包装系统控制电路主要有两部分:一是信号检测,光电检测器1判断包装箱是否到位,光电检测器2用于装箱零件计数。再一部分就是传送带电机控制。下边主要介绍传送带电机控制。8255A的PC0控制传送带1的电机,PC1控制传送带2电机。当按下启动键(START)后,使PC0输出高电平,经反向后变为低电平,固态继电器KM发光二极管亮,因而使得KM主触点导通,交流
19、电机通电,使传送带1运动,带动包装箱运动。电机2同样原理。 3.2.3 显示电路设计本系统采用LED数码显示。发光二极管LED (Light Emitting Diode)是一种通电后能发光的半导体器件, LED数码显示器就是由发光二极管组合成的。发光二极管是组成LED发光二极管显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为7段(也有称作8段)发光二极管数码显示器。LED内部结构又有共阳极和共阴极两种接法,分别为高电平有效和低电平有效。其电路如下图3.5所示,采用LED接口电路由于个位数码管的显示段码是互相并联的,因此在同一时刻只能显示
20、同一种字符(即只显示一个显示位上的字符)。为了能够同时显示多个(即多位)字符,我们必须对LED采用动态显示方法,其方法就是利用人眼对视觉的残留效应,逐个地循环点亮各位数码管,每位显示1ms左右,使人看起来就好像在通的字符一样。图3.2 LED显示电路示意图除了要给显示器提供显示码段之外,还要对显示器进行位控制,即通常所说的“段控”和“位控”。因此对于多位LED数码显示器的接口电路来说,需要有两个输出口,其中一个用于输出显示段码;另一个用于输出位控信号。“位控”实际上就是对LED显示器的公共段进行控制,位控信号的数目与显示器的位数相同。这里的显示器位数为3位。 3.2.4 报警系统的硬件设计在这
21、里为了提高系统的可靠性及减少误操作,设计了一个报警系统。其报警方式采用蜂鸣器信号进行:我们用PC2、PC3这两个I/O口接线设计了两个状态指示灯以作为报警系统的输出硬件。图 3.3 报警电路图当系统没有设定值而启动START键时,或者当计数值超过给定值时,则蜂鸣器响,提醒操作者注意,需重新设置参数后启动。 3.2.5 给定值电路设计为了使系统简单,我们自行设计的一个由二极管矩阵组成的编码键盘,如图3.6所示。图3.4 编码键盘原理图键盘输出信号D、C、B、A (BCD码)接到8255A的A口PA3-PA0,键选通信号KEYSTROBE(高电平有效),经反向器接到89c51的中断管脚。当某一个键
22、按下去时,KEYSTROBE为高电平,经反相后的下降沿向89c51申请中断。89c51响应后,读入BCD码,作为给定值,并送显示。由于系统设计只有三位显示,所以最多只能给定999,输入顺序为从高位(百位数)开始。当按键未按下时,所有输出端均为高电平。当按键按下后该键的BCD码将出现在输出线上。例如,按下“6”键时,与键6相连的两个二极管导通,所以D、A线上为低电平,因此输出编码为0110,其余以此类推 。当任何一个键按下去时,四输入或非门7420产生一个高电平选通信号经反相器后向89c51申请中断。四、 软件设计 4.1 程序流程图 4.1.1 主程序的设计及其流程图通过上述分析可知,本系统键
23、盘的作用主要是给定值的输入。当给定值设定后,在包装过程中就没什么作用了。因此为了提高系统的实时性,系统采用中断方式作键盘处理,对装箱是否到位及产品数计数,则采用查询方法。整个系统流程图,如图4.1所示。中断程序主要用来设定给定值,当给定键盘有键按下时,KEYSTROBE输出高电平,经反相器后向89c51申请中断。在中断服务程序中,读入该键盘给定值,一方面存入相应的给定单元(PARTS和BOXES),另一方面送去显示,以便操作者检查输入的给定值是否正确。本程序输入的顺序是先输入包装箱数(3位,最大为999,按百、十、个位顺序输入),然后再输入每箱的零件数(3位,最大值为999,输入顺序同包装箱)
24、。完成上述任务的中断服务程序流程图如图4.1所示 。为了设计主程序和子程序的流程图,首先必须设置有关内存单元。这里用89c51内部RAM的20H单元的00H至03H四位分别代表电机1、电机2、报警和正常运行标志单元;用21H单元的08H和09H两位作为零件及包装箱计数标志单元。当计数值等于给定值时,则此两位标志单元置1,否则为0。一旦此标志单元为1,则停止计数,把装满的包装箱运走并重新运来一个空箱;若包装箱数已够,则重新开始下一轮包装生产控制过程。如果计数单元超过给定值,将产生报警,告知操作人员计数有误,此时系统自动停下来,等待操作人员处理。图4.1 包装控制系统主程序框图 4.1.2 动态显
25、示子程序流程图在这里我们采用的为以软件为主的LED接口电路,用软件进行译码,其流程图如图4.2所示。图4.2 动态显示子程序流程图 4.1.3 中断子程序流程图中断服务程序主要用来设定给定值,当给定键盘按下时,KEYSTROBE输出高电平,经反相器后向AT89C51申请中断 。在中断服务程序中,读入该键盘给定值,一方面存入相应的给定单元(PARTS或BOXES),另一方面送显示器,以便操作者检查输入的给定值是否正确。本程序输入的顺序是先输入包装箱数(三位,最大999,按百位、十位、个位顺序输入),然后再输入每箱装的产品数(三位,最大999,输入顺序同包装箱),完成上述任务的中断服务程序框图如图
26、4.3所示。图4.3 输入给定值中断服务程序图 4.1.4 报警子程序设计报警系统根据报警参数及传感器的具体情况又可分为硬件直接报警和全软件程序报警,前者的报警信号是直接通过硬件对被测参数和给定值进行比较而产生的,是在传感器中进行的,当这种硬件直接报警的信号产生之后再由软件进行处理,而后者则通过程序比较而得到信号并由软件完成报警处理系统主要是针对误操作做出报警,如当无给定值时就按STRART键等,而无需进行上下限参数的比较,故只需在微机中进行即可,故可采用全软件报警。其报警程序的设计可对计数单元进行比较而形成 。 4.2系统内存单元分配为了进行微机系统程序设计,首先需设置一些有关内存单元。这里
27、AT89C51内部RAM的20H单位的00H03H四位分别代表电机1、电机2、报警和正常运行标志单元;用21H单元的08H和09H两位作为产品及包装计数标志单元,当计数值超过给定值时,则此二位标志置1,否则为0。一旦标志单元为1,则产生报警,告知操作人员计数有误,此时系统会自动停止,等待操作人员处理。五、电路仿真及程序书写在PROTEUS绘制好原理图后,截图如下,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电
28、路检测、电路修改、软件调试、运行结果等。 用keil软件将此次课设的程序按照前面所介绍的顺序进行了书写。在书写过程中遇到了各种由于格式上出现的错误,开始时在运用汇编语言上有些生疏,但都一一克服了,直至运行没有错误。六、 结 论本系统采用AT89C51单片机,扩展了8255A接口,实现了流水线产品的自动计数和自动装箱。本系统优点是控制过程简单,操作方便。起动装箱电机1,使装箱沿着传送带向前移动。通过光电传感器1检测装箱是否到位,装箱到位后,停止电机1。起动电机2,使产品沿着传送带向前移动,产品一个一个下落时,通过光电传感器2的检测,将产生一系列脉冲信号,从检测器2输出的脉冲,由计算机计数,并不断
29、地与存在给定值单元中的给定值进行比较。如果产品数与给定值相等,则停止电机2。重复上述过程,直至包装箱数与给定值相等。本系统充分考虑了系统的性能和匹配问题,力求提高系统的可靠性,同时使其成本尽量低廉。缺点是产品和装箱的计数不能超过999,控制过程为顺序控制,其实际的操作可行性有待进一步的验证。 本论文是在自己不断寻找材料下完成的。论文从选题、实验研究到最后的成稿,得到了同学的热情鼓励和细心指导,在老师和诸多同学的帮助下,我顺利的完成了本次设计。在这里我要感谢老师和帮助过我的同学。在他们的帮助下,我在这次设计中学到了许多,可以说是受益非浅。设计伊始,黄老师就有针对性的对我们提出了设计要求和注意事项
30、,并对设计的各个环节流程及要点和难点做了详细的说明。而同班同学帮我解决了许多设计中遇到的细节上的小问题,还提供了很多相关的资料。在整个设计过程中,黄老师在各个环节都给予了细心的指导,小到资料的查询,大到疑难问题。在此深表感谢,感谢他对我的帮助,使我顺利的完成了这次设计,并从本次设计中学到了教学环节中没有学到的知识。在论文完成之际,深深感谢所有支持、鼓励和帮助过我的老师和同学。参考文献 1 周荷琴.微型计算机原理与接口技术M. 中国科学院技术大学出版社,2010. 2 刘辉.流水线产品计数及包装微机自动控制J. 计量与测量技术,2000,20(10A):5-14. 3杨立.微型计算机原理与接口技
31、术M. 北京:中国铁道出版社,2003.4彭楚武.微机原理与接口技术M. 湖南:湖南大学出版社,2005.5 李雪飞,范立南.计算机控制理论. 机械工业出版社,2009.6 罗亚非.单片机应用基础M. 北京:北京航空航天大学出版社,2005. 附录 程序清单该系统控制程序如下:ORG 0000HLJMP MAINORG 0003HLJMP KEYBOARDLED1 EQU 22H ;产品计数单元(百位)LED2 EQU 23H ;(十位)LED3 EQU 24H ;(个位)BOX1 EQU 25H ;包装箱计数单元(百位)BOX2 EQU 26H ;(十位)BOX3 EQU 27H ;(个位)
32、BOXES EQU 28H ;包装箱给定值首地址PARTS EQU 2BH ;产品给定值首地址TIMES EQU 2EH ;给定值次数计数单元BUFF EQU 2FH ;缓冲单元 ORG 0100H MAIN: MOV R0,#22H MOV A,#00H MOV R1,#0DH ;22H2FHCLRZERO: MOV R0,A ;清计数、给定值单元 INC R0 DJNZ R1,CLRZERO MOV 20H,#00H MOV 21H,#00H MOV DPTR,#7FF3H ;8255控制寄存器地址 MOV A,#98H ; B 口输出,A口、C口高四位输入 MOVX DPTR,A ;82
33、55方式字写入 SETB IT0 ;设置边沿触发方式 SETB EX0 ;设置中断方式0 SETB EA ;开总中断 WAIT: MOV A,TIMES ;等待设置给定参数 CJNE A,#06H,WAIT ;判断是否输入完给定值 MOV TIMES,#0HWORK: SETB 00H ;启动传送带电机1 SETB 03H ;工作正常指示灯 MOV A,20H ;启动电机1和正常指示灯 MOV DPTR,#7FF2H ;连接电机地址 MOVX DPTR,ALOOP1 : MOVX A,DPTR JNB ACC.7,LOOP1 ;判断包装箱是否到位 MOV LED1,#00H ;清产品计数单元
34、MOV LED2,#00H MOV LED3,#00H LCALL DISPLAY ;显示产品数 CLR 00H ;停箱子传送带电机 SETB 01H ;启动产品传送电机 MOV A,20H MOV DPTR,#7FF2H MOVX DPTR,ALOOP2: MOV DPTR,#7FF2H MOVX A,DPTR JNB ACC.6,LOOP2 ;判断是否有产品 JNB ACC.4,STOP ;判断是否按下停止键 LCALL PORTADD1 ;产品加1 LCALL DISPLAY ;显示已装入的产品数 LCALL PORTCOMP ;与给定值比较 JB 08H,FULL ;已装满 AJMP
35、LOOP2 ;未装满,继续装入FULL: LCALL BOXADD1 ;包装箱数加1 LCALL BOXCOMP ;看是否已装够箱数 JB 09H,FINISH ;如果箱数已装够,则结束 JNB ACC.4,STOP LJMP WORK ;否则将继续换新箱包装FINISH: CLR 00H ;全部装完,即可继续包装 CLR 01H MOV A,20H MOVX DPTR,A MOV BOX1,#00H MOV BOX2,#00H MOV BOX3,#00HLOOP3: MOV DPTR,#7FF2H ;判断是否重新启动 MOVX A,DPTR JB ACC.5,LOOP3 LJMP WORK
36、;在进行下一轮包装;停止键处理程序:STOP: CLR 00H ;停止传送电机 CLR 01H MOV A,20H MOVX DPTR,A LJMP MAIN ;转主程序,等待输入新的给定值;中断服务子程序,设置给定值: KEYBOARD: MOV DPTR,#7FF0H MOVX A,DPTR MOV 30H,A L1: MOV DPTR,#SEGTBL MOVC A,A+DPTR ;取显示码 MOV DPTR,#7FF1H MOVX DPTR,A MOV DPTR,#4000H MOVX DPTR,A LCALL DELAY MOV DPTR,#7FF0H MOVX A,DPTR CJNE
37、 A,30H,L1 MOV R0,A INC R0 INC TIMES RETI ;显示产品数字程序:DISPLAY: MOV A,LED1 ;取要显示的数 MOV DPTR,#SEGTBL MOVC A,A+DPTR ;取显示码 MOV DPTR,#7FF1H MOVX DPTR,A ;B口输出到数码管 MOV DPTR,#4000H MOVX DPTR,A ;百位位选码地址 ACALL DELAY ;显示百位 MOV A,LED2 MOV DPTR,#SEGTBL MOVC A,A+DPTR MOV DPTR,#7FF1H MOVX DPTR,A MOV DPTR,#2000H MOVX DPTR,A ACALL DELAY ;显示十位 MO