怎么利用STC89C52单片机进行红外遥控解码

良多伴侣在操纵单片机DIY的时辰 , 都有接触过红外线遥控 , 有时辰出格想本身界说遥控的某个按键来节制单片机做特定的输出 , 好比节制一个LED , 或者一个继电器 , 进而节制外部电路 , 例如家里的电灯 , 今天我给大师一个方式 , 轻松获取通用红外遥控器的键码值 , 下面我们起头吧

需要这些哦

电脑
单片机最小系统版(带红外领受头的)
USB转TTL下载器一个
MP3遥控器一个
keil软件
电脑串口调试助手
方式/
1起首 , 我们将单片机和USB转TTL下载器用杜邦线准确地毗连起来 , 并插入电脑的USB口 , 看到最小系统版的电源指示灯亮起 , 申明板子通电正常

怎么利用STC89C52单片机进行红外遥控解码

文章插图

2接下来打开电脑上的keil , 并新建一个工程 , 定名为“红外遥控解码测试”

怎么利用STC89C52单片机进行红外遥控解码

文章插图

3工程成立好今后 , 为工程添加一个C文件 , 双击打开C文件 , 复制下面的代码粘贴上去


#include <REG52.H>
#define uchar unsigned char //宏界说




#define uint unsigned int
#define uchar unsigned char
sbit IRIN=P3^2;//红外线接口
sbit d=P2^0;//解码指示


uchar IRCOM[7],a;
bit Flag;


void delay(uchar x);//红外线用延迟 
void fasong()
{
 if(Flag==1)
   {   ES=0;//封闭串口
       Flag=0;//发送一次
       SBUF=IRCOM[2];//把a发送给本家儿机
       
       while(!TI);//当TI为1的时辰 , 也就是期待数据发送竣事
        TI=0;//软件清零
        ES=1;//打开串口
   }


}

void main (){


 SM0=0;//体例1
 SM1=1; 
       REN = 1;//REN=1许可串行接管状况 , 串口工作模式1               
    TMOD|= 0x20;//按时器工作体例2                    
PCON|= 0x80;//波特率提高一倍                                                          
TH1=0xFA; 
    TL1=0xFA;//9600波特率 ,按倍频算        
TR1  = 1;                                                             
ES   = 1;   //开串口间断                  
EA   = 1;  // 开总间断 
   EX0 =1;//外部间断0许可      
       IRIN=1;
while(1)   
  { fasong();}

}


/****************************************************
               串口间断程序
******************************************************/
void ser ()interrupt 4 
{
 //if(RI == 1)        //RI接管间断标记

推荐阅读