红外接收控制程序:
;========================电风扇红外接收(控制板)程序===========
;用89C51单片机来作主芯片控制,采用红外1838接收头,可控硅采用MC97A6
;风扇具有红外遥控功能
;K1:低档,相应的指示灯亮 ,中档,相应的指示灯亮 , 高档,相应的指示灯亮
;K2:彩灯,相应的指示灯亮
;K3:自然风控制 睡眠风的控制 正常风的控制
;K4:定时30分钟,1小时,2小时,4小时
;K5:开关机功能
;自然风的处理流程:停--->开低档--->延时6秒--->开中档-->
;延时6秒--->开高档--->循环
;睡眠风的处理流程:停6S--->开低档10S--->停延时10S-->开中档10S-->
;停延时10S-->开高档10S--->循环
;正常风的处理流程:开低档10S--> 开中档10S--> 开高档10S---> 循环
;==========================================================
; BYTE Register
P0 DATA 80H
P1 DATA 90H
P2 DATA 0A0H
P3 DATA 0B0H
PSW DATA 0D0H
ACC DATA 0E0H
B DATA 0F0H
SP DATA 81H
DPL DATA 82H
DPH DATA 83H
PCON DATA 87H
TCON DATA 88H
TMOD DATA 89H
TL0 DATA 8AH
TL1 DATA 8BH
TH0 DATA 8CH
TH1 DATA 8DH
IE DATA 0A8H
IP DATA 0B8H
SCON DATA 98H
SBUF DATA 99H
; BIT Register
; PSW
CY BIT 0D7H
AC BIT 0D6H
F0 BIT 0D5H
RS1 BIT 0D4H
RS0 BIT 0D3H
OV BIT 0D2H
P BIT 0D0H
; TCON
TF1 BIT 8FH
TR1 BIT 8EH
TF0 BIT 8DH
TR0 BIT 8CH
IE1 BIT 8BH
IT1 BIT 8AH
IE0 BIT 89H
IT0 BIT 88H
; IE
EA BIT 0AFH
ES BIT 0ACH
ET1 BIT 0ABH
EX1 BIT 0AAH
ET0 BIT 0A9H
EX0 BIT 0A8H
; IP
PS BIT 0BCH
PT1 BIT 0BBH
PX1 BIT 0BAH
PT0 BIT 0B9H
PX0 BIT 0B8H
; P3
RD BIT 0B7H
WR BIT 0B6H
T1 BIT 0B5H
T0 BIT 0B4H
INT1 BIT 0B3H
INT0 BIT 0B2H
TXD BIT 0B1H
RXD BIT 0B0H
; SCON
SM0 BIT 9FH
SM1 BIT 9EH
SM2 BIT 9DH
REN BIT 9CH
TB8 BIT 9BH
RB8 BIT 9AH
TI BIT 99H
RI BIT 98H
KEYON BIT 05H ;按键中断位
REC BIT 06H ;遥控中断位
LLOW BIT P2.0 ;低风控制位
MDI BIT P2.1 ;中风控制位
HIGHT BIT P2.2 ;高风控制位
LLAP BIT P2.3
LED_L BIT P0.0 ;低档指示控制
LED_M BIT P0.1 ;中档指示控制
LED_H BIT P0.2 ;高档指示控制
LED_LAP BIT P0.3 ;彩灯指示控制
LEDHALF BIT P0.4 ;半小指示控制
LEDOH BIT P0.5 ;1小时指示控制
LEDTH BIT P0.6 ;2小时指示控制
LEDFH BIT P0.7 ;4小时指示控制
SJ00 BIT 20H.0 ;半小时控制标志
SJ01 BIT 20H.1 ;1小时控制标志
SJ02 BIT 20H.2 ;2小时控制标志
SJ03 BIT 20H.3 ;4小时控制标志
DANG01 BIT 20H.4 ;弱风档标志位
DANG02 BIT 20H.5 ;中风档标志位
DANG03 BIT 20H.6 ;强风档标志位
ZRF BIT 21H.0 ;自然风的标志位
SMF BIT 21H.1 ;睡眠风的标志位
ZCF BIT 21H.2 ;正常风的标志位
LKEYON BIT 22H.0 ;按键中断标志
LREC BIT 22H.1 ;接收中断标志
KAI BIT 22H.2 ;开关机标志
PLAP BIT 22H.3 ;彩灯控制标志
MRD DATA 30H ;数据码寄存器
SEN DATA 40H ;秒寄存器
MIN DATA 41H ;分钟寄存器
HOUR DATA 42H ;小时寄存器
CUZHI DATA 43H ;50MS的初值寄存器
FENG DATA 50H ;高中低的循环次数寄存器
FLEI DATA 51H ;风类的循环次数寄存器
TIME DATA 52H ;时间的循环次数寄存器
;DATA 53H ;延时的寄存器
ORG 0000H
JMP START
ORG 0003H
JMP JISH_INT0 ;红外遥控中断设置
ORG 000BH
JMP LP0 ;定时中断
ORG 0013H
JMP KEY_INT1 ;按键中断
ORG 0100H
START:
MOV R0,#7FH ;预使用单元清0
CLR A
MAIN0:
MOV @R0,A
DJNZ R0,MAIN0
MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#3CH ;定时50MS
MOV TL0,#0B0H
SETB LLOW ;关低风
SETB MDI ;关中风
SETB HIGHT ;关高风
SETB LLAP ;关彩灯
MOV P0,#0FFH ;关所有的指示灯
SETB EX0
SETB EX1
SETB EA ;CPU开中
MAIN: JB LKEYON,KEYHANDLE ;检按键标志位
JB REC,KEYHANDLE ;检接收中断标志位
JMP MAIN ;转主程序
;==============================================================================
;键值的处理的程序
;键盘处理程序
;K1键:完成弱、中、强控制,相应的指示灯点亮
;K2键:完成彩灯控制,相应的指示灯点亮
;K3键:完成自然风、睡眠风、正常风的控制,相应的指示灯点亮
;K4键:完成定时的控制,同时0.5H,1H,2H,4H,相应的指示灯点亮
;K5键:开/关机
;==============================================================================
KEYHANDLE:
CLR LKEYON
CLR LREC
MOV A,MRD
CJNE A,#01H,KEY2 ;当键值=01H时,
;------------------------------------------------------------------------------
;低、中、高、的控制
;------------------------------------------------------------------------------
KEY1: JB DANG01,DIFENG
JB DANG02,ZHONGFENG ;DANG02 中档标志位
JB DANG03,QIANGFENG ;DANG03 强档标志位
JMP MAIN
;------------------------------------------------------------------------------
;低档控制
DIFENG:
JNB DANG01,FAN0
SETB LLOW ;完成了低档的程序,关低
SETB MDI ;关中
SETB HIGHT ;关高
CALL DY20MS ;保证三个SCR全部为关断状态
CLR LLOW ;开低风
CLR LED_L ;开低档指示灯
CLR DANG01
FAN0: JMP MAIN
;------------------------------------------------------------------------------
;中档控制
ZHONGFENG:
JNB DANG02,FAN0
SETB LLOW ;关低
SETB MDI ;关中
SETB HIGHT ;关高
CALL DY20MS ;保证三个SCR全部为关断状态
CLR MDI
CLR LED_M
CLR DANG02
AJMP MAIN ;跳转到
;------------------------------------------------------------------------------
;高档控制
QIANGFENG:
JNB DANG03,FAN0
SETB LLOW ;关低
SETB MDI ;关中
SETB HIGHT ;关高
CALL DY20MS ;保证三个SCR全部为关断状态
CLR HIGHT
CLR LED_H
CLR DANG03
AJMP MAIN ;跳转到
;------------------------------------------------------------------------------
;彩灯控制
;------------------------------------------------------------------------------
KEY2:
CJNE A,#02H,KEY3 ;K4的处理程序 彩灯的处理程序
JB PLAP,LED1
CLR LLAP ;第一次按时将彩灯打开,
CLR LED_LAP
SETB PLAP
JMP MAIN ;返回
LED1: SETB LLAP ;第二次按时将彩灯关断
SETB LED_LAP
CLR PLAP
JMP MAIN ;跳转到
;------------------------------------------------------------------------------
;风类处理过程
;------------------------------------------------------------------------------
KEY3:
CJNE A,#03H,KEY4_A ;K3的处理程序处理风类
JB SMF,SKEEP
JB ZCF,SPRING_A
JB ZRF,WATERM
JMP MAIN
KEY4_A:JMP KEY4
SPRING_A:
JMP SPRING
;------------------------------------------------------------------------------
;自然风控制
WATERM:
JNB ZRF,FAN1
CLR ZRF
SETB LLOW ;处理自然风,关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN0 ;查询
JB LKEYON,ZHUAN0 ;查询
CALL DY6S
CLR LLOW
JB LREC,ZHUAN0 ;查询
JB LKEYON,ZHUAN0 ;查询
CALL DY6S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN0 ;查询
JB LKEYON,ZHUAN0 ;查询
CALL DY20MS
CLR MDI
JB LREC,ZHUAN0 ;查询
JB LKEYON,ZHUAN0 ;查询
CALL DY6S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN0 ;查询
JB LKEYON,ZHUAN0 ;查询
CALL DY20MS
CLR HIGHT
CALL DY6S
AJMP WATERM
ZHUAN0: SETB SMF
FAN1: JMP MAIN
;------------------------------------------------------------------------------
;睡眠风控制
SKEEP:
JNB SMF,FAN2
CLR SMF
SLEEP1: SETB LLOW ;处理睡眠风,关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY6S
CLR LLOW ;开低档
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
CLR MDI ;开中档
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
CLR HIGHT ;开高档
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
JB LREC,ZHUAN1 ;查询
JB LKEYON,ZHUAN1 ;查询
CALL DY10S
AJMP SKEEP
ZHUAN1: CLR SMF
SETB ZCF
FAN2: JMP MAIN
;------------------------------------------------------------------------------
;正常风控制
SPRING:
JNB ZCF,FAN3
CLR ZCF
SPRING1:
SETB LLOW ;处理正常风,关低中高
SETB MDI
SETB HIGHT
CALL DY20MS
CLR LLOW ;开低档
JB LREC,ZHUAN2 ;查询
JB LKEYON,ZHUAN2 ;查询
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
LCALL DY20MS
JB LREC,ZHUAN2 ;查询
JB LKEYON,ZHUAN2 ;查询
CLR MDI ;开中档
CALL DY10S
SETB LLOW ;关低中高
SETB MDI
SETB HIGHT
LCALL DY20MS
JB LREC,ZHUAN2 ;查询
JB LKEYON,ZHUAN2 ;查询
CLR HIGHT ;开高档
CALL DY10S
AJMP SPRING
ZHUAN2: CLR ZCF
FAN3: JMP MAIN
;------------------------------------------------------------------------------
;定时控制
;------------------------------------------------------------------------------
KEY4:
CJNE A,#04H,KEY5 ;K4的定时的处理程序
JB SJ01,DY1H
JB SJ02,DY2H
JB SJ03,DY4H
JNB SJ00,FAN4
CLR SJ00
SETB TR0 ;0 5H处理
JMP MAIN
DY1H:
JNB SJ01,FAN4
CLR SJ01
SETB TR0
JMP MAIN
DY2H:
JNB SJ02,FAN4
CLR SJ02
SETB TR0
JMP MAIN
DY4H:
JNB SJ03,FAN4
CLR SJ02
SETB TR0
FAN4: JMP MAIN
;------------------------------------------------------------------------------
;开关机