单片机红外发射程序距离很短问题

红外发射与接收程序的问题 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
红外发射与接收程序的问题
11:23:34  
有关红外编码接收和发射的程序问题/********学习型遥控器程序*********/
#include&reg52.h&
#include&intrins.h&& &//延时函数
#include&rradwrite.h&
#define uchar unsigned char
#define uint unsigned int
sbit remoteout=P3^5;
sbit turkey=P3^1;
sbit IR=P3^2;& && && &&&//将IR位定义为P3.2引脚
uchar a[4];& & //储存引导码高低电平宽度、用户码、用户反码与键数据码、键数据反码
uint LowTime,HighT //储存高、低电平的宽度
uchar addr=0;
void SendIRdata();
void delay();
//void savedata();
bit&&DeCodestudy(void);
//void readdata();
static bit OP; //红外发射管的亮灭
static&&//延时计数器
static&& //终止延时计数
static&&//红外发送标志
/************************************************************
函数功能:主函数
*************************************************************/
void main()
& & EA=1;& && &&&//开启总中断
& & EX0=1;& && & //开外中断1
& & ET0=1;
& & ET1=1;& && & //定时器T0/T1中断允许
& & IT0=1;& && & //外中断的下降沿触发&&
TMOD=0x11;& &//使用定时器T0/T1的模式1
TR0=0;& && & //定时器T0关闭
remoteout=0;
& &&&while(1)
{& &if(turkey==0)
& & delay();
& & EX0=0;
& && & TR1=1;
& & SendIRdata();
& & TR1=0;
/*********************************************************
函数功能:存储/读取学习到的编码
*********************************************************/
/*void savedata()
& &for(n=2;n&6;n++)
& && && &Write24c02(a[n],addr);
& && & addr++;
void readdata()
& &for(n=2;n&6;n++)
& && && &a[n]=Read24c02(addr);
& && &addr++;
/************************************************************
& &&&函数功能: 红外发射模块
************************************************************/
//定时器1中断处理
void timeint(void) interrupt 3
TH1=0xFF;TL1=0xE6; //设定时值为38K 也就是每隔26us中断一次
if (flag==1)
& &OP=~OP;
& &OP = 0;
&&remoteout = OP;
void SendIRdata()
&&//发送9ms的起始码
&&endcount=223;
&&count=0;
&&do{}while(count&endcount);
&&//发送4.5ms的结果码
&&endcount=117;
&&count=0;
&&do{}while(count&endcount);
&&//发送十六位地址的前八位
&&irdata=a[0];
&&for(i=0;i&8;i++)
& & //先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)
& &&&endcount=10;
& &&&flag=1;
&&count=0;
& & do{}while(count&endcount);
& & //停止发送红外信号(即编码中的高电平)
&&if(irdata-(irdata/2)*2) //判断二进制数个位为1还是0
& &endcount=41; //1为宽的高电平
& & endcount=15; //0为窄的高电平
& &flag=0;
& &count=0;
& &do{}while(count&endcount);
& & irdata=irdata&&1;&&
//发送十六位地址的后八位
& &irdata=a[1];
&&for(i=0;i&8;i++)
& & endcount=10;
& & flag=1;
& & count=0;
& & do{}while(count&endcount);
& &if(irdata-(irdata/2)*2)
& &&&endcount=41;
& & endcount=15;
&&count=0;
&&do{}while(count&endcount);
& &&&irdata=irdata&&1;
//发送八位数据
&&irdata=a[2];
for(i=0;i&8;i++)
& &endcount=10;
& &flag=1;
& &count=0;
& &do{}while(count&endcount);
& &if(irdata-(irdata/2)*2)
& &&&endcount=41;
& & endcount=15;
do{}while(count&endcount);
& & irdata=irdata&&1;
//发送八位数据的反码
irdata=a[3];
for(i=0;i&8;i++)
& &endcount=10;
& &flag=1;
& &count=0;
& &do{}while(count&endcount);
&&if(irdata-(irdata/2)*2)
& & endcount=41;
& & endcount=15;
& &flag=0;
& &count=0;
& &do{}while(count&endcount);
& &irdata=irdata&&1;
& &endcount=10;
& &flag=1;
& &count=0;
& &do{}while(count&endcount);
& &flag=0;
&&void delay()
& &int i,j;
& &for(i=0;i&400;i++)
& &{ for(j=0;j&100;j++)
& &/************************************************************
函数功能:对4个字节的用户码和键数据码进行解码
说明:解码正确,返回1,否则返回0
出口参数:dat
*************************************************************/
bit DeCodestudy(void)& && &&&
& && &uchar i,j;
& && & //储存解码出的数据
& &EX0=0;& && &//关闭外中断0,不再接收二次红外信号的中断,只解码当前红外信号
& &while(IR==1);
& &TH0=0;& && &//定时器T0的高8位清0
& &TL0=0;& && &//定时器T0的低8位清0
& &TR0=1;& &&&//开启定时器T0&&
& &while(IR==0);& && && &//如果是低电平就等待,给引导码低电平计时& && && &&&
& &TR0=0;& && && && && & //关闭定时器T0& &&&
& &LowTime=TH0*256+TL0;&&//保存低电平时间
& &TH0=0;& && &//定时器T0的高8位清0
& &TL0=0;& && &//定时器T0的低8位清0
& &TR0=1;& &&&//开启定时器T0
& &while(IR==1);&&//如果是高电平就等待,给引导码高电平计时& &&&
& &TR0=0;& && &&&//关闭定时器T0
& &HighTime=TH0*256+TL0; //保存引导码的高电平长度
& &if((LowTime&8500)&&(LowTime&9500)&&(HighTime&4020)&&(HighTime&5000))
& && &//如果是引导码,就开始解码,否则放弃,引导码的低电平计时
& && &&&//次数=9000us/0., 判断区间:=+500=9504.
& &&&for(i=0;i&4;i++)& && &//连续读取4个用户码和键数据码
& &for(j=0;j&8;j++)&&//每个码有8位数字
& && && & temp=temp&&1;&&//temp中的各数据位右移一位,因为先读出的是高位数据& && && &
& && &TH0=0;& && && &//定时器清0
& && &TL0=0;& && && &//定时器清0
& && &TR0=1;& && && &//开启定时器T0
& && &&&while(IR==0) ;&&//如果是低电平就等待
& && && && && && && && & //低电平计时
& && &&&TR0=0;& && && &//关闭定时器T0
& && &LowTime=TH0*256+TL0;& & //保存低电平宽度
& && &TH0=0;& && && &//定时器清0
& && &TL0=0;& && && &//定时器清0
& && &TR0=1;& && && &//开启定时器T0
& && &while(IR==1);& &//如果是高电平就等待
& && && && && &
& && &TR0=0;& && &&&//关闭定时器T0
& && &HighTime=TH0*256+TL0;& &//保存高电平宽度
& && &if((LowTime&400)||(LowTime&700))
& && && &&&return 0;& && & //如果低电平长度不在合理范围,则认为出错,停止解码& &
& && &if((HighTime&460)&&(HighTime&660))& &//如果高电平时间在560微秒左右,即计数560/0.次
& && && && &&&temp=temp&0x7f;& && & //(560-100=460, 560+100=660),则该位是0
& && &if((HighTime&1400)&&(HighTime&1900)) //如果高电平时间在1680微秒左右,即计数5=1700次
& && && && &&&temp=temp|0x80;& && & //(0,0),则该位是1
& && & }& && && && && &&&
& & a= //将解码出的字节值储存在a& && && && && && && &
& & }& && && &
& &if(a[2]==~a[3])&&//验证键数据码和其反码是否相等,一般情况下不必验证用户码
&&return 1;& &&&//解码正确,返回1
/************************************************************
函数功能:红外线触发的外中断学习函数
*************************************************************/
void Int0(void) interrupt 0
&&{& &DeCodestudy();
& && && & if(DeCodestudy()==1)
& && &P1=a[3];//测试代码接收正确与否& && &
& && &&&};& && &&&
& && &EX0=1;& &//开启外中断EX1
上面那个程序是我最近弄的有关红外发射和接收的程序,但是不知道为什么,接收解码后的数值存进a数组里,然后再由发射模块那边调用就不行了,那位大神能够帮我检查一下啊。
14:55:24  
21:29:12  
我也存在这个问题,解码程序和你差不多,你解决了吗?
19:06:11  
我做红外也遇到问题了,可以一起讨论么?
11:20:54  
我也看不懂&&希望大侠们解释
17:45:09  
学习& && && && && && &
23:46:03  
寻找高手(有偿)协助设计制作一套使用红外对管进行感应物体的电路。
& && & 1.这套系统使用在工业自动化设备上。
& && & 2.功能类似于基恩士、松下和欧姆龙的光电感应器。
& && & 3.检测距离小于50mm。
QQ:& &深圳、东莞高手请联系
08:15:40  
问一下:现在你做出来了吗?你的发射距离是多少?有没有人知道为什么我做的红外发射距离只有1cm?
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司用单片机编写好红外发射代码后用红外发射二极管发不出去,希望高手指点。_百度知道
用单片机编写好红外发射代码后用红外发射二极管发不出去,希望高手指点。
用单片机编写好红外代码后用逻辑分析仪捕抓了图片,波形很完整,测试过多次波形都一样,然后就用940nm的红外发射管串了一个150欧的电阻对着红外接收管发射,发射管的正极接VCC--5V,串电阻的一端接单片机IO口,低电平触发,但是将接收到的波形用逻辑分析仪分析...
我有更好的答案
接收端是什么器件,红外线转换后的电信号很微弱,需放大后才可进行解码,为提高发射功率,一般还要用38KHZ载波调制后发射
采纳率:88%
来自团队:
先输出一个变化周期比较长的数据,比如每100ms反转一次,看看接收正常不?如果正常,说明管子的变化速率比较低,无法满足高速信号。
本回答被网友采纳
需要帮你写吗
是代码有问题吗,感觉好像是发射电路出了不知道是什么问题,我是用一个按键的,按一下切换波形,一共7条,然后不停的循环;写完后用逻辑分析仪测波形都没问题。
秋秋上说吧
为您推荐:
其他类似问题
二极管的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。21ic官方微信-->
请完成以下验证码
请教匠人和各位前辈:红外发射距离
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
38KHZ调制后红外发射的距离特近,只有一米左右,搞了好久还没有把距离提高。恳请前辈分析下。问题描述如下:1.发射的编码我已经存在单片机里面了。比如我现在是存储的我手上SAA3010的遥控器的开机键,静音键的编码。2.&判断要发送的数据是0还是1,&&&&如果是1,从io口发送38k载波,&&&&如果是0,不发送载波,&3.载波是38K,周期26US,示波器已经侧过,占空比高/低=1:34.红外发射管规格,透明的直径5MM5.红外发射电路:IO口串1K电阻接到PNP8550的基级;发射级VCC+5V;集电极接发射管,串10欧到地。6.接收电路用的一体化接收头1838.补充:发射,接受电路如下图。接收电路是没有问题的,因为我用手上电视机遥控器发射,接收头在很远的地方都可以接收到。我用的接收头是铁壳的1838好像是不能接收连续波的,哪位大侠能讲下连续波的问题吗?我实际测试过电视遥控器的SAA3010t的发射波形,每帧数据之间是85MS。
, , , , , , ,
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
自己顶一下
自己顶一下
高级技术员, 积分 810, 距离下一级还需 190 积分
高级技术员, 积分 810, 距离下一级还需 190 积分
高级技术员, 积分 810, 距离下一级还需 190 积分
高级技术员, 积分 810, 距离下一级还需 190 积分
你试下这个
Q1接D1的阴极到地,其他顺序不变,这个时候R3可能要稍微再大点了!
呵呵,要想增加发射距离,就必须增加发射功率
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
匠人手记上的红外发射电路和我这个一样。
匠人手记上的红外发射电路和我这个一样。我现在用指针表侧电流,发射时的平均电流已经有20几MA了。不是说额定电流也就25MA吗?另外我看资料,别人也用这样的电路,发射距离也有个7,8米。
资深工程师, 积分 10694, 距离下一级还需 9306 积分
资深工程师, 积分 10694, 距离下一级还需 9306 积分
资深工程师, 积分 10694, 距离下一级还需 9306 积分
资深工程师, 积分 10694, 距离下一级还需 9306 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
是不是发送有什么“潜规则”呢?
R3去掉都没有多大效果,是不是发送有什么“潜规则”呢?我看了我手上的电视遥控器,每帧数据间隔是85MS、
你载波和数据怎么加上去的?
你只有一个IROUT啊,怎么把两个信号叠加?!没有载波,很难传远。。。
助理工程师, 积分 1602, 距离下一级还需 398 积分
助理工程师, 积分 1602, 距离下一级还需 398 积分
助理工程师, 积分 1602, 距离下一级还需 398 积分
助理工程师, 积分 1602, 距离下一级还需 398 积分
有没有可能发射管波长不对
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
可能有几种情况
1.用示波器查一下载波是不是偏离38Khz太多了或不均匀,2.载波占空比太大3.接收管的中心频率不是38Khz的
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
载波和数据都是通过同一个IO口产生2.&判断要发送的数据是0还是1,&&&&如果是1,从io口发送38k载波,&&&&如果是0,不发送载波,&3.载波是38K,周期26US,示波器已经侧过,占空比高/低=1:3
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
1.红外发射管规格,透明的直径5MM载波我测试过周期26US,比较准,而且我也在25--27US之前全测试过,效果差不多。2.现在把我的板子上的发射管换到电视遥控器上,电视遥控任然可以发射比较远的距离。
技术总监, 积分 21328, 距离下一级还需 28672 积分
技术总监, 积分 21328, 距离下一级还需 28672 积分
技术总监, 积分 21328, 距离下一级还需 28672 积分
技术总监, 积分 21328, 距离下一级还需 28672 积分
估计是连续波问题
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
估计是连续波问题请教下,我也听人说一体接收头不能接受连续的信号,可以具体说说吗?谢谢
影响距离的几个因素
1、38k载波频率是否准确2、发射功率3、接收头频率
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
中级技术员, 积分 250, 距离下一级还需 50 积分
1、38k载波频率是否准确&&&&&1/38k=26.3US,我现在将载波周期由25---27us之间都调整过了。电视距离都差不多远。周期有示波器测得。我也侧了电视遥控器的载波,貌似不是标准的方波,但是周期测得也是26US2、发射功率&&&&&&我的发射电路如楼主位,我也看了匠人您书上的关于空调遥控器的开发,和书上的那个电路差不多,而且我现在比哪个电路的限流电阻还要小,2.2欧3、接收头频率&接受都是1838一体的接收头,是38K的。
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
高级技术员, 积分 770, 距离下一级还需 230 积分
如果程序和硬件都没有问题
1.那你最好检测一下你的电源,是不是在发射时,大电流把电源拉下来了,最好有一个大的电解电容2.一直没有描述你的接收电路,是不是接收处理的问题
高级技术员, 积分 600, 距离下一级还需 400 积分
高级技术员, 积分 600, 距离下一级还需 400 积分
高级技术员, 积分 600, 距离下一级还需 400 积分
高级技术员, 积分 600, 距离下一级还需 400 积分
我做了个差不多的 我的R3有10多欧 10米内一般没什么问题
初级工程师, 积分 2639, 距离下一级还需 361 积分
初级工程师, 积分 2639, 距离下一级还需 361 积分
初级工程师, 积分 2639, 距离下一级还需 361 积分
初级工程师, 积分 2639, 距离下一级还需 361 积分
以前遇到过这种问题,是38K的接收头的问题。
如果你是根据发射后,通过38K的接收头解调后的数据是否正确作为判断依据的话,我觉得问题出在38K的接收头上。市场上确实很多38K的接收头质量不好,我也遇到过。
中级技术员, 积分 211, 距离下一级还需 89 积分
中级技术员, 积分 211, 距离下一级还需 89 积分
中级技术员, 积分 211, 距离下一级还需 89 积分
中级技术员, 积分 211, 距离下一级还需 89 积分
接收头的频率有好几种
载波分为36K,37K,38.5K等好几种,如果收发的载波频率不一致,距离就大打折扣了,就好像收音机的频率失谐一样。
扫描二维码,随时随地手机跟帖
希望之星奖章
等级类勋章
技术高手奖章
人才类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
核心会员奖章
等级类勋章
技术奇才奖章
人才类勋章
涓涓之细流
发帖类勋章
时间类勋章
时间类勋章
您需要登录后才可以回帖
热门推荐 /2如何解决红外接收距离短的问题_百度知道
如何解决红外接收距离短的问题
我有更好的答案
这个只能选择好一点的红外线接收头,还有好的发射管。这两种产品都可以在 珠海万州光电 那里找到
为您推荐:
其他类似问题
您可能关注的内容
红外接收的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。基于51单片机的红外测距仪的设计与实现_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机的红外测距仪的设计与实现
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 红外遥控发射 单片机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信