• 大小: 41KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: keil  C  

资源简介

本资料给出详细的红外发射电路和源代码,protues环境下运行直观可见。

资源截图

代码片段和文件信息

/*******************************************************
38K载波发送程序 T1产生38K载波 T0用于精确定时           *
数据格式  起始位(9ms 高 4.5ms 低)+8位数据(0.560ms 高  *
0.565 低:0    1.685ms 高 0.565ms 低  :1)               *
TR1控制载波发送        *
write by wisdom           2008-8                       *
*******************************************************/
#include  

#define IR_OUT P3_4
#define _MHz_ 12


//T1 13us产生一次中断 用于产生38K载波
//T0 方式1 16位  用于定时
void Init_Timer(void)
{
TMOD=0x21; //T0 mode 1      T1 mode 2 

TH1=256-(1000*_MHz_/38.0/12)/2+0.5;
TL1=TH1;

ET1=1;
EA=1;
}

//发送引导码  发送方:9ms高电平 4.5ms低电平
void Send_Start_Bit(void)    //TR1的值=发送的电平
{
//9ms 0
TH0=(65536-9000/12*_MHz_)/256; 
TL0=(65536-9000/12*_MHz_)%256;
TR0=1;
TR1=0;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;
//4.5ms 1
TH0=(65536-4500/12*_MHz_)/256; 
TL0=(65536-4500/12*_MHz_)%256;
TR0=1;
TR1=1;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;
}

//发送0 
void Send_Bit_0(void)
{
//0.565ms 0
TH0=(65536-565/12*_MHz_)/256; 
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=0;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;
//0.565ms 1
TH0=(65536-565/12*_MHz_)/256; 
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;
}

//发送1
void Send_Bit_1(void)
{
//1.685ms 0
TH0=(65536-1685/12*_MHz_)/256; 
TL0=(65536-1685/12*_MHz_)%256;
TR0=1;
TR1=0;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;

//0.565ms 1
TH0=(65536-565/12*_MHz_)/256; 
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;

while(!TF0);

TR1=0;
TF0=0;

IR_OUT=0;
}

//发送一字节 8位
void Send_Char(unsigned char ir_data)
{
unsigned char ij;
j=ir_data;
Send_Start_Bit();
for(i=0;i<8;i++)
{
if(j&0x80)
Send_Bit_1();
else
Send_Bit_0();
j<<=1;
}


}

void Delay10ms(void)
{
TH0=(65536-10000/12*_MHz_)/256; 
TL0=(65536-10000/12*_MHz_)%256;
TR0=1;
while(!TF0);
TF0=0;
}

void main(void)
{
Init_Timer();
while(1)
{
Send_Char(0x55);
Delay10ms();
}
}


//-----------------------------------------------------------------------
//T1 ISR
void T1_ISR(void) interrupt TF1_VECTOR 
{
IR_OUT=!IR_OUT;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1660  2010-03-25 15:29  红外放射程序_仿真OK\38k

     文件       2373  2010-03-25 15:29  红外放射程序_仿真OK\38k.c

     文件        670  2010-03-25 15:29  红外放射程序_仿真OK\38k.hex

     文件         38  2010-03-25 15:29  红外放射程序_仿真OK\38k.lnp

     文件       6549  2010-03-25 15:29  红外放射程序_仿真OK\38k.LST

     文件       7784  2010-03-25 15:29  红外放射程序_仿真OK\38k.M51

     文件       2222  2010-03-25 15:29  红外放射程序_仿真OK\38k.OBJ

     文件       1197  2010-03-25 16:07  红外放射程序_仿真OK\38k.Opt

     文件        543  2010-03-25 15:29  红外放射程序_仿真OK\38k.plg

     文件       2084  2010-03-25 16:07  红外放射程序_仿真OK\38k.Uv2

     文件       1334  2003-01-02 03:03  红外放射程序_仿真OK\38k_Opt.Bak

     文件       1646  2003-01-01 06:33  红外放射程序_仿真OK\38k_Uv2.Bak

     文件      92504  2003-01-01 15:27  红外放射程序_仿真OK\IR_Send.DSN

     文件        984  2010-06-23 12:08  红外放射程序_仿真OK\IR_Send.PWI

     文件      92521  2003-01-01 15:19  红外放射程序_仿真OK\Last Loaded IR_Send.DBK

     目录          0  2010-06-23 12:08  红外放射程序_仿真OK

----------- ---------  ---------- -----  ----

               214109                    16


评论

共有 条评论