搜索
bottom↓
回复: 24

占空比红外接收方式流程图,也许有人用得着【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-21 18:22:20 | 显示全部楼层 |阅读模式
本人一新手,刚刚从事单片机开发工作不到3个月,最近用到红外遥控器接收,将自己的设计思路跟大家共享一下。欢迎拍砖。

红外发送一般有两种方式,一种是占空比,另外一种是码长。

占空比方式是指“1”和“0”码的长度一致,只是占空比不同。以我接触到的为例,每位数据的码长均为1.6ms,但“0”码为低电平1.2ms,高电平0.4ms,“1”码为低电平0.4ms,高电平1.2ms。每帧数据12位,最高的12、11、10这三位为头码,固定为110,第9、8位为用户码,由用户决定,剩下的第7~1位为按键码。当按下不松时会持续发码,每帧数据之间间隔8ms,发送码和按键码表如下图:(注意发送码和接收码互补)



红外码表 (原文件名:码表.JPG) 



按键码表 (原文件名:按键码表.JPG) 

因为使用的是三星的S3C9498芯片,估计用过的人不多,而且用的是汇编语言,还有一些是公司自己定义的宏,所以程序就不贴出来了,下面是流程图。由于上头明确表示不允许使用捕获方式,所以采用的是125us查询一次的方法,检测一个周期中心的值来获得接收码的值,即读取上图红外码表中红线位置处的值,蓝线位置是可能出现的误差范围(-125us~+125us,即多或者少判定了1次)。



流程图 (原文件名:流程图.JPG) 



变量说明:

TA:接收码长计数器,因为2帧数据之间间隔8ms,8/0.125=64,考虑误差,当TA>=62时认为一帧数据发送结束,当TA>=90时认为按键已经松开

HC(HalfCounter):半周期计数器,一位的长度为1.6/0.125=12.8,取13,其中心为7

BitC(BitCounter):接收到位数据计数器,每接收1位加1,正常到12即1帧数据长度后清0

RecC:接收到的数据帧计数器,每接收到1帧数据加1,可用于判连按

bCheck:接收码检测标志位,置高表示该数据已经检测过

bBit1:高电平标志位,置高表示检测到高电平。

InPin(InputPin):红外接收头数据引脚

编程思路:

每125us查询一次,

读TA值,大于90,直接去判断引脚是否变为低电平

        小于90,判断数据是否处理过,bChenk=?

             处理过,bCheck=1,判断引脚电平,InPin=?

                InPin=1,置高电平位,bBit1=1,返回

                InPin=0,判断之前是否为高电平,bBit1=?

                             bBit1=0,说明不是第1个低电平,数据未接收完毕,返回

                             bBit=1,说明是第1个低电平,即一个新的数据开始。就开始判断刚结束的数据

                                   10<TA<15(1.25ms~1.875),一位接收完毕,bCheck=0,TA=0,bBit1=0,为下一位接收作准备,返回

                                   TA>62(7.75ms),一帧数据接收完毕,转到接收码校验处理程序。

             未处理,bCheck=0, 判断是否到中心位置,++HC=?

                        HC<7,未到中心位置,返回

                        HC>=7,到中心位置,判断引脚电平,InPin=?

                             InPin=1,接收到的数据位为1

                             InPin=0,接收到的数据位为0

                             数据处理,BitC++,HC=0,bCheck=1返回



数据校验流程图如下,只是说下因为是在第1个低电平处理上1个数据,所以RecC=1时有可能是上次按键发送的最后一个数据,所以判断RecC=2时候的数据。



校验流程图 (原文件名:红外接收校验流程图.JPG) 

        

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2009-1-21 18:23:25 | 显示全部楼层
占楼,明天有空发下码长方式的流程图

出0入0汤圆

发表于 2009-1-21 23:25:07 | 显示全部楼层
  虽然用不到,但还是多谢楼主的精神

出0入0汤圆

发表于 2010-5-25 22:46:04 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-1-12 11:07:28 | 显示全部楼层
很有用的资料,

出0入0汤圆

发表于 2011-2-5 07:52:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-5 12:36:47 | 显示全部楼层
发思路,很好,谢谢楼主,收藏待用!

出0入0汤圆

发表于 2011-2-8 16:22:31 | 显示全部楼层
mark,备用,正打算自己复制一个建伍的遥控器

出0入0汤圆

发表于 2011-3-9 22:28:35 | 显示全部楼层
好帖马克之

出0入0汤圆

发表于 2011-4-23 01:34:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-19 20:22:33 | 显示全部楼层
mark

出0入12汤圆

发表于 2011-5-19 20:30:11 | 显示全部楼层
能不能说说,为什么明确不能使用输入捕获方式??
红外就是3种方式

输入捕获
外部中断+定时器计算时长
定时查询

出0入0汤圆

发表于 2011-6-1 17:28:31 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-6-1 20:23:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 20:26:37 | 显示全部楼层
很好!

出0入0汤圆

发表于 2011-11-9 23:15:52 | 显示全部楼层
这个不错,要顶,要支持!

出0入0汤圆

发表于 2011-11-10 01:03:06 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2011-12-21 08:55:15 | 显示全部楼层
RecC能否在按键处理后清零,=1时就认为是有按键!

出0入30汤圆

发表于 2011-12-21 21:41:57 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-5-7 16:33:25 | 显示全部楼层
我来顶顶!

出0入0汤圆

发表于 2012-7-5 22:01:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-12-24 19:43:06 | 显示全部楼层
好贴顶一下。

出0入0汤圆

发表于 2012-12-29 17:15:27 | 显示全部楼层
我来看看,最近在研究红外啊~~

出0入0汤圆

发表于 2013-4-11 13:09:34 来自手机 | 显示全部楼层
学习一下....
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表