家电维修网

 找回密码
 注册
查看: 3478|回复: 11

[原创]遥控三档八小时风扇控制电路和程序

[复制链接]

中级维修师

Rank: 5Rank: 5

回帖
9
主题
10
积分
315
在线时间
43 小时
注册时间
2008-8-19
最后登录
2020-5-29
发表于 2011-7-25 22:29 | 显示全部楼层 |阅读模式
本帖最后由 lbq691477940 于 2011-7-25 22:43 编辑

大家都知道风扇是每家每户都不可缺少一个电器用品,现在已到夏天了气温渐渐上升用鸿运扇(或台扇)原来的机械式定时器,由于有些老人家说太噪很难入睡,普通型的定时器最长定时时间1小时,特别型的好像2小时经常都是睡到半梦半醒又被热醒了,只好拿风扇来“开刀”了,把它改成遥控三档八小时控制风扇,哈哈!如果朋友们也有这种困扰就不要等了马上开始行动吧!
电路工作原理:
市电220V/50HZ经J1进入后按下SW0开机键(或RY1的开关组,开机后由主控芯片控制保持RY1自锁)后通过R2\C0(泄放电阻R10)限流\D1\D2\ZD1\C2整流滤波稳压后得到12V的直流电压(用来给RY1提供工作电压用),再经Q4\ZD2稳压为5V直流给CPU AT89C2051 供电。开机后默认为风速一档DS1显示为中文的一,不定时状态(即风扇一直工作到按下SW3关机键或市电停止为止,当然风扇马达有故障也会)每按下SW2定时按键一次DS1显示值会自动加一,定时时间也相对应的加一(可从1~8,再到不显示阿拉伯数字,循环。当不显示阿拉伯数字时表示长通不定时),如果风扇是工作在定时自动关机状态时DS1会以约1秒钟的时间来切换当前风速与定时的时间值,显示阿拉伯数字对应定时时间如果为1小时即1小时后风扇会自动停止工作,为了低碳包括整个电路都会停止工作,(此按键可以通过红外遥控器来实现)。
        如果每按下SW1风速按键一次则同样DS1显示值会加一(从中文的一 ~ 三,循环),分别对应控制风扇马达的1~3档(此按键可以通过红外遥控器来实现)。
        如果控按下SW3则整个电路都会停止工作,(此按键可以通过红外遥控器来实现)。

        此次设计的遥控器要求是NEC编码格式的遥控器,且不具备遥控码学习工能。故仿制的朋友要在原程序里面更改遥控器解码部分的用户码与按键的操作码,需要改动的部分在原程序里面有详细的注释。
与本文所提供的HEX文件对应的遥远控器可以用以(众合RM-139C型万能电视机遥控器的代码为 000时),遥控器上的POWER键对应本电路的SW3关机键,睡眠键对应本电路的SW2定时键,回看键对应本电路的SW1风速键。

#1:本电路带有强电请仿制的朋友注意安全。

如下是电路板实物图:
1.jpg 2.jpg
;*****************************风扇控制程序*******************************
;用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控制,全部都是低电平有效。
;开发软件:TKStudio V3.2.5  (2011-05-22)
;注意晶体: 4MHZ  MCU:89C2051系列
;************************************************************************
;************************************************************************
;
;代码的特征:
; 1. HT6221键码的形成
;        当一个键按下超过36ms 振荡器使芯片激活 如果这个键按下且延迟大约108ms,
;        这108ms 发射代码由一个起始码9ms, 一个结果码4.5ms, 低8 位地址码9ms~18ms,
;        高8 位地址码9ms~18ms,8 位数据码9ms~18ms 和这8 位数 据的反码9ms~18ms 组成
;        如果键按下超过108ms 仍未松开 接下来发射的 代码 连发代码 将仅由起始码9ms
;        和结束码2.5ms 组成.
; 2.代码格式 以接收代码为准 接收代码与发射代码反向
;
;888888888888888888888888888888888888888888888888888888888888888888888888     
                   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:
