P1.0和P1.1的高低电平,实现控制P1.2和P1.3的高低电平的变化,在没有改变开关的状态之前,为了保持各个端口的电平,需要调用延时程序,主程序以及延时程序如下所示:
ORG 0000H AJMP LOOP ORG 0100H
LOOP: SETB 93H
ORL P1,#03H MOV A,P1
JNB ACC.0,ONE JB ACC.1,TWO BACK: ACALL DELAY AJMP LOOP
ONE: JNB ACC.1,THREE CLR 93H SETB 92H
AJMP LOOP
THREE: CLR 92H AJMP BACK
TWO: SETB 92H AJMP BACK 延时子程序(延时10s): DELAY: ORG 8030H
MOV R3,#19H
LOOP3: MOV R1,#85H LOOP1: MOV R2,#0FAH LOOP2: DJNZ R2,LOOP2 DJNZ R1,LOOP1 DJNZ R3,LOOP3
RET
;为检查水位状态做准备 ;P1.0=0则转移 P1.1=1则转移
;调用延时 ;P1.1=0则转移 ;P1.3←0,启动报警装置 ;P1.2←1,停止电机工作 ;启动电机 ;停止电机工作
; END
4 结论
控制系统有四种运行状态,当水塔里的水面低于最低限时即低于浮子B时,A、B浮子开关均闭合,电机运转,向水塔注水;直到水面超过浮子B,B开关打开,电机任然保持原来的运行的状态;随着水面上升,浮子开关A被打开,此时水面达到上限,因此关闭电机,停止向水塔里注水;随着向外部供水,水面逐渐下降,浮子开关A闭合,但此时不需要再往水塔里注水,因此电机任然维持原来的停止状态不变。而当不属于上述的任何闭合情况时,报警器打开。
对四种不同状态的仿真如下:
(1) 当A,B两开关都闭合,即水位未到达开关B时,电机运转,如图4所示:
图4
(2)当A开关闭合,B开关断开,即水位适中,电机维持原状,如图5所示:
图5
(3)当两开关都断开即水位超过了上线时,电机停转。如图6所示:
图6
(4)当A断开B闭合即浮子开关出现故障,电机停转且系统报警。如图7所示:
图7
结语
本系统就是充分利用了80C31和2732芯片的I/O引脚。系统采用MSC-51系列单片机Intel80C31和可编程并行I/O接口芯片2732为中心器件来设计水塔水位控制系统,实现了能根据水位的高低通过80C31芯片的P1口设置电动机的抽水和报警工作功能;通过二极管的发光来报警以及两个开关来模拟水位的控制,二极管由驱动系统驱动发光。