版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验15无线解码接收一、实验目的二、实验设备与器材三、实验原理与电路四、实验内容、过程及要求
一、实验目的
(1)理解无线收/发系统的组成、工作原理。
(2)理解PT2262或与之兼容的固定编码芯片信息帧格式;理解软件解码原理、实现方法以及软件解码程序的编写要领。
(3)初步掌握自适应软件解码程序的设计规则。
(4)理解MCS-51芯片内PCA模块的功能和使用方法。
二、实验设备与器材仿真器及其附件、图1所示的实验电路板各一套(需带ASK无线接收模块),PT2262编码遥控器或门磁一只,导线数条。
三、实验原理与电路
1.无线收/发系统典型无线收/发系统如图15-1所示,由ASM无线接收/解调模块、一个或多个PT2262编码遥控器(或无线探头)组成。
图15-1典型无线收/发系统
2.PT2262编码芯片信息帧格式
PT2262或与之兼容的固定编码芯片性能稳定,价格低廉,是无线探头、廉价遥控器的首选编码芯片。这类芯片编码长度为24位,一信息帧由同步头、地址码、数据码三部分组成,如图15-2所示。同步头高电平持续时间为4α(α是编码芯片振荡周期,在25~120μs之间,由振荡电阻决定),间歇期为124α;编码位采用PWM调制,脉宽比为1∶3,“0”码高电平持续时间为4α,低电平持续时间为12α;而“1”码高电平持续时间为12α,低电平持续时间为4α。一信息帧总长为,即512α。发送时,先输出编码的最低位
图15-2PT2262编码芯片信息帧格式
3.自适应软件解码方法为降低成本、提高灵活性,在含有MCU的无线接收系统中,一般不用硬件解码芯片PT2272实现PT2262编码信息的解码,而采用软件解码方式。本实验借助MCS-51RX系列MCU芯片内置的可编程计数器阵列(PCA)上下沿捕获功能测量脉冲信号高、低电平持续时间;用脉冲间隔时间比作为脉冲宽度测量依据可获得能适应不同脉冲头宽度的自适应软件解码方式。
根据编码芯片信息帧的特点,当α取25~120μs时,信息帧内高电平最长时间为12α(300μs~1.44ms之间);低电平时间最长为同步头低电平持续时间124α(3.1~14.88ms)。因此,当系统时钟频率为11.092MHz时,在6时钟/机器周期模式下,PCA计数器溢出时间为216×6/11.0592,即35.55ms,也即信息帧内相邻两次捕获时间间隔小于定时器溢出时间。
1)资源及状态分配为简化软件解码判别过程, 缩短PCA中断执行时间,使用字节变量STU记录解码状态,各位定义如下:
b2~b0记录信息帧状态,如图15-3所示。000为起始状态,下降沿时刻,如果相邻两次捕获间隔不在100μs~1.44ms±20%范围内,则返回000态;上升沿后,如果时间间隔不在允许范围内,则置为001态;而101、110分别表示编码位高、低电平状态。
图15-3图15-4自适应解码软件过程
图15-4自适应解码软件过程
b3位作信息帧连续有效标志。
b4位是解码成功标志。以PT2262作编码芯片的编码器会连续发送4帧以上信息,为提高可靠性,采用双循环校验,即只有接收到两相邻的信息帧编码相同时,b4位置1。因此b4~b3描述的解码状态含义为:00表示尚未接收到完整的信息帧;01表示已收到了一完整的信息帧;11表示已连续接收了两个相同的信息帧,解码有效标志置1;10表示接收缓冲区数据有效,但未处理。用字变量TIME记录相邻两次捕获时间间隔,字变量TIMEB记录基本时间(4α)。
2)自适应软件解码过程自适应软件解码过程如图15-4所示。为保证能够接收基本时间只有100μs左右的高速编码信息,主控程序中除了将PCA中断优先级置为最高外,还必须保证PCA中断服务程序执行时间尽可能短,即最好用汇编语言指令编写PCA中断服务程序。由于MCS-51指令系统没有双字节除法指令,解码过程中涉及到的除法运算,可采用减法或多项式除法完成。
四、实验内容、过程及要求本实验主要涉及实验板上的U101、U103、U402等芯片。接通电源前,板上各跳线状态如表15-1所示。
表15-1跳
线
设
置
与自适应软件解码有关程序段如下:;定义软件解码变量WUSTU DATA2EH ;b2~b0作无线接收状态标志
;000-开始;001-同步头高电平;010-同步头低电平; ;101-数据位高电平;110-数据位低电平LXJIEBITWUSTU.3 ;信息帧连续标志JIEMABITWUSTU.4 ;接收数据有效标志(可以利用数据有效标志作为;数据处理标志);数据有效,而信息帧连续标志无效时,即认为接收HDATABBIT01H;高电平时间,码长标志(4a为0,12a为1)OVERT DATA2FH ;相邻两次捕获之间定时器溢出次数BUFF0 DATA30H ;解码接收缓冲区(30~3F)TIMEL DATA5AH ;相邻两次捕获间隔时间低8位TIMEH DATA5BH ;相邻两次捕获间隔时间高8位CNTB DATA5CH ;信息帧长度(单位为bit)TIMEBCL DATA7DH ;同步头高电平时间(即4a)的低8位TIMEBCH DATA7EH ;同步头高电平时间(即4a)的高8位
ORG0000HLJMPMAINORG0033HLJMPPCA ;PCA中断服务程序入口地址(用于解码接收)ORG0050HPROCMAIN ;主程序开始
MAIN: ;PCA模块初始化
;模块0工作在16位上下沿捕获方式,作解码定时器
MOVCMOD,#00000001B ;计数脉冲为内部时钟信号,允许CH、CL溢出中断
MOVCH,#0 ;从0开始计数
MOVCL,#0 MOVCCON,#40H;启动CH、CL计数
MOVCCAPM0,#00100001B ;模块0工作在16位上沿捕获方式,允许模块0中断
;开始时先用上沿捕获,中断后上下交替捕获
SETBPPC ;PCA中断优先级置为高
SETBEC ;允许PCA中断
SETBEA ;开中断
NEXT1: JNBJIEMA,NEXT1 NOP ;虚拟等待解码有效
SJMPNEXT1END;PCA中断服务程序PROCPCAPCA: PUSHPSW PUSHACC PUSHB ORLPSW,#18H
;SETBRS1
;SETBRS0 ;使用工作寄存器区3 JBCCF,TNEXT1 ;不是定时器溢出引起
SJMPCANEXTTNEXT1: ;定时器T溢出引起中断
INCOVERT MOVA,WUSTU JBACC.0,TNEXT2 ;低电平,检查溢出次数
MOVA,OVERT CJNEA,#2,TNEXT21TNEXT21: JCTOEXIT;小于2,退出!
;溢出次数大于2,肯定是错误!
MOVOVERT,#2 ANLWUSTU,#0D0H;解码状态清零,清除连续有效标志
SJMPTOEXITTNEXT2: ;在高电平期间,发现溢出次数大于指定值
MOVA,OVERT CJNEA,#2,TNEXT22TNEXT22: JCTOEXIT ;小于2,退出
;大于2 MOVOVERT,#2 ANLWUSTU,#0F0H;清除连续有效标志,解码状态置为011(即等幅干扰状态) ORLWUSTU,#03H ;置为011态TOEXIT: JMPRETURNCANEXT: ;捕获中断引起
MOVR3,CCAP0L MOVR4,CCAP0H ;取捕获发生的时刻
CLRC MOVA,R3 SUBBA,TIMEL MOVTIMEL,A MOVA,R4 SUBBA,TIMEH MOVTIMEH,A ;计算并保存相邻两次捕获时间间隔到TIMEH、TIMEL中
MOVA,CCAPM0 MOVC,ACC.5 ;上升沿触发捕获标志送C XRLCCAPM0,#30H ;与30异或,强迫CAPP、CAPN取反
ANLCCON,#0FEH ;清除CCF0中断标志
MOVOVERT,#0 ;捕获时清除溢出次数
;判别捕获原因
JCHNEXT ;下沿触发引起; CLRC MOVA,TIMEL SUBBA,#140
;PCA模块计数脉冲为系统时钟信号的6分频(晶振频率为
;11.0592MHz) MOVA,TIMEH ;140对应的时间为(1/11.0592)×6×140,约76μs SUBBA,#0 JNCLNEXT0 ;高电平时间太短
ANLWUSTU,#0F0H ;重置为000态,清除连续标志
JMPRETURN ;没有必要记录LNEXT0: LJMPLNEXT;上边沿触发HNEXT: MOVA,WUSTU
ANLA,#07H CJNEA,#0,HNEXT1 ;000态,说明尚未开始
ORLWUSTU,#21H ;置为001态
JMPCAEND
;记录捕获时间后退出HNEXT1: CJNEA,#2,HNEXT2 ;原来处于010态,计算同步头时间,计算同步头脉冲相对宽度; CLRC MOVA,TIMEL SUBBA,#51H MOVA,TIMEH ;假设a在25~120μs(允许存在25%的误差)之间
SUBBA,#16H ;124a对应计数器读数为5713~34174,即1651H~857EH JNCHNEXT20 ;小于最小值,错误
JMPHERROR ;上升沿出错处理HNEXT20: ;CLRC MOVA,TIMEL SUBBA,#7EH MOVA,TIMEH
SUBBA,#85H JCHNEXT201 ;大于124a的上限(即最大值),错误
JMPHERROR ;上升沿出错处理HNEXT201: ;在同步头间歇期时间最小值与最大值之间
LCALLCAL1 ;当被除数较大时,用多项式除法可有效缩短运算时间
CJNER6,#29,HNEXT21HNEXT21: JNCHNEXT22 ;小于29,同步头高、低电平时间比太小!错!
JMPHERROR ;上升沿出错处理HNEXT22: CJNER6,#34,HNEXT23HNEXT23: JNCHNEXT24 ;在29~33之间,属于长同步头124a间歇期(中心值为31) MOVCNTB,#24 ;接收24位信息码
ANLWUSTU,#78H ORLWUSTU,#01000101B ;进入101态(接收数据码位) JMPCAENDHNEXT24: ;大于34,错误
JMPHERROR ;上升沿出错处理HNEXT2: CJNEA,#6,HNEXT3 ;处于110态,计算码位低电平时间; CLRC MOVA,TIMEL SUBBA,#140 MOVA,TIMEHSUBBA,#0;假设a在25~120μs(允许存在25%的误差)之间
JNCHNEXT30 ;4a对应上下限的范围是:140~1102即8CH~44EH;低电平时间小于(1/11.0592)×6×140,约76μs,处于非连续状态
ANLWUSTU,#0F0H ORLWUSTU,#100001B ;置为001态(同步头上升沿),清除连续标志
JMPCAENDHNEXT30:; CLRC
MOVA,TIMEL SUBBA,#0EBH MOVA,TIMEH SUBBA,#0CH ;12a对应上下限为552~3307,即228H~CEBH JNCHNEXT3 ;处于4a~12a上下限之间,要进一步判别
MOVR7,#5 ;中心值为3 LCALLCALTIME ;调用双字节除法运算子程序
CJNER6,#2,HNEXT31HNEXT31: JNCHNEXT32 ;在0~1之间,当4a处理
CLRACC.0 SJMPHNEXT341HNEXT32: CJNER6,#5,HNEXT33HNEXT33: JNCHNEXT34 ;在2~4之间,当12a处理
SETBACC.0HNEXT341: MOVC,HDATAB MOVACC.1,C ANLA,#03H CJNEA,#01H,HNEXT342 ;处于01态,作“0”码
CLRC JMPDANEXT1 ;记录数据
HNEXT342: CJNEA,#02H,HNEXT34 ;处于10态,作“1”码
SETBC JMPDANEXT1 ;记录数据HNEXT34: ;此外,一律属于错误!HNEXT3: JMPHERROR ;上升沿出错处理;下降沿引起
LNEXT: MOVA,WUSTU ANLA,#07H CJNEA,#01H,LNEXT1 ;原来处于001态,计算同步头高电平时间; CLRC MOVA,TIMEL SUBBA,#4EH MOVA,TIMEH SUBBA,#04H ;4a对应上下限的范围是:140~1102,即8CH~44EH JNCLERROR ;大于4a上限,错!
;在4a上下限之间,记录该时间!并作为随后计算的各脉冲宽度比的依据
MOVTIMEBCL,TIMEL MOVTIMEBCH,TIMEH ANLWUSTU,#0F8H ORLWUSTU,#010B ;置为010态
JMPCAENDLNEXT1: CJNEA,#03H,LNEXT2;原来处于011态(高电平时间超出12a的上限),从错误状态返回,置为000态LERROR: ANLWUSTU,#0F0H ;清除连续有效标志,置为000态,等待同步头上升沿
JMPRETURNLNEXT2: CJNEA,#05H,LERROR ;101态,计算码位高电平时间; CLRC MOVA,TIMEL SUBBA,#0EBH MOVA,TIMEH SUBBA,#0CH ;12a对应的读数为2544±30%,1780~3307,即6F4H~CEBH JNCLERROR MOVR7,#5 ;中心值为3LCALLCALTIME ;调用双字节除法运算子程序
CJNER6,#2,LNEXT31LNEXT31: JNCLNEXT32 ;在0~1之间,当4处理!
CLRHDATAB ;短的标志
SJMPLRIGET ;正确LNEXT32: CJNER6,#5,LNEXT33LNEXT33: JNCLERROR ;在2~4之间,当12a处理
SETBHDATAB ;长的标志
LRIGET: ;正确
MOVA,CNTB CJNEA,#1,LNEXT34 ;如果是最后一位,则应该考虑是否是最后一帧的最后一位
MOVC,HDATAB ;直接将HDATAB标志送Cy ANLWUSTU,#0F8H ;置为000态
SJMPDANEXT2 ;记录数据LNEXT34: ANLWUSTU,#0F8H ORLWUSTU,#110B JMPCAENDDANEXT1: ANLWUSTU,#0F8H ;置为000态
ORLWUSTU,#101BDANEXT2: JNBJIEMA,DANEXT3 ;数据有效,不再接收
DJNZCNTB,CAEND SJMPRETURN ;继续找脉冲头DANEXT3: ;保存数据
MOVR0,#BUFF0 MOVR2,#3DALOOP1: MOVA,@R0 RRCA MOV@R0,A INCR0 DJNZR2,DALOOP1 DJNZCNTB,CAEND ;已经收到了一帧信息
JBLXJIE,DANEXT6 ;连续解码标志未有效,属于第一次解码有效,数据要搬移
DANEXT60: MOVR2,#3 MOVR0,#BUFF0;解码接收缓冲区首地址送R0 MOVR1,#BUFF0+8;解码接收缓冲区首地址加8送R1DALOOP2: MOVA,@R0 MOV@R1,A ;回写
INCR0 INCR1 DJNZR2,DALOOP2 SETBLXJIE ;信息连续标志置1 SJMPRETURN ;等待同步头上升沿
DANEXT6: ;比较相邻两次的解码结果
MOVR2,#3 MOVR0,#BUFF0;解码接收缓冲区首地址送R0 MOVR1,#BUFF0+8;解码接收缓冲区首地址加8送R1DALOOP3: MOVA,@R0 XRLA,@R1 ;异或
JNZDANEXT60 ;不同,保留后一次解码结果
INCR0 INCR1 DJNZR2,DALOOP3;相邻两次解码结果相同
SETBJIEMA ;解码有效
SJMPRETURN ;等待同步头上升沿HERROR: ;上升沿出错
ANLWUSTU,#0F0H ORLWUSTU,#01H;清除信息帧连续标志,同时置为001态CAEND: MOVTIMEL,R3 MOVTIMEH,R4RETURN: POPB POPACC POPPSW RETIEND
PROCCALTIME ;双字节除法运算;入口参数:被除数(当前脉冲宽度)存放在TIMEH、TIMEL中;除数存放在TIMEBCH、TIMEBCL中;R7记录减法运算的最大次数;出口参数:商存放在R6中
CALTIME: MOVR6,#0 ;商清零
CLRCLOOP1: ;利用减法完成16位除16位运算
MOVA,TIMEL SUBBA,TIMEBCL MOVTIMEL,A ;保存差的低8位
MOVA,TIM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 絮锦加工工创新意识能力考核试卷含答案
- 医用电子仪器组装调试工安全技能测试模拟考核试卷含答案
- 电鸣乐器接装工安全知识宣贯竞赛考核试卷含答案
- 甘肃省临夏回族自治州2026届高三上学期1月期末质量监测数学试题
- 贸易实务与商务礼仪指南
- 文件管理规范化操作手册
- 智能监测系统部署标准手册
- 家庭能耗优化节能指南手册
- 绿色建筑推广承诺书3篇范文
- 外贸企业信用证开证流程全面解析手册
- 人教版小学二年级美术下册第四单元《长大以后》每节课教案汇编(含四个教案)
- 2026年2建法规试题及答案
- 2026年档案管理职称通关练习题库附参考答案详解【考试直接用】
- (2026版)医疗器械生产质量管理规范课件
- 2026年超星尔雅劳动教育类通关考试题库(突破训练)附答案详解
- 义务教育道德与法治课程标准(2025修订版)解读-红色-党政风格
- 2026年振动监测与故障诊断技术
- 2026年全国爱国卫生月主题:宜居靓家园、健康新生活
- 2025年职业指导师考试题库
- 多重耐药菌感染防控措施试题含答案
- DB13T 6218-2025爆破行业安全生产风险分级管控与隐患排查治理规范
评论
0/150
提交评论