基于单片机的自动加料机控制系统

来源:本站
导读:目前正在解读《基于单片机的自动加料机控制系统》的相关信息,《基于单片机的自动加料机控制系统》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于单片机的自动加料机控制系统》的详细说明。
简介:本设计是基于AT89C51的自动加料系统没有外扩ROM和RAM,程序直接放在AT89C51内部闪存中。设定数据通过串行口存入2864A中,另外,系统从硬件和软件方面采取了抗干扰措施。

压电元件施加交变电场,靠逆压电效应产生机械力作用在叉体上。用另外一组压电元件的正压电效应检测振动,它把振动力 为微弱的交变电信号。再由电子放大器和移相电路,把检振元件的信号放大。经过移相,施加到驱动元件上去,构成闭环振荡器。在这个闭环中,既有机械能也有电能,叉体是其中的一个环节,倘若受到物料阻尼难以振动,正反馈的幅值和相位都将明显的改变,破坏了振荡条件,就会停振。只要在放大电路的输出端接以适当的器件,不难得到开关信号。

为了保护压电元件免受物料损坏和粉尘污染,将驱动和检振元件装在叉体内部,经过金属膜片传递振动。如果在容器的上下方都装叉体,可以实现自动进料或自动出料的逻辑控制,或者把料位越限信号远传到控制室。在控制室里的控制电路判断料位是否越限,并按要求使被控的进出料设备启停。

并且叉体的制造和装配良好时,音叉也可用于液体测量和控制。在测量时不需要大幅度的机械运动,驱动功率小,机械结构简单、灵敏而可靠。

系统采用LD-YC/YG 型 音叉式物位限位开关

基于单片机的自动加料机控制系统

LD-YC/YG型音叉式物位限位开关作为一种新型的物位传感器,具有安装简单,不用标定,搅动、气泡对测量无影响等优点。在未来工业过程中将全面取代如浮球液位开关等落后的检测方式广泛应用于各行各业。

原理

传感器安装于仓的顶部或仓的侧壁上。音叉由压电晶体驱动产生振动,当叉体被液体浸没或被物料埋没时振动频率发生变化。这个变化由电子电路检出并输出一个开关量用于报警或控制。

适用范围

中等粘度、腐蚀性液体。流动性好的粉状物料和颗粒状物料。

禁用范围

高温、高粘度液体。高温、易结垢固体、块状物料。

主要技术指标

[YC 部分]

供电电压:直流 24V 或 10-55V (防爆型用 DC 24V)

交流 25-250V 50Hz

工作温度:叉体 -40-80℃ 仪表 -20-45℃

输出方式:

直流24V 供电时为继电器输出(AC 220V 1A)

直流10-55V 供电时为集电极开路输出(350mA

防爆型产品≤50mA)

交流25-250V 供电时为两线制输出(220V

4.4W-77W)

功 耗:直流供电时 0.25W(DC 24V)

交流供电时 1.5W(AC 220V)

安装方式:G1 管螺纹

防爆标志:本安 iaⅡBT4 隔爆型 dⅡBT4

[YG 部分]

供电电压:直流 24V 或 18-55V

交流50-250V 50Hz

工作温度:叉体 -40-150℃ 仪表 -20-70℃

输出方式:

直流24V 供电时为继电器输出(AC 220V 1A)

直流18-55V 供电时为集电极开路输出

(350mA)

交流50-250V 供电时为两线输出(220V

350mA 防爆型产品≤50mA)

功 耗:直流供电时 0.25W(DC 24V)

交流供电时 1.5W(AC 220V)

安装方式:G1.5 管螺纹

第四章 系统的抗干扰及可靠性

单片机系统供电线路是干扰的主要来源,电源采用隔离变压器接入电网,隔离变压器在初级和次级之间加了一层屏蔽层。交流接触器是继电器控制的,在紧靠交流接触器的输入端口并上一个电阻和电容串联的电路滤去高次谐波。每个集成电路芯片的电源和地之间要并上0.1基于单片机的自动加料机控制系统F的陶瓷电容。在输入输出通道上要加光藕P521。除了在继电器通道上外,两个满料信号也要经过P521光藕才送至 INT0、INT1。另外,数字地和模拟地要分开,数字地线要粗而短。

