首页 > 其他分享 >基于AT89C51单片机的自动加料机控制系统设计

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

时间:2024-09-02 22:23:02浏览次数:14  
标签:R0 SETB AT89C51 DB MOV 单片机 加料 NOP CLR

本篇文章论述的是基于AT89C51单片机的自动加料机控制系统设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。


系统框图


系统硬件框图


程序清单

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-2e i-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

显示子程序:
ORG 055CH 
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

系统论文(部分参考)

第一章  绪 论

1.1   题目来源及课题意义

    在现代科学技术的许多领域中,自动控制技术起这愈来愈重要的作用,并且,随着生产和科学技术的发展,自动化水平也越来越高。自动控制利用控制装置使被控对象的某个参数自动的按照预定的规律运行。本设计的自动加料机控制系统就是采用自动控制技术来实现功能的,这样就大大提高了工作的效率,整个过程又快又稳。

1.2   自动加料机控制系统的工作原理及技术要求

本设计的由单片机控制的自动加料系统是与料斗式干燥机配套的加料系统。根据加料工艺要求,其工作原理是:先将真空管关闭,启动电机,用低真空气流将塑料树脂粒子送入真空管,电机停转,再将粒子排入料斗,如此循环。

在设计的控制系统中,可用一个电机控制两个加料生产线,由方向阀切换。两个生产线既可单独运行,也可同时运行。假如两者同时运行,当一生产线输送结束后,判断到另一个生产线排料已经结束,那么,电机不停转而方向阀换向,从而为另一个生产线送料。这样可以发挥控制系统和电机的效率,从而实现供料自动化。

控制系统的控制器有单片机89C51和扩展电路组成,单片机控制继电器,继电器控制交流接触器,又由接触器控制电机等执行机构的运动。本控制系统可以根据送料工艺的需要,设置两条生产线的输送、排料、满料、空料等参数值,也可装载系统前次工艺参数值。

1.3   系统的主要技术参数:

  1. 用一台电机控制两条生产线
  2. 要能检测到满料状态,并显示出输送、排料、满料时间
  3. 时间误差:0.1秒
  4. 具有抗干扰能力

第二章    方案论证

2.1     单片机的选择

20世纪80年代以来,单片机的发展非常迅速,就通用单片机而言,世界上一些著名的计算机厂家已投放市场的产品就有50多个系列,数百个品种。目前世界上较为著名的8位单片机的生产厂家和主要机型如下:

美国Intel公司:MCS—51系列及其增强型系列

美国Motorola公司:6801系列和6805系列

美国Atmel公司:89C51等单片机

美国Zilog公司:Z8系列及SUPER8

美国Fairchild公司:F8系列和3870系列

美国Rockwell公司:6500/1系列

美国TI(德克萨司仪器仪表)公司:TMS7000系列

NS(美国国家半导体)公司:NS8070系列   等等。

尽管单片机的品种很多,但是在我国使用最多的还是Intel公司的MCS—51系列单片机和美国Atmel公司的89C51单片机

MCS—51系列单片机包括三个基本型8031、8051、8751

8031内部包括一个8位CPU、128个字节RAM,21个特殊功能寄存器(SFR)、4个8位并行I/O口、1个全双工串行口、2个16位定时器/计数器,但片内无程序存储器,需外扩EPROM芯片。比较麻烦,不予采用

8051是在8031的基础上,片内集成有4K ROM,作为程序存储器,是一个程序不超过4K字节的小系统。ROM内的程序是公司制作芯片时,代为用户烧制的,出厂的8051都是含有特殊用途的单片机。所以8051适合与应用在程序已定,且批量大的单片机产品中。也不予采用。

8751是在8031基础上,增加了4K字节的EPROM,它构成了一个程序小于4KB的小系统。用户可以将程序固化在EPROM中,可以反复修改程序。但其价格相对8031较贵。8031外扩一片4KB EPROM的就相当与8751,它的最大优点是价格低。随着大规模集成电路技术的不断发展,能装入片内的外围接口电路也可以是大规模的。也不予采用。

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。此设计就采用AT89C51。

