最近为了开发无线数据传输项目,看了不少无线数据发送与接收的资料,其中无线遥控315模块比较便宜和应用比较广泛,以下是单片机模拟2272软件解码;

在无线遥控领域,PT2262/2272是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从PT2262波形特征入手,结合应用实际,提出软件解码的方法和具体措施。

一、概述

PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出。

PT2262/2272必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。随着人们对操作的要求越来越高,PT2262/2272的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补PT2262/2272的缺陷,这就是PT2262软件解码。

二、解码原理

上面是PT2262的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

2262每次发射时至少发射4组字码,2272只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平。因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。

下面我们来仔细看一下PT2262的波形特征:

振荡频率 f=2*1000*16/Rosc(kΩ) kHz 其中Rosc为振荡电阻 这里我们选用的是一种比较常用的频率f≈10 kHz, Rosc=3.3MΩ(以下同)。下图是振荡频率与码位波形的对应关系:同步码头波形:

PT2262有三种编码:0,1,和悬空(表示为f)。 1、 数据“0”发送的码位如下: 2、 数据“1”发送的码位如下: 3、 数据“f”发送的码位如下:

有了以上具体的波形,我们就可以进行软件解码了。T2262每次至少发送4次编码,首先我们可以通过检测11ms宽度的同步码头,有码头才开始进行编码解码,无码头则继续等待。当收到码头时,还要检测是否已经收到过码头,若无,则丢弃第一次编码的信号,以防止误码。

从编码图中可以看出,每一位码字都是从低电平开始到高电平,到低电平,再到高电平。为了检测方便,在接收端我们把编码信号进行了180°倒相,使码位开始的上升沿转化为下降沿,这样当我们使用MCS51系列单片机解码时可使用中断方式及时截获编码。从编码图中还可以看出,每一位码字都可以分成两段,我们以每段中的电平宽度来描述码位:

码位 第一段 第二段 数值表示 反码表示 0 窄 窄 00 11 1 宽 宽 11 00 f 窄 宽 01 10 无效码 宽 窄 10 01

软件解码方法1(反码): 从第一个下降沿开始延时700us左右,检测电平高低,记为A1,再检测第二个下降沿,延时700us左右,检测电平高低,记为A2,这样一个码位就可以译出来了,连续检测12个码位。

软件解码方法2(反码): 从第一个下降沿开始记时,并不断检测电平变化,一有电平变化,立即记录电平宽度B1,再继续记时直至出现第二个下降沿,记录两个下降沿的间隔B2,重复以上步骤,得到B3,B4,判断B1,B2,B3,B4是否在各自允许的误差范围内,是则保存B1,B3,译出一个码位,否则认为误码,丢弃。连续正确检测12个码位。

两种解码方式各有优缺点如下: 解码方式 优点 缺点 1 程序简单,CPU开销少 解码精度差 2 程序复杂,CPU开销大 解码精度较高

为了获得较高的解码精度,我们推荐使用方法2,以避免大量的干扰信号的误解码。

三、参考解码软件

