产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>应用设计>正文

欢迎联系我

有什么可以帮您? 在线咨询

多费率电能表中基于单片机串行口红外通信的设计

   2012年03月29日 17:41  
  摘要:利用单片机的串行口、定时器/计数器T0、定时器/计数器T1、红外发射管和红外接收管等简单的软硬件就可靠地实现了多费率电能表的红外通信功能。本设计详细介绍了串行口红外通信的软硬件设计方法,并给出了具体的电路原理图、波形图和51单片机程序。
  
  引言
  
  多费率电能表是我国目前节约用电和计划用电政策下*的电能计量产品,多费率电能表的通信接口一般兼有红外接口和RS485接口。红外通信具有直观、操作简便、可靠性高等优点,是电能表中使用zui为普遍的一种通信方式,是电能表和掌机之间实现抄表、编程、校时、数据管理等功能的有效手段。采用新茂单片机SSU7301(51系列)、日本光电子公司的红外发射管SE303和红外接收管PIC12043,以及单片机串行口、2个定时器/计数器可以有效地实现红外通信功能。
  
  1、红外通信原理
  
  红外通信是利用波长为900nm~1000nm的红外波作为信息的载体,发射装置把二进制信号经过高频调制后发送出去,接收装置把接收的红外高频信号进行解调为原来信息的一种通信传输方式。其中调制方式有脉宽调制(通过改变脉冲宽度调制信号PWM)和脉时调制(通过改变脉冲串之间时间间隔调制信号PPM)两种,本文采用PPM脉时调制方式。
  
  2、串行口红外通信硬件设计
  
  多费率电能表的红外发射和红外接收电路主要包括新茂单片机SSU7301、日本光电子公司的红外发射管SE303和红外接收管PIC12043,以及驱动三极管8550、电阻和电容,红外通信硬件原理图见图1。
  
  2.1红外发射硬件设计
  
  红外发射是利用单片机SSU7301的串行数据发送口TXD(P3.1)控制驱动三极管BG1进行二进制数据“0”和“1”的传输(数据由串行发送缓冲器SBUF中送出),以及利用P3.4口控制驱动三极管BG2进行高频38.4kHz调制(高频驱动信号由定时器/计数器T0的方式2自动重装模式产生),从而可靠地实现了红外发射管D1在传输数据“0”时进行高频红外发射和数据“1”时被截止的发射功能。状态关系见表1,波形见图2。
  
  2.2红外接收硬件设计
  
  红外接收是利用红接收管PIC12034收到高频信号输出低电平确定为数据“0”,而没收到高频信号输出高电平确定为数据“1”的方式经过解调,把数据通过单片机SSU7301的串行数据接收口RXD(P3.0)进行串行方式接收(接收数据存储在串行口缓冲器SBUF中)。
  
  3、红外通信软件设计
  
  DL/T645-1997《多功能电能表通信》中规定电能表的红外载波频率为38kHz±1kHz;初始速率为1200bps;通信的字节格式为8位二进制码D0~D7,传输时加上一个起始位(0),一个偶校验位P和一个停止位(1),共11位,传输时先传低位,后传高位,传输序列见图3。根据以上要求,本设计中红外载波频率采用38.4kHz,波特率为1200bps,串行口采用模式3为9位异步通信方式,加1位起始位和1位结束位,传送一个字节数据为11位。
  
  3.1红外载波和定时器/计数器T0设置
  
  红外载波频率f2为38.4kHz,当定时器/计数器T0模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T0设置成模式2方式。此时,TL0和TH0预置成1个可以自动重装的8位的定时器/计数器。用软件将TL0和TH0预置相同的初值后,当TL0计数值增1溢出时,一方面使TF0置1,申请中断;另一方面产生的溢出脉冲将TH0的数据值自动打入到TL0中去,不需要用软件对TL0重新置初值。系统的晶振f1为11.0592MHz,则TL0和TH0的初值计算如下:
  
  f2=38.4kHz得T=1/f2=1/38.4k≈26×10-6=26μs
  
  所以高频调制反转的周期TC=T/2=26/2=13μs
  
  即定时器/计数器T0的初值TL0=TH0=28-(TC×f1)/12=256-(13×10-6×11.0592×106)/12=256-11.9808≈244=0F4H
  
  在定时器/计数器T0的中断服务程序中只用两条指令即可实现高频调制,即CPLP3.4和RETI。
  
  3.2串行口和定时器/计数器T1波特率发生器设置
  
  串行口采用模式3为9位异步通信方式,波特率为1200bps。由串行口控制寄存器SCON的操作模式选择位SM0、SM1都置1设置为模式3,当定时器/计数器T1模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T1设置成模式2方式作为波特率发生器,其波特率表示为:
  
  波特率=(T1的溢出率)/n
  
  当SMOD=0时,n=32;当SMOD=1时,n=16,(本设计中SMOD=0)则
  
  波特率=(T1的溢出率)×2SMOD/32
  
  T1的溢出率=(f1/12)/(28-T1初值)
  
  得:波特率=(T1的溢出率)×2SMOD/32
  
  =[(f1/12)/(28-T1初值)]×2SMOD/32
  
  得:定时器/计数器T1初值
  
  TL1=TH1=28-(f1×2SMOD)/(12×32×波特率)
  
  =256-(11.0592×106)/(12×32×1200)
  
  =256-24=232=0E8H
  
  3.3程序设计
  
  根据以上两点参数的设置,51系列单片机SSU7301的汇编语言程序设计如下:
  
  ;以下为参数设置程序
  
  MOVTMOD,#22H;定时器/计数器T0方式2自动重装模式用于PWM38.4KHZ调
  
  ;制用,定时器/计数器T1方式2自动重装模式用于串行口通讯波特率发生器
  
  MOVTH1,#0E8H;波特率1200时,定时器/计数器T1自动重装初值
  
  MOVTL1,#0E8H
  
  MOVTH0,#0F4H;38.4KHz高频频调制时,定时器/计数器T0自动重装初值
  
  MOVTL0,#0F4H
  
  SETBET0;定时器/计数器T0溢出中断允许位
  
  SETBTR1;定时器/计数器T1开始定时控制位
  
  SETBTR0;定时器/计数器T0开始定时控制位
  
  MOVPCON,#00H;SMOD为0不倍增模式
  
  MOVSCON,#0D0H;串行口设置为模式3,允许接收
  
  SETBES;串行口允许中断
  
  SETBEA;开总中断允许位
  
  ;以下为定时器/计数器T0中断溢出服务程序
  
  ORG000BH;定时器/计数器T0中断入口地址
  
  T0SERVE:CPLP3.4;定时器/计数器T0定时取反P3.4口进行高频调制
  
  RETI;中断返回
  
  ;以下为串行口中断服务程序,以接收一个字节数据为例,多字节以此类推
  
  ORG0023H;串行口中断入口地址
  
  SENDSERVE:NOP
  
  NOP
  
  MOVA,SBUF;把接收缓冲器的数据送到A寄存器
  
  …;进行数据处理及其它功能操作
  
  RETI;中断返回
  
  ;以下为串行口发送程序,以发送一个字节数据为例,多字节以此类推
  
  COMSEND:MOVA,#DATAH;把数据送到A寄存器
  
  MOVC,P;根据A中数据产生的偶校验位送到进位标志位
  
  MOVTB8,C;送偶校验位到发送的第9位数据
  
  MOVSBUF,A;送数据到发送缓冲器
  
  JNBTI,$;以查询方式等待发送结束
  
  CLRTI;清发送中断标志位
  
  …;继续发送或其它功能操作
  
  RET子程序返回
  
  4、结束语
  
  本设计的zui大特点在于省略了脉冲振荡器,而仅仅利用多费率电能表上所带单片机的串行口和2个定时器/计数器,这不仅使多费率电能表在硬件设计上更加简单、成本更加低廉,而且在软件上也更加方便、可靠。同时这种红外通信方式也可以应用在带串行口和定时器/计数器的单片机应用领域。

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942