当前位置:首页 > 单片机 > 单片机
[导读]一、红外遥控解码部分从昨天开始整,一直到现在才解码成功!中途遇到了不少问题,结果出来后还是觉得有必要总结一下,唉!1、首先我又是怀疑我硬件电平不兼容德问题,后来给接上3.3V的电压,还是不行,好吧,算失败了

一、红外遥控解码部分从昨天开始整,一直到现在才解码成功!中途遇到了不少问题,结果出来后还是觉得有必要总结一下,唉!

1、首先我又是怀疑我硬件电平不兼容德问题,后来给接上3.3V的电压,还是不行,好吧,算失败了,在网上查阅了比较多的帖子,也找了比较多的资料,最终还是决定用原本那个生了锈的遥控来解码!

2、然后准备参照着原来51的思想来移植代码,也确实找到类似的代码貌似使用的2.0的库写的,单步调试了半天,总感觉在延时部分出了点问题,所以比较郁闷,好吧,分析来分析去的,结果真的是没有半点现象啊!果断网上求助,游荡了一会,压根没人理,高手不屑一顾呀!!偶然间让我遇到了原子哥的那段红外的代码,拖出来分析,所以就有了今晚解码成功的结果!

3、我照着原子的移植,我用的是自己的延时,也就是系统定时器,MTD,单步调试的时候,发现居然死在了systick那里,进不了中断,一步步观察,好像导致进不了中断的原因就是:我已经进了外部中断,心想,没道理啊,系统定时器的优先级不应该是高于外部中断的么,因为他是核决定的呀(至少我是这么想的),然后又查了相关资料,据说系统定时器的中断优先级是最低的,这时候我才恍然大悟!

现在开始分析代码,虽然说原子的代码风格不怎么样,但是个人觉得他真的好牛逼,库函数是人家ST公司搞出来的,我想,原子的这套代码,应该基本上是他自己一个人整出来的吧!

二、所谓红外遥控!(针对我手上的红外遥控)

1、红外解码一直是单片机中应用较多的,需要设备加装专用解码芯片,这就大大减轻了单片机的负担。需要单片机样例使用延时做红外解码,比较容易理解,
下面通过TC9012和uPD6121芯片为例大致了解解码原理:
先看一接收头产生的波形图,这是原子的一张图


