工作中遇到客户想采用AD检测的不同地电压方式发送不同RF值出来,下面就是具体发送的
做法。
硬件电路:

协议设计

1、引导码--10ms ;2、键码;3、键码反码,如果长按发送会一直输出这样的波形;4、结束码-20ms;

有按键按下就发送3次 ,防止接收设备接收时出现意外。

逻辑0:高电平0.4ms,低电平1ms

逻辑1:高电平1ms,低电平0.4ms

编码的波形

代码是汇编程序,软件流程是有按键按下,AD采集识别具体按键,然后分配键值,使能发送标志F_RF_TX_EN。然后在采用在100us的中断中发送,发送一次完成计数一次,计数到达3次,清除F_RF_TX_EN使能标志。

D_RF_TX_CNT                  EQU     D'16'         ;发送数据位数
;
D_RF_TX_10MS                EQU     D'100'            ;10MS的最大时间,基值100us
;
D_RF_TX_0_H                 EQU     4           ;0的高电平时间.基值100us
D_RF_TX_0_L                 EQU     10          ;0的低电平时间.基值100us
;
D_RF_TX_1_H                 EQU     10          ;1的高电平时间.基值100us
D_RF_TX_1_L                 EQU     4           ;1的低电平时间.基值100us
;
D_RF_WAIT_TIME              EQU     200         ;重新发送的等待时间,基值100us
;
D_RF_RELEASE_TIME                   EQU     12          ;单击发送延时,基值10ms
D_RF_TX_RELEASE_CNT         EQU     3
R_RF_TX_FLAG                EQU     0X36#DEFINE         F_RF_TX_10MS            R_RF_TX_FLAG,0              ;10MS低电平发射完成标志, 1:发射完成.   0:发射未完成.#DEFINE                 F_RF_EN               R_RF_TX_FLAG,1          ;RF使能标志. 1:启动RF发送,  0:停止RF发送#DEFINE         F_RF_EN_START           R_RF_TX_FLAG,2              ;RF发送标志. 1:RF发送     0:RF不发送#DEFINE          F_RF_TX_STATUS          R_RF_TX_FLAG,3              ;RF发送电平状态. 1:发送低电平  0:发送高电平#DEFINE          F_RF_EN_STATUS          R_RF_TX_FLAG,4              ;RF发送   状态.  1:使能发送 0:等待时间. #DEFINE         F_RF_EN_FLAG            R_RF_TX_FLAG,5RF_CTRL:BTRSS F_RF_EN                     ;LGOTO  RF_CTRL_OFF_2
RF_CTRL_ON:     BTRSC   F_RF_EN_FLAGLGOTO   RF_CTRL_ON_WAIT;BTRSC   F_RF_EN_STARTRET;BSR    F_RF_EN_FLAG                ;置等待标志.;MOVR    R_RF_DATA1,0MOVAR   R_RF_TX_DATA1;MOVR  R_RF_DATA1,0XORIA   0XFF                        ;取反键值MOVAR  R_RF_TX_DATA2;BCR       F_RF_TX_STATUSMOVIA 16                          ;2*8 MOVAR  R_RF_TX_CNTCLRR R_RF_TX_TIME;BCR    P_RF_OUT                    ;拉低;BCR F_RF_TX_10MS                ;BSR    F_RF_EN_START               ;启动发送.;RET;LGOTO    RF_CTRL_OFF
RF_CTRL_ON_WAIT:BTRSC   F_RF_EN_START               ;发送一次完成,START置0.LGOTO    RF_CTRL_ON_WAIT_1;BSR   P_RF_OUT                    ;空闲状态 拉高;MOVIA  D_RF_WAIT_TIME              ;间隔时间 200*100us--20msSUBAR  R_RF_WAIT_TIME,0BTRSS   CRETCLRR    R_RF_WAIT_TIME;BCR  F_RF_EN_FLAG;LGOTO  RF_CTRL_OFF                 ;去判断计数次数
RF_CTRL_ON_WAIT_1:CLRR  R_RF_WAIT_TIME              ;清除发送等待时间BSR        F_RF_EN_FLAG                ;置等待标志.RET
RF_CTRL_OFF:        MOVIA   D_RF_TX_RELEASE_CNTSUBAR    R_RF_TX_RELEASE_CNT,0       ;R – ACC BTRSS  CRETLGOTO   RF_CTRL_OFF_3
RF_CTRL_OFF_2:      ;CLRR   R_RF_TX_RELEASE_CNT     ;BCR        F_RF_EN     ;BCR        F_RF_EN_FLAGBCR     F_RF_EN_STARTBCR        F_RF_TX_FREE                ;BSR        P_RF_OUT                    ;结束,置1 RET
RF_CTRL_OFF_3:BCR    P_RF_OUT                   ;拉低     LGOTO   RF_CTRL_OFF_2;RF发送--中断调用--100us发送一次
RF_TX:  INCR    R_RF_WAIT_TIME,1            ;等待时间BTRSC  ZDECR   R_RF_WAIT_TIME,1;BTRSS  F_RF_EN_START               ;发送标志位是否置起RET;BTRSS F_RF_TX_10MS                ;引导码LGOTO   RF_TX_10MS;CLRR R_RF_WAIT_TIMEINCR  R_RF_TX_TIME,1;BTRSC    F_RF_TX_STATUS              ;数据状态标志位LGOTO   RF_TX_L
RF_TX_H:                                    ;发送1bit的高电平BTRSC    R_RF_TX_DATA1,7             ;高位先发送---LGOTO  RF_TX_H_1
RF_TX_H_0:MOVIA D_RF_TX_0_H             ;“1”的低电平时间LGOTO RF_TX_H_2
RF_TX_H_1:MOVIA D_RF_TX_1_H             ;“1”的高电平时间
RF_TX_H_2:BSR   P_RF_OUT;SUBAR  R_RF_TX_TIME,0BTRSS CRETCLRR    R_RF_TX_TIME;;BSR   F_RF_TX_STATUS          ;一个bit,发送完高电平,再发送低电平.RET
RF_TX_L:                                    ;发送1bit的低电平BTRSC    R_RF_TX_DATA1,7         ;高位先发送LGOTO RF_TX_L_1
RF_TX_L_0:      MOVIA   D_RF_TX_0_L         ;“0”的低电平时间LGOTO RF_TX_L_2
RF_TX_L_1:                              MOVIA   D_RF_TX_1_L         ;“0”的高电平时间
RF_TX_L_2:BCR   P_RF_OUT;SUBAR  R_RF_TX_TIME,0BTRSS CRETCLRR    R_RF_TX_TIME;;RLR   R_RF_TX_DATA2,1             RLR R_RF_TX_DATA1,1;BCR F_RF_TX_STATUS              ;一个bit,发送完高电平,再发送低电平.;DECRSZ    R_RF_TX_CNT,1               ;发送个数.RET;BCR   F_RF_EN_START               ;发送停止.CLRR  R_RF_WAIT_TIME              ;清除等待计数INCR R_RF_TX_RELEASE_CNT,1       ;发送完成 计数一次。RET
RF_TX_10MS:BCR  P_RF_OUT                    ;发送10ms 低电平 ------引导码;INCR  R_RF_TX_TIME,1;MOVIA    D_RF_TX_10MS    SUBAR   R_RF_TX_TIME,0              ;100US 时间基值  BTRSS  CRET;CLRR   R_RF_TX_TIME                ;;BSR       F_RF_TX_10MS                ;10MS发送完成,置位该标志.并输出高电平BSR       P_RF_OUT                    ;拉高;RET
RF_TX_RET:;BSR      P_RF_OUT                ;默认发送脚为高电平RET     

