加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

三档八小时遥控电风扇控制电路和单片机程序

(2011-10-30 18:45:42)
标签:

红外遥控风扇

休闲

三档八小时遥控电风扇控制电路和单片机程序

---http://blog.sina.com.cn/u/2486009762

大家都知道风扇是每家每户都不可缺少一个电器用品,现在鸿运扇(或台扇)原来的机械式定时器,由于有些老人家说太噪很难入睡,普通型的定时器最长定时时间1小时,特别型的好像2小时经常都是睡到半梦半醒又被热醒了,只好拿风扇来“开刀”了,把它改成遥控三档八小时控制风扇,哈哈!如果朋友们也有这种困扰就不要等了马上开始行动吧!硬件联接与功能简介如下:
;*****************************
风扇控制程序*******************************

;P3.0\P3.1\P3.7 分别控制   风速 定时 关机

;P3.3\P3.4\P3.5分别为  风速风速风速3

;P1.0~P1.7分别接共阳极数码管A~H指示----->定时:\1H~8H定时\ 风速:~~
;P1.7
也作开机OUT控制,全部都是低电平有效。

;开发软件:TKStudio V 3.2.5  (2011-05-22)
;
注意晶体4MHZ  MCU:89C2051系列

;************************************************************************

电原理图如下:
http://s9/middle/942d7fa2gb081a03778f8&690


 

电路板实物图:http://s1/middle/942d7fa2gb081a38a9ca0&690

 

电路工作原理:

市电220V/50HZJ1进入后按下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:本电路带有强电请仿制的朋友注意安全

;*****************************风扇控制程序******************************* 

;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  (2009-12-18) 

;注意晶体:     4MHZ  MCU:89C2051系列 

;程序设计:LBQ    2011-05-22

;************************************************************************

;

;代码的特征:

; 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       ;显示FP1.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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有