单片机
返回首页

单片机红外发射与接收源程序

2019-12-20 来源:51hei

发送端单片机源程序如下:

#include 'ir_send.h'


/*------------初始化IO------------*/

void ir_init(void)

{

        P2M0 = 0x80;                    //P2.7强推挽

        P2M1 = 0x00;

        TMOD = 0x01;                   //T0  16位 定时        

        IR   = 0;

}


/*-------发射数据 + 载波---------*/

void ir_t(bit BT , uint p)

{

        TH0 = p>>8;                    

        TL0 = p;

    TF0=0;                               

    TR0=1;                                                                                                   //启动定时器0

    if(BT == 0)                                                                                                   //BT=0时,不发射38KHz载波只延时;BT=1发射38KHz脉冲且延时

        {

                while(!TF0);

    }

        else while(1)                                                                                         //38KHz载波,(低电平)占空比5:26                        

            {

                  IR = 1;

                  if(TF0)break;if(TF0)break;

                  if(TF0)break;if(TF0)break;

                  if(TF0)break;if(TF0)break;

                  if(TF0)break;


                  IR = 0;

                if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                 if(TF0)break;if(TF0)break;

                }

    TR0=0;                                                                                                   //关闭定时器0

    TF0=0;                                                                                        

    IR =0;                                                                

}



/*-----------发送一帧数据-----------*/

void ir_send_byt(uchar temp)

  uchar i;

        for (i = 0; i < 8; i++ )                     //循环8次移位 

        {     

            ir_t( 1 , m_56 );                                   //高电平0.65mS                                  

                if( temp & 0x01 ) 

                ir_t( 0 , m1_6 );                                               //先发送最低位                

                else          

                ir_t( 0 , m_56 );                              

                temp >>= 1;                

        }    

}


/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

函数:NEC编码发送程序

┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/

void ir_send(uchar p)

{  

        ir_t( 1 , m9   );                               //高电平9mS

        ir_t( 0 , m4_5 );                    //低电平4.5mS


  /*┈ 发送4帧数据┈*/

        ir_send_byt( user_h );                              //用户码高8位                                                                                                               

        ir_send_byt( user_l );                           //用户码低8位

        ir_send_byt(  p  );                           //操作码

        ir_send_byt( ~p  );                           //操作码反码


  /*┈┈ 结束码 ┈┈*/

    ir_t( 1 , m_56 );

        ir_t( 0 , m40  );

/*┈┈ 重复码 ┈┈*/

        while(0)

        {

        ir_t( 1 , m9         );

        ir_t( 0 , m2_25 );


        ir_t( 1 , m_56        );

        ir_t( 0 , m40         );

                ir_t( 0 , m56         );                                  

    }                   

}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章