⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 红外发送.c

📁 是一个51单片机红外发送接收的程序。 c51编写!
💻 C
字号:
#include <myincludes.h>

//发送规则:0的时候发  1时停  先发9+4.5ms的开止码  每次发送的32二进制码可分成两部分,
//其中前16位是遥控器辨识码(这里是01010101),主要用于区别不同遥控器,后16位是操作码。
#define  dd  DC07=1 
#define  fa  PC07=1    
                       //发送
#define  ting PC07=0  
                        //停止发送
                         //PORTC7 做发送
uchar shibiema,data;
/********************************************************************
* 函数说明:1 MS延时程序 *
********************************************************************/
void delay_0_5ms(void)
{
unsigned int i;
for(i=1;i<(unsigned int)(4*143-2);i++)
;
}

void delay_1ms(void)
{
unsigned int i;
for(i=1;i<(unsigned int)(8*143-2);i++)
;
}


void Delay_Ms(uint num)
{
uint i;
for(i=0;i<num;i++) delay_1ms();
}

void ray_sent(uchar data)
{  uchar i,data2,shibiema2;
   shibiema=0b01010101;
   dd;
   fa;
   Delay_Ms(9);     //发9ms的低电平
   ting;  
   Delay_Ms(4);
   delay_0_5ms();  //发送开始码与结束码
  for(i=0;i<8;i++)        //发送8位识别码
  {
                                  //二进制数最后是1不能整除2;0才可以
   if(shibiema%2==0)           //为0
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_0_5ms();
   }
   if((shibiema%2)!=0)           //为1
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_1ms();
	delay_0_5ms();   
   }
   shibiema>>i;
  }
  
  shibiema2=0xff-shibiema;
  for(i=0;i<8;i++)        //发送8位识别码的反码
  {
                                  //二进制数最后是1不能整除2;0才可以
   if(shibiema2%2==0)           //为0
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_0_5ms();
   }
   if((shibiema2%2)!=0)           //为1
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_1ms();
	delay_0_5ms();   
   }
   shibiema2>>i;
  }
    for(i=0;i<8;i++)        //发送8位数据码
  {
                                  //二进制数最后是1不能整除2;0才可以
   if(data%2==0)           //为0
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_0_5ms();
   }
   if((data%2)!=0)           //为1
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_1ms();
	delay_0_5ms();   
   }
   data>>i;
  }
  
  data2=0xff-data;
    for(i=0;i<8;i++)        //发送8位数据码反码
  {
                                  //二进制数最后是1不能整除2;0才可以
   if(data2%2==0)           //为0
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_0_5ms();
   }
   if((data2%2)!=0)           //为1
   {
    fa;
    delay_0_5ms(); 
    ting;
	delay_1ms();
	delay_0_5ms();   
   }
   data2>>i;
  }
}

void main(void)
{  
  ray_sent(data);
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -