有哪位大侠做过S51单片机 红外发射,38Khz一体化接收的题目不给小弟研究下。

有哪位大侠做过S51单片机 红外发射,38Khz一体化接收的题目不给小弟研究下。,第1张

分给我,我给你调试通过之源程序(C),先附一张图实物图!

270531131@qqcom

已将红外相关附件发送于你,请查收!

如若还有不明白,请再EMAIL我!建议你先看看关于NEC协议!

另说明:我发给你的,没有经过自制联机测试的源码,若有实物调试时通不过也就是单片机工作的晶振频率采用问题!请将你在调试过程中所遇到的具体问题发给我,知无不言!

建议发送部分采用221184晶振(若用较低频率若是12T单片机,可能会导致发送错误:中断时间13US才能产生38KHZ载波,而MCU处理其他问题仅12US时间),而接收部分可选用110592MHz

这就是一个红外解码程序,按标准来做就行了。普及一下红外解码知识:

采用脉宽调制的串行码,以脉宽为0565ms、间隔056ms、周期为1125ms的组合表示二进制

的"0";以脉宽为0565ms、间隔1685ms、周期为225ms的组合表示二进制的"1,;上述"0"和

"1"组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,;达到降低电源功耗的

目的。然后再通过红外发射二极管产生红外线向空间发射,;遥控编码是连续的32位二进制码

组,其中前16位为用户识别码,能区别不同的电器设备,;防止不同机种遥控码互相干扰。该

芯片的用户识别码固定为十六进制01H;后16位为8位 *** 作码(功能码)及其反码。

当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码

由一个起始码(9ms),一个结果码(45ms),低8位地址码(9ms~18ms),高8位地址码

(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超

过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(25ms)

组成。

解码的关键是如何识别"0"和"1",接收端而言,"0"是056ms的高+056ms的低。"1"是168ms

的高+056ms的低。所以可以根据高电平的宽度区别"0"和"1"。当高电平出现时开始延时,

056ms以后,若读到的电平为低,说明该位为"0",反之则为"1",为了可靠起见,延时必须

比056ms长些,但又不能超过112ms,否则如果该位为"0",读到的已是下一位的高电平,因此

取(112ms+056ms)/2=084ms最为可靠,一般取084ms左右均可。

做为刷新的零点。转速不是绝对稳定的,延时不是绝对准确的。无论程序执行到哪里,只要收到信号就会以此为零点开始刷屏,物理位置不会变。

旋转led是由直流电机的高速旋转,带动了若干个LED,由单片机芯片控制LED的亮灭,利用人眼的视觉暂留原理,从此就可以在空中形成各种图案。

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。

1、你是准备用红外线进行数据传输还是控制?如果是数据传输为什么不用串行口呢?如果是控制的话,就是一体接收头一接收到38K红外线输出脚为低电平,你可以参考一下,对应发送38K红外线的控制如何。

2、一体接收头接收到的38K红外线,其输出脚是输出低电平,而不是对应的38K的方波,这点你要搞清楚,38K红外线是调制波,主要是增加红外线发射距离,一体接收头只认38K红外线,超过他的功率频率,一体接收头是没有反应的。简单的讲,一体接收头只接收38K红外线,对其他红外线不敏感。不能被38Khz迷惑了。

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

sbit lcden = P2^7;

sbit lcdrs = P2^6;

sbit lcdwr = P2^5;

sbit IR = P3^2;

uchar IRCOM[6];//数组,用于存储红外编码

uchar code table1[] = "remote control";

uchar code table2[] = "CODE:";

void delayms(uchar x)// 延时x014ms

{

uchar i;

while(x--)

for(i=0;i<13;i++){}

}

void delay(uchar x) //延时xms

{

uchar i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

/LCD部分/

void write_com(uchar com)

{

lcden = 0;

lcdrs = 0;

lcdwr = 0;

P0 = com;

delay(5);

lcden = 1;

delay(5);

lcden = 0; //别忘了lcden拉低

}

void write_date(uchar date)

{

lcden = 0;

lcdrs = 1;

lcdwr = 0;

P0 = date;

delay(5);

lcden = 1;

delay(5);

lcden = 0;

}

void lcd_init(void)

{

lcden = 0;

lcdrs = 0;

lcdwr = 0;

delay(5);

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

/main()/

void main(void)

{

uchar count=0;

IR = 1;

lcd_init();

write_com(0x80);

while(table1[count]!='\0')

{

write_date(table1[count]);

count++;

delay(5);

}

count = 0;

write_com(0x80+0x40);

while(table2[count]!='\0')

{

write_date(table2[count]);

count++;

delay(5);

}

IE = 0x81; //开中断

TCON = 0x01;//脉冲负边沿触发

while(1);

}

/红外中断/

void IR_time() interrupt 0

{

uchar i,j,TimeNum=0;//TimeNum用来计IR高电平次数 从而判断是0还是1

EX0 = 0; //关闭中断

delayms(5);

if(1 == IR)

{

EX0 = 1;

return;

}

while(!IR) //跳过9ms前导低电平

delayms(1);

for(i=0;i<4;i++)

{

for(j=0;j<8;j++)

{

while(IR) //跳过45ms的前导高电平

delayms(1);

while(!IR) //跳过056ms的低电平

delayms(1);

while(IR)

{

TimeNum++; //计时高电平时间从而判断读取的是0还是1

delayms(1);

}

if(TimeNum>=30)//按键按下时间过长 跳过

{

EX0 = 1;

return;

}

IRCOM[i] = IRCOM[i]>>1;

if(TimeNum >= 8) //8014ms 这时读取的是1;

{

IRCOM[i] = IRCOM[i]|0x80;

}

TimeNum = 0;

}

}

if(IRCOM[2]!=~IRCOM[3])//判断八位数据和八位数据反码是否相等

{

EX0 = 1;

return;

}

IRCOM[4] = IRCOM[2]&0x0f;//取低四位

IRCOM[5] = IRCOM[2]>>4; //IRCOM[5]取IRCOM[2]高四位

if(IRCOM[4] > 9) //转换成字符

{

IRCOM[4] = IRCOM[4] + 0x37;

}

else

IRCOM[4] = IRCOM[4] + 0x30;

if(IRCOM[5] > 9)

{

IRCOM[5] = IRCOM[5] + 0x37;

}

else

IRCOM[5] = IRCOM[5] + 0x30;

delay(5);

write_com(0x80 + 0x40 + 5);

write_date(IRCOM[5]);

write_date(IRCOM[4]);

EX0 = 1; //重新开启外部中断

}

利用定时器定时13US中断一次,将红外发射管状态取反一次,形成38KHZ调制波,另外一个定时器负责定时056或165ms决定是否发射红外线

单片机要用高速的(如提高晶振频率或采用1T单片机),不然定时13US太短了,单片机还要进行其它判断,可能会受影响

以上就是关于有哪位大侠做过S51单片机 红外发射,38Khz一体化接收的题目不给小弟研究下。全部的内容,包括:有哪位大侠做过S51单片机 红外发射,38Khz一体化接收的题目不给小弟研究下。、这是一段51单片机的红外遥控代码,主要就是用了遥控器上的三个键。看不懂呀,求大神帮助注释或解释下、基于51单片机的旋转led屏中,红外接收管还有红外发射管的作用是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10102719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存