找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8204|回复: 38
收起左侧

AT89C2051单片机电灯红外遥控接收板

  [复制链接]
ID:68750 发表于 2014-12-13 22:24 | 显示全部楼层 |阅读模式
这个AT89C2051单片机电灯红外遥控接收板,单片机选用的是AT89C2051,制作时省去了数码管显示部分的内容,红处接收头的输入端为单片机的P3.2口,输出端为单片机的P1.1口,P1.1输出经三极管推动断电器来控制电灯的开关。单片机供电部分这里没有单独进行设计,爱好者可以根据自己的实际情况灵活选择用其它方式供电。AT89C2051单片机电灯红外遥控接收板程序附后。
a044ad345982b2b7a0daf1d733adcbef76099b58.jpg 279759ee3d6d55fb8433be356f224f4a20a4dd28.jpg

  1. #include<reg52.h>   

  2. sbit IR=P3^2;  //红外接口

  3. sbit R1=P1^0;        //输出1

  4. sbit R2=P1^1;

  5. sbit R3=P1^2;

  6. sbit R4=P1^3;

  7. sbit R5=P1^4;

  8. sbit R6=P1^5;

  9. sbit R7=P1^6;

  10. sbit R8=P1^7;         //输出8

  11. #define DataPort P0 //定义数据端口

  12. sbit LATCH1=P2^2;// 段锁存

  13. sbit LATCH2=P2^3;//                /*------------------------------------------------

  14.                 全局变量声明

  15. ------------------------------------------------*/


  16. unsigned char code DuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值


  17. 0~9

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


  19. bit irpro_ok,irok;

  20. unsigned char IRcord[4];

  21. unsigned char irdata[33];


  22. /*------------------------------------------------

  23.                   函数声明

  24. ------------------------------------------------*/


  25. void Ir_work(void);

  26. void Ircordpro(void);


  27. /*------------------------------------------------

  28.                   定时器0中断处理

  29. ------------------------------------------------*/


  30. void tim0_isr (void) interrupt 1 using 1

  31. {

  32.   irtime++;  //用于计数2个下降沿之间的时间

  33. }


  34. /*------------------------------------------------

  35.                   外部中断0中断处理

  36. ------------------------------------------------*/

  37. void EX0_ISR (void) interrupt 0 //外部中断0服务函数

  38. {

  39.   static unsigned char  i;             //接收红外信号处理

  40.   static bit startflag;                //是否开始处理标志位

  41. if(startflag)                        

  42. {

  43.     if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms

  44.         i=0;

  45.     irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1

  46.     irtime=0;

  47.     i++;

  48. if(i==33)

  49.            {

  50.         irok=1;

  51. i=0;

  52.         }

  53.   }

  54. else

  55. {

  56. irtime=0;

  57. startflag=1;

  58. }

  59. }


  60. /*------------------------------------------------

  61.                 定时器0初始化

  62. ------------------------------------------------*/

  63. void TIM0init(void)//定时器0初始化

  64. {

  65.   TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值

  66.   TH0=0x00; //重载值

  67.   TL0=0x00; //初始化值

  68.   ET0=1;    //开中断

  69.   TR0=1;   

  70. }

  71. /*------------------------------------------------

  72.                   外部中断0初始化

  73. ------------------------------------------------*/

  74. void EX0init(void)

  75. {

  76.         IT0 = 1;   //指定外部中断0下降沿触发,INT0 (P3.2)

  77.         EX0 = 1;   //使能外部中断

  78.         EA = 1;    //开总中断

  79. }

  80. /*------------------------------------------------

  81.                   键值处理

  82. ------------------------------------------------*/


  83. void Ir_work(void)//红外键值散转程序

  84. {

  85.     switch(IRcord[3])//判断第4个数码值,电视遥控和机顶盒遥控不一样,所以加了两端,两个遥控器都能用


  86. ,实际用在灯上没用这么多路

  87.     {

  88. case 0x07:DataPort=DuanMa[1];R1=~R1;break;//1 显示相应的按键值

  89. case 0x0b:DataPort=DuanMa[2];R2=~R2;break;//2

  90. case 0x0f:DataPort=DuanMa[3];R3=~R3;break;//3

  91. case 0x6f:DataPort=DuanMa[3];R3=~R3;break;//3

  92. case 0x13:DataPort=DuanMa[4];R4=~R4;break;//4

  93. case 0x17:DataPort=DuanMa[5];R5=~R5;break;//5

  94. case 0x1b:DataPort=DuanMa[6];R6=~R6;break;//6

  95. case 0x1f:DataPort=DuanMa[7];R7=~R7;break;//7

  96. case 0x23:DataPort=DuanMa[8];R8=~R8;break;//8

  97. case 0x27:DataPort=DuanMa[0];P1=0xf0;break;//off

  98.     case 0x03:DataPort=DuanMa[0];P1=0xf0;break;//off

  99.              default:break;

  100.    }

  101.    switch(IRcord[2])//判断第三个数码值

  102.    {

  103.      case 0x10:DataPort=DuanMa[1];R1=~R1;break;//1 显示相应的按键值

  104.      case 0x03:DataPort=DuanMa[2];R2=~R2;break;//2

  105.      case 0x01:DataPort=DuanMa[3];R3=~R3;break;//3

  106.      case 0x06:DataPort=DuanMa[4];R4=~R4;break;//4

  107.      case 0x09:DataPort=DuanMa[5];R5=~R5;break;//5

  108.      case 0x1d:DataPort=DuanMa[6];R6=~R6;break;//6

  109.      case 0x1f:DataPort=DuanMa[7];R7=~R7;break;//7

  110.      case 0x0d:DataPort=DuanMa[8];R8=~R8;break;//8

  111.      case 0x27:DataPort=DuanMa[0];P1=0xf0;break;//off

  112.      case 0x6f:DataPort=DuanMa[0];P1=0xf0;break;//off

  113.      default:break;

  114.    }         

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

  116. }

  117. /*------------------------------------------------

  118.                 红外码值处理

  119. ------------------------------------------------*/

  120. void Ircordpro(void)//红外码值处理函数

  121. {

  122.    unsigned char i, j, k;

  123.    unsigned char cord,value;

  124.    k=1;

  125.    for(i=0;i<4;i++)      //处理4个字节

  126.    {

  127.       for(j=1;j<=8;j++) //处理1个字节8位

  128.       {

  129.          cord=irdata[k];

  130.          if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差

  131.          value|=0x80;

  132.          if(j<8)

  133. {

  134.    value>>=1;

  135. }

  136.          k++;

  137.      }

  138.      IRcord[i]=value;

  139.      value=0;     

  140.   }

  141.   irpro_ok=1;//处理完毕标志位置1

  142. }


  143. /*------------------------------------------------

  144.                     主函数

  145. ------------------------------------------------*/

  146. void main(void)

  147. {

  148.    P1=0xf0;

  149.    EX0init(); //初始化外部中断

  150.    TIM0init();//初始化定时器


  151.    DataPort=0xfe; //取位码 第一位数码管选通,即二进制1111 1110

  152.    LATCH2=1;      //位锁存

  153.    LATCH2=0;

  154.    while(1)//主循环

  155.    {

  156.       if(irok)                        //如果接收好了进行红外处理

  157.       {   

  158. Ircordpro();

  159.         irok=0;

  160.       }

  161.       if(irpro_ok)                   //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等

  162.       {

  163. Ir_work();

  164.       }

  165.    }

  166. }
