标题: 用51Hei开发板制作万能学习型红外遥控器 [打印本页]

作者: admin    时间: 2010-7-29 03:45
标题: 用51Hei开发板制作万能学习型红外遥控器

  凌晨3点多了,终于搞定了这个程序,基本可对95%以上的红外遥控器进行编码学习,刚测试了家里的电视机和dvd,全部通过.

 

  相当于是把原配遥控器的发射编码录制到51hei-5型开发板里去,然后通过板子上的红外发射电路来发射编码,以便代替原配的遥控器.

 

 

;晶振12M
;跳线设置:J1插上跳线帽,J7的23端插上跳线(实验完毕千万记得要拔掉,不然会干扰其他实验切记!!)
;实验方法:按下INT0键,D3立刻熄灭,此时拿来家里的电视机遥控器对准51hei开发板按一下,
         ;这时D3亮了,这个键的数据已经被记录下来了,你只要用板子对准电视机,
         ;并按S5键就能遥控电视了.
;D1红灯用于指示发射键的操作,闪烁时表示遥控码正在发射之中.
;D3黄灯是学习指示.
;注意:此实验有可能会不成功,并不是全部的遥控器都支持,
      ;如果按下INT0键,在没按红外遥控器的情况下D3马上亮起来,
      ;说明可能存在电源或者是空间红外的干扰,
      ;用3节1.5v的新电池给板子供电会达到比较好的效果.
      ;如果是用电脑usb供电,最好要拔掉9针串口线以及usb转串口线,最大限度
      ;的减少来自电脑的干扰.以保证实验效果

 

 

 源程序有c51和汇编2个版本的代码,在"程序"目录里,并有详细的注释,老用户可重新更新下载一下资料.最近我更新的程序还比较多.

hex文件下载: http://www.51hei.com/ziliao/51hei-5/hongwxx.rar


作者: magicedward    时间: 2010-7-31 04:37

正好需要,十分感谢。


作者: hfbjjs    时间: 2011-1-12 13:13
这个论坛的东西很丰富!不想学都不行!不想做也不行!---太吸引人了啊!
作者: ashan    时间: 2011-5-24 02:47
这个很有用啊,我先试试去.空调能行吧.
作者: 冬虫草    时间: 2011-8-24 11:14

沙发。


作者: 我爱单片    时间: 2012-1-9 20:04
板子买了,想试下了。
作者: ymynotg    时间: 2012-1-19 01:48
用电视试了一下,过程一模一样,指示灯也正常,15分钟,好像是成功了一次。是不是发射距离达不到啊! 明天再看看。
作者: ymynotg    时间: 2012-2-1 10:56

用示波器测试发现学习到的信息和原有的信息不一致,数据位要少好多,我再确认一下,把过程数据发上来。


作者: admin    时间: 2012-2-1 21:55

你发上来,我给你找到原因所在


作者: 爱的根号3    时间: 2012-3-3 12:02

作者: yapuljj    时间: 2012-4-13 21:26
看看 怎么样
作者: 梦卡碟心    时间: 2012-9-10 14:08

版主,你好,我想知道下面这个链接的关于学习型万能遥控器的思路,也是本论坛的人写的。

http://www.51hei.com/bbs/dpj-1690-1.html

楼主,他用汇编写的,看懂之后把它改成C语言,难度应该不大吧?


作者: shenzhenherry    时间: 2012-9-28 11:27
[灌水]源码在哪里?最好是C写的
作者: X雄仔    时间: 2012-11-9 13:40

作者: 499705472    时间: 2015-1-14 10:28
这个很有用啊,我先试试去.空调能行吧.
作者: 想学习的孩子    时间: 2015-1-31 20:37
学习学习
作者: 岳达    时间: 2015-2-12 11:09
想看看程序啊
作者: lesson18    时间: 2015-4-16 23:42
家里遥控器坏掉,不知能否用上,:::::::::::::::::::::
作者: miskel    时间: 2015-4-17 17:04
好东西,不知道连续码能不能接收发射
作者: 伟哥哥    时间: 2015-4-30 21:53
请教你一个问题,我用51做红外线遥控器编码记录与转发的东西,具体方案是红外接收头接P3^2,然后通过一个非门与P3^3,相接,TMOD=0x99,分别用INT0,INT1计数来得到红外码的高低电平脉宽,用1602显示和解码部分我已经搞定,但我想把接收到的码发送出去,再怎么搞?两个定时器都用了,我尝试用双层for嵌套,根据接收到的脉宽来延时控制红外发射管的通断来发送红外码,但是没用(38khz载波用震荡电路调好)能不能教教我怎么解决,谢谢
作者: 伟哥哥    时间: 2015-4-30 21:53
求源程序
作者: 腾飞的龙    时间: 2015-9-26 16:16
楼主您好:怎么没有源码啊,想学习一下,可以分享吗?谢谢啦!
作者: hzb123    时间: 2015-9-27 15:39
腾飞的龙 发表于 2015-9-26 16:16
楼主您好:怎么没有源码啊,想学习一下,可以分享吗?谢谢啦!

