钻石会员
主题
帖子
积分11931
阅读权限50
注册时间2009-7-18
最后登录1970-1-1
在线时间 小时
|
本帖最后由 LBQ691477940 于 2011-4-24 13:55 编辑
快到夏天了现在室内也就大概27~28度左右,就吹空调嘛又有点浪费,不吹嘛有时还是觉得有点热要是用风扇原来的机械式定时器普通型的一小时特别型的好像二小时经常都是睡到半梦半醒又被热醒了,只好拿风扇来“开刀”了,把它改成遥控三档八小时控制风扇,哈哈!
;**********************************风扇控制程序**************************
;用P3.0\P3.1\P3.7 分别控制 风速 定时 关机
;P3.3\P3.4\P3.5分别为 风速1 风速2 风速3
;P1.0~P1.7分别接共阳极数码管A~H指示(风速值) \ 1H~8H(以及长通不定时定时) \ 档位一~二~三
;长通不定时时只显示当前风速档数分别为 一、二、三。在有定时时轮流显示当前风速档数和定时时间值
;P1.7也作开机OUT控制,全部都是低电平有效。
;注意晶体: 4MHZ MCU:89C2051系列
;程序设计:LBQ691477940 2011-04-15
;*****************************************************************************************************
本电路为了关机后切断全部电源包括电路板的供电故开机键是直接与继电器的开关引脚组并联的当按下开机按钮时电路得电继电器自锁直到定时结束或按下关机按钮为止
如下是电路板实物图与电路图:
遥控三档八小时风扇.pdf
(378.38 KB, 下载次数: 5729)
程序:
ORG 0000H
SwFengSu BIT P3.0 ;风速
SwTime BIT P3.1 ;定时
SwOff BIT P3.7 ;关机
FengSu1 BIT P3.3 ;风速1
FengSu2 BIT P3.4 ;风速2
FengSu3 BIT P3.5 ;风速3
JMP START
ORG 0003H
JMP YAO_KONG
ORG 000BH ;定时器0入口
JMP TIME ;中断程序
ORG 0030H
START:
MOV SP,#60H
MOV P3,#0F7H ;11110111B ;默认为风速1
MOV 22H,#09H ;使其取得一.的显示码
MOV R3,#00H
MOV R2,#00H
MOV R4,#00H
CLR 20H.0 ;开关标志位
MOV TMOD,#01H ;定时器0工作于方式1
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000);50MS(当4mhz晶体时为150MS)
SETB EA ;开总中断
SETB ET0 ;定时器0中断允许
SETB EX0
SETB IT0
LOOP:
JNB 20H.0,ON ;不是关机即转ON处
OFF: MOV P1,#8EH ;显示F且P1.7为高即关机
MOV P3,#0FFH ;风速全部关
JMP OFF
ON: MOV DPTR,#TABLE
MOV A,R4 ;
JB 20H.1,ON1 ;如果20H.1=1 即显示定时值
MOV A,22H ;使其取得一.二.三.的显示码
ON1:
MOVC A,@A+DPTR
MOV P1,A ;送P1口显示
CALL SW_OFF
CALL SW_FengSu
CALL SW_Time
JMP LOOP
SW_OFF:
JB SwOff,SWO ;是否有关机键压下
CALL DELAY ;防抖
JB SwOff,SWO
JNB SwOff,$
SW1:
SETB 20H.0 ;取反即为高电平故关闭总电源
SWO:
RET
SW_FengSu:;调风速键
JB SwFengSu,LAO ;是否有调风速键压下
CALL DELAY
JB SwFengSu,LAO
LA1: MOV PSW,#00H
CLR 20H.1 ;标志位置 0 显示风速值
SETB 20H.2 ;延时轮流显示标志位
MOV 21H,#8 ;延时轮流显示
INC R3
JNB SwFengSu,$
C01: ;风速2
CJNE R3,#01H,C02
MOV 22H,#0AH ;使其取得二.的显示码
SETB FengSu1 ;关风速1
CALL DELAY ;延时防抖14946us
CALL DELAY ;延时防抖14946us
CLR FengSu2 ;开风速2
JMP LAO
C02: ;风速3
CJNE R3,#02H,C03
MOV 22H,#0BH ;使其取得三.的显示码
SETB FengSu2 ;关风速2
CALL DELAY ;延时防抖14946us
CALL DELAY ;延时防抖14946us
CLR FengSu3 ;开风速3
JMP LAO
C03: ;风速1
MOV 22H,#09H ;使其取得一.的显示码
SETB FengSu3 ;关风速3
CALL DELAY ;延时防抖14946us
CALL DELAY ;延时防抖14946us
CLR FengSu1 ;开风速1
MOV R3,#00H
LAO: RET
SW_Time:;调定时键
JB SwTime,LBO ;是否有定时键压下
CALL DELAY
JB SwTime,LBO
LB:
MOV PSW,#00H
SETB 20H.1 ;标志位置 1 显示定时值
SETB 20H.2 ;延时轮流显示/风速标志位置1
JNB SwTime,$
MOV 21H,#8 ;延时轮流显示
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
INC R4 ;定时时间加 1 小时
CJNE R4,#09H,C04 ;如果大于8即长通不会定时关机
CLR 20H.1 ;标志位置 0 显示风速值
MOV R4,#00H
CLR TR0
RET
C04:
SETB TR0
LBO:
RET
DELAY:;延时防抖14946us
MOV R1,#10 ;1*3=3
DD: MOV R0,#248 ;1*3=3
DJNZ R0,$ ;2*3*248*10=14880
DJNZ R1,DD ;2*3*10=60
RET
TIME:
PUSH ACC
PUSH PSW
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000);重置初定时值
INC R7
INC R5
CJNE R5,#7,TT1 ;150MS*7=1S到了吗?
MOV R5,#00H
JNB 20H.2,TT2 ;延时轮流显示/风速标志位置
DJNZ 21H,TT1
CLR 20H.2
TT2:
CPL 20H.1 ;标志位置 0 显示风速值
TT1:
CJNE R7,#200,TT ;150MS*200=30S到了吗?
MOV R7,#00H
INC R6
CJNE R6,#120,TT ;30S*120=3600S到了吗?
MOV R6,#00H
DJNZ R4,TT ;将R4的值减1
SETB 20H.0 ;取反即为高电平故关闭总电源
TT: POP PSW
POP ACC
RETI
YAO_KONG:
PUSH PSW
PUSH ACC
CLR EA
MOV PSW,#10H
IR: MOV R6,#10
SB: ACALL DELAY882
JB P3.2,REM_BAK
DJNZ R6,SB
JNB P3.2,$
ACALL DELAY2400
JNB P3.2,REM_BAK
ACALL DELAY2400
MOV R1,#1AH
MOV R2,#4
PP: MOV R3,#8
JJ: JNB P3.2,$
LCALL DELAY882
MOV C,P3.2
JNC UUU
LCALL DELAY1000
UUU:
MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJ
INC R1
DJNZ R2,PP
DAN_JI:
NOP
MOV A,1AH
XRL A,#01H ;用户码低八位01H
JNZ REM_BAK
MOV A,1BH
XRL A,#0FFH ;用户码高八位FFH
JNZ REM_BAK
MOV A,1CH
CPL A
XRL A,1DH
JNZ REM_BAK
MOV A,1CH
CJNE A,#80H,E81
CALL SW1 ;关机
JMP REM_BAK
E81: CJNE A,#81H,E82
CALL LB ;定时
JMP REM_BAK
E82: CJNE A,#82H,E83
CALL LA1 ;风速
E83: ;CJNE A,#83H,E84
REM_BAK:
POP ACC
POP PSW
SETB EA
RETI
DELAY882: ;882us
MOV R7,#73 ;3*1=3
;NOP ;3*1=3
D3: NOP ;3*1*73=219
NOP ;3*1*73=219
DJNZ R7,D3 ;2*3*73=438
RET
DELAY1000: ;999us
MOV R7,#83 ;3*1=3
D4: NOP ;3*1*83=249
NOP ;3*1*83=249
DJNZ R7,D4 ;2*3*83=498
RET
DELAY2400: ;2403us
MOV R7,#89 ;3*1=3
D5: NOP ;3*89=267
NOP ;3*89=267
NOP ;3*89=267
NOP ;3*89=267
NOP ;3*89=267
NOP ;3*89=267
NOP ;3*89=267
DJNZ R7,D5 ;2*3*89=534
RET
TABLE:;P1.0-P1.7分别接共阳极数码管A-H
DB 40H ;0.
DB 79H ;1.
DB 24H ;2.
DB 30H ;3.
DB 19H ;4.
DB 12H ;5.
DB 02H ;6.
DB 58H ;7.
DB 00H ;8.
DB 3FH ;一.
DB 37H ;二.
DB 36H ;三.
END |
评分
-
查看全部评分
|