找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求51单片机红外遥控的视频教程

[复制链接]
跳转到指定楼层
楼主
ID:87568 发表于 2015-8-3 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机红外遥控的视频教程。希望大神帮帮忙
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:87598 发表于 2015-8-4 10:36 | 只看该作者
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式,Lesson 21   红外遥控原理和电视遥控器码值检测
回复

使用道具 举报

板凳
ID:87568 发表于 2015-8-4 21:15 | 只看该作者
13530229009 发表于 2015-8-4 10:36
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式,Lesson 21   红外遥控原理和电视遥控器码值检测

你好,我用你的方法搜了,但没搜到。你能提供一个百度云网盘的地址吗?谢谢你!
回复

使用道具 举报

地板
ID:87673 发表于 2015-8-5 11:18 | 只看该作者
同求~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

5#
ID:86938 发表于 2015-8-6 15:53 | 只看该作者
文件太大,上傳不了,你在網上搜霖鋒帶你征服嵌入式
回复

使用道具 举报

6#
ID:79544 发表于 2015-8-6 16:43 | 只看该作者
这是我现在正常使用的解码程序
  1. /***********************************************
  2.         功能:红外解码数码管显示
  3.         单片机:SRC12C5A60S2
  4.         晶振:11.0592M
  5.         作者:苏义江改编自网络
  6.         要感谢作者的无私分享
  7. ***********************************************/
  8. #include<reg52.h>
  9. #include <intrins.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. uchar code table_we[]={
  13.           0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  14. uchar code table_du[]={0xC0,0xF9,0xA4,0xB0,0x99,
  15.                                         0x92,0x82,0xf8,0x80,0x90,0x88,
  16.                                         0x83,0xC6,0xA1,0x86,0x8E};
  17. sbit ir=P3^3;
  18. sbit a=P0^0;//LED或小车端口
  19. sbit b=P0^1;//LED或小车端口
  20. sbit c=P0^2;//LED或小车端口
  21. sbit d=P0^3;//LED或小车端口
  22. uchar irtime;//红外时间变量
  23. uchar irdata[33];//
  24. uchar bitnum;//第几位
  25. uchar startflag;//起始标志位
  26. uchar irok;//接收结束变量
  27. uchar ircode[4];

  28. uchar irprosok;
  29. uchar disnum[4];
  30. //uchar disnum[8];

  31. sbit duan=P0^6;
  32. sbit wei=P0^7;


  33. void timer0init(void) //256*(1/12m)*12=0.256ms
  34. {
  35.         TMOD=0x02;//方式2
  36.         TH0=0x00;
  37.         TL0=0x00;
  38.         ET0=1;
  39.         EA=1;
  40.         TR0=1;
  41. }
  42. void irpros(void) // 红外码值处理
  43. {
  44.         uchar mun,k,i,j;
  45.         k=1;
  46.         for(j=0;j<4;j++)//读出4个码循环4次
  47.         {
  48.                 for(i=0;i<8;i++)
  49.                 {
  50.                         mun=mun>>1;//右移7次
  51.                         if(irdata[k]>7)//判断8次 大于7是高电平,小于7是低电平
  52.                         {
  53.                                 mun=mun | 0x80;
  54.                         }
  55.                                 k++;
  56.                 }
  57.                 ircode[j]=mun;
  58.         }
  59.         irprosok=1;
  60. }

  61. void irwork(void) // 红外码值转换
  62. {
  63.         disnum[0]=ircode[0]/16;
  64.         disnum[1]=ircode[0]%16;
  65. //        disnum[2]=ircode[1]/16;
  66. //        disnum[3]=ircode[1]%16;
  67.         disnum[2]=ircode[2]/16;
  68.         disnum[3]=ircode[2]%16;
  69. //        disnum[6]=ircode[3]/16;
  70. //        disnum[7]=ircode[3]%16;

  71. }

  72. void delay(uchar x)
  73. {
  74.         uchar a,b;
  75.         for(a=x;a>0;a--)
  76.                 for(b=200;b>0;b--);

  77. }
  78. void display()//显示
  79. {
  80.         P2=0xfe;
  81.         wei=1;
  82.         wei=0;
  83.         delay(5);

  84.         P2=table_du[disnum[0]];
  85.         delay(5);
  86.         duan=1;
  87.         duan=0;
  88.         P2=0xff;

  89.         P2=0xfd;
  90.         wei=1;
  91.         wei=0;
  92.         delay(5);

  93.         P2=table_du[disnum[1]];
  94.         delay(5);
  95.         duan=1;
  96.         duan=0;
  97.         P2=0xff;

  98.         P2=0xfb;
  99.         wei=1;
  100.         wei=0;
  101.         delay(5);

  102.         P2=table_du[disnum[2]];
  103.         delay(5);
  104.         duan=1;
  105.         duan=0;
  106.         P2=0xff;

  107.         P2=0xf7;
  108.         wei=1;
  109.         wei=0;
  110.         delay(5);

  111.         P2=table_du[disnum[3]];
  112.         delay(5);
  113.         duan=1;
  114.         duan=0;
  115.         P2=0xff;
  116.        
  117. }


  118. void int0init(void)//外部中断初始化
  119. {
  120. IT1=1;//下降沿触发
  121. EX1=1;//开外部中断
  122. EA=1;//开总中断
  123. }


  124. void main()
  125. {
  126.         timer0init();
  127.         int0init();
  128.         while(1)
  129.         {
  130.                 if(irok==1)
  131.                 {
  132.                         irpros();
  133.                         irok=0;
  134.                 }
  135.                 if(irprosok==1)
  136.                 {
  137.                         irwork();
  138.                         irprosok=0;
  139.                 }
  140.                   display();
  141.                
  142.         }
  143.                
  144. }

  145. void int0 () interrupt 2 //外部0中断服务
  146. {
  147. if(startflag)
  148. {
  149. // if(irtime>32&&irtime<63)  //8-16ms检测引导码
  150.         if(irtime>32)
  151.         {
  152.            bitnum=0;
  153.         }
  154.         irdata[bitnum]=irtime;
  155.         irtime=0;
  156.         bitnum++;
  157.         if(bitnum==33)//接收结束
  158.           {
  159.            bitnum=0;
  160.            irok=1;
  161.           }
  162. }
  163. else
  164. {
  165.         startflag=1;
  166.         irtime=0;
  167. }
  168. }

  169. void timer0 () interrupt 1//定时器0中断服务函数
  170. {
  171.         irtime++;
  172. }
复制代码
回复

使用道具 举报

7#
ID:86621 发表于 2015-8-8 17:14 | 只看该作者
上边都有啊
回复

使用道具 举报

8#
ID:160317 发表于 2017-4-17 15:15 | 只看该作者
同求啊
回复

使用道具 举报

9#
ID:190593 发表于 2017-4-17 20:33 | 只看该作者
目测上面的是可以用的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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