找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4472|回复: 1
收起左侧

单片机红外线遥控资料与(51和430C语言程序代码)

[复制链接]
ID:258243 发表于 2018-3-12 23:12 | 显示全部楼层 |阅读模式
红外遥控器资料
0.png
0.png 0.png
┌──┬──┬──┬──┬──┬──┐
│名称│键值│名称│键值│名称│键值│
├──┼──┼──┼──┼──┼──┤
│CH- │0x45│CH  │0x46│CH+ │0x47│
├──┼──┼──┼──┼──┼──┤
│VOL-│0x44│VOL+│0x40│PLAY│0x43│
├──┼──┼──┼──┼──┼──┤
│-   │0x07│+   │0x15│EQ  │0x09│
├──┼──┼──┼──┼──┼──┤
│0   │0x16│100+│0x19│200+│0x0D│
├──┼──┼──┼──┼──┼──┤
│1   │0x0C│2   │0x18│3   │0x5E│
├──┼──┼──┼──┼──┼──┤
│4   │0x08│5   │0x1C│6   │0x5A│
├──┼──┼──┼──┼──┼──┤
│7   │0x42│8   │0x52│9   │0x4A│
└──┴──┴──┴──┴──┴──┘


单片机源程序如下:
  1. /******************************************************************/
  2. #include <reg51.h>

  3. sbit IRIN = P3^2;         //红外接收器数据线

  4. void IRdelay(char x);  //x*0.14MS

  5. unsigned char  IRCOM[7];
  6. unsigned char Y0;
  7. /*******************************************************************/
  8. void IRInit()
  9. {
  10.     IE |= 0x81;                 //允许总中断中断,使能 INT0 外部中断
  11.     TCON |= 0x01;               //触发方式为脉冲负边沿触发
  12.    
  13.     IRIN=1;                    //I/O口初始化
  14. }

  15. /**********************************************************/
  16. void IR_IN(void) interrupt 0
  17. {
  18.   unsigned char j,k,N=0;
  19.      EX0 = 0;
  20.          IRdelay(15);
  21.          if (IRIN==1)
  22.      { EX0 =1;
  23.            return;
  24.           }
  25.                            //确认IR信号出现
  26.   while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
  27.     {IRdelay(1);}

  28. for (j=0;j<4;j++)         //收集四组数据
  29. {
  30.   for (k=0;k<8;k++)        //每组数据有8位
  31.   {
  32.    while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
  33.      {IRdelay(1);}
  34.     while (!IRIN)          //等 IR 变为高电平
  35.      {IRdelay(1);}
  36.      while (IRIN)           //计算IR高电平时长
  37.       {
  38.     IRdelay(1);
  39.     N++;           
  40.     if (N>=30)
  41.          { EX0=1;
  42.          return;}                  //0.14ms计数过长自动离开。
  43.       }                        //高电平计数完毕               
  44.      IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”
  45.      if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1”
  46.      N=0;
  47.   }//end for k
  48. }//end for j
  49.    
  50.    if (IRCOM[2]!=~IRCOM[3])
  51.    { EX0=1;
  52.      return; }

  53.    IRCOM[5]=IRCOM[2] & 0x0F;     //取键码的低四位
  54.    IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位

  55.    if(IRCOM[5]>9)
  56.     { IRCOM[5]=IRCOM[5]+0x37;}
  57.    else
  58.           IRCOM[5]=IRCOM[5]+0x30;

  59.    if(IRCOM[6]>9)
  60.     { IRCOM[6]=IRCOM[6]+0x37;}
  61.    else
  62.           IRCOM[6]=IRCOM[6]+0x30;

  63.          //if(IRCOM[2]==0x4c) RELAY=0; //打开继电器
  64.          //else RELAY=1;              //关闭继电器


  65.          Y0=0;
  66.          switch(IRCOM[2])
  67.          {
  68.            case 0x8C: Y0=1; break;
  69.            case 0x98: Y0=2; break;
  70.            case 0xDE: Y0=3; break;
  71.            case 0x88: Y0=4; break;
  72.            case 0x9C: Y0=5; break;
  73.            case 0xDA: Y0=6; break;
  74.            case 0xC2: Y0=7; break;
  75.            case 0xD2: Y0=8; break;
  76.            case 0xCA: Y0=9; break;
  77.            case 0x96: Y0=0; break;                  
  78.    
  79. ……………………

  80. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
红外遥控器资料.rar (711.1 KB, 下载次数: 74)

评分

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

查看全部评分

回复

使用道具 举报

ID:468487 发表于 2019-1-18 12:13 | 显示全部楼层
谢谢共享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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