解码思路

定时中断中处理 时间(80-100us),然后在中断调用接收解码函数,接收起始码判断。判断 L 电平的时间5MS<P_RF_RX<9MS这个范围内说明有启动信号,这个时才往后面接收数据的判断。否则就是不对的起始信号,退出解码函数。逻辑电平1和0的判断都是可以这么处理。具体实现可以看下其他网上的思路。

无线遥控433MHz编码发射相关推荐

  1. 关于无线遥控315模块的发射与接收

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 单片机无线遥控盆腔炎治疗仪

    摘 要 盆腔炎治疗仪,利用物理的电.热.磁等生理作用,促进人体神经肌肉组织兴奋和局部血液循环,并有镇痛作用.盆腔治疗仪对盆腔炎的治疗,具有无副作用和后遗症等优点,在妇科中得到广泛的应用.因为在治疗过程 ...

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

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

  10. stm32 无线遥控HX1838或8路低电平解码接收模块Hal库代码程序

    一.简介 这是一款新型的超薄38K通用红外遥控器,采用的是NEC编码格式,主要用于车载MP3.足浴盆.灯光设配.数码相框.单片机开发板和学习板等场合.因其是基于无线遥控,因此人们在使用起来显得方便.有 ...

最新文章

  1. SRA数据库的各种编号(DRP, ERP 或SRP)
  2. php mysql 查询 where_PHP MySQL Where 子句
  3. 兴趣部落的 Git 迁移实践
  4. JavaSE学习53:细说多线程之内存可见性
  5. gdb+pwndbg使用初探
  6. 在Qt Designer中使用样式表
  7. 有趣的insert死锁
  8. 输入序列不连续的序列检测
  9. 密封槽设计标准_哈尔滨轴承 | 超全面机械密封选型
  10. 三角剖分求多边形面积的交 HDU3060
  11. jenkins构建后接受者收不到邮件问题解决方案
  12. 复习HTML+CSS(5)
  13. Ubuntu下编译运行C#——mono tools
  14. 在IE浏览器中url传参长度问题
  15. 上证指数ARIMA模型预测(R软件)
  16. NSSM部署Net Core流程
  17. ios沙箱软件_ios沙盒2存档-ios沙盒2最新版下载0.5.2苹果版-西西软件下载
  18. OnlyOffice在线部署
  19. Java后端工程师面试自我介绍
  20. 什么是阿里云服务器ECS?阿里云服务器的用途

热门文章

  1. needs to declare permission android.permission.REQUEST_INSTALL_PACKAGES
  2. cdrom是什么意思_CD-ROM是什么意思
  3. Ubuntu系统各种文件的颜色代表的意义
  4. 产品经理听完《等你下课》心态崩了?选择汇新云重振旗鼓
  5. 可视化工具Netron介绍
  6. 【Axure原型分享】冻结首行首列的中继器表格
  7. 雨林风一键重装系统_u盘启动盘制作工具-雨林风
  8. Eth-Trunk 链路聚合
  9. box-sizing: border-box的作用
  10. 【C语言】案例四十九 学生档案管理系统