说明:ADD1,ADD2中为8位地址,DAT0中为4位数据 REMOTE: CLR TR2 ;探头信号检测子程序 CLR RECEIVE ; MOV DETE_LOOP,#12 ;接收12位编码 REMO0: CLR DETE_T_OVER ; MOV TH2,#0FEH ;测第1位电平宽度 MOV TL2,#041H ; SETB TR2 ; REMO1: JB REM,REMO2 ;等待出现高电平 JB DETE_T_OVER,REMO3 ;限时1500us,超时则认为误码 AJMP REMO1 ; REMO2: MOV A,TH2 ;测低电平宽度,0FF为宽脉冲,0FE为窄脉冲 CJNE A,#0FFH,REMO4 ; MOV A,TL2 ; CLR C ; CJNE A,#098H,$+3 ; JNC REMO3 ;电平过宽(超过1150us),退出 CLR C ; CJNE A,#020H,$+3 ; JC REMO3 ;电平过窄(小于780us),退出 SETB C ; AJMP REMO5 ; REMO3: AJMP REMOTE_END ; REMO4: CJNE A,#0FEH,REMO3 ; MOV A,TL2 ; CLR C ; CJNE A,#0C7H,$+3 ; JNC REMO3 ;电平过宽(超过450us),退出 CLR C ; CJNE A,#060H,$+3 ; JC REMO3 ;电平过窄(小于210us),退出 CLR C ; REMO5: MOV A,DAT0 ;存储电平值 RLC A ; MOV DAT0,A ; MOV A,ADD1 ; RLC A ; MOV ADD1,A ; REMO6: JNB REM,REMO7 ;等待出现低电平 JB DETE_T_OVER,REMO3 ;脉冲下降沿间隔限时1500us,超时则认为误码 AJMP REMO6 ; REMO7: CLR TR2 ; CLR DETE_T_OVER ; MOV A,TH2 ; CJNE A,#0FFH,REM13 ;脉冲间隔过小 MOV A,TL2 ; CLR C ; CJNE A,#050H,$+3 ; JC REM13 ;电平过窄(小于1200us),退出 MOV TH2,#0FEH ;测第2位电平宽度 MOV TL2,#041H ; SETB TR2 ; REM11: JB REM,REM12 ;等待出现高电平 JB DETE_T_OVER,REM13 ;限时1500us,超时则认为误码 AJMP REM11 ; REM12: MOV A,TH2 ;测低电平宽度,0FE为宽脉冲,0FF为窄脉冲 CJNE A,#0FFH,REM14 ; MOV A,TL2 ; CLR C ; CJNE A,#098H,$+3 ; JNC REM13 ;电平过宽(超过1100us),退出 CLR C ; CJNE A,#020H,$+3 ; JC REM13 ;电平过窄(小于1000us),退出 SETB C ; AJMP REM15 ; REM13: AJMP REMOTE_END ; REM14: CJNE A,#0FEH,REM13 ; MOV A,TL2 ; CLR C ; CJNE A,#0C7H,$+3 ; JNC REM13 ;电平过宽(超过450us),退出 CLR C ; CJNE A,#060H,$+3 ; JC REM13 ;电平过窄(小于210us),退出 CLR C ; REM15: MOV A,TEMP ;存储电平值 RLC A ; MOV TEMP,A ; MOV A,ADD2 ; RLC A ; MOV ADD2,A ; REM16: JNB REM,REM18 ;等待出现低电平 JB DETE_T_OVER,REM13 ;脉冲下降沿间隔限时1500us,超时则认为误码 AJMP REM16 ; REM17: AJMP REMO0 REM18: CLR TR2 ; CLR DETE_T_OVER ; MOV A,TH2 CJNE A,#0FFH,REM13 ;脉冲间隔过小 MOV A,TL2 ; CLR C ; CJNE A,#050H,$+3 ; JC REM13 ;电平过窄(小于1200us),退出 DJNZ DETE_LOOP,REM17 ; REM19: MOV DETE_LOOP,#4 ;把接收的编码左移4位 REM20: CLR C ;将8位密码放在同一字节上 MOV A,DAT0 ; RLC A ; MOV DAT0,A ; MOV A,ADD1 ; RLC A ; MOV ADD1,A ; CLR C ; MOV A,TEMP ; RLC A ; MOV TEMP,A ; MOV A,ADD2 ; RLC A ; MOV ADD2,A ; DJNZ DETE_LOOP,REM20 ; ;把4 位数据编码由高4 位移到低4 位上 ; MOV A,DAT0 ; SWAP A ; MOV DAT0,A ; MOV A,TEMP ; SWAP A ; MOV TEMP,A ; ANL DAT0,#0FH ; SETB RECEIVE ; REMOTE_END: ; CLR TR2 CLR REMOTING ; RET ;

四、硬件抗干扰

在无线通讯中使用单片机会对通讯系统造成严重的干扰,相信许多技术人员一定有过同样的苦恼。如果硬件设计不当,会造成原先硬件解码时通讯距离为200米,而用软件解码后可能只有十几米,因此解决硬件抗干扰问题在很大程度上可减少软件解码的误码率。

1、收发模块:早期常用的频率为47MHz,在这种频率下,很难有好的解决方法;建议采用目前国家允许无线遥控使用的频率315 MHz。

2、单片机振荡频率:大量的MCS51教材中推荐大家使用的是12 MHz及11.0592MHz的晶体,这些晶体在一般场合使用没有问题,但在此却不可以,它们在300MHz左右仍然能够产生较大的干扰,为解决单片机运行速度与电磁干扰的矛盾,建议采用频率为4MHz或3.58MHz的晶体。

3、隔离:为了有效抑制单片机对接收模块的电磁干扰,建议采用①电源隔离;②端口隔离;端口隔离可采用三极管或比较器。实践表明采用隔离的效果非常明显。

五、结束语

PT2262的软件解码在实际应用中有较好的用武之地。采用软件解码的系统,厂家再也无须对收发设备进行配套,以利于生产于保管;对客户来说,使用软件解码无须求助,厂家只须再软件中加入自动学习功能,用户可自行使用该功能,只须轻按学习键即可学习新的通讯设备,如遥控器等。目前,该软件解码已经在某无线报警设备中采用,客户反映使用简便,效果良好。

