当前位置:首页 > 单片机 > 单片机
[导读] 遥控发射器专用 芯片 很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码 原理 (一般家庭用的DVD、VCD、音响

遥控发射器专用 芯片 很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码 原理 (一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
一、电路实现
红外发射器很容易找到,我们平时家用的电视、DVD遥控器都可以用来进行实验。下面的 电路图 是红外接收部分的电路图,



二、红外接收原理
关于红外发射部分,由于我们采用的是现成的遥控器,而不同的遥控器其实现电路各不相同,这里我们就不详细介绍。我们只需要知道遥控器发射出来的 数据 格式,然后通过红外接收器接收数据,并根据数据格式将其进行分解,得到相应键值即可。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,发射波形图如下:


当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射 代码 由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。其中32位数据格式如下:


这种遥控码具有以下特征:
采用脉宽调制的 串行 码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,波形如下图:




三、 程序 实现

在本 实例 中,我们利用 串口 将单片机从一体化红外接收器接收到的红外遥控键值发送到计算机上,通过计算机的串口助手观察接收到的数据。

编程过程中,我们利用 单片机 的外部中断0口进行检测,一旦检测到有红外遥控信号出现,则程序进入外部中断处理程序,在处理数据过程中关闭外部中断,直到接收完数据,再将外部中断打开。注意使用串口助手查看数据的时候选择16进制显示

红外遥控的数据接收主要在外部中断函数中进行处理:处理过程为:当有遥控键值发送的时候,红外一体化接收器的脉冲信号输出脚发生一个下降沿的电平变化,外部中断采用下降沿出发的方式接收到由外部中断事件发生,程序进入外部中断处理函数,首先关闭外部中断,然后根据一体化接收器脉冲信号输出引脚的高低电平变化时间判断红外遥控发送的数据,共有4个字节的数据,处理完这4个字节数据后,利用 单片机 的串口将数据发送到计算机。






下面是完整代码:其中串口数据发送部分的程序请查看前面关于串口的实现部分
#include
#include
#include //中断函数头文件
#include "usart.h"
void INT_Init(void); //外部中断初始化
void Delayus(unsigned int lus); //us延时函数
void Delayms(unsigned int lms); //ms延时函数

int main(void)
{

Port1_Init();
Usart1_Init();
INT_Init();

sei(); //使能全局中断

while(1)
{

}
}
//外部中断初始化
void INT_Init(void)
{
EICRB |= (1 << ISC41); //选择外部中断4,下降沿触发中断
EIMSK |= (1 << INT4); //使能外部中断4
}
//
ISR(INT4_vect)
{
unsigned char i,j,k = 0,addr[4] = {0};

EIMSK = 0x00; //禁止外部中断4 关闭外部中断,开始接受数据
for(i = 0;i < 14;i++)
{
Delayus(400);
if(PINE & (1 << PE4)) //9MS内有高电平,则判断为干扰,退出处理程序
{
EIMSK |= (1 << INT4); //使能外部中断4
return;
}
}
while(!(PINE & (1 << PE4)));//等待9ms低电平过去
for(i = 0;i < 4;i++) //
{
for(j = 0;j < 8;j++) //
{
while(PINE & (1 << PE4)); //等待4.5ms高电平过去
while(!(PINE & (1 << PE4))); //等待变高电平
while(PINE & (1 << PE4))//计算高电平时间
{
Delayus(100);
k++;
if(k >= 30) //高电平时间过长,则退出处理程序
{
EIMSK |= (1 << INT4); //使能外部中断4
return; //
}

}
addr= addr>> 1; //接受一位数据
if(k >= 8)
{
addr= addr| 0x80; //高电平时间大于0.56,则为数据1
}
k = 0; //计时清零
}
}

Usart1_PutChar(addr[0]); //通过串口发送接收到的4个字节
Usart1_PutChar(addr[1]);
Usart1_PutChar(addr[2]);
Usart1_PutChar(addr[3]);

EIMSK |= (1 << INT4); //使能外部中断4
}
//
//us级别的延时函数
void Delayus(unsigned int lus)
{
while(lus--)
{
_delay_loop_2(4); //_delay_loop_2(1)是延时4个 时钟 周期,参数为4则延时16
//个时钟周期,本实验用16M晶体,则16个时钟周期为16/16=1us
}
}
//ms级别的延时函数
void Delayms(unsigned int lms)
{
while(lms--)
{
_delay_loop_2(4000); //延时1ms
}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