电路工作原理如附图所示。

图中PIC12C671的③脚控制冰箱压缩机,②脚为欠压显示,⑤脚为过压显示,⑦脚为A/D模拟电压输入端。A/D转换时分辨率为20mV,当R3、R4精度为0.1%时,欠压、过压的控制误差为0.5%。Vcc随市电按比例变化,经R3、R4分压后,输入到PIC12C671的⑦脚转换为数字量Di。程序中设定欠压的数字量D1,把转换的数字量Di与欠压时的数字量D1比较,若Di≤D1且持续5秒,PIC12C671的③脚清零,②脚为高电平,冰箱压缩机控制电路停止供电,欠压灯亮。5分钟后PIC12C671采集数据,若已恢复正常,置②脚为0,③脚为1,电路回到正常工作状态。当停电后来电时,程序延时5分钟后③脚变为高电平,实现控制作用。
上电延时程序清单如下:
list p=12C671
#include<P12c671.Inc>
errorlevel -302
_CONFIG _CP_OFF &_WDT_ON &_MCLRE_ON&_PWRTE_ON &_INTRC_OSC
;***** VARIABLE DEFINITIONS
W_TEMP EQU 0x0C
STATUS_TEMP EQU 0x0D
PIR1 EQU 0x0C
LATB EQU 0x20
PIE1 EQU 0x8C
TEMP EQU 0x22
COUNT EQU 0x21
TMRO EQU 0x01
PORTA EQU 0x05
ORG 0x00
GOTO START
ORG 0x04
GOTO ADCON
;remaining code goes her
START:BSF STATUS,RP0
MOVLW 0x01
MOVWF GPI0
MOVLW 0X0D6
MOVWF OPTION_REG
BCF STATUS,RP0
BSF INTCON,7
BSF INTCON,5
BCF INTCON,2
BSF INTCON,GIE
CLRF COUNT
CLRF LATB
CLRF TMR0
CLRF PORTA
MAIN: CLRWDT
MOVLW 0x0FF
SUBWF TMR0,0
BTFSC STATUS,Z
GOTO TIME2
TIME1:MOVLW 0x0FF
SUBWF COUNT,0
BTFSC STATUS,2
GOTO TIME4
TIME3:MOVLW 0x24
SUBWF TEMP,0
BTFSC STATUS,2
BSF PORTA,2
GOTO MAIN
TIME2:INCF COUNT,1
CLRF TMR0
GOTO TIME1
TIME4:INCF TEMP,1
CLRF COUNT
GOTO TIME3
ADCON:…
END
注:限于篇幅,这里只给出上电延时程序,需要全部源程序的读者,请联系作者(0853-4695386)。