软件抗干扰方面,本系统采用指令冗余和软件陷阱。当CPU受到干扰后,会把一些操作数当作指令码来执行,引起程序混乱。由于当PC指针飞到单字节指令上时,会自动步入正轨。因此我们在程序中人为地在 RET、RET1、LCALL、LJMP、AJMP、DJZE、JZ、CJNE 等处插入一些单字节指令(NOP)。并在继电器开闭指令 SET、CLR前插入两条NOP指令。同时,当程序飞到ROM中未使用的非程序区时,非程序区要能捕获PC指针并强行拉到处理故障程序中。所以非程序区要每隔一段设置一个软件陷阱。软件陷阱

由三条指令构成:

NOP

NOP

LJMPERROR

ERROR 处理过程放在 0030H

开始处

第五章 软件设计

基于单片机的自动加料机控制系统 程序设计包括主程序、中断程序、故障处理程序,系统中用到了两个定时器中断:定时器0每隔1.2s使P1.7产生脉冲信号;定时器1产生1s的定时,使LED显示递减。故障处理程序使PC指针跳回到原来起动的相应程序段;主程序完成内部RAM数据区初始化、8255初始化,并根据按键信号跳转到想应程序段。

基于单片机的自动加料机控制系统基于单片机的自动加料机控制系统

第六章 结论语

本设计是基于AT89C51的自动加料系统没有外扩ROM和RAM,程序直接放在AT89C51内部闪存中。设定数据通过串行口存入2864A中,另外,系统从硬件和软件方面采取了抗干扰措施。

但是在物体送到料斗式干燥机后没有设计如何把物体从干燥机排除来,如果考虑到这一点,那设计就更加完美了。

附录A:系统框图

基于单片机的自动加料机控制系统

附录B:系统硬件框图

基于单片机的自动加料机控制系统

程序清单:

ORG

LJMP IINT0

ORG 0080H

MAIN:MOV SP,#60H

MOV PSW,#00H

MOV 71H,#14H

MOV 72H,#

MOV 73H,#00H

MOV 74H,#00H

MOV 75H,#00H

MOV 76H,#00H

MOV TMOD,#01H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB TR0 ;,开中断

SETB EA

SETB ET0

JMCGS:JMB P1.2,KK

NOP

NOP

JB P1.2,KK

NOP

MOV 70H,#01H

KK:LJMP JMCGS ;等待中断

ORG 0100H ;中断服务子程序

IINT0:PUSH A ;入栈保护

PUSH PSW

CLR EA ;关中断

CLR TR0

DJNZ 71H,ZDFH ;不到2秒直接中断返回

MOV A,70H

MOV B,72H

MVL AB

MOV R6,B

MOV R5,A

MOV R2,#02H

LCALL CHUFA

MOV 73H,R5

LCALL KZCX

MOV 74H,73H

ZDFH:SETB EA ;开中断

SETB ET0

MOV TMOD,#01H 0重新赋初值

MOV TL0,#0B0H

MOV TH0,#3CH

SETB TR0

POP PSW ;出栈

POP A

RETI ;中断返回

CHUFA:MOV R7,#08H

CHU1:CLR C

MOV A,R5

RLC A

MOV R5,A

MOV A,R6

RLC A

MOV 07H,C

CLR C

SUBB A,R2

JB 07H,CHU2

JNC CHU2

ADD A,R2

AJMP CHU3

CHU2:INC R5

CHU3:MOV R6,A

JNE R7,CHU1

RET

KZCX:MAIN A,73H ;控制子程序

CJNE A,74H,KZ2

ZJFH:RET ;直接返回

KZ2:JC PFKZ

CFKZ:MOV B,#03H

DIV AB

MOV 75H,A

CJNE A,#04H,ZJFH

JC ZJFH

MOV A,75H

CJNE A,#0AH,CFKZ1

JNC CFKZ2

CFKZ1:MOV TMOD,#10H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB TR1

SETB P1.0

DELAY:JNB TF1,DELAY

CLR TR1

CLR TF1

CLR P1.0

LJMP ZJFH

CFKZ2:MOV R4,#02H

CFKZ3:MOV TMOD,#10H

MOV TH0,#3CH

SETB TR1

SETB P1.0

DELAY:JNB TF1,DELAY1

CLR TR1

CLR TF1

CLR P1.0

DJNZ R4,CFKZ3

LJMP ZJFH

PFKZ:MOV B,#03H

DIV AB

MOV 76H,A

CJNE A,#08H,ZJFH

JC ZJFH

MOV A,76H

CJNE A,#0AH,PFKZ1

JNC PFKZ2