2.2     物位传感器的选择

物位是指贮存容器或工业生产设备里的液体、粉粒壮固体、气体之间的分界面位置,也可以是互不相溶的两种液体间由于密度不等而形成的界面位置。根据具体用途分为液位、料位、界位传感器或变送器。物位不仅是物料耗量或产量计量的参数,也是保证连续生产和设备安全的重要参数。特别是在现代工业中,生产规模大,速度高,且常有高温、高压、强腐蚀性或易燃易爆物料,对于物位的监视和自动控制更是至关重要。

物位测量可用于计算物料储量。对于粉粒体,必须考虑到颗粒间有空隙,应区分密度和容重。密度是指不含空隙的物料每单位体积的质量,即通常的质量密度,如果乘以重力加速度g,就成为重力密度r,简称为重度。容重是包含空隙在内的每单位体积的重量v,也就是视在重度或宏观重度,它总要比颗粒物质本身的重度小,其差额决定于空隙率。而空隙率又取决与许多因素。例如颗粒形状、尺寸的一致程度、是否受外力压实、是否经受过振动、有无黏结性等,所以粉粒体物料的体积储量和质量储量之间不易精确换算,这是需要注意的。

2.2.1 电容式物位传感器

    利用物料介电常数恒定时极间电容正比与物位的原理,可构成电容式物位传感器。

根据电机的结构可将容式物位传感器分为三中:(1)适用与导电容器中的绝缘性物料,且容器为立式圆筒形,器壁为一极,沿轴线插入金属棒为另一极,其间构成的电容C与物位成比例。也可悬挂带重锤的软导线作为电机。(2)适用与非金属容器,或虽为金属容器但非立式圆筒形,物料为绝缘性的。这时在棒壮电极周围用绝缘支架套装金属筒,筒上下开口,或整体上均匀分布多个孔,使内外物位相同。中央圆棒和与之同轴的套筒构成两个电极,其间电容和容器形状无关,只取决于物位。所以这种电极只用于液位,粉粒体容易滞留在极间。(3)用于导电性物料,起外形和(1)一样,但中央圆棒电极上包有绝缘材料,电容是由绝缘材料的介电常数和物位决定的,与物料的介电常数无关,导电物料使筒壁与中央电极间的距离缩短为绝缘层的厚度,物位升降相当于电极面积改变。

电容式物位传感器无可动部件,与物料密度无关,但应注意物料中含水分时将对测量结果影响很大,并且要求物料的介电常数与空气介电常数差别大,需用高频电路。所以不予采用。

2.2.2 阻力式料位传感器

阻力式料位传感器是指物料对机械运动所呈现的阻挡力。粉末颗粒状物料比液态物质流动性差,对运动物体有明显的阻力,利用这一特点可构成各种料位传感器。

(1)重锤探索法:在容器顶部安装由脉冲分配器控制的步进电机,此电机正转时缓缓释放悬有重锤的钢索。重锤下降到与料面接触后,钢索受到的合力突然减小,促使力传感器发出脉冲。此脉冲改变门电路的状态,使步进电机改变转向重锤提升,同时开始脉冲计数。待重锤升至顶部触及行程开关,步进电机停止转动,同时计数器也停止计数并显示料位(料位值即容器全高减去重锤行程之差)。显示值一直保持到下次探索后刷新为另一值。开始探索的触发信号可由定时电路周期性地供给,也可以人为地启动。不进行探索时,重锤保持在容器顶部,以免物料将重锤淹埋。万一重锤被物位埋没,排放物料时产生的强大拉力就可能拉断钢索报警措施及出料过滤栅。

但这种方法运用了逻辑电路和数字技术,可连续测量料位值并输出数字量,是数字传感器,但其采样是周期性的,对时间而言不连续,此设计不予采用。

