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

📄 hongwaifashe.c

📁 24mhz晶振51单片机红外线发射代码
💻 C
字号:
/***********************************************/
/*	 copyright(c)							   */
/*	 Author:jiedin							   */
/*	 data:2008.6.3							   */
/*   红外线发射,信息发送成功,红外接收解码正确*/
/***********************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

/***************************/
//变量定义***********///////
uint count,endcount,i,j,k,t,howaddr1,howaddr2;
static uchar howdat;
static flag;
sbit   P30=P1^3;
 

/***********************/
//函数声明************// 
void delay(uint  );
void sencode(uchar );


/***********************/
//函数部分************//

void  delay(uint t)
{
 	while(--t);
}

/*****************/
//中断函数部分**//
void time0(void) interrupt 1  //用定时器做为载波发生器,振荡频率为f0(38kHz)。编码信号f1对f0进行调制。
{   
    
 	count++;
	if(flag==1)
	P30=~P30;
	else
	P30=0;	
}
/************************/
//主函数部分*****///////
void  main(void)
{
  	 

	count=0;
	P30=0; 
	flag=0;

    TMOD=0X02;
	TH0=(256-26);	  //计数初值精确到25.99US
	TL0=(256-26);
	ET0=1;
	TR0=1;
	howaddr1=0x00;
	howaddr2=0xff;
	EA=1; 
	while(1)
	{ 				//混频输出引脚。
	   	 
	 delay(6500);  //间隔一段时间再进行第二次发送
	 delay(6550);	
	  sencode(0x1d);//将数据10发射出去*/	 
		   
	 }
}
/*******************************/
//代码转换发射函数部分***///////
void sencode( uchar howcode)
{	 uchar i;
 
	 endcount=690;			  
	 count=0;
	 flag=1;
	 do
	 {

	 }
	 while(count<=endcount);	 //将9ms高电平混频发射出去
  	 
	 
	  
     endcount=345;		//常数已定
	 count=0;
	 flag=0;
	 P30=0;
	 do
	 {
	   
	 }while(count<=endcount);  	//4.5ms低电平 

    
 
  //******
  	howdat=howaddr1;  //address1 ,发送用户码1
  	
	for(i=8;i>0;i--)   // 0.56ms的高电平<>
  	{   endcount=38; 	  //常数已定
	  	count=0;
		flag=1;
	     do
	    {

	    }while(count<=endcount);

	 
     if(howdat-(howdat/2)*2)	   // 低平的时间长度为1.68ms
		{
			endcount=125;		// 
	    }
		else
		{						 // 低电平的时间长度为0.565ms
		 endcount=39;			// 
		}  
		
       count=0;
	   flag=0;
		 
		do					//开始 混频且为持续的低电平
	    {

	    }
	while(count<=endcount);
     
	 
	 howdat=howdat>>1;
	}

	howdat=howaddr2;  //address2
  	for(i=8;i>0;i--)
  	{	 
   		endcount=38;		//常数已定
	     flag=1;
		 count=0;
		 
	  do
	   {

	   }
	 while(count<=endcount);
	  
	  
	 
	if(howdat-(howdat/2)*2)
		{
			endcount=125;
	    }
		else
		{
		 endcount=39;
		  
		}
        
	 	
		count=0;
	     flag=0;
		do
	 {

	 } while(count<=endcount);

	  
	howdat=howdat>>1;

      }

	 //*******  
  	howdat=howcode;
  	for(i=8;i>0;i--)
  	{
   		endcount=38;  //常数已定
		 count=0;
		 flag=1;
			do
	 		{

	 		}while(count<=endcount);

		if(howdat-(howdat/2)*2)
			{
				endcount=125;
	    	}
			else
			{
		 		endcount=39;
		     }
        
		    
			count=0;
		 	flag=0;
			do
	 		{

	 		}while(count<=endcount);

		howdat=howdat>>1;

     }


	  
  	howdat=~howcode;
  	for(i=8;i>0;i--)
  	{
   		endcount=38;	//常数已定
	    count=0;
		flag=1;
		 
		do
	 	{

		}while(count<=endcount);




		if(howdat-(howdat/2)*2)
		{
			endcount=125;
	    }
		else
		{
			 endcount=39;
		}
        
	    
		count=0;
	 	flag=0;
		do
		 {

	 	}while(count<=endcount);

		howdat=howdat>>1;
	} 
}
 

⌨️ 快捷键说明

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