PFKZ1:MOV TMOD,#10H

MOV TL0,#3CH

SETB TR1

SETB P1.1

DELAY:JNB TF1,8

CLR TR1

CLR TF1

CLR P1.1

LJMP ZJFH

PFKZ2:MOV R4,#02H

PFKZ3:MOV TMOD,#10H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB TR1

SETB P1.1

DELAY4:JNB TF1,DELAY4

CLR TR1

CLR TF1

CLR P1.1

DJNZ R4,PFKZ3

LJMP ZJFH

存储器扩展子程序

STORE: SETB VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

CLR VSDA;

NOP;

CLR VSDA;

NOP;

NOP;

NOP;

NOP;

CLR VSCL;

RET;

STOP:CLR VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

SETB VSDA;

NOP;

NOP;

NOP;

NOP;

CLR VSDA;

CLR VSCL;

RET;

MACK: CLR VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

CLR VSCL;

SETB VSDA;

RET;

MNACK:SETB VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

CLR VSCL;

CLR VSDA;

RET;

CACK: SETB VSDA;

SETB VSCL;

CLR F0;

MOV C,VSDA;

JNC CEND;

SETB F0;

CEND:CLR VSCL;

RET;

WRBYT: MOV R0,#08H;

WLP: RLC A;

JC WR1;

AJMP WR0;

WLP1:DJNZ R0,WLP;

RET;

WR1:SETB VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

CLR VSCL;

CLR VSDA;

AJMP WLP1;

WR0:CLR VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

NOP;

CLR VSCL;

AJMP WLP1;

RDBYT:MOV R0,#08H;

RLP: SETB VSDA;

SETB VSCL;

MOV C,VSDA;

MOV A,R2;

RLC A;

MOV R2,A;

CLR VSCL;

DJNZ R0,RLP;

RET;

WRNBYT:MOV R3,NUMBYT;

LCALL STA;

MOV A,SLA;

LCALL WRBYT;

LCALL CACK;

JB F0,WRNBYT;

MOV R1,#MTD;

WRDA:MOV A,@R1;

LCALL WRBYT;

LCALL CACK;

JB F0,WRNBYT;

INC R1;

DJNZ R3,WRDA;

LCALL STOP;

RET;

RDNBYT:MOV R3,NUMBYT;

LCALL STA;

MOV A,SLA;

LCALL WRBYT;

LCALL CACK;

JB F0,RDNBYT;

RDN:MOV R1,#MRD;

RDN1:LCALL RDBYT;

MOV @R1,A;

DJNZ R3,ACK;

LCALL MNACK;

LCALLSTOP;

RET;

ACK:LCALL MACK;

INC R1;

SJMP RDN1;

中断服务子程序:

X0S: MOV DPTR,#2000H

MOVX @DPTR,A

SETB TR0

MOV 3AH,#20H

MOV 3BH,#00H

MOV R7,#00H

MOV R6,#04H

CLR 70H

X0S0: CLR01H

X0S1: JNB 01H,X0S1

CJNE R6,#00H,X0S0

CJNE R7,#00H,X0S0

CLR TR0

CLR EX0

SETB 00H

RETI

键盘程序:

KEYI:ACALL KS1 ;调用判有无键闭合子程序

JNZ LK1 ;有键闭合,跳LK!

NI: ACALL DIR ;无键闭合,调用显示子程序,延时

AJMP KEYI

LK1: ACALL DIR ;可能有键闭合,延时12MS软件区

ACALL DIR

ACALL KS1 ;调用判有无子程序

JNZ LK2 ;经去消抖,判断确实有键按下跳

ACALL DIR ;调用显示子程序延时6MS

AJMP KEYI ;抖动引起跳KEYI去处理

LK2: MOV R2,#0FEH ;列选码—〉R2

MOV R4,#00H ;R4 为列号计数器

LK4: MOV DPTR,#7F01H ;列选码—〉8155H

MOV A,R2

MOVX @DPTR,A

INC DPTR ;数据指针增2,指向PC口

INC DPTR

MOVX A,@DPTR ;读8155H的PC口

JB Acc.0,LONE ;第0行线为高,无键闭合,跳LONE

;转判第1行

MOV A,#00H ;第0行有键闭合,首键号—〉A

AJMP LKP ;跳LKP,计算键号

LONE: JB Acc.1,LTOW ;1行线为高,无键闭合,跳LTW0

;转判断第2行

MOV A,#08H ;1行有键闭合,首键号8—〉A