(2)旋桨或推板法:这是一种位式传感器,或称料位开关。在容器壁的某一高度处装小功率电动机,其轴伸入容器内,末端带有桨状叶片。叶片不接触物料时,自由旋转的空载状态下电动机的电流很小,一旦料位上升到与叶片接触,转动阻力增加,甚至成堵转状态,电流显著加大。根据电流的大小使继电器的接点动作,发出料位报警或位式控制信号。如电机轴经过曲柄连杆机构变为往复运动,则可带动活塞或平板在容器中做推拉动作,即成推板法。旋桨法或推板法不一定都是靠电机电流的大小时继电器接点动作,也可以利用离合器或连杆上的传动机构,在叶片或推板负载增大时改变电接点的通断状态。所用电动机应能在长时间堵转状态下,或离合器打滑状态下,不致过热而损坏。

这类原理构成的料位开关,只能安装在容器壁上,安装高度取决于动作所对应的料位值。应用不那么广泛,所以次设计也不予采用。

(3)音叉法:根据物料对振动中的音叉有无阻力探知料位是否到达或超过某高度,并发出通断信号,这种原理不需要大幅度的机械运动,驱动功率小,机械结构简单、灵敏而可靠。

音叉由弹性良好的金属制成,本身具有确定的固有频率,如外加交变力的频率与其固有频率一致,则叉体处于共振状态。由于周围空气对振动的阻尼微弱,金属内部的能量损耗又很少,所以只需微小的驱动功率就能维持较强的振动。当粉粒体物料触及叉体之后,能量消耗在物料颗粒间的摩擦上,迫使振幅急剧衰减,音叉停振。

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

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

并且叉体的制造和装配良好时,音叉也可用于液体测量和控制。在测量时不需要大幅度的机械运动,驱动功率小,机械结构简单、灵敏而可靠。此设计选择音叉法阻力式料位传感器。

2.3  存储器扩展电路的选择

2.3.1   24C01扩展

串行总线上的各单片机或集成电路模块,通过一条数据线(SDA)和一条时钟线(SCL),按照通信规约进行寻址和信息传输。每个集成电路模块都有唯—伪地址,既可以是主控机(能控制总线,并能完成一次传输过程的初始化和产生时钟信号及传输终止信号的器件)或被控机(被主控器寻址的器件),可以是发送器(在总线1:发送信息的器件)或接收器(从总线上接收治息的器件)  I²C总线上的器件,根据它的不同工作状态,可分为主控发送器、主控接收器、被控发送器、被控接收器。当多个主控器同时企图控制总线而不丢失信,这叫多主竞争。这时就要进行仲裁,仲裁就是针对这种情况进行裁决的过程。只允许其卞一个主控器继续占用总线,其它退出丰搀器状态。仲裁过程中还要保证总线的信息不丢失。多主竞争时必须对所有参与竞争的主控器的时钟信号进行同步处理。信息传输时,SCL为高电平期间,SDA上的信息必须保持稳定不变,只有SCL为低电平期间,SDA上的信息才允许变化。同时SDA上信息每一位部和SCL的时钟脉冲相对应。SCL没有时钟信号,SDA信息将停止传输处于等待状态。这因为线“与”逻辑,使SCL在低电平时钳住总线。实现线“与”逻辑功能各I²C总线接口的输出端必须是漏极开路或集电极开路结构。SCL保持高电平期间,SDA由高电平向低电平变化这种状态定义为起始信号。SCL保持高电平期间,SDA由低电平向高电平变化,这种状态定义为终止信号。SDA传输的每个字节必须8位(最高有效位首先传送),每个传送字节必须跟随一位应答位。与应答信号相应的时钟信号由主控器产生,发送器在这个时钟信号释放SDA,使它处于高电平状态,以便接收由接收器在这位发出的应答信号。这时接收器还必须SCL在这位高电平期间,在SDA上输出一个恒定低电平信气以完成应答信号的输出。整个传输过程中,传输的字节数目是没有限制的。数据传输一段时间后,接收器无法继续接收更多的数据,主控器同样可以终止数据的传送。

24C01是一种128字节串行CMOS  EEPROM,它具有如下特点:1.存储容量为128字节。2.串行接口可使用普通两根I/O接口。3.具有页写模式:每页4字节。4.同步周期小于10ms。它只使用一条数据线和一条时钟线,采用ATMEL公司的24C01串口存储器,应用简单方便,但是其编程较为复杂。

