红外编码的解码以及发射 编码保存到eeprom 程序+proteus仿真

2020-01-17 19:09发布

IR.zip (228.32 KB, 下载次数: 226) 2013-4-10 00:14 上传 点击文件名下载附件
打包文件


该压缩包中包含了红外的解码程序,发射程序,包含三个工程first.uv2,receive.uv2,Send.uv2,具体说明请参看readme.docx
下下来直接就可以仿真,有图有真相:
捕获.PNG (41.17 KB, 下载次数: 5) 下载附件 2013-4-10 00:19 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
zhxshseu
2020-01-17 23:51
里面的键盘扫描程序是最一般的行列扫描,效率比较低,建议大家换成如下的反转扫描,效率高一点
/*------------------------------------------------
          按键扫描函数,返回扫描键值
------------------------------------------------*/
unsigned char KeyScan(void)  //键盘扫描函数,使用行列反转扫描法
{
unsigned char cord_h,cord_l;//行列值中间变量
KeyPort=0x0f;            //行线输出全为0
cord_h=KeyPort&0x0f;     //读入列线值
if(cord_h!=0x0f)    //先检测有无按键按下
{
  DelayMs(10);        //去抖
  if((KeyPort&0x0f)!=0x0f)
  {
    cord_h=KeyPort&0x0f;  //读入列线值
    KeyPort=cord_h|0xf0;  //输出当前列线值
    cord_l=KeyPort&0xf0;  //读入行线值

    while((KeyPort&0xf0)!=0xf0);//等待松开并输出

    return(cord_h+cord_l);//键盘最后组合码值
   }
  }return(0xff);     //返回该值
}
/*------------------------------------------------
              按键值处理函数,返回扫键值
------------------------------------------------*/
unsigned char KeyPro(void)
{
switch(KeyScan())
{
  case 0x7e:return 0;break;//0 按下相应的键显示相对应的码值
  case 0x7d:return 1;break;//1
  case 0x7b:return 2;break;//2
  case 0x77:return 3;break;//3
  case 0xbe:return 4;break;//4
  case 0xbd:return 5;break;//5
  case 0xbb:return 6;break;//6
  case 0xb7:return 7;break;//7
  case 0xde:return 8;break;//8
  case 0xdd:return 9;break;//9
  case 0xdb:return 10;break;//a
  case 0xd7:return 11;break;//b
  case 0xee:return 12;break;//c
  case 0xed:return 13;break;//d
  case 0xeb:return 14;break;//e
  case 0xe7:return 15;break;//f
  default:return 0xff;break;
}
}

一周热门 更多>