AJMP LKP ;跳LKP ,计算键号

LTW0: JB Acc.2,LTHR ;2行线为高,无键闭合跳LTHR

;转判;第3行

MOV A,#10H ;2行有键闭合,首键号10H—〉A

AJMP LKP ;跳LKP,计算键号

LTHR: JB Acc.3,NEXT ;3行线为高,无键闭合跳NEXT,

;准备下一列的扫描

MOV A,#18H ;3行有键按下,首键号18H—>A

LKP: ADD A,R4 ;计算键号

PUSH A ;键号进栈保护

LK3: ACALL DIR ;调用显示子程序,延时6MS

ACALL DIR ;调用判有无键闭合子程序,延时6MS

JNZ LK3 ;判键释放否,未释放,则循环

POP A ;键已释放,键号出栈->A

RET

NEXT: INC R4 ;列计数器加1,为下一列扫描做准备

MOV A,R2 ;判是否已扫到最后一列(最右一列)

NB Acc.7,KND ;键扫描已到最后一列,跳KND重新

;进行整个

;键盘的扫描

RL A ;键扫描未扫到最后一列,位选码左

;移一位

MOV R2,A ;位选码->R2

AJMP LK4

KND: AJMP KEYI

KS1: MOV DPTR ,#7F01H ;判有无键闭合子程序,全0->扫描(PA口)

MOV A,#00H ;列线全为低电平

MOVX @DPTR,A ;

INC DPTR ;DPTR增2,指向PC 口

INC DPTR

MOVX A,@DPTR ;从PC口读行线的状态

CPL A 行线的状态取反,如无键按下,则A

;中内容为0

ANL A,#0FH ;屏蔽无用的高4位

RET

PID: MOV R5,3 1H ;取W

MOV R4,32H

MOV R3,#00H :取Yi

MOV R2,2AH

ACALL CPL1 ;取Yi的补码

ACALL DSUM ;计算ei=W-Yi

MOV 39H,R7 ;存ei

MOV 3AH,R6

MOV R5,35H ;取I

MOV R4,36H

MOV R0,#4 AH ;R0放乘积高位字节地址指针

ACALL MULT1 ;计算Pi=I*ei

MOV R5,39H :取ei

MOV R4,3AH

MOV R3,3BH ;取ei-1

MOV R2,3CH

ACALL CPL1 ;求ei-1:的补码

ACALL DSUB ;求pp=△ei=ei-ei-1:

MOV A,R7

MOV R5,A :存△ei

MOV A,R6

MOV R4,A

MOV R3,4BH ;取Pi

MOV R2,4AH

ACALL DSUM ;求Pi+Pp

MOV 4BH,R7

MOV 4AH,R6 ;存和(Pi+即)

MOV R5,39H

MOV R4,3AH ;取ei

MOV R3,3DH

MOV R2,3EH ;取ei-2

ACALL DSUM :计算ei=ei-2

MOV A,R7

MOV R5,A

MOV A,R6

MOV R4,A

MOV R3, 3BH

MOV R2,3CH ;取ei-1

ACALL CPL1 :求ei-1,补码

ACALL DSUM ;计算ei=ei-2-ei-1

MOV A,R7

MOV R5,A ;存和

MOV A,R6

MOV R4,A

MOV R3,3BH

MOV R3,3CH ;取ei-l

ACALL CPL1 :求ej-1补码

ACALL DSUM ;计算ei=ei- 2-2ei-1、

MOV R5,37H ;取D

MOV R4,38H

MOV R0,#46H

ACALL MULT1 ;求出Pd=D*(ei=ei-2-2ei-1)

MOV R5,47H

MOV R4,46H :存Pd

MOV R3,4BH

MOV R2,4AH ;取(pi+PP)

ACALL DSUM ;计算pi+pp+pd

MOV R5,33H ;取Kp

MOV R4,34H

MOV R0,#46H

ACALL MULTl ;计算Kp*(Pi+Pp+Pd)

MOV R3,47H

MOV R2,46H

MOV R5,2FH ;取ui-1

MOV R4,30H

ACALL DSUM ;求出ui=ui-l+KP*(Pi+Pp +pd)

MOV 2FH,R7 ;存ui~ui_,

MOV 30H,R6

MOV 3DH,3BH ;ei-l-ei-2

MOV 3EH,3CH

MOV 3BH,39H :ei-ei-1

MOV 3CH,3AH

RET