2.3.2    2864A芯片扩展

2864A是一种并行EEPROM,它的特点同上,但每页有16字节,2864A与8051单片机的接口电路如下图所示,2864A的片选端与高地址线P2.7连接,P2.7=0才能选中2864A,这种线选法决定了2864A对应多组地址空间,即0000H~1FFFH,2000H~3FFFH,4000H~5FFFH,6000H~7FFFH,这8K字节存储器可作为数据存储器使用,但掉电后数据不丢失。

2864A的四种工作方式:

(1)维持方式:当为高电平时,2864A进入低功耗维持状态。此时,输出线呈高阻状态,芯片的电流从140mA下降至维持电流60mA。

(2)读方式:当和均为低电平而为高电平时,内部的数据缓冲器被打开,数据送上总线,此时,可进行读操作。

(3)写方式:2864A提供了两种数据写入方式:页写入和字节写入。

页写入:为了提高写入速度,2864A片内设置了16字节的“页缓冲器”,并将整个存储器阵列划分成512页,每页16个字节。页的区分可由地址的高9位(A4~A12)来确定,地址线的低四位(A0~A3)用以选择页缓冲器中的16个地址单元之一。对2864A的写操作可分为两步来实现:第一步,在软件控制下把数据写入页缓冲器,这部称为页装载,与一般的静态RAM写操作是一样的。第二步,在最后一个字节(即第16个字节)写入到页缓冲器后20ns自动开始,把页缓冲器的内容写到EEPROM阵列中对应的地址单元中,这一步成为页存储。

2.4  LED显示电路选择

   LED显示器是由N个LED显示块拼接成N位LED显示器。N个LED显示块有N跟位选线,根据显示方式的不同,位选线和段选线的连接方法也各不相同,段选线控制显示字符的字型,而位选线为各个LED显示块的公共端,它控制该LED显示位的亮、暗。LED显示器有静态显示和动态显示两种显示方式。

 2.4.1 LED静态显示方式

LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);每位的段选线(a~dp)分别与一个8位的锁存器输出相连。所以称为静态显示。各个LED的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。也正因此如此,静态显示器的亮度都较高。这种显示方式接口编程容易。付出的代价是占用口线较多,若用I/O接口,则要占用4个8位I/O口,若用锁存器接口,则要用4片74LS373芯片。如果显示器位数增多,则静态显示方式更是无法适应,因此在显示位数较多的情况下,一般都采用动态显示方式。

​​​​​​​ 2.4.2 ​​​​​​​LED动态显示方式

   在多位LED显示时,为了简化硬件电路,通常将所有位的段选线相应的并联在一起,有一个8位I/O口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O线控制,实现各位的分时选通。其中段选线占用一个8位I/O口,而位选线占用一个4位I/O口。由于各位的段选线并联,段码的输出对各位来说都是相同的,因此,同一时刻,如果各位位选线都处于选通状态的话,4位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字节的段码。在确定LED不同位显示的时间间隔,不能太短,因为发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱人眼无法看清。但也不能太长,因为毕竟要受限于临界闪烁频率,而且此时间越长,占用CPU时间也越多,另外,显示位增多,也将占用大量的CPU时间,因此动态显示实质是一牺牲CPU时间来换取元件的减少。

所以,由于本系统只涉及到2位显示输出,就采用了和2片8位移位寄存器串级使用的LED静态显示方式。

2.5 键盘输入电路

2.5.1    矩阵式键盘接口

矩阵式键盘(也称行列式键盘)适用于按键数目较多的场合,它由行线和列线组成,按键位于行列的交点上。一个3×3的行列结构可以构成一个有9个按键的键盘。同理,一个4×4的行列结构可以构成一个16键的键盘,很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/O口线。按键设置在行列线交点上,行列线分别接到按键开关两端。行线通过上拉电阻接到+5V上。平时无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由于此行线相连的列线电平决定。列线电平如果为低电平,则行线电平为低电平,列线电平如果为高电平,则行线电平为高电平。这是识别矩阵键盘按键是否按下的关键所在。由于矩阵键盘中行列线为多键公用,各按键均影响该键所在行列的电平。因此各按键彼此将相互发生影响,所以必须将行列信号配合起来比做适当的处理,才能确定闭合键的位置。

