红外线接收控制器的制作

[10-10 20:38:44]   来源:http://www.88dzw.com  电子制作   阅读:8247

文章摘要:70h,70h,0x90,0x6f, //0键70h,70h, 0x00,0xff, //1键……70h,70h, 0xd0,0x2f //power 键 根据以上数据分析得,每键码为4字节,前2字节固定不变,为用户识别码,后2字节均不同,是操作码。将遥控器上的各键键值码测出后,根据这些数据可以根据制作需要进行编程了。因键值码为4字节太长,不利于编程,需要将各键键值转为相对应的1字节的数据,如:70h,70h,0x90,0x6f,对应于0 ,70h,70h, 0x00,0xff对应于1…… 转换方法: 建立一个数组,将上述测得的各键码按顺序放入数组中(去掉用户识别码)code

红外线接收控制器的制作,标签:电子小制作,http://www.88dzw.com
70h,70h,0x90,0x6f,    //0键
70h,70h,  0x00,0xff,  //1键
……
70h,70h, 0xd0,0x2f    //power 键
 根据以上数据分析得,每键码为4字节,前2字节固定不变,为用户识别码,后2字节均不同,是操作码。将遥控器上的各键键值码测出后,根据这些数据可以根据制作需要进行编程了。因键值码为4字节太长,不利于编程,需要将各键键值转为相对应的1字节的数据,如:70h,70h,0x90,0x6f,对应于0 ,70h,70h,  0x00,0xff对应于1……
 转换方法:
 建立一个数组,将上述测得的各键码按顺序放入数组中(去掉用户识别码)
code Byte arr[][2]=
{
  0x90,0x6f,  //0,尽可能按键0、键1……的先后顺序放,以符合习惯
  0x00,0xff,  //1
 ……
  0x10,0xef,  //9
  0xd0,0x2f   //power 13
};
 在接收红外线的外部中断1函数中编写如下的键码转换语句:
DATA Byte arrtmp[4];    
DATA Byte Keytmp;  //转换后的键值寄存变量
DATA Byte Keyval=NOKEY; 
bit KeyOk;// 键值转换完成与否的标志
bit d_Ok;//接收到一个完整的键码标志
void Ex_int(void) interrupt 2
{
 Byte i;
 Byte (*p)[2]; 
  ……
  if(d_Ok)    //若接收到完整的键码
{
     d_Ok=0;  //清除
     if(arrtmp[0]==0x70&&arrtmp[1] 
        ==0x70){  //键码转换
        for(p=arr,i=0;i<14;i++,p++)
 { if(arrtmp[2]==*(*p+0)&&arrtmp[3]
        ==*(*p+1))
 {   Keytmp=i;  KeyOk=1;   //键值
 转换成功标志
            break;
           } else {Keytmp=NOKEY; }  //未
       接收到完整的键值
        }
     }else {  Keytmp=NOKEY; }   
  }       
}
 经过转换后的Keytmp为0、1、2……的整数,然后再编写主函数、调速函数(参源程序),来进行电风扇调速。
 有关电路的一些解释:单片机U1(AT89C2051)P37脚输出高低电平通过R13控制光耦可控硅MOC3041(参数可在《电子制作》网站查找)通断,通过控制其通断时间比来达到电风扇调速。
 有关红外周期检测和电风扇调速实例的源程序可在本刊网站上下载。

上一页  [1] [2] 


Tag:电子制作电子小制作维修教程知识 - 电子制作

《红外线接收控制器的制作》相关文章