找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7270|回复: 9
收起左侧

51单片机红外控制继电器代码+实物制作

  [复制链接]
ID:424598 发表于 2018-11-11 18:00 | 显示全部楼层 |阅读模式
制作出来的红外控制继电器实物图如下:
IMG_20181004_121647_看图王.jpg IMG_20181004_123442_看图王.jpg

单片机源程序如下:
  1. /*********************************************************************************
  2. * 【外部晶振】: 11.0592mhz        
  3. * 【主控芯片】: STC89C52
  4. **********************************************************************************/
  5. #include<reg52.h>            //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

  6. sbit IR=P3^2;          //红外接口标志
  7. sbit Jdq=P1^0;  //定义一个继电器 为P1.0 IO口

  8. unsigned char  irtime;        //红外用全局变量

  9. bit irpro_ok,irok;
  10. unsigned char IRcord[4];
  11. unsigned char irdata[33];

  12. void Ir_work(void);
  13. void Ircordpro(void);

  14. void tim0_isr (void) interrupt 1 using 1
  15. {
  16.   irtime++;  //用于计数2个下降沿之间的时间
  17. }

  18. void EX0_ISR (void) interrupt 0 //外部中断0服务函数
  19. {
  20.         static unsigned char  i;             //接收红外信号处理
  21.         static bit startflag;                //是否开始处理标志位

  22.         if(startflag)                        
  23.         {
  24.                 if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
  25.             i=0;
  26.                     irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
  27.                     irtime=0;
  28.                     i++;
  29.                            if(i==33)
  30.                       {
  31.                                   irok=1;
  32.                                 i=0;
  33.                           }
  34.         }
  35.         else
  36.         {
  37.                 irtime=0;
  38.                 startflag=1;
  39.         }
  40. }

  41. void TIM0init(void)//定时器0初始化
  42. {
  43.         TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
  44.         TH0=0x00; //重载值
  45.         TL0=0x00; //初始化值
  46.         ET0=1;    //开中断
  47.         TR0=1;   
  48. }
  49. void EX0init(void)
  50. {
  51. IT0 = 1;   //指定外部中断0下降沿触发,INT0 (P3.2)
  52. EX0 = 1;   //使能外部中断
  53. EA = 1;    //开总中断
  54. }
  55. void Ir_work(void)//红外键值散转程序
  56. {
  57.        switch(IRcord[2])//判断第三个数码值
  58.                  {
  59.                         case 0x45:Jdq=!Jdq;break;//电源 显示相应的按键值                        

  60.              default:break;
  61.                          }

  62.                   irpro_ok=0;//处理完成标志

  63. }
  64. void Ircordpro(void)//红外码值处理函数
  65. {
  66.         unsigned char i, j, k,cord,value;
  67.         k=1;
  68.         for(i=0;i<4;i++)      //处理4个字节
  69.         {
  70.                 for(j=1;j<=8;j++) //处理1个字节8位
  71.                 {
  72.                         cord=irdata[k];
  73.                         if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
  74.                         value=value|0x80;
  75.                         if(j<8)
  76.                         {
  77.                                 value>>=1;
  78.                         }
  79.                         k++;
  80.                 }
  81.                 IRcord[i]=value;
  82.                 value=0;     
  83.         }
  84.         irpro_ok=1;//处理完毕标志位置1
  85. }

  86. void main(void)
  87. {
  88.         EX0init(); //初始化外部中断
  89.         TIM0init();//初始化定时器         
  90.         Jdq=1; //继电器初始为关闭状态

  91.         while(1)//主循环
  92.         {
  93.                 if(irok)                        //如果接收好了进行红外处理
  94.                 {   
  95.                         Ircordpro();
  96.                         irok=0;
  97.                 }
  98.                 if(irpro_ok)                   //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
  99.                 {
  100.                         Ir_work();
  101.                 }
  102.         }
  103. }
复制代码

所有资料51hei提供下载:
51红外控制继电器.zip (18.9 KB, 下载次数: 123)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:468413 发表于 2019-1-15 11:23 | 显示全部楼层
感谢分享。
回复

使用道具 举报

ID:419910 发表于 2019-5-15 22:46 | 显示全部楼层
新手求电路图,看了楼主好多帖子大部分都没有电路图,
回复

使用道具 举报

ID:539754 发表于 2019-5-16 13:19 | 显示全部楼层
大神嫩否留下qq 向您讨教?
回复

使用道具 举报

ID:72088 发表于 2019-5-16 15:47 | 显示全部楼层

这是我用STC15F104单片机制作的红外遥控开关,
有学习按键功能体积小巧。并掉电不丢失记忆遥控数据
喜欢的可以看我的帖子,交流

1557992354002.jpg
回复

使用道具 举报

ID:537743 发表于 2019-5-16 16:33 | 显示全部楼层
好东西啊!有代码吗?
回复

使用道具 举报

ID:549612 发表于 2019-5-28 20:44 | 显示全部楼层
大佬你好!我目前是一名大一的学生然后想在宿舍做一个利用红外遥控一键开锁的装置,遥控器仅需一个按键用以控制舵机,遥控器按下后利用红外线让舵机旋转一定角度用以带动门把手实现开门操作,5秒后舵机再自动复位。目前了解到需要单片机,舵机,和红外接收器模块与遥控器(遥控器在淘宝上没有找到那钟足够小的可以粘在桌子或床头的超小型遥控器。)但是并不知道如何制作与烧录程序。是一个完完全全的小白,希望大佬可以教一下这是我的qq1434600134
回复

使用道具 举报

ID:92810 发表于 2019-5-29 14:35 | 显示全部楼层
这个创意可以的啊
回复

使用道具 举报

ID:590645 发表于 2019-9-22 10:31 | 显示全部楼层
很实用的创作。
回复

使用道具 举报

ID:67523 发表于 2023-4-28 09:56 | 显示全部楼层
期待效果加强学习
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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