51单片机红外解码资料+源代码docxWord下载.docx
- 文档编号:19483755
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:9
- 大小:72.32KB
51单片机红外解码资料+源代码docxWord下载.docx
《51单片机红外解码资料+源代码docxWord下载.docx》由会员分享,可在线阅读,更多相关《51单片机红外解码资料+源代码docxWord下载.docx(9页珍藏版)》请在冰豆网上搜索。
°
引导码”
rI8«
36m”
S
27ms
WS8.Sm$至76.5ms
■■、nn•4匚e•
上述“0”和“1”组成32位二进制代码,包括两次8位用户码,
8位数据码,和8位数据反码以及最后的同部位。
-体化红外接收管原理图
一体化红外接收头在检测到38K红外遥控载波信号时输出低电平,在未检测到39K的红外遥控载波信号时输出高电平。
发射器发射的的信号为
in
innn,z
innn„
innn”
-O-
4.5nis
p低她一
■用户编码
用户编码
键弦据码
键数弟玛反玛
"
I8«
58.5ms§
76.5ms
接收器接收到的信号为
即9ms低电平后4.5ms高电平作为起始码,之后接受到两次8位客户码,一次八位数据码,和一•次八位数据反码。
遥控器〃按键按卜•之后周期件的发出同一种32位二进制编码周期约为108ms,纽码持续时间随本身的“0”“1”个数不同
而不同。
人约在45~63ms之间,当一个键按下36ms,振荡器使芯片激活,将发射一•组108ms的编码脉冲这108ms编码脉冲由一个起始码(9ms),一个结束码(4.5nis),低八位地址码(9〜18ms),高八位地址码(9〜18ms),八位数据码(9〜18ms),和这八位数据码反码(9〜18ms),如果按下超过108ms仍未松开,接卜-来发射的代码(连发代码)将仅有起始码(9ms)和结束码(2.5ms)组成。
解码的关键是如何识别零和一:
“0”和“1”都是以0.56ms低电平开始的,不同的是高电平宽度不同,“0”为0.56ms“1”为1.168ms,所以必须根据高电平宽度来区别“0”和T。
如果从0.56ms低电平过后,开始延时,0.56ms后,若读到的电平为低,说明该位为零,反之则为」,可靠其间,延时必须比0.56ms长一些,又不能超过1.12ms,否则如果该位为零,读到的已是下一位高电平,因此取(1.12+0.56)/2=0.84ms最为可靠,一般取0.84ms左右均可。
根据码的格式,应该等待9ms起始码和4.5111S结束码完成后才能读码。
备注:
定时器/计数器控制寄存器TCON
位序
号
D7
D6
D5
D4
D3
D2
D1
DO
位符
TF1
TR1
TF0
IR0
IE1
m
IE0
ITO
位地
址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
源代码如K:
#include<
reg52.h>
#defineucharunsignedchar
#defiiieuintunsignedintsbitdula=P2A6;
sbitwela=P2A7;
uchariilime;
〃红外时间
ucharstallflag;
〃启动接收
ucharirdata[33];
ucharbitnmn;
ucharineceiveok;
〃红外接收完毕
ucharircode[4];
uchariiprosok;
uchardisp[8];
ucharcodesmg_du[]={
0x3F7*0*/
0x067*1*/
Ox5B,/*2*/
0x4F7*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F/*8♦/
0x6F,/*9*/
0x77,/*A*/
0x7C,/*b*/
0x39,/*C*/
0x5E,/*d*/
0x79,/*E♦/
0x71,/*F*/
};
ucharcodesmg_we[]={
Oxfe,
Oxfid,
Oxfb,
0xf7,
Oxef,
Oxdf,
Oxbf0x7f,
};
voiddelay(uintz)
{
uintij;
fbr(i=z;
i>
O;
i~)
for(j=110;
j>
0;
j-);
}
voidtimerOinit(void)//定时器0初始化
TMOD=0X02;
〃方式2
TH0=0X00;
〃高第八位清零
TL0=0X00:
EA=1;
〃打开全局中断允许位(中断允许寄存器IE)
ETO=1;
〃打开定时器0中断允许位(中断允许寄存器
IE)
TRO=1;
〃寄存器TCON,置一启动定时器0
voidintOiiiit(void)〃夕卜部中断0初始化
ITO=1;
〃置一,跳变沿触犯方式,引脚INTO上,下降沿的
负跳变有效
EXO=1;
〃外部中断0中断允许位
〃全局中断允许位
voidirwork(void)
disp[0]=ircode[0]/16;
disp[l]=ircode[0]%l6;
disp[2]=ircode[1]/16;
disp[3]=ircode[l]%16;
disp[4]=ircode[2]/16;
disp[5]=ircode[2]%16;
disp⑹=ircode[3]/l6;
disp[7]=ircode[3]%16;
voiddisplay(void)
uchari;
fdr(i=O;
i<
&
i++)
dula=l;
PO=smg_du[disp[i]];
dula=O;
PO=OxfT:
wela=1;
PO=smg_we[i];
wela=0;
delay(l);
P0=0xfT;
voidiipros(void)//1.125nis/0.2777=4.39=4.05个irtime(数据
零)
{//2.25ins/0.2777=8.10个irtime(数据一)取
中间值6
ucliark,i,j;
ucharvalue;
k=l;
〃跳过引导码
fbr(j=0;
j<
4;
j-H-)
for(i=0;
8;
value=value»
l;
//7次if(irdata[k]>
6)//8次{
value=value|0x80;
k-HF;
}ircode[j]=vahie;
irpTOSok=1;
〃从这里开始
〃定时器0初始化
〃外部中断0初始化
〃人循环
voidmain()
tiinerOinitO;
intOiiiit();
while(l)
iffineceiveok)
iipros();
ineceiveok=0;
if(iiprosok)
irwoik();
iiprosok=0;
display();
voidtiinerO()intemipt1〃d时器0,初值口动重装的8位怎时器{〃最大计数值256,2的8次方
irtiiiie++;
//256//每加计数256次,计数次时间为0.001085069ms
}〃每加一,计数256次,共需0.2777ms
voidinto()intemipt0〃夕卜部中断0(INTO)
if(startflag)if(iitime>
32)〃说明收到的是引导码13.5ms(引导码)
70.2777=48.7个inime
bitnum=0;
irdata[bitnum]=ii1ime;
iilime=0;
bimum++;
if(bitnum=33)
ineceiveok=l;
else
stailflag=l;
irtime=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 红外 解码 资料 源代码 docx
![提示](https://static.bdocx.com/images/bang_tan.gif)