51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
红外线遥控电风扇设计思路【精】
发布时间:2009/6/29  阅读次数:4457  字体大小: 【】 【】【

      
  红外接收控制程序:

;========================电风扇红外接收(控制板)程序===========  
;用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
;------------------------------------------------------------------------------
;开关机

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[1]
  • 评论人:[匿名] 时间: [2009/12/29 19:50:29] IP:[221.10.76.17*]
  • 楼主感谢你的分享,不过你的程序好像有问题,我按照你的程序调试了一下,行不通,最明显的就是那个矩阵键盘的读值程序,不知你调试过没有

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号