找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 3
打印 上一主题 下一主题
收起左侧

单片机红外控制Led程序

[复制链接]
跳转到指定楼层
楼主
ID:541128 发表于 2019-7-14 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个很简单的程序,写的不是很好

单片机源程序如下:
  1. #include "reg52.h"

  2. #define  Led P2
  3. typedef unsigned char u8;
  4. typedef unsigned int u16;

  5. //#define uint unsigned int;
  6. //#define uchar unsigned char;

  7. sbit IRIN=P3^2;

  8. u8  Time;
  9. u8  IrValue[6];
  10. u8 code IRdata[22]={0x45,0x46,0x47,0x44,0x40,0x43,0x07,0x15,0x09,0x16,0x19,
  11.                     0x0d,0x0c,0x18,0x5e,0x08,0x1c,0x5a,0x42,0x52,0x4a};

  12. void delay(u16 i)
  13. {
  14.    while(i--);
  15. }

  16. void IrInit()
  17. {
  18.   IT0=1;
  19.         EX0=1;
  20.         EA=1;
  21.         IRIN=1;
  22. }



  23. void Ircontrol()
  24. {
  25.         u8 i;
  26.         
  27. //        for(i=0;i<8;i++)
  28. //        {
  29. //          switch(IrValue[2])
  30. //                {
  31. //                        case(0x45):Led=0xfe;break;
  32. //                        case(0x46):Led=0xfc;break;
  33. //                        case(0x47):Led=0xfa;break;
  34. //                        case(0x44):Led=0xf7;break;
  35. //                        case(0x40):Led=0xef;break;
  36. //                        case(0x43):Led=0xcf;break;
  37. //                        case(0x07):Led=0xaf;break;
  38. //                        case(0x15):Led=0x7f;break;
  39. //                }
  40. //        }
  41.         for(i=0;i<22;i++)
  42.         {
  43.           if(IrValue[2]==IRdata[i])
  44.                         Led=IRdata[i];
  45.         }
  46.                
  47.         
  48. }


  49. void main()
  50. {
  51.          IrInit();
  52.          while(1)
  53.          {
  54.            Ircontrol();
  55.          }
  56. }        
  57.          

  58. void ReadIr() interrupt 0
  59. {
  60.   u8 k,j;
  61.         u16 err;
  62.         Time=0;
  63.         delay(700);
  64.         if(IRIN==0)
  65.         {
  66.           err=1000;
  67.                
  68.                 while((IRIN==0)&&(err>0))
  69.                 {
  70.                   delay(1);
  71.                         err--;
  72.                 }
  73.                 if(IRIN==1)
  74.                 {
  75.                   err=500;
  76.                         while((IRIN==1)&&(err>0))
  77.                         {
  78.                           delay(1);
  79.                                 err--;
  80.                         }
  81.                         for(k=0;k<4;k++)
  82.                         {
  83.                           for(j=0;j<8;j++)
  84.                                 {
  85.                                   err=60;
  86.                                         while((IRIN==0)&&(err>0))
  87.                                         {
  88.                                           delay(1);
  89.                                                 err--;
  90.                                         }
  91.                                         err=500;
  92.                                         while((IRIN==1)&&(err>0))
  93.                                         {
  94.                                           delay(10);
  95.                                                 Time++;
  96.                                                 err--;
  97.                                                 if(Time>30)
  98.                                                 {
  99.                                                   return;
  100.                                                 }
  101.                                         }
  102.                                         IrValue[k]>>=1;
  103.                                         if(Time>=8)
  104.                                         {
  105.                                           IrValue[k]|=0x80;
  106.                                         }
  107.                                         Time=0;
  108.                                 }
  109.                         }
  110.                 }
  111.                
  112.                 if(IrValue[2]!=~IrValue[3])
  113.                  {
  114.                    return;
  115.                  }
  116.         }
  117. }        
  118.   
复制代码

所有程序51hei提供下载:
红外通信2.zip (22.88 KB, 下载次数: 29)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:282095 发表于 2019-7-15 05:12 | 只看该作者
采用红外对管实现LED的控制
回复

使用道具 举报

板凳
ID:584220 发表于 2019-7-15 10:39 | 只看该作者
还不错
回复

使用道具 举报

地板
ID:292518 发表于 2021-9-8 11:00 | 只看该作者
电路板部分呢?能不能发出来看看
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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