DSUM: MOV A,R4

ADD A,R2

MOV R6,A

MOV A,R5

ADDC A,R3

MOV R7,A

RET

CPLI: MOV A,R2

CPL A

ADD A,#0lH

MOV R2,A

MOV A,R3

CPL A

ADDC A,#00H

MOV R3,A

RET

MULTI: MOV A,R7

RLC A

MOV SIGN1,C ;存被乘数符号位

JNC POS1 ;被乘数为正转

MOV A,R6 ;求补

CPL A

ADD A,#0lH

MOV R6,A

MOV A,R7

CPL A

ADDC A,#00H

MOV R7,A

POSI: MOV A,R5

RLC A

MOV SIGN2,C :存乘数符号位

JNC POS2 ;乘数为正转

MOV A,R4

CPL A

ADD A,#0lH

MOV R4,A

MOV A,R5

CPL A

ADDC A,#00H

MOV R5,A

POSZ: ACALL MUL1,

MOV C,SIGN1

ANL C,SIGN2

JC TPL ;C=1是两个负数相乘转

MOV C,SIGN1

ORL C,SIGN2

JNC TPL ;C=0是两个正数相乘转

DEC R0

DEC R0

DEC R0

MOV A,@R0

CPL A

ADD A,#0lH

MOV @R0,A

INC R0

MOV A,@RO

CPL A

ADDC A,#00H

TPL: RET

MULT: MOV A,R6 ;取b

MOV B,R4 ;取d

MUL AB ;求bd

MOV @Ro,A ;求bdL

MOV R3, B ;求bdL~R3

MOV A, R4 ;取d

MOV B,R7 ;取a

MUL AB ;求ad

ADD A,R3 ;求adL+bdH

MOV R3,A ;暂存adL+bdH

MOV A,B

ADDC A,#00H ;adH+进位

MOV R2, A ;暂存

MOV A,R6 ;取b

MOV B,R5 ;取c

MUL AB ;求bc

ADD A, R3 ;求adL+bcL+bdH

INC R0 ;修改指针

MOV @R0,A ;乘积第三字节存入

CLR 55BH ;清标志

MOV A,R2

ADDC A,B ;求adH+bcH

MOV R2,A

JNC LAST ;无进位数

SETB 5BH ;置进位标志

MOV A,R7 ;取a

MOV B,R5 ;取c

MUL AB ;求ac

ADD A,R2 ;求acL+adH+bcH

INC R0

MOV @R0,A ;存积的第二个字节

MOV A,B

ADDC A,#00H

MOV C,5BH

ADDC A,#00H

INC R0 :修改指针

MOV @R0,A ;存积的最高字节

RET

显示子程序:

ORG055CH

MOV R0,#79H

MOV @R0,#01H

INC R0

MOV @R0,#01H

INC R0

MOV R0,#05H

INC R0

MOV @R0,#16H

INC R0

MOV @R0,#1BH

INC R0

MOV @R0,#1EH

MOV DPTR,#4F00H

MOV A,#0C3H

MOVX @DPTR,A

AJMP DISUP

ORG 0772H

MOV R0,#79H

MOV R3,#01H

MOV A,R3

MOV DPTR,#4F01H

MOVX @DPTR,A

INC DPTR

MOV A,@R0

ADD A,#12H

MOVC A,@A+PC

JNB F0,DISUP2

SETB a,7

MOVX @DPTR,A

ACALL D2MS

INC R0

MOV A,R3

JB A,5,DISUP3

RL A

MOV R3,A

AJMP DISUP1

ORG 0792H

TABLE:DB 3FH

DB 06H

DB 5BH

DB 4FH

DB 66H

DB 6DH

DB 7DH

DB 07H

DB 7FH

DB 6FH

DB 77H

DB 7CH

DB 39H

DB 5EH

DB 79H

DB 71H

DB 73H

DB 3EH

DB 3EH

DB 31H

DB 48H

DB 1CH

DB 23H

DB 40H

DB 03H

DB 18H

DB 80H

DB 00H

DB 3DH

DB 76H

DB 38H

DB 1EH

ORG 07B1H

D2MS :MOV R7,#02H

D2MS1:MOV R6,#0FFH

DJNZ R6,$

DJNZ R7,DSMS1

提醒:《基于单片机的自动加料机控制系统》最后刷新时间 2024-03-14 01:19:03,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于单片机的自动加料机控制系统》该内容的真实性请自行鉴别。