有源码吗?好想学啊
作者: kernel99    时间: 2015-11-23 09:45
正好需要,十分感谢。
作者: xymiss    时间: 2017-7-10 22:41
这个厉害。。。那是不是说明。每一个遥控器上都有一个单片机板
作者: INVIO    时间: 2018-4-22 16:08
有源码吗?好想学啊
作者: Jarki    时间: 2018-5-29 14:30
求大神告知protues图怎么画的
作者: 打杂的    时间: 2018-7-22 15:55
怎么没有原码了,想看看源码进行学习
作者: 1457346053    时间: 2020-6-15 01:13
跪求源代码
作者: aaaaaa。    时间: 2020-8-2 21:50
源程序有c51和汇编2个版本的代码,在"程序"目录里,并有详细的注释
没有看到源代码
作者: arroow    时间: 2021-6-8 06:34
牛人!下载下来 备用
作者: 玉萌业余发展    时间: 2021-9-21 12:24
这是站长的贴呀,牛
作者: Lzhao0415    时间: 2022-10-13 11:52
谢谢分享,我已下载保存。如果楼主方便的话,多传一些这方面的资料,谢谢,学习了。
作者: 微笑的小小    时间: 2022-12-9 12:18
源码?
作者: kaixin8318    时间: 2023-3-16 22:41
请问下 源程序在哪里呢
作者: angmall    时间: 2023-3-18 13:41
kaixin8318 发表于 2023-3-16 22:41
请问下 源程序在哪里呢


