标题:
一个简单单片机IR收发程序
[打印本页]
作者:
cokesu
时间:
2020-3-28 11:36
标题:
一个简单单片机IR收发程序
本帖最后由 cokesu 于 2020-3-30 14:05 编辑
ir读取的程序经过修改也可以用做红外解码
51hei.png
(5.43 KB, 下载次数: 62)
下载附件
2020-3-28 14:30 上传
这个程序的主要用途是单线通信,用于两个单片机传送数据,只能单向通信。IRSEND() 和IRREAD()函数都需要放在定时器的125us中断中,SDATA[5]这个数组为发送的数据其中SDATA[4]这个是用于校验的如果不需要可以把IR_DELAY状态下的SDATA[4]进行修改,并且把IRREAD()函数里的IR_FINISH状态下的校验程序删掉,IRData[5];这个数组为读回来的数据。这个是任意两个单片机都可以是用只需把对应管脚修改为自己单片机的寄存器即可。补充一下发送IRSEND.c里面发送完5个数据以后可以直接跳转到IR_DELAY无需执行IR_LAST,之前项目需要41位数据所以临时添加而已,IRREAD.c只会读40位而已,所以IRSEND.c的IR_LAST状态的函数可以屏蔽掉,发送完5个数据直接跳转到IR_DELAY即可
单片机源程序如下:
#include "IRSEND.h"
unsigned char SDATA[5] = {0,0,0,0,0};
unsigned char SNDATA[5] = {0,0,0,0,0};
unsigned char gSendBitCount = 0; //发送的位计数
unsigned char gSendCount = 0; //发送个数计数
unsigned char gSendTimeCount = 0; //发送计时
unsigned char gIRSendMode = 0; //发送模式
unsigned char gFinishCount = 0;
void IRSENDInit()
{
_IRSENDOUT_;
_IRSENDUP_;
_DATAH_;
}
void IRSEND() //125us
{
switch(gIRSendMode)
{
case IR_DELAY:
_DATAH_;
gSendTimeCount++;
if(gSendTimeCount >= _DELAY_)
{
gSendTimeCount = 0;
gSendBitCount = 0;
gSendCount = 0;
SNDATA[0] = SDATA[0];
SNDATA[1] = SDATA[1];
SNDATA[2] = SDATA[2];
SNDATA[3] = SDATA[3];
SNDATA[4] = (unsigned char)(~(SDATA[0]+SDATA[1]+SDATA[2]+SDATA[3]+0xbb));
gIRSendMode = IR_SEND;
}
break;
case IR_SEND:
gSendTimeCount++;
if(gSendTimeCount >= _ROUND_)
{
gSendTimeCount = 0;
gSendBitCount++; //已发送1位
SNDATA[gSendCount] <<= 1; //数据移位
if(gSendBitCount >= 8) //已发送8位
{
gSendBitCount = 0;
gSendCount++;
if(gSendCount >= 5)
{
gSendTimeCount = 0;
gSendBitCount = 0;
gSendCount = 0;
// _DATAH_;
gIRSendMode = IR_LAST;
goto _2;
}
}
}
if((SNDATA[gSendCount] & B10000000) != 0) //如果等于1
{
if(gSendTimeCount < _DATAHTIME_)
{
_DATAL_;
}
else
{
_DATAH_;
}
}
else
{
if(gSendTimeCount < _DATALTIME_)
{
_DATAL_;
}
else
{
_DATAH_;
}
}
_2:
break;
case IR_LAST:
if(gFinishCount <= _DATAHTIME_)
{
_DATAL_;
}
else
{
_DATAH_;
}
gFinishCount++;
if(gFinishCount >= _ROUND_)
{
gFinishCount = 0;
gIRSendMode = IR_DELAY;
}
break;
}
}
复制代码
所有资料51hei提供下载:
IR通信.zip
(3.17 KB, 下载次数: 16)
2020-3-28 11:35 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
lyseg
时间:
2020-4-23 08:55
谢谢分享!!
作者:
bozai_2008
时间:
2020-4-23 10:33
试试看看能否好用
作者:
zhiren005
时间:
2020-6-24 15:39
还不错 ,下载了~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1