历史上的今天
今天是:2025年02月01日(星期六)
2020年02月01日 | PIC单片机红外遥控编码及识别
2020-02-01 来源:eefocus
红外遥控应用广泛,而编码及识别往往是单片机初学者最头痛的问题,其实红外编码及识别并不难,关键是要掌握红外编码及识别的方法,首先让我们来了解下红外编码.
一.红外编码.
红外编码一般是以下格式.
9ms 高电平的头+2.4ms低电平的结果码+8byte address code+8byte address code+8 byte user data+ 8byte data
由于采用一体化红外接收头,所以这里要注意发送的高电平实际上是38K的载波,就是高低电平按38K的频率不断地变换,一体化接收头会自动识别,整理为低电平.
另外一点要注意的是,发送的1,和0如图所示,其实是低电平的时间长短不同.高电平的时间都为560us.判断低电平的时间是识别0,1的关键.
二,红外识别.
红外识别实际上是发送的相反过程.如高电平接收后是低电平,以下是识别流程,
1.判断9MS头是否OK
2.判断结果码.
3.数据560us低电平结束,高电平开始,开始判断接收数据. 长的高电平为1,反之为0.
4.32BYTE接收完否?没有,重复第三步.
三,连续码的问题.
如果用户长按,实际上是只发送一个9MS头,和一个结果码,还有一个560us高电平即可.这样读出的数据实际上是一个固定的值.根据这个值就可以判断是否是连发代码.
这里简单讲了红外编码及识别的初步知识,以下是部分识别代码.
;---------------------------------------------------
ir_rec
movlw 0x20
movwf IPOD3 ;4*8=32 bits.
ir_begin
movlw 0x09 ;9
movwf IPOD2
ir_rec_data
call delay120us ;delay delay120us
btfss _IR
goto ir_low ;low....
decfsz IPOD2,F
goto ir_rec_data ;9*120us...if low then 0,
setc ;still high? 1
goto ir_save_data
ir_low
clrc
ir_save_data
rlf IPOD5,F
rlf IPOD6,F
rlf IPOD7,F
rlf IPOD8,F ;4*8=32 bits.
movlw .80 ;80
movwf IPOD2
ir_next
call delay120us ;delay120us
btfss _IR
goto ir_next_bit ;next bit
decfsz IPOD2,F ;80*120us=9.6ms
goto ir_next
bsf _IROK
retlw 0 ;return
下一篇:PIC单片机内部寄存器信息汇总
史海拾趣
|
摘要:摘要介绍无功补偿的基本原理、方法及ADμC812单片机的特点。详细论述了基于ADμC812单片机的无功补偿控制器的结构、原理、及电参量的检测方法。该控制器硬件结构简单、工作可靠、适应性强,具有很高的推广价值。 ...… 查看全部问答> |
|
这是我大学的毕业设计,当时拿到题目时真不知道如何下手,花了我3个月的时间,直到论文写完,才真正理解ucos2的工作原理的,希望对有兴趣进入嵌入式系统学习的战友们有所帮助,同时也希望大家一起探讨学习。… 查看全部问答> |
|
洞洞板(万用板)搭建8051+ENC28J60+12864,成功移植uIP0.9 需要资料的朋友请旺旺店主,或者QQ 271885846 参考 让所有的单片机都能轻松接入internet。一步一步教你移植uIP0.9到8051+RTL8019AS ENC28J60是用 端口模拟spi驱动的,参考网上的avr驱动enc28j60的资料.最大的难度在模拟SPI时序上. ...… 查看全部问答> |
|
搞ce 开发遇到个问题,在这里请教大家,帮个忙!!! 我用系统默认的ram base注册表,用viewbin查看在nk.bin中已经有default.fdf文件,用kitl调试,系统加载到filesys.exe就不动了,是不是找不到default.fdf注册表文件? 我的注册表的配置如下: ...… 查看全部问答> |
|
本人想用电子秤制作一套自动称重控制器,被秤的物料为金属粉末,称重范围10-999g;称量精度为1g。设计思路为: 1、从电子秤LED数码管的个位、十位和百位上分别译出十进制码或者BCD码。采用三个数字拨盘来设置称重的重量。 2、设计一种具有三种 ...… 查看全部问答> |
|
截获了一条命令 7.0 CTL a3 00 00 00 06 00 04 00 GET STATUS 1.1.0 这个 a3 00 00 00 06 00 04 00谁能帮我详 ...… 查看全部问答> |
|
语言是VC++,采用Socket的UDP连接,服务器程序在PC上运行,客户端在PPC上,进行通讯。流程是客户端发送一条消息給服务器sendto(正常),服务器接收客户端发送的消息recvfrom(正常),然后服务器发送一条反馈信息給客户端sendto(正常),最后客 ...… 查看全部问答> |
|
1. 小学数值计算: 0.65( 。)73( 。)÷1.5( 。)4869( 。)=0.X( 。)XXX………XXXX( 。) 2、使用一个3.3V工作CPU的2个普通I/O口,譬如P0.0 、 P0.1 和Vc=3.3V、R1>1K、R2=?、R3=?给一个RL=100欧姆供电,要求: &n ...… 查看全部问答> |