程序分享出来给需要的人作参考
送人玫瑰手留余香。相互学习进步。

  1. /*晶振11.0592M
  2. ;跳线设置:J1插上跳线帽,J7的23端插上跳线(实验完毕千万记得要拔掉,不然会干扰其他实验切记!!)
  3. ;实验方法:按下INT0键,D1立刻亮,此时拿来家里的电视机遥控器对准51hei开发板按一下,
  4.          ;这时D3亮了,这个键的数据已经被记录下来了,你只要用板子对准电视机,
  5.          ;并按S5键就能遥控电视了.
  6. ;D1红灯用于指示发射键的操作,闪烁时表示遥控码正在发射之中.
  7. ;D3黄灯是学习指示.
  8. ;注意:此实验有可能会不成功,并不是全部的遥控器都支持,
  9.       ;如果按下INT0键,在没按红外遥控器的情况下D3马上亮起来,
  10.       ;说明可能存在电源或者是空间红外的干扰,
  11.       ;用3节1.5v的新电池给板子供电会达到比较好的效果.
  12.       ;如果是用电脑usb供电成功率稍低,必须要拔掉9针串口线以及usb转串口线,最大限度
  13.       ;的减少来自电脑的干扰.*/
  14. //                 *************************************
  15. //                 *   www.51hei.com学习型红外遥控器   *
  16. //                 *          2009.11.29               *
  17. //                 *************************************
  18. #include <reg52.h>
  19. #include <intrins.h>
  20. #define uchar unsigned char
  21. #define uint unsigned int

  22. sbit  studylamp=P0^7;        //学习状态指示灯
  23. sbit  lamp=P0^5;             //发射指示灯
  24. sbit  studykey=P3^2;         //学习键(中断口)
  25. sbit  remotein=P3^3;         //遥控信号输入口
  26. sbit  remoteout=P2^3;         // 遥控输出口
  27. sbit  txkey=P3^7;              //发射键   
  28. sbit  leds=P1^4;             //led使能
  29. sbit  duan=P2^6;             //段选
  30. sbit  wei= P2^7;              //位选                 

  31. uint i,j,m=255,n,k,s;
  32. uchar idata remotedata[206];         
  33. uint head;                        
  34. uint remdata;


  35. //一毫秒延时程序
  36. delay1ms(uint t)
  37. {
  38. for(i=0;i<t;i++)
  39.    for(i=0;j<120;j++);
  40. }

  41. //初始化函数
  42. clearmen()
  43. {
  44.    studylamp=1;                    
  45.    lamp=1;                          
  46.    remoteout=0;                        
  47.    remotein=1;
  48.    for(i=0;i<206;i++)                  
  49. {
  50.     remotedata[i]=0x00;
  51. }
  52. IE=0x00;
  53. IP=0x01;
  54. TMOD=0x22;
  55. PCON=0X00;
  56. TH1=0xf3;
  57. TL1=0xf3;
  58. IT0=1;
  59. EX0=1;
  60. EA=1;
  61. }


  62. //键功能函数
  63. void key_tx()
  64. {
  65. if(txkey==0)
  66. {
  67.    delay1ms(1);
  68.    if(txkey==0)
  69.    {
  70.    while(txkey==0);   
  71.    ET1=1;TR1=1;                     
  72.    for(i=head;i>0;i--);
  73.    remoteout=0;ET1=0;TR1=0;
  74.    n=0;
  75.    while(1)
  76.    {   
  77.       lamp=0;           
  78.       studylamp=1;
  79.     if(remotedata[n]==0x00)
  80.     {
  81.      delay1ms(10);break;                    
  82.     }
  83.     for(i=remotedata[n];i>0;i--)
  84.     {
  85.      _nop_();_nop_();_nop_();_nop_();_nop_();
  86.      _nop_();_nop_();_nop_();_nop_();
  87.     }
  88.     n++;                     
  89.     ET1=1;TR1=1;     
  90.     for(i=remotedata[n];i>0;i--);
  91.     remoteout=0;ET1=0;TR1=0;n++;
  92.      }
  93.       }
  94. }
  95. }

  96. //主函数
  97. void main()
  98. {
  99. leds=0;
  100. duan=0;
  101. wei=0;
  102. clearmen();                       //初始化
  103. while(1)
  104. {
  105.    key_tx();      //按键扫描
  106. }                       
  107. }


  108. //40KHz发生器      
  109. void time_intt1(void) interrupt 3
  110. {
  111. remoteout=~remoteout;
  112. }

  113.      
  114. //外中断0
  115. void intt0(void) interrupt 0
  116. {
  117. ET1=0;TR1=0;EX0=0;EA=0;
  118. head=0;
  119. while(studykey==0);                     
  120. studylamp=0;lamp=1;
  121. while(remotein==1);                           
  122. head=0;                                   
  123. while(remotein==0)
  124. {
  125.    _nop_();_nop_();_nop_();_nop_();_nop_();
  126.    _nop_();_nop_();_nop_();_nop_();_nop_();
  127.    _nop_();_nop_();_nop_();_nop_();_nop_();
  128.    head++;
  129. }
  130. n=0;remdata=0x0000;
  131. while(1)
  132. {
  133.    while(remotein==1)
  134.    {
  135.     _nop_();_nop_();_nop_();_nop_();_nop_();
  136.     _nop_();_nop_();_nop_();_nop_();_nop_();
  137.     _nop_();_nop_();_nop_();_nop_();_nop_();
  138.     remdata++;
  139.    }
  140.    if(remdata>m)                       //高电平>5毫秒退出
  141.    {remotedata[n]=0x00;EX0=1;EA=1;goto end;}
  142.    remotedata[n]=remdata;n++;              
  143.    remdata=0x0000;                 
  144.    while(remotein==0)
  145.    {
  146.     _nop_();_nop_();_nop_();_nop_();_nop_();
  147.     _nop_();_nop_();_nop_();_nop_();_nop_();
  148.     _nop_();_nop_();_nop_();_nop_();_nop_();
  149.     remdata++;
  150.    }                     
  151.    remotedata[n]=remdata;
  152.    n++;
  153.    remdata=0x00;
  154. }
  155. end: lamp=0;studylamp=0;               
  156. }
复制代码



红外解码程序.zip

283.26 KB, 下载次数: 11, 下载积分: 黑币 -5


作者: 大米861    时间: 2023-6-9 09:05
多谢分享,小白学习,不胜感激。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1