转载于:https://www.cnblogs.com/ljf181275034/archive/2011/11/06/2238615.html

关于无线遥控315模块的发射与接收相关推荐

  1. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]

    /***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...

  2. 【雕爷学编程】Arduino动手做(103)---四路无线遥控套件

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  3. 课题——无线遥控实现

    无线遥控实现 关键字:盆腔治疗仪:无线遥控:PT2262:PT2272:单片机AT89S52:SMC1602A 盆腔炎治疗仪,利用物理的电.热.磁等生理作用,促进人体神经肌肉组织兴奋和局部血液循环,并 ...

  4. 四轴笔记----无线透传模块|无线图传|遥控和接收机|无线数传

    一.无线透传模块 所谓透传就是透明传输,透明传输就是在数据传输过程中,发送方和接收方数据的长度和内容完全一致,不需对数据做任何处理,相当于一条数据线或者串口线,只不过把有线变成无线. 二.无线图传模块 ...

  5. NRF24L01无线模块设置发射接受模式方法

    NRF24L01无线模块设置发射接受模式 NRF24L01无线模块通过设置CONFIG寄存器的最后一位,实现发射和接收模式的设定. CONFIG寄存器的内容: 具体程序如下: /函数:void Set ...

  6. 无线遥控发射接收模块简介(SYN480R F115 433M )

    无线遥控发射接收模块简介(SYN480R F115 433M ) 市面上很常见的无线射频模块 原理图资料文档 https://pan.baidu.com/s/1LIW3rKo73mP1_FOAj_qb ...

  7. 315 433MHZ无线遥控接收解码源程序 Keil源程序 含AD格式电路图

    315 433MHZ无线遥控接收解码源程序 Keil源程序 含AD格式电路图 YID:1620670090555205

  8. 315MHZ PT2272-M4 非锁四路无线遥控 发射接收方案

    目录 一.简介 二.使用前准备 三. 测试方法 四. 测试现象 五. 注意事项 原文链接:https://www.yourcee.com/newsinfo/2928972.html 一.简介 解码接收 ...

  9. 应用ESP8266控制433M无线遥控电动幕布

    家里的得力牌电动投影幕布是的433M单一频率无线遥控的,为把它加入HomeAssistant与投影仪.音响等实现联动控制,计划用万能的esp8266来模拟遥控器. 一.设计思路 用ESPHome的Re ...

最新文章

  1. 社会关系分析_【图文】室外游乐设施典型案例优势分析
  2. [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
  3. mysql 的select语句_MySQLSELECT语句_MySQL
  4. 什么是lamda表达式?
  5. jmeter测试java代码
  6. 【Android】startActivityForResult()与onActivityResult()与setResult()参数分析
  7. pycharm debug 断点调试
  8. 链路聚合-CISCO
  9. ZigBee网络角色 拓扑结构 无线模块组网典型应用
  10. 避障跟随测距c语言程序,红外避障小车c语言程序.pdf
  11. java转码gbk_Java实现GBK转码到UTF-8(文件)
  12. 2019Java查漏补缺(二)
  13. android webview设置和遇到的坑
  14. javaweb JAVA JSP智能社区管理系统JSP小区物业管理系统物JSP小区管理系统源码 JSP物业社区管理系统
  15. SocksGun源码(类SocksCap)
  16. Linux 私房菜 笔记(完结)
  17. 【Missing separate debuginfos, use: debuginfo-install glibc-2.17-222.el7.x86_64】 解决方法
  18. 谷歌浏览器书签保存在哪里以及书签导入导出方法
  19. 多项式回归分析之预测成本和利润
  20. shopee虾皮面试题汇总-C++后端

热门文章

  1. mysql信息泄露漏洞,MySQL远程信息泄漏和缓冲区溢出漏洞
  2. 制作网页过程中,经常用到的代码
  3. 2020莱斯大学计算机全球排名,2019-2020莱斯大学世界排名多少【QS最新第85名】
  4. Playbook的用法
  5. python or语句使用_Python语句序列: “a = (1, 2, 3, None, ( ), [ ]); print(len(a))的运行结果是( )。_学小易找答案...
  6. iphone5越狱后问题的解决办法
  7. 无法安装此app,因为无法验证其完整性 解决方案
  8. python 语音识别机器人控制系统_ROS+科大讯飞语音识别控制机器人
  9. 如何平衡创造性和可靠性?
  10. 2015要和自己好好的算算