HeP028
发表于 2013-6-17 23:27:27
本帖最后由 HeP028 于 2013-6-17 23:32 编辑
经过改造成功:STC90C58RD+11.0592#define IRSENDPORT P0
#define TIMER9000US (65536-8294) //9mS
#define TIMER4500US (65536-4147) //4.5mS
#define TIMER1650US (65536-1520) //1.65mS
#define TIMER0560US (65536-516) //0.56mS
#define TIMER40000US (65536-36863) //40mS
#define TIMER56000US (65536-51609) //56mS
void IrUserTimerConfiguration(void)
{
TMOD |= 0x01;
IRSENDPORT = 0XFF;
}
void IRWriteOneBit(BIT send_Mode,unsigned int TimerInitValue,unsigned char ChangNumer)
{
unsigned char NumBer = 1 << ChangNumer;
unsigned char onlyOneChangorAllChang = 20;
if (ChangNumer < 8 && ChangNumer >= 0) onlyOneChangorAllChang = 0; //单独通道发送
else if (255 == ChangNumer) onlyOneChangorAllChang = 1; //所有通道都发送
TH0 = TimerInitValue >> 8;
TL0 = TimerInitValue;
TF0 = 0;
TR0 = 1;
if (send_Mode == 0) while(!TF0);
else while(1)
{
if (0 == onlyOneChangorAllChang) IRSENDPORT |= NumBer; //置位相应的通道
else if (1 == onlyOneChangorAllChang) IRSENDPORT = 0xff;
if (TF0) break; if (TF0) break;
if (0 == onlyOneChangorAllChang) IRSENDPORT &= ~NumBer; //CLR相应通道
else if (1 == onlyOneChangorAllChang) IRSENDPORT = 0x00;
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;
if (0 == onlyOneChangorAllChang) IRSENDPORT |=NumBer;
else if (1 == onlyOneChangorAllChang) IRSENDPORT = 0xff;
}
void IRWriteOneChar(unsigned char ircode,unsigned char ChangNumber)
{
unsigned char I = 0x00;
for (I = 0;I < 8;I++)
{
IRWriteOneBit(1,TIMER0560US,ChangNumber);
if (ircode & 0x01)
{
IRWriteOneBit(0,TIMER1650US,ChangNumber);
}
else
{
IRWriteOneBit(0,TIMER0560US,ChangNumber);
}
ircode >>= 1;
}
}
void IrPortWriteIrcode(unsigned char *Ircode,unsigned char ChangNumber)
{
IRWriteOneBit(1,TIMER9000US,ChangNumber);
IRWriteOneBit(0,TIMER4500US,ChangNumber);
IRWriteOneChar(*Ircode ,ChangNumber);
IRWriteOneChar(*(Ircode+1),ChangNumber);
IRWriteOneChar(*(Ircode+2),ChangNumber);
IRWriteOneChar(*(Ircode+3),ChangNumber);
IRWriteOneBit(1,TIMER0560US,ChangNumber);
IRWriteOneBit(0,TIMER40000US,ChangNumber);
}解码用的也是论坛的很好用,误码率还算比较低的哈,解100次可能错一次:SBIT IRrecPort = PORTD^3;
void IRUsereceiveTimerConfiuration(void)
{
T2MOD = 0X00;
T2CON = 0X00;
RCAP2L= (unsigned int)(0XFFFF-(250/((12/FOSC)+0.00005))+1);
RCAP2H= (unsigned int)(0XFFFF-(250/((12/FOSC)+0.00005))+1)>>8;
TL2 = RCAP2L;
TH2 = RCAP2H;
TR2 = 1;
ET2 = 1;
EA= 1;
}
BIT IRprotLaststatus = 0; // 端口状态位
unsigned char codeCount = 0; // 数据码位计数
unsigned char irTime; // 码时间,用于以125us时间计时
unsigned char InfarereceiveArray; // 接收数据缓存
void IRreceive_Hander(void) interrupt 5
{
TR0 = 0;
if (TF2)
{
TF2 = 0;
irTime++;
if (irTime == 120) //存活时间240*125=30MS
{
irTime--;
codeCount = 0x3f;
}
if (IRrecPort) IRprotLaststatus = 1;
else if (IRprotLaststatus)
{
IRprotLaststatus = 0;
if (irTime < 12)
{
codeCount++;
codeCount &= 0x1f; //限制其codeCount不大于某某数
InfarereceiveArray <<= 1;
if (irTime > 7)
{
InfarereceiveArray++;
}
}
irTime = 0;
}
}
TR0 = 1;
}
不过哪位大神看下,如果自发自收1个单片机好像完成不了哇!
jackmo
发表于 2013-7-16 15:53:07
红外发射接收
jackmo
发表于 2013-7-16 15:55:05
红外接收发射
yyinfo263
发表于 2013-7-31 23:20:43
楼主 请教下在解码头文件中定义了一个
#defineCA_S 8 //长按时间设置,单位:108mS(即 108mS整数倍,10倍以上为宜)
请问这个 CA_S为什么是108的整数倍呢 在哪里进行了定义 我这个地方不是太明白 恳请楼主指点下 谢谢
BXAK
发表于 2013-8-1 01:03:12
yyinfo263 发表于 2013-7-31 23:20 static/image/common/back.gif
楼主 请教下在解码头文件中定义了一个
#defineCA_S 8 //长按时间设置,单位:108mS(即 108 ...
用
示波器
或者
自制的简易逻辑分析仪
或者
直接用电脑录音原理,如:利用一个二极管,就可以检测315M/433M遥控器发射数据的波形,解码PT2262
记录一个完整的NEC发射波形(按住遥控某一键不放)看看它的 重复码就清楚了
如果嫌麻烦直接看网上的测试:http://www.tinyos.net.cn/?article-39.html
yyinfo263
发表于 2013-8-1 07:23:06
谢谢楼主的耐心解答 有点理解了长按有一个重复码的 我是初学单片机不久。
还有一点不明 就是 CA_S 定义为8这个数了 这个数8为什么是108mS的整数倍 是不是有一个换算关系在这里面。
BXAK
发表于 2013-8-1 13:49:31
yyinfo263 发表于 2013-8-1 07:23 static/image/common/back.gif
谢谢楼主的耐心解答 有点理解了长按有一个重复码的 我是初学单片机不久。
还有一点不明 就是 CA_S 定义为8 ...
那个没规定,看个人需要取值
yyinfo263
发表于 2013-8-1 20:41:38
了解了 再次谢谢楼主
甲小虫
发表于 2013-8-2 14:19:14
m ar k!
n321
发表于 2013-8-2 23:38:40
BXAK 发表于 2012-2-29 01:39 static/image/common/back.gif
回复【58楼】b60885262
-----------------------------------------------------------------------
楼主,你用的是STC11L04E吗,我也有2片,想拿一片实现从串口收到遥控码值后通过11L04E接红外头发送出去,另一片实现接红外头接收遥控码值解码从串口输出码值,能指点一下吗。当然一片能实现收发最好了。
BXAK
发表于 2013-8-4 18:51:12
n321 发表于 2013-8-2 23:38 static/image/common/back.gif
楼主,你用的是STC11L04E吗,我也有2片,想拿一片实现从串口收到遥控码值后通过11L04E接红外头发送出去, ...
一片就可以了
jsntzxh
发表于 2013-8-4 19:51:42
好东东,收藏
linbao01
发表于 2013-8-4 22:45:34
非常不错哦,谢谢
zlpvch
发表于 2013-8-12 00:28:40
mark
liliuqun
发表于 2013-10-14 20:54:17
好东西,顶
二进制
发表于 2013-10-15 18:55:43
老帖了感谢 楼主
caoxuedong
发表于 2014-5-26 22:06:31
最近才开始用STC 1T的单片机,原先一直用的PIC,Mark一下,做块板子试试!
蓝蓝的恋
发表于 2014-5-27 09:01:55
好东西,记下了~
clarkewayne
发表于 2014-5-28 16:17:18
多謝分享,讚一個
downtoearth
发表于 2014-6-1 18:50:04
楼主很厉害,帖子很好。不过我都无心机学了
yydd_1
发表于 2014-6-9 12:01:35
多任务的思想,不错
ZYBing
发表于 2014-6-9 13:42:44
mark,谢谢分享!
zlpvch
发表于 2014-6-9 16:20:59
mark
zlo007
发表于 2014-7-4 08:47:40
mark,谢谢分享!
mindrover
发表于 2014-8-7 11:43:47
mark,最近要做这方面,谢谢楼主的无私
lengque007
发表于 2014-8-28 14:09:17
收藏了,谢谢楼主
t1510794321
发表于 2014-9-5 15:25:20
mark
atg525
发表于 2015-1-26 16:23:13
很好红外编解码资料,谢谢分享!
suny1022
发表于 2015-1-26 17:10:28
够详细,GOOD
captain_steve
发表于 2015-1-26 19:09:57
Mark一下,好东西
请叫我中路杀神
发表于 2015-1-26 22:00:47
楼主不错
xurenhui
发表于 2015-1-26 22:33:56
楼主你太给了,服务也很给力,及时还给人分析,无私啊
yzh
发表于 2015-1-26 23:29:49
很不错的分享!
夏朗
发表于 2015-5-8 20:14:58
楼主你好! 我把红外解码程序在STC12T单片机上运行可以,但在STC 1T单片机上就不能正常解码了。请问需要做何更改呢?
dexidz
发表于 2015-5-8 20:20:27
夏朗 发表于 2015-5-8 20:14
楼主你好! 我把红外解码程序在STC12T单片机上运行可以,但在STC 1T单片机上就不能正常解码了。请问需要 ...
都是是挖坟的主啊.....
主要是延时函数的不同,用小精灵什么,重新生成一直试试就好用了
trm99999
发表于 2015-10-9 23:51:38
找了好久,这个发须得顶
Honey_comb
发表于 2015-10-10 08:51:50
红外解码mark
usm4glx
发表于 2015-10-10 16:51:27
回去马上试试,谢谢楼主啊,一直想涉足红外遥控解码这块
wthacb
发表于 2015-12-14 01:06:21
mark 好东西 谢谢楼主分享
风铃夜思雨
发表于 2015-12-14 12:03:56
老贴, 不过质量不错,刚好有部份代码正须要的..
zenghl
发表于 2016-6-13 12:35:40
谢谢楼主啊
cos
发表于 2016-6-13 13:31:13
好贴 收藏。
hefen-cai
发表于 2016-8-26 14:30:42
好东西学习的好资料
zjsdlt2013
发表于 2017-5-16 20:45:01
mark,赞一个!!!
tangly2017
发表于 2017-11-1 17:11:30
好资料,找了很久,谢谢楼主的分享
tangly2017
发表于 2017-11-1 21:38:14
楼主真是大好人,好东西学习了,谢谢你的分享!!
hefen-cai
发表于 2018-2-19 11:23:46
好东西学习了
desireyao
发表于 2018-9-29 22:40:02
很不错,{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}
changshs
发表于 2018-10-1 00:42:47
不错,学习了。
zijunh
发表于 2020-7-9 20:15:52
学习收藏,谢谢楼主
fengyunyu
发表于 2020-7-9 21:33:39
不错,收藏