% U, K" ?3 K2 _( j' a! e: K: o
从上图可以看出 9.0ms高电平+4.5ms低电平称为头码,用于识别是否遥控码开始,这是一张连续发射码的波形图(就是一直按下某一遥控器按键)。; n5 [
+ z; ^4 d( T# L) h" Y6 B5 j3 T
头码过后会出现4个8位的数据,我们最终目的就是要把这个 32位(4x8)从一体化红外接收头提取出来,并转换成16进制数,用于区分不同按键按下得出的不同数值。
在遥控器发射波形中,可以知道,8位数中的0或者1不是用高低电平表示,而是用不同的低电平的宽度表示,0.565ms表示0,1.69ms表示1,2个位中间还会有一个0.56ms的高电平
看到如上图波形,表示单片机引脚可以接收到的波形,我们只要通过单片机读取波形并分析波形的宽度,然后分辨出是头码,还是0或者1,最后整理出这组码的16进制组合。正确的解码结果是按同一个按键得出的16进制数值是不变化的。通过这个原理,我们可以分辨出每个按键的键值。
! z7 B/ `2 Q: z
基本原理分析如下,如接收到头码是4.5ms低电平+4.5ms高电平,我们分析 第一个下降沿到第二个下降沿的宽度是 9ms,我们判断这个头码可以给定一个范围,只要数据在这个范围内则认为头码是正确的,检测头码正确后接着检测剩下的32位数值。

2、用自己的话概括就是:平常是高电平--->按键按下--->产生引导码(9+4.5)ms--->然后判断是不是连续发送--->1还是0--->存储码值--->转换码值!简单就是这样!

3、首先是我的主程序,代码注释都非常详细,不解释了!注意码值需要依据自己的遥控而定,我就是单步测试出来的!


#include"stm32f10x.h"

#include"Usart.h"

#include"stdio.h"

#include"Remote_Control.h"

#include"Delay.h"

/**************************PA1接红外接收端************************************/

/************由于没有做外设测试的程序是:按键PA0仅一个LED灯*******************/

/*******由于没有做外设测试的程序是:串口采用的是PA9->(T<->T),PA9->(R<->R)*****/

intmain(void)

{

u8key;

USART1_Config();

delay_init(72);//延时初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级

printf("rn("__DATE__"-"__TIME__")rn");

Remote_Init();

while(1)

{

if(Remote_Rdy)

{

key=Remote_Process();

switch(key)

{

case0x68:printf("0n");break;//0

case0x30:printf("1n");break;//1

case0x18:printf("2n");break;//2

case0x7a:printf("3n");break;//3

case0x10:printf("4n");break;//4

case0x38:printf("5n");break;//5

case0x5a:printf("6n");break;//6

case0x42:printf("7n");break;//7

case0x4a:printf("8n");break;//8

case0x52:printf("9n");break;//9

default:break;

}

}

}

}


4、然后是驱动程序


/*-------------------------协议--------------------------

开始拉低9ms,接着是一个4.5ms的高脉冲,通知器件开始传送数据了

接着是发送4个8位二进制码,第一二个是遥控识别码(REMOTE_ID),第一个为

正码(0),第二个为反码(255),接着两个数据是键值,第一个为正码

第二个为反码.发送完后40ms,遥控再发送一个9ms低,2ms高的脉冲,

表示按键的次数,出现一次则证明只按下了一次,如果出现多次,则可

以认为是持续按下该键.

---------------------------------------------------------*/

#include"Remote_Control.h"

#include"Delay.h"

u32Remote_Odr=0;//命令暂存处

u8Remote_Cnt=0;//按键次数,此次按下键的次数

u8Remote_Rdy=0;//红外接收到数据

/************************初始化红外接收引脚的设置**********************************/

/******************选择PA1脚作为外部中断,用于红外输入*****************************/

voidRemote_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;//GPIO

NVIC_InitTypeDefNVIC_InitStructure;//中断

EXTI_InitTypeDefEXTI_InitStructure;//外部中断线

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; //注

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

随着科技的发展,无线遥控开关被广泛的使用,无线遥控开关是采用高科技的射频识别技术设计制作,用无线遥控开关设备控制各类灯饰、家电、门、窗帘等家居用品,是一种新型智能化开关,可对室内灯具、家电等进行无线控制,操作简单方便,性...

关键字: 无线遥控开关 红外遥控

北京2022年12月19日 /美通社/ -- 今年3月在IPF2022大会上,浪潮面向中国超融合市场确立“勇立潮头,冲刺第一”战略目标。此后浪潮持续发力超融合市场,在政府、金融、企业、教育、医疗、能源、交通等多...

关键字: 解码 数据中心 SMART 内存

北京2022年12月5日 /美通社/ -- 当大数据遇到"小切口",当智慧科技遇到切实民生,高效、活力、幸福的社会治理共同体已然应运而生。 青岛市崂山区社会治理中心携手曙光云,研发设计的诉...

关键字: 解码 大数据 BSP 智慧社区

宝洁在主题为"美好生活实验室 -- 解码未来"的2022年进博会展位上,举办了 "宝洁中国可持续发展目标与进展发布会",公布近年来围绕可持续发展目标的重要进展和实践成果,并在此基础上发布进一步完善和更新的可持续发展目标。...

关键字: 可持续发展 解码

(全球TMT2022年8月15日讯)7月28日,由元年云主办,甲子光年、TOB行业头条、朋湖网、第一新声、经观传媒支持的"元年云新品牌战略暨经营管控SaaS产品体系发布会"在线上开播。2022年,元年从战略上明确了未来...

关键字: SAAS 控制 CE 解码

百年创新积淀,赋能健康电竞 广州2022年8月1日 /美通社/ -- 近年来,电子竞技日渐成为年轻人追捧的娱乐生活方式,并深受世界各大权威赛事认可。而即将于杭州举办的第19届亚运会上,电竞更首次成为亚运会正式...

关键字: 光学 大众 数字化 解码

智启未来空间,解码数智消费 海口2022年7月26日 /美通社/ -- 今天是第二届中国国际消费品博览会(以下简称"第二届消博会")开展首日,普华永道以"智启未来空间,解码数智消...

关键字: 数字化 可持续发展 解码 BSP

北京2022年6月6日 /美通社/ -- 由中国营养保健食品协会母婴营养专业委员会主办的2022母婴营养与心身健康学术研讨会于6月4日上午圆满召开,并启动了菲仕兰Friso美素佳儿心身健康研究院,计划推动母婴心身健康的医...

关键字: ISO 研讨会 解码

视频控制器一般由显卡驱动程序或DirectX中自带 视频控制器模块是芯片与显示平台的数据接口,对检验芯片设计是否成功起着重要的作用,有必要把它单独划分为一个子模块。为了提高设计的成功率,在设计初期采用了基于FPGA的原型...

关键字: 视频控制器 解码 芯片设计

曼彻斯特编码(Manchester)又称裂相码、同步码、相位编码,是一种用电平跳变来表示1或0的编码方法,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。由于...

关键字: 曼彻斯特编码 解码 差分曼彻斯特编码
关闭
关闭