复制代码



AT89C2051单片机电灯红外遥控接收板程序.rar (30.79 KB, 下载次数: 165)
回复

使用道具 举报

ID:14010 发表于 2014-12-17 20:07 | 显示全部楼层
学习研究。
回复

使用道具 举报

ID:70104 发表于 2014-12-19 16:04 | 显示全部楼层
一般吧~~和我找人设计的差小小
回复

使用道具 举报

ID:70104 发表于 2014-12-19 16:04 | 显示全部楼层
等下发给你参考
回复

使用道具 举报

ID:70769 发表于 2014-12-21 04:29 | 显示全部楼层
很好,正需要
回复

使用道具 举报

ID:70330 发表于 2015-1-6 12:35 | 显示全部楼层
请问楼主,我接好了,但按下遥控器后,p3.2高达4.5V,什么原因?谢谢
回复

使用道具 举报

ID:11942 发表于 2015-1-7 09:45 | 显示全部楼层
good  想看看
回复

使用道具 举报

ID:70330 发表于 2015-1-11 15:58 | 显示全部楼层
要是有PCB就好了
回复

使用道具 举报

ID:70330 发表于 2015-1-11 15:58 | 显示全部楼层
有PCB吗
回复

使用道具 举报

ID:72224 发表于 2015-1-14 17:23 | 显示全部楼层
谢谢!!!
回复