2.5.2    独立式按键接口

独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。独立式按键电路配置灵活,软件简单。但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。

由于此系统中共有启动两条生产线的“启动1”键和“启动2”键、分秒选择键、时间设置加、时间设置减、显示生产线状态的切换键,时间设置键、时间切换键。只有这8个键,比较简单。所以就采用独立式按键接口电路。

第三章  自动加料机主电路

   主电路采用AT89C51,由于AT89C51内含4KB容量,因此在设计中不需要外扩ROM。硬件电路主要有LED显示电路、键盘接受电路、继电器控制电路、EEPROM外部存储器扩展电路,以及看门狗MAX813L等组成。

3.1 系统结构原理图

主电路采用AT89C51,由于AT89C51内含4KB容量,因此在设计中不需要外扩ROM。硬件电路主要有LED显示电路、键盘接受电路、继电器控制电路、EEPROM外部存储器扩展电路,以及看门狗MAX813L等组成。电路原理框图

如图所示:

3.2  主机电路核心器件介绍

   AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。​​​​​

3.2.1 AT89C51主要性能参数

.与MCS-51产品指令系统完全兼容

.4K字节可重擦写Flash闪速存储器

.1000次擦写周期

.全静态操作:0Hz---24MHz

.三级加密程序存储器

.128×8字节内部RAM

.32个可编程I/O 口线

.2个16位定时/计数器

.6个中断源

.可编程串行UART通道

.低功率空闲和掉电模式

3.2.2  AT89C51 功能特性概述

AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/0 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可将至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。

.Vcc:电源电压

.GND:地

.P0口:P0口是一组8位漏极开路型双向I/O,也即地址/数据总线复用口作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用

 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

 在Flash编程时,P0接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

.P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

Flash编程和程序校验期间,P1接收低8位地址。

.P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVE @DPTR指令)时。P2口送出高8位地址数据。在访问8位地址的外部数据存储器(例如执行MOVX @RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区总R2寄存器的内容),在整个访问期间不改变。

Flash编程或校验时,P2亦接收高位地址和其他控制信号。

.P3口:P3口是一组带有内部上拉电阻的8位双向I/O口,P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:

.XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

.XTAL2:振荡器3放大器的输出端。​​​​​​

3.2.4 时钟振荡器

   AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路如图:

外接石英晶体(或陶瓷振荡器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振的难易程序及温度稳定性,如果使用石英晶体,则推荐电容使用30pF+-10pF,而如使用陶瓷振荡器建议选择40pF+-10F。

用户也可以采用外部时钟,采用时钟的电路如图。在这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

由于外部时钟信号是通过一个2分钟触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。

​​​​​​​​​​​​​​3.2.5 空闲节电模式

    AT89C51有两种可用软件编程的省电模式,它们是空闲模式和掉点工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机模式,即PD和IOL同时为1,则先激活掉电模式。

在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。

终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,即刻终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后面的一条指令。

其二是通过硬件复位也可将空闲工作模式终止。需要注意的是,当有硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。

第六章  结论语

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

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


由于论文内容太多,在此就不做多展示,如有需要学习的小伙伴可以私信我获取资源。

感谢阅读,你的点赞是我更新最大的动力!!!

如果有需要这个系统的完整论文等资源的可以私信我。感谢你的阅读~

我们下次见~

标签:R0,SETB,AT89C51,DB,MOV,单片机,加料,NOP,CLR
From: https://blog.csdn.net/m0_56379011/article/details/141831746

相关文章

  • 基于stm32单片机的红外测温报警系统
    基于stm32单片机的红外测温报警系统0、毕业设计选题原则说明(重点)1、项目简介1.1系统构成1.2系统功能1.3演示视频2、部分电路设计2.1STM32单片机核心板电路设计2.2MLX90614红外测温电路设计2.3OLED液晶显示电路设计3、部分代码展示3.1MLX90614获取温度代码3.2传感器初始化3......
  • 单片机中的定时器:精确时间的掌控者
    在单片机的世界里,定时器就像是一个精确的时间守护者,默默地为各种任务提供准确的时间基准。从简单的定时功能到复杂的实时控制系统,定时器都发挥着至关重要的作用。本文将深入探讨单片机中的定时器,包括其工作原理、应用场景以及编程实现等方面,旨在帮助读者更好地理解和应用这一重......
  • 单片机软件工程师与硬件工程师:协同共创智能未来
    摘要:本文深入探讨了单片机软件工程师与硬件工程师在单片机开发中的重要作用。详细阐述了软件工程师的职责包括需求分析、软件设计、编码实现、调试与测试以及维护与升级等,同时强调了其所需的编程语言、开发工具、算法与数据结构、操作系统、硬件知识、问题解决和团队合作等技能......
  • 调试AVR单片机,运行过程中出现异常复位
    调试AVR单片机时,运行过程中出现异常复位是一个常见的问题。这种情况可能由多种原因引起,理解这些原因并采取适当的解决措施是确保系统稳定性的重要步骤。下面将详细分析可能导致AVR单片机异常复位的原因:1.看门狗复位:  看门狗定时器是一个用于监测系统运行状态的内置功能,如......
  • 基于单片机的浴室防雾镜系统设计
    1系统方案设计浴室防雾镜是一种特殊的镜子,在浴室中使用时不会起雾,通过对其需要展开分析,本设计基于51单片机设计的浴室防雾镜的系统架构如图2.1所示,采用了DS18B20温度传感器和人体红外感应红外传感器进行智能控制,通过两个温度传感器分别检测浴室环境温度和镜子的温度变化,HC-SR3......
  • PY32F002A单片机开发板 PY32F002AF15P6开发板 32位MCU,M0+内核
    PY32F002A开发板上搭载的是PY32F002AF15P6单片机,TSSOP20封装,开发板使用TypeC接口供电,可以用来对PY32F002A芯片进行开发调试。PY32F002A开发板推荐使用我们的PY32link来下载仿真,绝大部分的STlink,Jlink,DAPlink也可以下载仿真,需自行测试。开发资料齐全,提供了LL库和HAL库,支持IAR......
  • 最全!嵌入式STM32单片机开发环境配置教学Win/Mac!!!DA
    合集-环境配置(1)1.最全!嵌入式STM32单片机开发环境配置教学Win/Mac!!!08-28收起嵌入式STM32单片机开发环境配置教学Win/Mac·本教程支持Windows和Mac·Windows可选的开发软件为Keil、Clion、STM32CubeMX,可自由选择开发方式·Mac的开发环境为(Clion+OpenOCD+STM32CubeMX),仅支......
  • 嵌入式STM32单片机开发环境配置教学Win/Mac
    合集-环境配置(2)1.最全!嵌入式STM32单片机开发环境配置教学Win/Mac!!!08-282.最简最速!C++版OpenCV安装配置教程Win/Mac!!!08-28收起嵌入式STM32单片机开发环境配置教学Win/Mac·本教程支持Windows和Mac·Windows可选的开发软件为Keil、Clion、STM32CubeMX,可自由选择开发方式·M......
  • 如何提升单片机开发技能:从基础到进阶的全方位指南
    单片机(MicrocontrollerUnit,MCU)作为嵌入式系统的核心,广泛应用于家电控制、智能设备、工业自动化等领域。随着物联网(IoT)和智能设备的普及,单片机开发技能的提升变得愈发重要。本文将探讨如何从基础知识开始,逐步掌握单片机开发的核心技能,并向高级开发者进阶。目录1.夯实基础:......
  • 【实物毕业设计】基于51单片机的宠物喂养系统
    【实物毕业设计】基于51单片机的宠物喂养系统设计简介本设计是基于51单片机的宠物喂养系统实物设计,主要功能如下:时间同步与喂食设定:系统通过DS1302模块实现时间同步,并设定三个固定的喂食时间(6:00、12:00、18:00)。用户可以通过按键调整时间。当设定时间到达时,蜂鸣器会响......