




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌工程学院本科毕业设计 论文 基于单片机的智能 IC 卡电表硬件系统 毕业设计 目 录 摘 要 I ABSTRACT II 第一章 引 言 1 1 1 智能电表应用的意义 1 1 2 智能电表的发展 1 第二章 总体方案设计 3 2 1 方案比较 3 2 2 方案选择 6 第三章 器件介绍和单元模块设计 7 3 1 器件介绍 7 3 1 1 AT89C51 单片机 7 3 1 2 ADE7758 7 3 1 3 DS12887 9 3 1 4 LCD1602 10 3 1 5 SLE4442 12 3 2 单元模块设计 12 3 2 1 电源模块电路 12 3 2 2 信号采集电路 14 3 2 3 计量模块 15 3 2 4 时钟及 LCD 显示模块 16 南昌工程学院本科毕业设计 论文 3 2 5 接触式 IC 卡模块 18 第四章 软件设计 20 4 1 主要软件设计流程框图及说明 20 4 2 主要芯片读写程序设计及设计工具 21 第五章 仿真调试 26 结语 28 参考文献 29 致谢 31 附录 电路图 32 第一章 引言 第一章 引 言 电表是我国电工仪表行业中产量最大的产品 近几年 国家连续出台的多项与电表 行业发展相关的政策以及房地产产业的迅速发展 为电表需求的上升及保持行业发展的 相对稳定起到了一定的保障作用 随着高新技术尤其是电子信息技术的快速发展 电子式 多功能 高精度 多费率 自动抄表等产品的优势突显 且已经逐步成为电能表发展的主流 在未来几年里 这种 趋势将更加明显 城乡电网改造 使电工仪器仪表行业步入了快速发展的轨道 同时也 为行业企业提供了一个科技创新的平台 电工仪器仪表生产企业抓住机遇 通过对国外 先进技术的兼收并蓄 并高标准 高起点自主开发了一系列高技术产品 因此研究本课 题具有重要的实用意义 1 11 1 智能电表应用的意义智能电表应用的意义 目前 我国已经开始大面积推广并使用智能电表 以实现对电价分时 阶梯的统计 随着我国经济的发展 用电量激增 对于电能的管理显得尤为的重要 在现代生产生活 中 电能已经发展成为一种重要的能源资源 我国电力事业在改革开放的 30 年中 发展 极为迅猛 所以相应的电能计量仪表制造业的进步也必须与之相适应 这对于电力事业 进行统筹规划和发展 促进我国电力事业稳定 健康的发展有着极其重要的意义 新型 智能电表不仅具有传统电表的功能 还能对用户的用电情况进行管理和控制 并且相比 于传统电表的机械式结构 没有机械摩擦 大大的提高了准确度和灵敏度 且易于实现 自动化测量 并且可以实现远程通讯和控制 具有较高的性能价格比 适合我国国情 有广泛的引用价值 智能电表利用微机技术 通讯技术等等 减少了能量的消耗 把采 集 处理集中于一体 节省成本和人力资源 提高了工作效率 适应了现代用户的需求 1 21 2 智能电表的发展智能电表的发展 智能电表是在电子式电表的基础上发展而来 欧美发达国家于 20 世纪 70 年代研发 并开始使用 经过 30 多年的不断发展 欧美国家不断对智能电表技术进行革新 功能日 趋完善 智能化电表 大体上可分为两种类型 带有微处理器的机电式和全电子式 机 电式借用原感应式电表的机芯 通过光电传感器读取转盘转数来测量用户的用电量 如 磁卡式电表 电卡式电表 IC 卡电表等 而全电子式电表则采用电压电流隔离方式 进 南昌工程学院本科毕业设计 论文 行 A D 转换 将采样值相乘并累计计算用户的用电量 机电式智能电表成本较低 主要 用于单相电表 适合于居民用户使用 全电子式电表主要用于三相电计费 针对企业应 用 为了实现远程自动抄表 应选择配有通信接口的智能电表 通常有 RS 485 RS 232 CAN 总线收发器或红外等几种接口形式 目前 我国的智能电表也可大致分为机电一体式和全电子式两种 机电一体式即在 原有机械结构的基础之上附加一定的电子元件 从而达到所需的功能要求 安装简洁 多用在老实机械表的改装 成本低 全电子式则是采用集成电路为核心 取消了老式电 表的机械结构 减少了机械摩擦 使得计价更加准确 可靠性高 耗电少 体积小 在 收费系统方面 目前国内上使用最为广泛的为 IC 卡电表收费 成本低 可靠性好 且使 用寿命长 一张 IC 卡基本可使用 10 年以上 且可实现 预收费 自动断电 加密等多 种功能 但是 IC 卡收费系统也存在很大的缺陷 用户终端仍然与整个网络脱节从经济角 度来看电力部门先收费后送电不符合经济政策 可以说在一定程序上侵犯了用户的利益 随着我国提出发展智能坚强电网的提出 为我国电网设施的发展提供了机遇 未来 智 能仪器仪表将向着数字化 智能化 网络化 微型化的趋势发展 并进一步与微处理器 PC 技术融合 使仪器仪表技术的数字化 智能化水平不断提高 第二章 总体方案设计 第二章 总体方案设计 本电表采用分时计费原则 将电压 电流等参数进行采集 并输入微处理器 进行 运算 并最终实现对于电能的准确计量和控制 因此我们可以采用单片机设计一个智能 IC 卡电表 采用低功耗设计 正常工作时关闭显示功能 当有 IC 卡插入时轮流显示当前 的用户信息 系统主要功能包括 1 预付费功能 通过 IC 卡实现先付费后用电 2 电量报警功能 当电能表剩余电量低于告警电量时 通过报警指示灯和蜂鸣器告 警 3 电能计量功能 配合感应电表及计量芯片实现对电能的计量 4 保密功能 通过 IC 卡加密 实现 IC 卡与电能表的唯一对应 可以严格有效地防 止伪造和复制 IC 卡的行为 在一定程度上便于电力部门的管理与监督 5 自动复位功能 当电能表受到干扰程序跑飞时 通过看门狗电路实现系统自动复 位 6 数据自动存储与显示功能 用户数据自动保存在 EEPROM 中 通过 LCD 显示当前 用户数据 2 12 1 方案比较方案比较 智能电表的设计 是基于对用户电压电流信号进行采集 并通过微处理器进行核心 运算 当电压电流信号通过采集以后 通过高精度的 A D 采样保持 最终输入微处理器 另一方面 通过 IC 卡座实现对 IC 卡内部金额的读取 输入单片机 并且要求通过功率 和电费的计算 进行显示与报警 对于电力参数的测试 例如电压 电流 有功功率 无功功率 视在功率等 现在 都有成熟的测量计算方法 对于电压有效值的测量 可以利用积分电路来实现 也可以 利用时间采样信号 将信号值平方 去均值以后 得到平方根 通过 A D 进行采样 有 功功率定义为 UICOSP 2 1 南昌工程学院本科毕业设计 论文 其中和为电压和电流的有效值 为功率因数 而对于非正弦波形的计算 UI COS 只有通过积分运算来完成 方案一 信号采集 信号滤波 A D 转换微处理器 LCD 显示报警 键盘控制 IC 卡 图 2 1 方案一 在本设计方案中 核心器件为微处理器 这里我们选用是 AT89C51 单片机 当信号 采样后通过 A D 转换 送入微处理器 进行数据的分析和计算 智能电表的实现必须对 用户的功率进行准确的计算 在信号采集模块中 通过电压互感器和电流互感器 对用 户的电压和电流信号进行采集 微处理器进行功率和电费的计算 可通过 LCD 显示 并 可以通过键盘对分时电价进行调整 实现显示的转换和调整 并运用单片机内部时钟设 计计时系统 以实现分时的控制 但是此设计有诸多缺陷 首先 在信号采集方面 由 于智能电表对于功率的计算 如果单纯的使用单片机 会造成功率计算不准确 如果要 提高计算的精度 对于信号的 A D 转换就必须采用高精度期间 成本费用增加 其次即 便使用了高精度的 A D 在功率计算 补偿方面的程序也想当麻烦 再则 由于使用分时 计费系统 只用单片机内部时钟信号进行粗略的计时 产生的时间误差比较大 长时间 的使用下会导致计时不准确 而使得电费的计算出现比较大的误差 第二章 总体方案设计 软件系统方面 其核心则是编写功率计算程序和 A D 采样程序 并通过键盘扫描的 实现显示的切换 方案二 信号采集 ADE7758 处 理 器 键盘输入 信号滤波 LCD 显示报警 警 时钟芯片 IC 卡 图 2 2 方案二 本方案的设计思路与方案一大致相同 选用 AT89C51 单片机作为微处理器 通过电 压传感器 电流传感器实现对用户的电压和电流信息的采集 并在单片机中进行电价的 计算 与方案一的不同之处在于 方案二中功率计算部分和 A D 转换采集部分被一块电 能计量芯片 ADE7758 进行代替 该芯片是以一款高准确度的三相电能采集芯片 适用于 计量各种三相 单项配置条件下的有功 无功 视在电能 可省去高精度 A D 的费用的 同时 也可以减少单片机内部处理功率的步骤 转而由 ADE7758 完成 同时 由于该智 能电表采用分时计费系统 方案二中特别采用一块时钟芯片以提高对于时间的计时准确 程度 以确保该电表可以准确计费 同时 由于时钟芯片本身集成有微型电池 可以在 断电的情况下继续运行 保证了在智能电表断电的同时 计时系统不至于停止工作 在方案二中 由 ADE7758 进行功率的计算并进行校准 在该芯片中 通过每相有功 增益寄存器写入数据 可对输出产生的平均功率经行改变 该芯片中在每个相位集成了 一个有功偏移寄存器 该寄存器为 12 位寄存器 用以对有功功率经行校准 由于实际电 南昌工程学院本科毕业设计 论文 路的工作环境的复杂和多变 以及芯片本身制造工艺和各通道之间经行的干扰 都会造 成误差的产生 有功功率寄存器的一个 LSB 相当于有功功率乘法器输出的 LSB 的 1 16 在满刻度输出时 如果乘法器的输出为 XCCCCS 838861d LPF2 输出端的 1 个 LSB 相当 于在电流通道满刻度 60dB 计量误差的 0 0075 在满刻度时 60dB 输入信号级别 为满刻度信号输入的 1 1000 LPF2 的平均数值为 838 861 838 861 1 000 LSB 1 838 861 16 100 测量值的 0 0075 有功功率偏移寄存器修正分辨率为 0 0075 60 dB 另外 ADE7758 的各相有拥有一个空载阀值 如果有功公功率的测量值低于满刻度的 0 005 则该值不会被累加 有效的避免了电表的浅动 ADE7758 通过 41 个电能寄存器 连续累加有功功率以实现对信号的积分作用 这种离散的累加作用就相当于连续时间的 积分作用 平均有功功率的计算时 是有符号运算的 负电能将会在有功功率寄存器中 被扣除 当有功功率为正 且达到最大值时 有功功率的数值将反转到达满刻度的负值 0X800 并继续增加 当有功功率为负值 且持续减小到达最小时 会自动转为正的对大 刻度 0X7FFF 并继续降低 在软件系统上 该方案与方案一的区别在于 重点在对于 ADE7738 和 DS12887 两块 芯片的读写程序的书写 虽然在硬件的搭建上降低了难度 但是在程序书写上难度有所 增加 2 22 2 方案选择方案选择 通过对以上两种方案的具体描述和对比 对他们各自的优缺点有了一定的了解 要 完成对于电费的准确计算 并综合本次毕业设计成本及可行性进行考虑 最终选择了方 案二为本次毕业设计的最终设计方案 第三章 器件介绍和单元模块设计 第三章 器件介绍和单元模块设计 只有各个系统单元模块的有机结合 才可以构成一个完整的系统 下面将介绍本次 设计中使用的一些特殊器件和具体的各功能模块电路组成 3 13 1 器件介绍器件介绍 3 1 1 AT89C51 单片机 本设计采用低功耗 高性能的 AT89C51 单片机 AT89 系列单片机 简称 89 系列单 片机 是 ATMEL 公司的 8 位 Flash 单片机 这个系列单片机最吸引人的特点就是在片内 含有 Flash 存储器 AT89C51 的单片机是一种低功耗 高性能的含有 4K 字节快擦写可 编程 擦除只读存储器 EEPORM 的 8 位 CMOS 单片机 时钟频率高达 24MHZ 与 8086 的指令系统和引脚完全兼容 芯片上的 EEPROM 允许在线 5V 电才擦除 点 写入或采用通用的非易失存储器对程序存储器重复编程 此外 AT89C51 还支持由软件 选择的二种掉电工作方式 非常适用于电池供电或其他要求低功耗的场合 由于芯片内 的 4 程序存储器可在线或用编程器重复编程 因此它有着十分广泛的用途 特别是在便 携式和需要特殊信息保存的仪器和系统中显得更为有用 图 3 1 AT89C51 和 AT89C2051 管脚图 3 1 2 ADE7758 ADE7758 是一款高精度的电能计量芯片 具有高准确度 适用于三相 三线 三相 四 线和其他各种三相系统 该芯片通过 SPI 数据串行接口和单片机进行连接 模拟电源端 南昌工程学院本科毕业设计 论文 AVDD 数字电源 DVDD 5V 5 模拟地端 AGND 数字地 DGND 0 V 使用片内基准源 CLKIN 10 MHz XTAL 温度范围为 40 C 至 85 C 3 ADE7758 的管脚 图如下图所示 图 3 2 ADE7758 管脚图 ADE7758 通过 SPI 串口读写时序图 图 3 3 ADE7758 写时序 第三章 器件介绍和单元模块设计 图 3 4 ADE7758 读时序 3 1 3 DS12887 DS12887 为一款时钟芯片 该器件可以提供 RTC 日历 闹钟 三个可屏蔽中断和一 个可编程方波以及一个 114 字节的 RAM 此 RAM 有电池备份 不会导致断电后时钟停 止的现象 该器件把石英晶体和电池集成在了一起 少于 31 天的月份月末日期可自动调 整 其中包括闰年补偿 该芯片还有一个精密的温度补偿电路用来监视 VCC 的状态 如 果检测到主电源故障可自动转换到备用供电 该芯片接口支持 Intel 和 Motorola 两种模式 在本次设计中 采用的是 Intel 模式 具体读写时序图如下 图 3 5 DS12887 写时序 南昌工程学院本科毕业设计 论文 图 3 6 DS12887 读时序 3 1 4 LCD1602 LCD1602 是一款工业字符型液晶显示屏 能够同时显示 32 个字符 内部带有 80 8 位的内部 RAM 缓冲区 可显示阿拉伯数字 引文字母大小写 常用符号和日文的片假名 等 每一个字符都有一个固定的代码 在本次设计中 可以通过 LCD 显示万年历 分时 电价 剩余金额等数据信息 可以通过键盘来切换显示 部分主要指令说明如下 表 3 1 LCD1602 指令码 指令码功能 00111000设置 16 2 显示 5 7 点阵 8 位数据接口 00001DCBD 1 开显示 D 0 关显示 C 1 显示光标 C 0 不显示光标 B 1 光标闪烁 B 0 光标不闪烁 第三章 器件介绍和单元模块设计 000000NSN 1 当读或写一个字符后地址加一 光标加一 N 0 当读或写一个字符后地址减一 光标减一 S 1 当写一个字符 整屏显示左移 N 1 或右移 N 0 以得到屏幕移动光标不移动的效果 S 0 当写一个字符 整屏显示不移动 80H 地址码设置地址数据指针 01H显示清屏 所有指针清零 所有显示清零 02H显示回车 数据指针清零 LCD1602 读写数据时序如下图所示 图 3 7 1602 读数据时序 南昌工程学院本科毕业设计 论文 图 3 8 1602 写数据时序 3 1 5 SLE4442 SLE4442 是德国西门子公司的接触式加密型 IC 卡 接口电路简单 编程方便 保密 性好 其内部用于一个 256 8 位的 EEPROM 主存储器 另其还含有一个带有 PROM 功能 的保护存储器 可进行加密处理 工作温度范围在 0 70 至少可擦写 10 万次以上 数据保存期最少为 10 年 工作电压为 5V 对 IC 卡操作的命令分为控制 地址 数据三 个部分 传送从控制字节 LSB 开始 其具体命令如下面所示 表 3 2 IC 卡命令格式及功能 字节 1字节 2字节 3 控制地址数据操作 00110000输入地址无效读主存储器 00111000输入地址输入数据升级主存储器 00110100无效无效读保护存储器 00111100输入地址输入数据写保护存储器 00110001无效无效读加密存储器 00111001输入地址输入数据升级加密存储器 00110011输入地址输入数据比较数据校验 3 23 2 单元模块设计单元模块设计 3 2 1 电源模块电路 电源模块电路从电网 220V 电压作为输入 通过该电路后 输出端输出大小为 5V 的 电压 作为单片机及其他芯片的 VCC 电源 具体的电路图如下图所示 第三章 器件介绍和单元模块设计 T3 TRANS 1 1 2 3 4 D1 B RIDGE1 C 10 100uf C 11 0 01uf Vin 1 GND 2 Vout 3 U2 78L05 C 12 0 01uf R 6 1k VCC 1 2 J3 C ON2 图 3 9 电源接线图 如图 3 9 所示为电压模块的电路图 该模块以电网 220 交流电作为输入 通过整流桥 整流后 再经过滤波 最后通过一块 78L05 稳压芯片进行稳压 得到一个稳定的 5V 电源 78L05 的输出电流可达到 100mA 无需外接元件 内部本身带有热过载保护 自带内部 短路电流限制 该模块的仿真电路如下图所示 TR1 TRAN 2P2S C3 2200uF C4 0 01uF VI 1 VO 3 GND 2 U2 7805 C5 0 01uF RV1 1k Volts 5 00 D1 1N4007 D2 1N4007 D3 1N4007 D4 1N4007 图 3 10 电源仿真图 图 3 10 为该电源电路的仿真效果图 可以看到 该模块可以很好的工作得到一个稳 定的 5V 的电源 南昌工程学院本科毕业设计 论文 3 2 2 信号采集电路 本次设计为智能电表 所以要对用户的电压和电流都进行采样 再通过 ADE7758 芯 片来得到一个较为准确的功率值并输入单片机中 因此电流和电压的采集电路分别如下 图所示 图 3 11 采集电路 图 3 11 为电流和电压的采集电路 在电流采集电路中 通过将电流互感器 TA32BM 串联到用户电路中 以采集用户的电流信息 TA32BM 额定输入输出为 5A 2 5mA 通过电 流互感器将大电流转换到 ADE7758 可以接受的小电流范围内 然后通过滤波降低信号的 干扰 最终输入芯片 在电压采集电路中 通过将电压互感器 TV31B 02 并联到用户的负 载上 采集用户的电压信息 TV31B 02 是一款电流型电压互感器 额定电流是 2mA 2mA 所以要在电压互感器的缘边串联一个 51K 的电阻来降低互感器原边的电流值到 可承受的范围 最后通过 RC 电路滤波后 得到一个近似 0 5V 的电压以输入到 ADE7758 第三章 器件介绍和单元模块设计 芯片 和前面的电流值一起 计算出用户的功率 电压互感器相当于一个内阻很小的电压源 正常运行时它的负载阻抗会很大 相当 于开路状态 二次侧只有很小的电流 当二次侧短路时 负载阻抗为零 将产生很大的 短路电流 会将电压互感器烧坏 因此 电压互感器二次侧严禁短路 电流互感器在正常运行时 二次电流产生的磁通势对一次电流产生的磁通势起去磁 作用 励磁电流很小 铁芯中的总磁通就很小 二次绕组的感应电动势不会超过几十伏 如果二次侧开路 二次电流的去磁作用消失 其一次电流完全变为励磁电流 会引起铁 芯内磁通剧增 铁芯处于高度饱和状态 加之二次绕组的匝数很多 就会在二次绕组两 端产生很高甚至可达数千伏的电压 不但可能损坏二次绕组的绝缘 再者 由于磁感应 强度剧增 使铁芯损耗增大 严重发热 甚至可能烧坏绝缘 3 2 3 计量模块 计量模块的核心是通过一块 ADE7758 芯片来完成 通过信号采集电路 将变换后的 电压电流信号输入到该芯片 ADE7758 是一款高准确度的三相电能计量芯片 带有两路 脉冲输出功能和一个串行接口 ADE7758 集成了二阶模数转换器 数字积分器 基准电 路 温度传感器 以及所有进行有功 无功和视在电能计量以及有效值计量所需的信号 处理元件 南昌工程学院本科毕业设计 论文 A PC F 1 D GN D 2 D VD D 3 A VD D 4 IA P 5 IA N 6 IB P 7 IB N 8 IC P 9 IC N 10 A GN D 11 R EF 12 D OU T 13 S C L K 14 D IN 15 C S 16 C LK O UT 17 C LK IN 18 IR Q 19 V AR C F 20 V AP 21 V B P 22 V C P 23 V N 24 U 5 A DE 77 58 IA P IA N R 1 1KC 3 33 nf V AP V AN C I C O Y 2 10 H z C 4 22 pf C 5 22 pf C O C I C 6 C AP S X S D 0 S C K S D I V C C 图 3 12 ADE7758 接线图 图 3 12 为芯片 ADE7758 的具体接线图 ADE7758 作为一款适用范围极广且功能强 大的电能计量芯片在本次设计中担任了重要的角色 通过 DOUT 管脚直接与单片机连接 通过 SPI 总线方式 与单片机实现数据之间相互通信 从而实现功率的计算 其中 DOUT 管脚与单片机的 P1 4 连接 SCLK 与单片机的 P1 3 连接 DIN 与单片机的 P1 7 连接 CS 片选信号与单片机的 P1 2 连接 3 2 4 时钟及 LCD 显示模块 本次设计中 该电表要实现分时计费 既必须引入时钟系统 该时钟系统必须准确 且在电表短时间断电之内 不会停止工作 因此 该模块采用了一块时钟芯片 DS12887 该芯片为一款使用很广泛的时钟芯片 具体电路图如下图所示 第三章 器件介绍和单元模块设计 M O T 1 N C 2 N C 3 A D0 4 A D1 5 A D2 6 A D3 7 A D4 8 A D5 9 A D6 10 A D7 11 G ND 12 V CC 13 SQ W 14 N C 15 N C 16 N C 17 IR Q 18 R ES ET 19 D S 20 N C 21 R W 22 A S 23 C S 24 D S1 28 87 U 3 D S1 28 87 D SC S D SD S D SA S D SR W D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 V CC 图 3 13 DS12887 接线图 图 3 13 为时钟芯片 DS12887 的连线图 其中 DS 与单片机的 P2 1 口连接 R W 与单 片机的 P2 5 口连接 AS 与单片机的 P2 4 口连接 CS 与单片机的 2 2 口连接 通过该芯 片可以提供比较精确的万年历 同时智能电表的显示模块选用 LCD 显示 下图为 LCD1602 显示电路 VDD 1 VSS 2 VEE 3 RS 4 RW 5 LCDEN 6 D0 7 D1 8 D2 9 D3 10 D4 11 D5 12 D6 13 D7 14 L CD 16 02 C S 25 U 4 L CD 16 02 D 0D 1D 2D 3D 4D 5D 6D 7E NR S V CC R 18 10 K 图 3 14 LCD1602 接线图 通过该 LCD 液晶显示器 显示我们需要的一些信息 上述两个模块通过与 南昌工程学院本科毕业设计 论文 AT89C51 单片机进行连接 可以实现万年历的功能 且可以保证 在智能电表短时间断 电的情况下 时钟不会停止运行 继而实智能电表的分时计费系统可以准确的运行 我 们用 Protues 仿真 电路图如下图所示 图 3 15 万年历显示仿真图 图 3 15 为万年历显示模块 上图中可以通过按键对 LCD 显示进行调整 可以显示万 年历 分时电价 余额等信息 3 2 5 接触式 IC 卡模块 这里 IC 卡模块我们选用的是西门子的 SLE4442 加密型 IC 卡 SLE4442 是一种具有 加密逻辑电路的智能 IC 卡 内含 256 8 位 EEPROM 主存储器和一个 32 位带 PROM 功能 的保护存储器 其触点配置和串行接口符合 ISO 7816 标准 同步传送 具备只有输入正确的 3 字节可编程密码 加密存储区 后才能修改数据的特性 下图为具体模块 第三章 器件介绍和单元模块设计 V CC 1 R ST 2 C LK 3 N C 4 G ND 5 N C 6 I O 7 N C 8 U 3 SL E 444 2 IC CA RD V CC SL E R ST SL E C LK V CC D 0 图 3 16 SLE4442 卡座 南昌工程学院本科毕业设计 论文 第四章 软件设计 本设计中 以 AT89C51 作为微处理器 采用 C 语言进行编程 配合硬件电路 共同 构成了本次设计的核心部分 4 14 1 主要软件设计流程框图及说明主要软件设计流程框图及说明 Y 报 警 程序初始化 检测 IC 有卡 余额为零 开 始 切断用户电源 信号采集及计量 LCD 显示 N N Y Y 第四章 软件设计 图 4 1 主程序流程图 本次设计的主要流程为当 IC 卡插入卡座 单片机检测到 IC 卡并读取其金额开始计 时 当按照开始设定好红灯亮起 同时 LCD 显示屏强制转换到余额界面 字体开始闪 烁 蜂鸣器长鸣 此时停止计费 并且开始检测键盘 当按下键盘 key4 后 警告解除 LCD 显示界面重新返回时间界面 令一方面 在计费系统正运行时 可以通过键盘检测 切换显示界面 显示界面共有 4 种 分别为当前时间 3 种电价 余额 共计 5 种界面 当按下键盘 key1 后 在当前时间界面和 3 种电价界面 可以调整时间和电价 增加或者 减少 分别由键盘 key2 key3 来控制 由此来完成时间 电价的调整 比照 DS12887 中去 读的时间参数 选取电价开始计算余额 当余额定于 30 元时 蜂鸣器每一分钟鸣一次 当余额为 0 时 蜂鸣器长鸣 4 24 2 主要芯片读写程序设计及设计工具主要芯片读写程序设计及设计工具 本次设计采用 C 语言 C 语言具有简洁明了的特点 在本次设计中 按照各芯片的 读写操作时序 以 SPI 总线操作方式 分别对 DS12887 时钟芯片 ADE7758 电能计量芯 片进行读写操作 即可基本完成本次设计的主要功能 同时兼顾完成切换显示时间 电 价以及查询余额 并可以调节电价 在读取 DS12887 时钟芯片时 按照其读写时序 当要写入数据时 先要写入地址 将 CS 置低 SA DS 分别置高 RW 置高 然后给 P0 口赋值 即要写入的地址 然后将 AS RW 置低 再一次给 P0 口赋值 即要写入的数据 最后将 AS RW CS 拉高 同理 在读取数据时 也要先写入一个地址 将 AS DS RW 置高 将 CS 置低 给 P0 口赋值地 址 然后将 AS DS 拉低 P0 读取数据 最后 DS AS CS 全部拉高 具体 C 语言函数如下 void write ds uchar add uchar date dscs 0 dsas 1 dsds 1 dsrw 1 P0 add dsas 0 dsrw 0 南昌工程学院本科毕业设计 论文 P0 date dsrw 1 dsas 1 dscs 1 uchar read ds uchar add uchar ds date dsas 1 dsds 1 dsrw 1 dscs 0 P0 add dsas 0 dsds 0 P0 0 xff ds date P0 dsds 1 dsas 1 dscs 1 return ds date 同时 在读取 ADE7758 芯片中有功功率时 同样 按照其读时序图 先将 CS 拉低 选中信号 再用 SCK 模拟一个时钟信号输入 先向 ADE7758 写入一个地址 再从芯片 读出数据 ADE7758 和 DS12887 读写程序最大的不同在于 DS12887 可以将 8 位数据一 次性读出 而 ADE7758 只能一位一位的读取 因此 在书写读写函数的时 需要指明 读取数据的位数 在 CS 保持低电平的时候 所有的数据传输必须全部完成 另外 除了 整体器件复位以外 没有其他方法可以让 ADE7758 返回通信状态 所以必须传输各寄存 器的 LSB 复位的方法是运用软件进行复位 如前所述 在第一个字节正在向目标寄存器 第四章 软件设计 传送是 可以同时开始另一个字符的传送 但是第二个字节的传输过程不应该在第一个 字节传送完成前至少 900ns 内不应该结束 当 ADE7758 寄存器经行读取操作访问时 读 取命令个写入命令之间至少需要有 1 1us 的时间间隔 若果间隔过小 将会导致写入操作 的最后一个字节丢失 具体位数参见芯片说明书 具体读取函数如下 unsigned long read7753 unsigned char type unsigned char databit unsigned char loop 0 unsigned long rtdata 0 type type type type 0 x00 for loop 0 loop 8 loop SCK 1 nop if type else SDO 0 nop SCK 0 nop type type 1 for loop 0 loop databit loop SCK 1 nop rtdata rtdata 1 上升沿读出数据 if SDI rtdata 1 南昌工程学院本科毕业设计 论文 nop SCK 0 nop return rtdata 本次设计的另一个重点就是现实程序 1602 的显示程序同样按照其读写时序图完成 不同的是 1602 的显示 需要在主程序的开始写一个初始化函数用以设定 1602 的显示方 式 光标等等 在本次设计中 只涉及到 1602 的写程序 写数据时 同样需要先写入地 址 写地址时 先将 RS EN 置低 延迟后再将 EN 拉高 赋予地址 最后将 EN 拉低 写 数据与读不同之处在于要将 RS 拉高其余同写地址时一样 具体初始化函数 写函数如下 void init lcden 0 dula 0 wela 0 set time write com 0 x38 write com 0 x0c write com 0 x06 write com 0 x01 void write com uchar com rs 0 lcden 0 delay 5 lcden 1 P0 com 第四章 软件设计 lcden 0 void write date uchar date rs 1 lcden 0 delay 5 lcden 1 P0 date lcden 0 本次设计采用 Keil uVision2 作为编程工具 用 Protues 进行实物制作前的仿真 Keil 作为现在主流的单片机编程工作具有操作简单 快捷的优点 同时可以与 Protues 联动 方 便调节和仿真 另用 STC ISP V31 将程序下载至单片机上运行 在本次软件设计中 最困难的地方在于对 ADE7758 的读写操作 ADE7758 是一块应 用非常广泛的电能计量芯片 第一次使用该芯片时 对于串行的读写操作了解不够深入 导致在书写程序的过程中 时序先后发生错误 不知道如何移位读取等等 后来参考一 些例子以后最终调试成功 南昌工程学院本科毕业设计 论文 第五章 仿真调试 第五章 仿真调试 该程序是用 C 语言完成 C 语言具有简洁紧凑 灵活方便的特点 在调试程序的时 候 软件部分大致可以分为两个部分 一部分是万年历等信息的显示部分 一部分是信 号采集部分 第一部分 万年历等信息的显示部分 可以用 Protues 进行仿真 Protues 是 一款非常实用的仿真原件 通过载入程序到单片机中 利用 DS12887 时钟芯片构成的仿 真效果图 如下图所示 图 5 1 仿真演示效果图 如上图所示 当路灯亮的时候 表示计价开始 图中 4 个键盘 通过键盘扫描程序 可以切换显示万年历 电价 余额等信息 当电价为零时 蜂鸣器长鸣 同时 绿灯熄 灭 红灯亮起 LCD 显示屏显示余额为零 效果如下图所示 南昌工程学院本科毕业设计 论文 图 5 2 仿真演示效果图 由于 ADE7758 在 Protues 的库里面没有 所以无法进行仿真 只有用实物进行演示 本次软件设计中比较艰难的部分在于 ADE7758 的读写程序以及 DS12887 在没有实物 的情况下经行仿真 前者是因为对于 SPI 接口的读取掌握还是不到位 后者是因为软件版 本问题 Protues7 6 版本以前的库中没有 DS12887 时钟芯片 出于经费和稳妥起见的考虑 长时间滞留在此处 后来在朋友的帮助下得以解决 南昌工程学院本科毕业设计论文 结语 如前期仿真中所示 电源部分使用 220V 交流电 通过变压器变压为 12V 之后 利用 一块 L7805 稳压芯片 很好的得到了一个较为稳定 且接近 5V 的电压 误差在 0 02V 左 右 可以利用其很好为单片机与其它核心芯片进行供电 且在自己搭建的电路中 采取 了滤波等措施 电源质量较良好 采集电路部分 也是自己利用万用板搭建 运用电压互感器 电流互感器为核心 进行变压采样 变压后的电压理想值为 0 5V 由于实际环境等影响 其电压真实值为 0 55V 但不会对功率计算造成太大的影响 电压电流信号进 ADE7758 之后 即可由单片 机进行读取 获得有功功率 用于计算电价 在制作过程中 用 15W 的灯泡作为用户的 负载真实的采集电路 核心处理器件部分以 AT89C51 单片机为核心运行 分别可以显示万年历 电价 余 额等信息 整体设计的实物图应附带包含效果演示 万年历 电价 以及余额等部分 在硬件搭建过程遇见了很多问题 比如 ADE7758 是一块贴片封装的芯片 由于条件 限制万用板上不能进行焊接 后来经过寻找 在网上发现了一种小型 PC 贴片转双列直插 式的 PCB 电路板 但是由于技术水平有限 PCB 板还是没做成功 在调试 LCD1602 显示的 时候 由于操作不当 导致 1602 损坏 屏幕无法显示 造成了元器件的浪费 同时在采 集回路中 由于考虑不全 在采购电阻时 只考虑到其电阻值的大小 没有考虑到其功 率的承受能力 导致 51K 电阻在稍微长时间的运行状态下发热比较严重 也导致功率的 计算结果也产生了一定的误差 虽然最终没能做出实物 但我收获很多 本次毕业论文的题目为基于单片机的智能 IC 卡电表设计 由于我是负责硬件部分 所有的数据计算 电路的设计 修改 完成都是自己独立完成 进一步了解了产品制作 的流程 为了完成设计 我也同时查阅了大量的书籍和资料 自己独立思考和学习能力 得到了很好的锻炼和提升 在设计同时 大量运用了 Keil protel99 Protues 等软件 大大 提升了熟练度 在 Protel 绘制电路原理图 在 protues 中画了电路仿真图 通过 keil 编程 并将程序导入单片机中 最后在 protues 中仿真 通过这个过程我了解到仿真与实际电路 效果之间存在较大的差距 通过本次设计对于智能电表在设计过程中存在的问题有了一 些初步的了解 并着手解决这些问题 并且本次设计是自己和另一个同学共同设计并仿 真出来的 虽然没做出实物 但是大大提升了自己的综合实践能力和团队合作能力 南昌工程学院本科毕业设计 论文 参考文献 1 曹天汉等 单片机原理与接口技术 M 第 2 版 北京 电子工业出版社 2006 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论