使用道具 举报

ID:72181 发表于 2015-1-15 09:50 来自手机 | 显示全部楼层
感谢楼主,这个对我有用
回复

使用道具 举报

ID:57317 发表于 2015-1-15 10:15 | 显示全部楼层
资料不错!下载来学习一下!
回复

使用道具 举报

ID:67573 发表于 2015-1-15 14:59 | 显示全部楼层
学习研究。
回复

使用道具 举报

ID:72065 发表于 2015-1-15 19:49 | 显示全部楼层
不错呀,研究研究
回复

使用道具 举报

ID:72301 发表于 2015-1-15 23:53 | 显示全部楼层
可以学习一下
回复

使用道具 举报

ID:61875 发表于 2015-1-16 20:32 | 显示全部楼层
谢谢楼主的奉献
回复

使用道具 举报

ID:56678 发表于 2015-1-16 23:17 | 显示全部楼层
谢谢楼主分享!学习了。
回复

使用道具 举报

ID:61875 发表于 2015-2-20 19:02 | 显示全部楼层
谢谢楼主的奉献
回复

使用道具 举报

ID:48413 发表于 2015-2-23 22:23 | 显示全部楼层
谢谢了
回复

使用道具 举报

ID:48413 发表于 2015-2-23 22:23 | 显示全部楼层
回复

使用道具 举报

ID:29438 发表于 2015-2-26 09:59 | 显示全部楼层
很好,正需要。
回复

使用道具 举报

ID:58348 发表于 2015-3-10 10:10 | 显示全部楼层
先下载下来学习下。。。。
回复

使用道具 举报

ID:61484 发表于 2015-4-14 22:14 | 显示全部楼层
学习一下 好东西啊
回复

使用道具 举报

ID:76954 发表于 2015-4-15 18:48 | 显示全部楼层
好好看看
回复

使用道具 举报

ID:70614 发表于 2015-4-15 18:58 | 显示全部楼层
感谢楼主分享,我又学到东西了
回复

使用道具 举报

ID:76917 发表于 2015-4-16 07:48 来自手机 | 显示全部楼层
学习一下思路
回复

使用道具 举报

ID:78005 发表于 2015-4-25 09:26 | 显示全部楼层
好东西
回复

使用道具 举报

ID:78005 发表于 2015-4-25 09:27 | 显示全部楼层
要多几路就好了
回复

使用道具 举报

ID:66287 发表于 2015-6-2 08:45 | 显示全部楼层
程序虽然是网络公开的资料,但楼主的动手能力真棒!万用板焊的板子,有的元件还是二手的,却做出了成功的作品,值得学习!顶一个!!!
回复

使用道具 举报

ID:86205 发表于 2015-7-20 04:49 | 显示全部楼层
太好了!!
回复

使用道具 举报

ID:87371 发表于 2015-7-31 23:20 | 显示全部楼层
谢谢楼主的贡献
回复

使用道具 举报

ID:91554 发表于 2015-10-3 11:18 | 显示全部楼层
下载有时间仿制学习一下
回复

使用道具 举报

ID:91554 发表于 2015-10-3 11:41 | 显示全部楼层
上个电路图吧
回复

使用道具 举报

ID:88707 发表于 2015-10-5 15:12 | 显示全部楼层
下载下来好好研究学习
回复

使用道具 举报

ID:92134 发表于 2015-10-11 14:12 | 显示全部楼层
感谢楼主
回复

使用道具 举报

ID:93555 发表于 2015-10-26 15:57 | 显示全部楼层
下来研究一下。。。。
回复

使用道具 举报

ID:194701 发表于 2017-5-1 16:37 | 显示全部楼层

 一般吧~~和我找人设计的差小小
回复

使用道具 举报

ID:66287 发表于 2017-5-9 10:43 | 显示全部楼层
好东西,谢楼主分享!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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