;(众合RM-139C型万能电视机遥控器的代码为 000时)
;遥控器上的POWER键对应本电路的SW3关机键
;睡眠键对应本电路的SW2定时键
;回看键对应本电路的SW1风速键)   
        NOP
        MOV           A,1AH       
        XRL           A,#40H                ;用户码低八位40H (若你的遥控器不一样请修改其中的立即数)
        JNZ           REM_BAK
        MOV           A,1BH
        XRL           A,#0BFH         ;用户码高八位BFH (若你的遥控器不一样请修改其中的立即数)
        JNZ           REM_BAK
        MOV           A,1CH
        CPL           A
        XRL           A,1DH
        JNZ           REM_BAK
        MOV           A,1CH
        CJNE          A,#12H,E81        ;遥控器关机键的操作码 (若你的遥控器不一样请修改其中的立即数)
        CALL          SW1                        ;关机
                JMP           REM_BAK
E81:    CJNE         A,#17H,E82        ;遥控器定时键的操作码 (若你的遥控器不一样请修改其中的立即数)
        CALL          LB                        ;定时
                JMP           REM_BAK
E82:    CJNE         A,#0BH,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
电路图:
遥控三档八小时风扇控制程序.pdf (381.23 KB, 下载次数: 36)
#以上程序绝对没问题但遥控部分要根据自己的遥控器的码进行重新编译才行除非你也是用众合RM-139C型万能电视机遥控器的代码为 000。固件: 遥控三档八小时风扇控制程序.rar (688 Bytes, 下载次数: 9)
如果大家感兴趣我再上转用stc单片机构成的遥控码学习型的,即随便找个家用的遥控器通过学习就能控制本风扇电路

中级维修师

Rank: 5Rank: 5

回帖
24
主题
33
积分
350
在线时间
49 小时
注册时间
2008-11-8
最后登录
2014-1-8

推广活动勋章

发表于 2011-8-1 07:30 | 显示全部楼层
谢谢
回复 支持 反对

使用道具 举报

高级讲师

Rank: 14Rank: 14Rank: 14Rank: 14

回帖
583
主题
24
积分
6372
在线时间
282 小时
注册时间
2011-4-12
最后登录
2024-8-10

热心会员常驻会员

发表于 2011-8-2 12:39 | 显示全部楼层
现在买一个很便宜。
回复 支持 反对

使用道具 举报

初级研究师

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

回帖
801
主题
26
积分
12516
在线时间
1122 小时
注册时间
2010-3-17
最后登录
2021-11-23

热心会员常驻会员

QQ
发表于 2011-8-6 22:42 | 显示全部楼层
有创新精神!学习个
回复 支持 反对

使用道具 举报

高级讲师

Rank: 14Rank: 14Rank: 14Rank: 14

回帖
603
主题
29
积分
6562
在线时间
481 小时
注册时间
2011-3-8
最后登录
2023-11-22

热心会员常驻会员

发表于 2011-8-7 10:12 | 显示全部楼层
好技术,学习学习收藏了。
回复 支持 反对

使用道具 举报

中级工程师

Rank: 10Rank: 10Rank: 10

回帖
214
主题
12
积分
1830
在线时间
57 小时
注册时间
2007-8-15
最后登录
2025-1-27
发表于 2011-8-8 20:49 | 显示全部楼层
下来学习!多谢提供。有用C编译的吗?汇编的不会。
回复 支持 反对

使用道具 举报

中级会员

Rank: 2

回帖
37
主题
0
积分
110
在线时间
2 小时
注册时间
2011-8-12
最后登录
2011-8-13
发表于 2011-8-12 19:23 | 显示全部楼层
下来学习!多谢提供。
回复 支持 反对

使用道具 举报

新手入门

Rank: 1

回帖
16
主题
0
积分
54
在线时间
1 小时
注册时间
2011-7-2
最后登录
2011-9-15
发表于 2011-9-11 09:47 | 显示全部楼层
真不错 真不错 真不错 真不错 真不错
回复 支持 反对

使用道具 举报

中级会员

Rank: 2

回帖
73
主题
0
积分
216
在线时间
14 小时
注册时间
2011-9-6
最后登录
2017-3-25
发表于 2011-9-19 09:42 | 显示全部楼层
真不错 真不错 真不错 真不错 真不错
回复 支持 反对

使用道具 举报

初级维修师

Rank: 4

回帖
12
主题
3
积分
103
在线时间
31 小时
注册时间
2009-4-7
最后登录
2019-8-28
发表于 2012-7-16 12:41 | 显示全部楼层
能不能修改代码增加自然风?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|门户地图|网站地图|家电维修|手机版|家电维修技术论坛 ( 蜀ICP备14030498号-16 川公网安备51102502000162号 )

GMT+8, 2025-5-1 07:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表