居民用电远程抄表系统设计_第1页
居民用电远程抄表系统设计_第2页
居民用电远程抄表系统设计_第3页
居民用电远程抄表系统设计_第4页
居民用电远程抄表系统设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要 随着电网的信息化改造 传统人工抄表方式已经不能满足现在的抄表需求 居民用电远程抄表作为一种智能抄表方式 将逐渐替代原有的人工抄表 远程抄表系统包括智能电能表设计和 RS485 通信方式设计 智能电表利用 AT89S52 单片机作为微控制器 并且加入电量采集模块 RS485 通信模块 LCD 显示模块 数据存储模块以及时钟模块 单片机利用 I O 口模拟 IIC 总线 实 现与存储模块的通信 运用单片机的串行口与上位机进行数据传输 RS485 通 信设计主要包括通信线路的架构和抗干扰保护设计 保证通信渠道稳定畅通 设计出的居民用电远程抄表系统 能够分别累计不同时间段的总用电量 当断电时 数据可以存储到片外数据存储器中 可以将数据实时传送至上位机 远程抄表系统实现了抄表过程的智能化 简化了抄表流程 提高了抄表精 度 减少了人力资源的浪费 关键字 AT89S52 远程抄表 RS485 通信 ABSTRACT With the information technology of the grid the traditional manual meter reading has been unable to meet the current meter reading needs Residential electricity meter as an intelligent remote meter reading will gradually replace the existing manual meter reading Remote meter reading system includes a smart meter design and RS485 communication design Smart meters use AT89S52 microcontroller as the microcontroller and added power collection module RS485 communication module LCD display module data storage module and a clock module Use microcontroller I O port simulation IIC bus to communicate with the memory module Use SCM serial interface with the host computer for data transfer RS485 communication architecture and design includes anti jamming protection design communication lines to ensure stable channels of communication open Design of residential electricity remote meter reading system capable of respectively the cumulative total electricity consumption in different periods When a power failure data can be stored off chip data memory Data can be transmitted in real time first bit machine Remote meter reading system to achieve intelligent meter reading process simplifying the process of meter reading meter reading to improve the accuracy and reduce the waste of human resources Key words AT89S52 remote meter reading RS485 communication 目录 1 绪论 1 1 1 课题背景与意义 1 1 2 设计的主要工作 1 1 3 本文各章主要安排 1 2 方案选择 3 2 1 设计要求 3 2 2 通信方式选择 3 2 2 1 电力线载波远程抄表系统 3 2 2 2 基于 GPRS 远程抄表系统 3 2 2 3 红外线通信方式 4 2 2 4 RS485 通信远程抄表系统 4 2 3 系统框图 4 3 硬件电路设计 6 3 1 主电路设计 6 3 2 MCU 控制模块 6 3 3 电源电路 8 3 4 电量采集电路 8 3 4 1 ADE7755 工作原理 8 3 4 2 ADE7755 电路设计 10 3 5 时钟电路 11 3 6 存储电路 12 3 7 显示电路 13 3 8 掉电保护电路 14 3 9 RS485 接口电路 15 3 9 1 RS485 简介 15 3 9 2 RS485 电路设计 15 4 软件设计 17 4 1 主程序设计 17 4 2 外部中断 0 服务程序 18 4 3 外部中断 1 服务程序 20 4 4 RS485 通信程序 20 4 5 时钟程序 22 4 6 显示程序 24 4 7 数据存储程序 26 5 仿真与调试 29 5 1 PROTEUS 仿真 29 5 2 设计总结 31 设计总结 32 致谢 33 参考文献 34 1 绪论 1 1 课题背景与意义 抄表工作是供电系统中重要的一环 传统抄表是抄表员到各家各户抄写电 表上的数据 再将数据送至供电局统计 用电量由人工输入到电脑中 人工抄 表方式不仅繁琐 还可能出现误读 给居民和供电公司带来损失 而且受天气 交通情况的限制 一些比较偏远地区的抄表工作很难进行 抄表人员外出进行 抄表作业时可能会发生意外 现如今 居民用电实行的一户一表政策 抄表工 作量大大增加 随着劳动力成本不断上升 供电公司在抄表工作中的投入也越 来越大 传统的感应式电能表采用机械结构 只能单一显示总电量 限制了电网的 信息化改造 随着电子技术的发展 利用单片机设计的智能电表不仅可以实现 传统感应式电表的功能 还可以加入不同的模块 使电能表的功能更加丰富 特别是增加了通信模块 实现了智能电表与上位机的通信 使远程抄表成为可 能 如今 国家推行的分时计费方式 只能依靠智能电表作为下位机 传统电 表都会被淘汰 这就为智能电表带来了巨大的市场 可预见的将来 以智能电 表为下位机的居民用电远程抄表系统将会得到普及 居民用电远程抄表系统作为一种智能系统 既能改善人们的生活质量 又 节约了大量的人力资源 有着广阔的升级潜力 未来可以将电能表 水表 燃 气表集合到一个系统中 节约系统的成本 1 2 设计的主要工作 居民用电系统设计包含下位机软硬件设计和通讯方式设计 智能电表作为系统的下位机 第一 智能电表要实现计量电能的功能 可 以利用专用的电能测量芯片 第二 为了让用户知道自己的用电量 智能电表 应该显示出总电量等信息 第三 分时计费必须读取当前时间 智能电表要加 入时钟模块 第四 因为居民用电会遇到停电的情况 智能电表要具有掉电保 护功能 最后 为了实现远程抄表 智能电表应设有通讯接口 实现与上位机 通信 通信方式设计包括通信方式选择和通信渠道设计 选择合适的通信方式 在满足远程通信对信号质量的要求基础上 最大程度地简化设计 降低成本 通信渠道应具备抗干扰能力 使信息传输畅通 1 3 本文各章主要安排 本次毕业设计说明书分为六个章节 第 1 章为绪论 介绍了设计的意义 发展趋势以及设计要求 第 2 章为方案的选择 介绍了通信方式的选择 包括电力线载波 GPRS 通 信 红外线通信和 RS485 通信的比较与选择 第 3 章为硬件电路的设计 包括微处理器 AT89S52 电能计量芯片 ADE7755 时钟芯片 DS1302 LCD1602 EEPROM AT24C04 RS485 收发芯片 MAX485 的硬件电路设计 还介绍了 RS485 通信渠道的设计 第 4 章为软件系统的设计 包括主程序设计与各个模块的子程序设计 第 5 章为仿真调试 利用 Keil 与 Proteus 软件进行仿真 验证了系统功能 的实现 2 方案选择 2 1 设计要求 居民用电远程抄表系统包括了下位机软硬设计 电能表包含电能采集模块 实现对电能参数的采集 利用 RS485 总线将智能电表采集的电能参数信息实时 上传 累计电量本地存储 设计智能电表作为抄表系统的下位机部分 智能电表要求额定电流为 5 20 A 仪表常数 3200imp kWh 用电量 时间日期等信息通过 LCD 循环显 示 电表能在停电时 把当前数据保存到片外 EEPROM 中 能够实现与上位机的 远程通信 在居民用电远程抄表系统中 智能电能表技术已经发展成熟 现在的发展 方向主要是远程通信方式的选择 主流的通信方式有电力线载波通信 无线 GPRS 通信 无线电台 MODEN 拨号等 这些通信方式各有利弊 最经济的方式 是电力线载波通信 但是对电力系统要求较高 采用的 GPRS 通信的成本又太高 供电系统的特殊性决定了远程抄表系统的通信方式要经济 稳定 安全 覆盖 面广 所以将来满足这些条件的通信方式将成为远程抄表系统的首选 2 2 通信方式选择 2 2 1 电力线载波远程抄表系统 电力线载波通信通过电力线将电能表中的数据传输至变压器的集中器 再 由集中器将数据传输至上位机 电力线载波直接利用电力系统的供电网作为通 信渠道 不用铺设专用的通信电缆 即降低了系统的安装成本 又减少了后期 的维护成本与难度 当要增加一户电表时 不用另外铺设通信线 但是电力线载波通信也有一些弊端 由于配电变压器对电力载波信号有阻 隔作用 电力载波信号只能在一个配电变压器区域范围内传送 所以要在每个 配电变压器中设置集中器对信号进行收集 电力线载波通信相间信号损失比较 大 所以一般采用单相电力线传输 电力线载波通信对电网的供电质量要求比 较高 电力线会对载波信号产生干扰 电网负荷的变化也会限制信号传输距离 考虑到设计要求 放弃选择此方案 2 2 2 基于 GPRS 远程抄表系统 GPRS 电力远程抄表系统是利用电信运营商的 GPRS 网络进行信息的传输 下位机是居民电表数据采集点 上位机是位于供电所的服务器 由于实行 一 户一表 制度 每一个智能电表通过加装 SIM 卡模块 实现与上位机通信 对 于用电比较密集的居民区 采用下位机通过 RS485 连接到采集器 再由采集器 将数据发送上位机 实现数据的实时上传 这种方案避免了个别电表安装位置 信号差 而导致传输不畅 也减少了 SIM 卡的需求量 降低了成本 现在 基于 GPRS 的电力远程抄表系统已经在一些地区投入使用 技术已经 相当成熟 虽然采用 GPRS 通信短期投入比较低 但是长期运行成本还是偏高 GPRS 通信模块的价格偏高 通信协议比较复杂 初学者很难掌握 所以放弃此 方案 2 2 3 红外线通信方式 红外线通信是利用红外线进行信息的传递 由其物理特性决定了红外线通 信保密性强 抗干扰性强 通信模块体积小 重量轻 结构简单 价格低廉 一般只需要一个红外线发送管和一个红外线接收器加上调制解调电路就可以实 现通信功能 利用红外线的传播进行数据传送 不用铺设通信线路 但是受红 外线传播特性的限制 红外线通信只能在短距离进行通信 一般超过十米 通 信信号就会不稳定 很明显红外线通信不能进行远距离通信 但是红外线通信在近距离通信中 优势明显 所以在现在的智能电表中都加入了红外通信模块 与手抄器配合以 便在远程抄表出现故障时进行现场抄表之用 2 2 4 RS485 通信远程抄表系统 RS485 通信方式使用专用的带屏蔽层的双绞线连接上位机与下位机 RS485 通信速率采用 9600bps 最长传输距离可达 1200 米 一般电表到上位机的距离 都较远 所以在远距离通信中 采用增加中继的方式来对信号进行放大 在设 计中可以将中继模块集合到采集器中 在实际应用中 也可以采用光纤为通信 渠道 在收发两端各加一个光电转换器 将电信号转化成光信号进行传输 再 转化成电信号 另外 一条 RS485 总线上最多允许连接 128 个收发器 这样可 以满足在小范围内电表组网的要求 采取 RS485 通信模式需要铺设专用的通信线 所以前期投入的资金较多 通信线路的维护比较麻烦 距离越远 建设成本与维护成本也越高 在居民小 区中 电表分布密集 电表间距离不会太远 采用 RS485 通信的成本大大降低 而且信号传输更稳定 安全性也更高 通信协议较简单 所以采用 RS485 作为 远程抄表系统的通信方式 2 3 系统框图 一般电表与集中器之间采用 RS485 组网 集中器与上位机采取 RS485 通信 这种方案选取 RS485 作为系统的通信方式 不仅得到了稳定的传输渠道 而且 设计更加简单 测量模块单片机 时钟模块 RS485通信 模块 集中器 RS 485通信线 上位机 RS485通信线 存储模块 LCD显示 模块 图 1 系统框图 系统的总体框图如图 1 所示 测量模块将测得的电能信号转化成数字脉冲 信号 信号传送至单片机进行计算存储 数据通过 RS485 传输至采集器 再由 集中器将数据传送至上位机 测量模块得到电能参数 时钟模块为电表提供时 间参数 显示模块显示电量信息 存储模块存储电量数据 3 硬件电路设计 3 1 主电路设计 智能电表采用 AT89S52 单片机作为微控制器 电量采集模块选用 ADE7755 将瞬时功率模拟信号转化成数字脉冲信号 时钟模块选用 DS1302 为电表提供精确的时间 显示模块选用 LCD1602 循环显示分时电量和时间日 期 存储模块选用 AT24C04 系统掉电后存储数据 RS485 通信模块选用 MAX485 作为收发器 与上位机进行通信 掉电保护电路 主电路图见附录 A 3 2 MCU 控制模块 智能电表选用 AT89S52 控制 AT89S52 是一种低能耗 高性能 CMOS8 位微 控制器 采用 8K 字节可编程 Flash 程序存储器 可以擦写 1000 万次 满足设 计调试时反复烧写程序的要求 256 字节的数据存储器分为片内 RAM 与片外 RAM 片内 RAM 共 128 个字节 又分为工作寄存器区 位寻址区和通用 RAM 32 个可编程 I O 口线 分别为 P0 P1 P2 P3 口 每个口线为 8 位 三个 16 位 定时器 计数器 八个中断源 全双工 UART 串行通道 低功耗空闲和掉电模 式 掉电后中断可唤醒 看门狗定时器 双数据指针 AT89S52 引脚图如 图 2 所示 图 2 AT89S52 引脚图 AT89S52 的 P3 口定义了第二功能 具体功能见表 1 表 1 P3 0 口第二功能 口线第二功能信号说明 P3 0RXD串行数据接收 P3 1TXD串行数据发送 P3 2INT0外部中断 0 申请 P3 3INT1外部中断 1 申请 P3 4T0定时器 计数器 0 计数输入 P3 5T1定时器 计数器 1 计数输入 P3 6RW外部 RAM 写选通 P3 7RD外部 RAM 读选通 AT89S52 模块包括电源电路 晶振电路 下载电路 复位电路和备用电源 电路 电源采用 5V 直流稳压电源 电源使用连接到 V G 端 为单片机提供电源 使用一个开关控制电源通断 电阻与发光二极管构成电源指示电路 晶振选用 11 0592MHz 的陶瓷晶振 经过瓷片电容接地 单片机通过下载口向 ROM 中写程 序 1 4 5 脚接单片机的编程口 P1 5 P1 7 和 P1 6 口 6 脚可以为单片机提 供电源 复位电路采用上电复位加按键复位电路 利用电解电容的充放电 保 证复位信号高电平在上电和按复位键时保持 2 个机器周期以上 系统加入可充 电电池 用于在系统掉电时提供电源 保存重要数据 AT89S52 及外围电路如 图 3 所示 图 3 AT89S52 及外围电路图 AT89S52 接口有限 为了设计的方便 要合理地分配 I O 口线 掉电保护 使用外部中断 0 ADE7755 脉冲输入使用外部中断 1 RS485 通信使用串行口中 断 单片机与各个模块连接情况见表 2 表 2 单片机引脚分配 序号引脚说明 1P0 0 P0 7接 LCD1602 数据线 2P2 0 P2 2接 LCD1602 控制口 3P1 1 P1 2接 DS1302 4P2 3 P2 4接 AT24C04 5P3 2接 ADE7755 CF 端 6P3 3接掉电保护电路 7P3 0接 MAX485 RO 口 8P3 1接 MAX485 DI 口 9P3 2接 MAX485 RE DE 口 3 3 电源电路 电源电路采用直流稳压电源 输入 220V 交流电 经变压器降压为 12V 左右 再经过整流桥 将交流电转化为直流电 依次经过电解电容和瓷片电容 滤去 高频与低频谐波 再经过稳压管 LM7805 稳压 得到直流 5V 电压 LED 为电源 指示灯 电源电路如图 4 所示 图 4 电源电路 电源电路接线时 保证变压器一次侧接在电量采集电阻的前面 使智能电 表的耗电量不会被自身检测到 防止不合理收费的发生 3 4 电量采集电路 3 4 1 ADE7755 工作原理 电量采集模块选用 ADE7755 ADE7755 是一种高精度电能计量芯片 专门用 于居民用电的单相有功电能测量 ADE7755 中只有模数转换电路和参考电压电 路使用了模拟电路 所有其它信号都是通过数字信号处理 采用数字信号处理 的方式可在电网电压与电流发生突变时 保证信号的稳定性和精度 ADE7755 技术指标超过了 IEC1036 规定的准确度要求 它将有功功率的信息以频率的形 式输出 在 50 60Hz 输入信号时都能满足 IEC687 1036 标准规定的测试精度要 求 在 1000 1 的输入动态范围内 测试误差小于 0 1 满足设计精度要求的 0 2 ADE7755 的内部硬件电路图如图 5 所示 ADE7755 的输入信号分别是电流 电压互感器的模拟信号 信号送到 16 位 模 数转换器中 得到的数字信 号经过处理送到乘法器中相乘 结果就是瞬时功率信号 瞬时功率由瞬时有功 功率和瞬时无功功率组成 经过低通滤波电路后 得到有功功率分量 再送入 数字 频率转换器中 将功率大小转化成输出频率 ADE7755 有低频的 F1 F2 输出端和高频同步输出 CF 端 ADE7755 内部设有 一个电源监控电路 监视 AVDD 引脚的电压 在电源电压即 AVDD 电压上升到 4V 之前和下降到 4V 以下时 ADE7755 会一直保持复位状态 此时 ADE7755 没有输 出 当电源电压高于基准电压时 AE7755 芯片才能工作 输出电能信号 图 5 ADE7755 硬件框图 采样电流送到 ADE7755 电流通道后 通过增益放大器放大 由表 3 可知 增益倍数由 G0 G1 决定 表 3 ADE7755 增益 G0G1PGA 增益最大差动电压 001470mV 012235mV 10860mV 111630mV 电网中由于有谐波的存在 入户电压电流波形不是严格的正弦波形 当电 压电流非正弦波形时 由傅里叶分解得电流电压正弦谐波成分 0 sin2 h o hthVhVtv 0 sin h o hthIhIti 式中 是瞬时电压 是电压平均值 是 h 次电压谐波的有效值 tv 0 VVh 是 h 次电压谐波的相位角 式中 是瞬时电流 电流平均值 是h ti o iIh h 次电流谐波的有效值 是 h 次电流谐波的相位差 瞬时有功功率由基波有h 功功率和多次谐波有功功率组成 即 1cos 111 IVP 0 cos h h hIhVhP 式中 表示基波瞬时功率 表示 h 次谐波瞬时功率之和 ADE7755 对 1 P h P 纯正弦波计量精确 而多次谐波也由纯正弦波组成 所以 ADE7755 对谐波有功 功率也可精确计量 3 4 2 ADE7755 电路设计 电量采集通过电流电压互感器得到小电流小电压 电流采样采用阻值小线 性度好的铜锰合金电阻 电阻为 88 350 将火线上的大电流转化为小电 流信号 电路原理图如图 6 所示 图 6 ADE7755 电流通道 电流通道采用完全差动输出 最大峰值差动电压应小于 470mv 有一个共 同的共模参考点 电压的采样采用纯电阻分压得到 电压通道最大峰值差动电压为 660mV 差动电压选用零线作为参考点 滑动变阻器用于改变分压电阻值 通过调节电 位器来改变得到的电压信号的电压值 在调试中可以校准电表 等效电路图如 图 7 所示 图 7 ADE7755 电压通道 电量采集电路如图 8 所示 图 8 ADE7755 接线图 电流通道接 ADE7755 的 V1P V1N 端 电压通道接 V2P V2N 端 晶振电路 接 CLKIN 和 CLKOUT 脚 频率选用 3 58MHz 输出脉冲 CF 脚经过光耦接单片机 图 9 ADE7755 模块实物图 ADE7755 模块如图 9 所示 从左到右依次为零线进线和出线 CF 输出线 火线出线和火线进线 3 5 时钟电路 智能电表需要统计峰时与谷时的用电量 所以需要获取当前时间参数 单 片机自带的定时 计数器虽然可以得到时间 但是时间并不精确 容易造成测量 误差 DS1302 时钟芯片可以得到年 月 日 周 时 分 秒的精确数值 图 10 DS1302 引脚图 DS1302 时钟芯片是一种高性能 低功耗 自带 RAM 的实时时钟芯片 其工 作电压为 2 5V 5 5V DS1302 内部有一个 31 8B 的 RAM 寄存器 DS1302 芯片 采用三线接口与单片机进行同步通信 DS1302 引脚功能如下 表 4 DS1302 引脚功能 引脚号标号功能 1 8Vcc2 Vcc 1 电源与后备电源引脚 2 3X1 X2晶振接入引脚 晶振频率为 32 768KHz 4GND 接地引脚 5RST复位引脚 高电平启动输入 输出 低电平结束输入 输出 6I O数据输入 输出引脚 7SCLK串行时钟输入引脚 DS1302 的 X1 X2 口接晶振 晶振频率选用 32 768KHz SCLK I O RST 分别接单片机 P11 P10 P12 口 Vcc1 可接后备电源 保证在掉电时 时钟电 路仍可以运行 图 11 DS1302 接线图 3 6 存储电路 存储电路采用 AT24C04 采用 IIC 总线协议与单片机相连 由于总线上只 有 AT24C04 一个器件 所以 A1 A2 A3 直接接地 WP 为写保护控制端 接地 将其设为 0 表示允许写入 SCL SDA 接到单片机的 P2 4 和 P2 3 口 图 12 AT24C04 接线图 3 7 显示电路 显示模块选用的是 LCD1602 其体积小 重量轻 能耗低 LCD1602 包含控 制器 HD44780 驱动器 HD44100 和液晶板三个部分 HD44780 又包含字符发生器 CGROM 自定义字符发生器 CGRAM 和显示缓冲区 DDRAM 三个部分 LCD1602 显示为 2 行 每行有 16 个字 采用 16 引脚接线 其具体引脚功 能见表 5 表 5 LCD1602 引脚功能 引脚号标号功能 1 2Vss Vd d 接地引脚和电源引脚 3VL对比度调整 选高电平时对比度最高 4RS 数据 命令寄存器选择 高电平为数据寄存器 低电平为命令寄存器 5R W读 写选择 高电平为读操作 低电平为写操作 6E使能端 有高电平变为低电平 下降沿 时 液晶屏执行命 7 14D0 D78 位双向数据线 15 16BLA BL K 背光正极与背光负极 LCD1602 接线图如图 13 图 13 LCD1602 接线图 LCD 控制口 RS R W E 分别接单片机 P20 P22 数据口 D0 D7 接 P0 口 V0 为对比度设置位 接 VCC 时对比度最高 3 8 掉电保护电路 在实际生活中 经常会遇到停电 此时电表就会突然掉电 而单片机的数 据存储器是掉电易失的 当系统上电时 单片机初始化就会丢失数据 设计中 要统计累计电量等数据 所以在停电时 要及时将数据保存起来 TL7705 是一种电源监视芯片 当电源低于设定的基准电压时 TL7705 就会 响应发出一个脉冲信号 选用的下降沿信号作为触发单片机外部中断的信RST 号源 将这个信号接入单片机的外部中断口 一旦系统掉电 TL7705 产生的脉 冲信号会使系统触发中断 在中断服务程序中 将片内数据存储器中的数据存 储到片外 并将单片机设为掉电模式 为了维持有足够的电压维持单片机的运 行 在系统加入一个可充电的电池 在系统掉电时为系统提供电源 图 14 掉电保护电路 掉电保护电路如图 14 所示 TL7705 芯片 SN 口上的电位器用来调节检测电 压的大小 调节范围为 4 5 4 75V 为了使芯片能够在掉电时快速反应 将基 准电压设为 4 75V 当掉电时 电源电路的电压下降到 4 75V 时 TL7705 发出 信号触发单片机的外部中断 通过中断服务程序将片内 RAM 中需要保护的数据 写入片外 RAM 中 并使单片机进入掉电工作方式以完成数据保护 当电源电压 降至 4 75V 时 TL7705 由向单片机发出中断请求信号 单片机运行到一个RST 可断断点后 响应中断 在中断服务程序中保护现场数据 使单片机进入掉电 工作状态 在掉电模式中 由备用电池供电 所以数据存储器中的数据不会丢失 退 出掉电模式的唯一方法是硬件复位 系统重新初始化 数据存储器中的数据保 持掉电前的内容 在电路中加入掉电保护是为了节约电池的电量 单片机进入 掉电模式后 关闭不必要的功能 功耗大幅降低 数据保存时间更长 3 9 RS485 接口电路 3 9 1 RS485 简介 RS485 采用差分信号负逻辑 2V 6V 表示 0 6V 2V 表示 1 采用的是两线制接线方式 可以在同一条 RS485 总线上挂接 32 个结点 在 RS485 通信网络中一般采用的是主从通信方式 即一个主机带多个从机 其 典型网络图如图 15 所示 图 15 RS485 典型半双工网络 RS485 的通信线采用带屏蔽层的双绞线 在使用 RS485 接口时 由于受信 号失真及噪声等影响 信号传输的波特率越高 RS485 数据信号传输的最大电 缆长度越长 根据 GB T 645 1989 平衡电压数字接口电路电气特性 中的传 输速率与最大电缆长度的关系图可知 当波特率为 9600bps 时 RS485 通信的 最长传输距离可以达到 1200 米 在传输过程中 可以采用增加中继的方法对信 号进行放大 信号最大的传输距离可以达到 9 6 公里 为了降低干扰 提高通信质量 RS485 通信要求从总线到每个节点应采用 尽量短的引出线 在 RS485 组网过程中 应在总线电缆的开始和末端都并接终 端电阻 因为 RS485 通信选用的双绞线的电缆特性阻抗大约在 100 120 之间 所以终接电阻一般选用 120 以达到终端匹配的目的 在设计中 采用光耦隔离进行通信线路的保护 当遇到闪电时 通信线上 会产生大幅值的瞬时干扰 如果不添加保护就可能损坏 RS485 接口 甚至直接 损坏电能表 3 9 2 RS485 电路设计 通信模块选用 MAX485 芯片 MAX485 芯片是 RS485 通信的低功率半双工收 发器 具有标准的 12k 接收器输入阻抗 MAX485 芯片引脚功能见表 6 表 6 MAX485 引脚功能 引脚号标号功能 1RO接收器输出 2RE接收器输出使能 3DE 驱动器输出使能 4DI驱动器输入 5GND地 6A接收器同相输入端和驱动器同相输出端 7B接收器反向输入端和驱动器反向输出端 8VCC电源 MAX485 芯片通过 A B 两端口来接收来自与 RS485 总线上传输的电平信号 RO 为接收器输出端 通过光耦隔离接单片机的 RXD 引脚 MAX485 通过 DI 引脚 接收由单片机发送的数据 再由 A B 发送到 RS485 总线上 Dl 为发送器输入 端 通过光耦隔离接单片机的 TXD 引脚 RE DE 引脚分别是接收器 发送器的 使能端 因为设计中 MAX485 的工作方式为半双工 所以将 RE DE 并联接到 单片机的一个 I O 口 来起到控制的作用 MAX485 的 AB 口之间加入 120 的 匹配电阻 A 口经 3 3K 电阻接高电平 B 口经 3 3K 电阻接地 这样保证 RS485 总线在空闲时 A 口和 B 口是稳定的高电平和低电平 图 16 MAX485 接线图 为了使电表免受 RS485 的瞬时干扰 MAX485 芯片采用光耦与单片机隔离 其中 RO 通过光耦接单片机的 P3 0 口 即串行数据接收口 RXD DI 口通过光 耦接单片机的 P3 1 口 即串行数据发送口 TXD RE 和 DE 通过光耦接单片机的 P3 2 口 用于 MAX485 的使能端 4 软件设计 4 1 主程序设计 程序设计要满足数据的实时上传 数据的存储 主要流程包括 电量值的 获取 时间参数的获取 信息的显示 计费费段电量累计 数据传送等步骤 当系统上电时 第一步 初始化单片机 时钟芯片 LCD 显示屏等模块 第二 步 向 DS1302 写入实时时钟 时钟数据通过 RS485 从上位机获取 第三步 读 取存储器中的断点数据送到单片机数据存储器中 第四步 ADE7755 发送的脉 冲触发外部中断 在中断服务程序中 判断是峰时还是谷时费段 再计算出各 时段的用电量 第五步 数据传送至上位机 软件系统中还有 2 个外部中断服 务程序 电能计量使用外部中断 0 电源监视使用外部中断 1 具体程序流程如 图 9 所示 开始 初始化 读AT24C04数据到 内部数据寄存器 读时间参数 是否为峰时 峰时电量累计谷时电量累计 总电量 峰谷时电 量处理 循环显示时钟 电 量 是 否 图 3 主程序流程图 在设计中 需要用到一些专用寄存器见表 7 表 7 常用专用寄存器 寄存器符号寄存器地址寄存器名称说明 IEA8H中断允许控制寄存器控制各种中断开关 PCON87H电源控制寄存器定义单片机掉电工作模式 SCON98H串行口控制寄存器串行发送接受中断请求标志位 SBUF99H串行数据缓冲器存储将要传送或接受的数据 TCON88H定时器控制寄存器选定外部中断的触发方式 TMOD89H定时器方式选择寄存器定义计数器工作方式 TL08AH定时器 0 低 8 位定时器 计数器 0 初值的低 8 位 TH08CH定时器 0 高 8 位定时器 计数器 0 初值的高 8 位 系统上电之后 对单片机进行初始化 void init IE 0 xF7 IE 1111 0111 总中断允许 允许外部中断 允许定时器计 数器 0 中断 允许串行中断 SCON 0 x50 串行口工作方式 1 TCON 0 x05 外部中断 0 1 采用脉冲触发方式 下降沿有效 4 2 外部中断 0 服务程序 在程序设计中 采用 2 个外部中断 ADE7755 的脉冲输出接外部中断 P33 口 TL7705 的掉电保护信号接外部中断 P32 口 中断由中断控制寄存器 IE 控 制 在程序开始运行时 要先初始化中断控制寄存器 中断控制寄存器 IE 位定 义及位地址见表 8 表 8 中断控制器 IE 位地址 位地址AFHAEHADHACHABHAAHA9HA8H 位符号EA ESET1EX1ET0EX0 EA 为中断允许位 EA 1 中断允许 EA 0 中断禁止 EX0 和 EX1 为外部中断 允许位 EX0 0 禁止外部中断 EX0 1 外部中断允许 ET0 和 ETC1 为定时器中 断允许位 为 1 时表示允许定时器中断 为 0 时表示禁止定时器中断 设计中 需要总中断允许 串行中断允许和外部中断 0 1 允许 即 IE 83H 表 9 中 定时器控制寄存器 TCON 定义了外部中断的触发方式 表 9 TCON 位地址 位地址8FH8EH8DH8CH8BH8AH89H88H 位符号TF1TR1TF0TR0IE1IT1IE0IT0 IE0 和 IE1 为外部中断请求标志位 IT0 和 IT1 为外部中断触发方式控制位 为 1 时表示脉冲触发 下降沿有效 为 0 时表示电平触发方式 低电平有效 设计中根据输入信号为脉冲信号 选用脉冲触发更合理 所以 TCON 应设为 ADE7755CF 端输出的高频脉冲信号频率设定为 3200imp KWh 一般电表的最 大工作电流为 20A 负载为 4 4KW 时 脉冲频率约为 4Hz 外部中断 1 秒触发 4 次 每一个脉冲表示 0 KWh 程序运行时 每一个脉冲都会触发一次中断服务 程序 再根据时间参数累计分时电量 程序流程如图 17 所示 void du interrupt 0 外部中断 0 服务程序 du if 8 date time 2 20 读取小时值 当在 8 20 之间时 峰时电量累加 p1 p1 0 峰时电量累加 每一个脉冲表示 0 度电 else p2 p2 0 否则 谷时电量累加 p p1 p2 求出总电量 即峰时电量与谷时电量之和 开始 总中断允许 外部中断允许 是否有脉冲输入 根据时间参数累计 各时段总电量 结束 是 否 图 4 外部中断 0 程序流程图 4 3 外部中断 1 服务程序 外部中断 1 用于电源监视 当电源电压低于设定的基准电压时 TL7705 发 出一个中断信号 中断采用低电平触发 中断服务程序将单片机中需要保存的 数据送到 AT24C04 中存储 数据存储完成后 将单片机设定成掉电模式以节约 电池电量 开始 开外部中断 中断是否响应 总电量 分时电量 数据送入AT24C04 单片机设定进入掉 电模式 结束 是 否 图 5 掉电保护程序流程图 AT89S52 单片机有 2 种低能耗工作方式 待机模式和掉电模式 低能耗模 式由电源控制寄存器 PCON 控制 PCON 寄存器位格式见表 10 表 10 PCON 位地址 D7D6D5D4D3D2D1D0 SMOD GF1GF0PDIDL SMOD 为波特率倍增位 进行波特率加倍处理 GF0 和 GF1 为通用标志位 PD 为掉电方式位 为 1 时进入掉电方式 IDL 为待机模式位 为 1 时进入待机 模式 系统掉电以后 TL7705 检测到电源电压下降到基准电压以下 发送电平信 号触发中断程序 备用电池为系统提供电源 单片机将数据传送到 AT24C04 中 存储 存储完成以后 用软件将 PCON 中的 PD 位设为 1 使单片机进入掉电模 式 4 4 RS485 通信程序 RS485 通信是基于 C51 单片机的串行通信 串行通信协议内容包括同步方 式 数据格式 传输速率 校验方式 RS485 通信采用异步半双工通信方式 半双工是指数据传输可以沿两个方向 由于只采用一条数据线传输 所以需要 分时进行 异步通信以字符 构成的帧 为单位进行传输 每一帧的数据由 1 位起始位 8 位数据位 1 位奇偶校验位 1 位停止位组成 数据传送时先传送 低位 串行口由特殊功能寄存器 SCON 和电源控制寄存器 PCON 控制 表 11 SCON 位地址 9FH9EH9DH9CH9BH9AH99H98H SM0SM1SM2RENTB8RB8TIRI 其中 SM0 和 SM1 决定了串行口的工作方式 具体见表 11 SM2 用于方式 2 3 的多机通信控制 REN 为串行接受使能位 TB8 和 RB8 在方式 2 3 中分别 发送和接受数据的第 9 位 TI 和 RI 分别为发送中断标志位和接受中断标志位 设计中 串行口选择工作方式 1 所以 SM0 0 SM1 1 由于工作方式 1 为双机 通信方式 所以 SM2 为 0 此外 REN 设为 1 允许串行口接受数据 则串行口 初始化时 SCON 50H 表 12 串行口的工作方式 PCON 中的 SMOD 位为单片机串行通信波特率倍增位 为 1 时表示波特率增 加一倍 系统波特率选用 9600bps 不用增倍就可以达到 即 SMOD 0 工作方 式 1 3 的波特率可调 由定时器 T1 的溢出率决定 将 T1 设为工作方式 2 溢 出率与 T1 的初值有关 T1 溢出率 12 256 TH1 osc f 方式 1 波特率 32 T1 溢出率 SMOD 2 根据单片机的晶振频率 计算得出 TH1 应设为 FDH 串行口初始化包括 确定 T1 的工作方式 TMOD 20H 计算 T1 的初值 设 定 TH1 TL1 初值 启动 T1 确定串行口工作方式 串行口在中断方式工作时 进行中断设置 void max Init void TMOD 0 x20 定时器 1 工作方式 2 TH1 0 xfd 波特率为 9600 SM0SM1方式说明波特率 000移位寄存器 12 osc f 01110 位 UART 8 位数据 可变 10211 位 UART 9 位数据 64 或 12 osc f osc f 11311 位 UART 9 位数据 可变 TL1 0 xfd PCON 0 x00 TR1 1 定时器 1 开始工作 SCON 0 x50 0101 0000B 工作方式 1 8 位 UART 波特率可变 允许接收 RI 0 接收中断标志位清零 TI 0 发送中断标志位清零 数据接收程序 void Receive void while RI 0 等待数据接收完成 DAT2 SBUF 接收到的数据由 SBUF 送入 DAT2 中 RI 0 接收停止 接收标志位清零 数据发送程序 void Send uchar ShowData SBUF ShowData 写发送寄存器 while TI 0 等待串行发送完成 TI 0 对发送标志位清零 4 5 时钟程序 DS1302 的基本操作为读字节操作和写字节操作 DS1302 各种操作由命令字 节实现 DS1302 命令字节格式见表 13 表 13 DS1302 命令字节格式 位D7D6D5D4D3D2D1D0 值1R CA4A3A2A1A0R W D7 固定为 1 R C 位为 0 时选择操作时钟数据 为 1 时选择操作 RAM 数据 A0 A4 为操作地址 R W 位为 0 时进行写操作 为 1 时进行读操作 写操作指将一个字节的数据写到 DS1302 中 当 SCLK 上升沿时 数据写入 DS1302 写时先传输低位数据 写操作时序如图 19 所示 图 19 写操作时序图 DS1302 写操作程序 void write ds1302 uchar dat uchar i for i 0 i 1 dat 右移 1 位 准备传送第 2 位 读操作为读 DS1302 的数据送到单片机中 读操作跟随读命令字节后 数据 在 SCLK 下降沿送出 读操作先传输低位数据 读操作时序如图 20 所示 图 20 读操作时序图 uchar read ds1302 DS1302 读字节程序 uchar i b 0 x00 设置读出的数据放在 b 中 初值为 0 for i 0 i 8 i b crol uchar IO i IO 口强制转化为 8 位 uchar 型 再左移 i 位 再与 b 按位或 结果送给 b SCLK 1 产生上升沿 数据传送 delay 1 延时 SCLK 0 设为 0 准备下一个数据传送 return b 16 10 b 16 与 BCD 码转换 时间日期数据是以 BCD 码格式存放在 DS1302 中 所以读出的数据要转化成 uchar 型的值 表 14 DS1302 日历时钟寄存器 命令字节位内容寄存器 名写读D7D6D5D4D3D2D1D0 秒80H81HCH秒的十位秒的个位 分82H83H0分的十位分的个位 时84H85H12 240A PHR小时个位 日86H87H00日的十位日的个位 月88H89H0000 1月的个位 年8CH8DH年的十位年的个位 DS1302 中的数据的存放地址见表 14 利用读指令将数据读取到单片机 也 可利用写命令校准写入当前时间 4 6 显示程序 LCD1602 的显示由控制口控制 数据传送至 LCD1602 的数据口 D0 D7 LCD1602 一共有 11 条操作指令 下表中介绍了其中的 9 个指令 表 15 LCD1602 的操作命令 指令RSR WD7D6D5D4D3D2D1D0 清屏0000000001 输入模式设置00000001 I D S 显示与不显示设置0000001DCB 功能设置00001DLNF CGRAM 地址设置0001CGRAM 地址 清屏命令 光标回到屏幕左上角 地址计数器设置为 0 输入模式设置 设置每写入一个数据字节后 光标的移动方向及字符是否 移动 设置为 0 x06s 时 I D 1 S 0 表示光标右移一格且地址计数器加一 显示与不显示设置 显示开关 当设置为 0 x0c 时 D 1 C 0 B 0 表示开 显示 无光标 光标不闪烁 读忙标志和计数器地址设置 BF 是忙标志位 BF 1 表示忙 此时 LCD 不能 接收命令或数据 显示程序设计使用了 LCD 写指令 void lcd write com uchar com LCDRS 0 RS 为 0 时 写指令 RS 为 1 时 读写数据 P0 com 将命令字写入 P0 口 delay 5 延时 5ms 给 LCD 写入时间 LCDEN 1 将 EN 端设为高电平 保证可以得到一个下降沿 delay 5 延时 5ms LCDEN 0 置 0 产生下降沿 液晶模块执行命令 LCD 写数据程序同写指令程序相似 只是要将 RS 端设为 1 LCD1602 使用前要进行初始化 初始化内容为 清屏 功能设置 显示与 不显示设置 输入模式设置 LCD1602 的读写是通过 RS R W 和 E 三个引脚控 制 void lcd init LCDEN 0 lcd write com 0 x38 LCD 显示模式为 2 行 8 位数据 5 7 点阵 lcd write com 0 x0c LCD 显示开及光标关 lcd write com 0 x06 当写一个字符后地址指针加 1 且光标加 1 DDRAM 地址设置001DDRAM 地址 读忙标志和计数器地址设置01BF计数器地址 续表 15 指令RSR WD7D6D5D4D3D2D1D0 写 DDRAM 或 CGROM10要写的数据 读 DDRAM 或 CGROM11读出的数据 lcd write com 0 x01 显示清屏 显示模块选用的是 LCD1602 LCD 显示内容为 显示时间和日期 延时 5 秒 后显示总用电量 延时 5 秒显示峰 谷用电量 依次循环显示 程序流程如图 21 所示 开始 LCD初始化 第一行显示日期 第二行显示时间 显示总用电量 显示峰时电量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论