历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2018年01月16日 | 用AT89S51制作的红外遥控器

2018-01-16 来源:eefocus

 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。
  当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
  采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。


  上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。
  根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。


 接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。

C51程序代码:

#include

statIC bit OP; //红外发射管的亮灭
static unsigned int count; //延时计数器
static unsigned int endcount; //终止延时计数
static unsigned char flag; //红外发送标志
char iraddr1; //十六位地址的第一个字节
char iraddr2; //十六位地址的第二个字节

void SendIRdata(char p_irdata);
void delay();

void main(void) 
{
count = 0;
flag = 0;
OP = 0;
P3_4 = 0;

EA = 1; //允许CPU中断 
TMOD = 0x11; //设定时器0和1为16位模式1 
ET0 = 1; //定时器0中断允许


TH0 = 0xFF; 
TL0 = 0xE6; //设定时值0为38K 也就是每隔26us中断一次 
TR0 = 1;//开始计数

iraddr1=3;
iraddr2=252;


do{
delay();
SendIRdata(12);
}while(1);
}

//定时器0中断处理 
void timeint(void) interrupt 1 

TH0=0xFF; 
TL0=0xE6; //设定时值为38K 也就是每隔26us中断一次
count++;

if (flag==1)
{
OP=~OP;
}
else
{
OP = 0;
}
P3_4 = OP;
}


void SendIRdata(char p_irdata)
{
int i;
char irdata=p_irdata;

//发送9ms的起始码
endcount=223;
flag=1;
count=0;
do{}while(count

//发送4.5ms的结果码
endcount=117
flag=0;
count=0;
do{}while(count

//发送十六位地址的前八位
irdata=iraddr1;
for(i=0;i<8;i++)
{

//先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)
endcount=10;
flag=1;
count=0;
do{}while(count

//停止发送红外信号(即编码中的高电平)
if(irdata-(irdata/2)*2) //判断二进制数个位为1还是0
{
endcount=41; //1为宽的高电平
}
else
{
endcount=15; //0为窄的高电平
}
flag=0;
count=0;
do{}while(count

irdata=irdata>>1;
}

//发送十六位地址的后八位
irdata=iraddr2;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count

irdata=irdata>>1;
}

//发送八位数据
irdata=p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count

irdata=irdata>>1;
}

//发送八位数据的反码
irdata=~p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count

irdata=irdata>>1;
}

endcount=10;
flag=1;
count=0;
do{}while(count flag=0;
}

void delay()
{
int i,j;
for(i=0;i<400;i++)
{
for(j=0;j<100;j++)
{
}
}
}


推荐阅读

史海拾趣

成都芯进(CrossChip)公司的发展小趣事

2013年,三位在半导体行业积累了近十年经验的成电校友,怀揣着对电子技术的热爱和对国产芯片事业的执着,在成都创办了成都芯进电子有限公司(CrossChip)。公司初期专注于模拟和混合信号芯片设计,并以磁传感器芯片作为切入点。一年后,他们的首款产品——开关型霍尔传感器成功实现量产销售,为公司的发展奠定了坚实的基础。

Ericsson公司的发展小趣事

Ericsson公司在早期就非常注重市场拓展和全球布局。通过与各国电信运营商建立合作关系,Ericsson成功将其产品和服务推广到了全球各地。特别是在中国市场,Ericsson早在19世纪90年代就与中国签订了供货合同,成为中国通信网络建设的重要参与者。如今,Ericsson已经在中国扎根130余年,成为了唯一一家从1G到5G全程参与中国通信网络建设的企业。

DMS Electronic Components, Inc公司的发展小趣事

DMS深知品质对于企业的重要性,因此从一开始就建立了严格的质量管理体系。公司采用先进的生产设备和工艺,对每一个环节都进行严格把关,确保产品质量符合国际标准。DMS还积极参与国际认证,通过ISO9001、CE、UL等认证,进一步提升了品牌的国际竞争力。

Deltron / DEM Manufacturing公司的发展小趣事

随着公司实力的不断增强,DEM Manufacturing开始积极拓展国际市场。公司凭借优质的产品和专业的服务,成功打入欧洲、北美等多个地区的市场,并建立了稳定的销售网络。同时,公司还积极参与国际展览和论坛,与国际同行进行交流和合作,不断提升自身的国际影响力。

安森德(Ascend)公司的发展小趣事

安森德公司自创立之初,便以技术创新为核心竞争力。在半导体工艺领域,公司研发团队不断攻坚克难,成功研发出具有自主知识产权的超结MOSFET技术。这一技术的导通损耗和开关损耗均达到行业领先水平,为电源设备带来了更高的效率和更低的能源消耗。凭借这一技术突破,安森德的产品迅速在市场上获得认可,为公司的快速发展奠定了坚实基础。

Delta Electronics公司的发展小趣事

除了电源管理技术外,Delta在工业自动化领域也取得了重要突破。公司开发了一系列工业自动化产品和解决方案,如变频器、PLC、HMI等,广泛应用于机械制造、自动化生产线等领域。这些产品和解决方案不仅提高了生产效率,降低了生产成本,还为客户提供了更加智能化、自动化的生产方式。

问答坊 | AI 解惑

20分钟制作出印刷线路板

本系统由一台数控热转移式制版机和一台印刷电路板快速腐蚀机及具有耐高温不粘连特性的热转印纸组成。利用该系统,可以非常快速地小批量生产印刷电路板。该系统与传统的制板工艺相比具有以下显著的优点: 1.制板精度高:能达到接近激光打印机分辨率 ...…

查看全部问答>

按键问题

#include sbit d0=P1^0; sbit d1=P1^1; sbit d2=P1^2; sbit d3=P1^3; void yanshi(int x) {     int j;     while(x--) { for(j=0;j…

查看全部问答>

应用射频芯片怎样实现定向功能?

现有一块nRF24L01芯片和单片机,怎样实现较近距离上的定向功能??…

查看全部问答>

wince连接的问题,在线等

Wince连PC2003时总报connect to device failed。是什么原因啊!…

查看全部问答>

新手急救,build有问题??急急!!

pb4.2下,我照书上的例子定制的,以前build能通过,后来不知为什么(不知是不是装了evc4.0的源故)build有问题,重装了几次都不行,这次输出的错误信息有: BUILDREL: Copying SYSGENED files from K:\\pbce4.2\\WINCE420\\PUBLIC\\TESTCY~1\\WINC ...…

查看全部问答>

FASM 教程哪里有?

FASM 教程哪里有?…

查看全部问答>

本来感觉万利不错,以前买的SE52的仿真器还可以但是这次然

本来感觉万利不错,以前买的SE52的仿真器还可以但是这次然我失望……昨天打打电话到杭州万利的销售,倒也满爽快的报价也是199。当天发货,今天收到货拆开就感觉到不对。首先、映入眼帘的是CR1220的时钟电池没有安装。那到算了,自己加一个。其 ...…

查看全部问答>

跪求:风力风度风向测试系统的 毕业设计

有哪位大侠 有关于   风力风向风速测试系统   的毕业设计,QQ:758757891,E-mail:zhongzhou-love2008@163.com,小弟先在此跪谢啦。 …

查看全部问答>

大规模使用加法器代码优化

小弟搞FPGA不久,最近要写一个有关PN码捕获的匹配滤波器的verilog代码,结果要在一个时钟内完成500+的加法和移位,不知道怎么写代码,难不成需要写上千行代码。。。。求助各位大神~!…

查看全部问答>

一个小白电子工程师采购物料的经验分享

和很多痴迷电子的工程师一样,自己家中常常进行一些实验,螺丝刀到示波器,必须的开发及测试设备虽然简单却也一应俱全,平常用的电子器件和芯片也是大袋小兜的数不尽,如果用到外国的料,一般只好到外国网站找,好像Findchips,oemtrade,但都需要用信 ...…

查看全部问答>