标题:
单片机红外发射与接收源程序
[打印本页]
作者:
ssl9187
时间:
2019-12-19 20:14
标题:
单片机红外发射与接收源程序
纯分享设计
发送端单片机源程序如下:
#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 );
}
}
复制代码
所有资料51hei提供下载:
单片机之红外发射接受.zip
(57.92 KB, 下载次数: 51)
2019-12-19 20:13 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-12-20 00:09
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
lyseg
时间:
2019-12-20 09:51
谢谢分享!!
作者:
vkbvfhp
时间:
2020-12-13 14:34
下载学习后,发现这是一个很好的程序,不是常规的下降沿中断接收,程序工整强大。受溢非浅。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1