毕业设计基于STC89C52单相电度表的测量的设计_第1页
毕业设计基于STC89C52单相电度表的测量的设计_第2页
毕业设计基于STC89C52单相电度表的测量的设计_第3页
毕业设计基于STC89C52单相电度表的测量的设计_第4页
毕业设计基于STC89C52单相电度表的测量的设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 基于基于 stc89c52stc89c52 单相电度表的测量的设计单相电度表的测量的设计 摘摘 要要 随着城农网改造的逐步深入,各种各样的计量工具不断出现在市场上。各种不同 的计量工具所使用的计量方法也不一样。该系统由前端电路调理模块,电能表芯片 cs5460 模块,单片机 stc89c52 模块,显示模块,存储模块等组成。cs5460 实现功率 测量和用 stc89c52 单片机实现电能计量的方法是当下比较成熟的计算方法。cs5460 是 一种带有串行接口的单向双向功率电能集成电路芯片,用它可以方便的组成多功能电 子式电度表和分布式电能计量管理系统。其中使用 cs5460 芯片设计的简单单

2、相电度表 可以用于工业现场的电量数据采集和简单的功率计算,使用 cs5460 芯片设计的数字电 表适用于住宅用电计量的最精确,并具成本效益的电表方案,打开了电表设计的新领 域,是下一代民用电表的理想产品和最好的工业解决方案。目前我国高校学生公寓普 遍采用限电措施来控制学校电能利用,公寓管理社会化后,限制学生用电将改为鼓励学 生安全用电,从而将采用限制安全功率、限制基本电费、超量收费的形式。 关键词:关键词:cs5460cs5460 芯片芯片;stc89c52;stc89c52 单片机;液晶显示模块;单片机;液晶显示模块;c51c51 程序程序 cs5460 single-phase meter

3、 based on the design of the measurement abstract with the gradual deepening of rural power grids city, a variety of measurement tools continue to emerge on the market. a variety of different measurement tools are not the same measurement method used. the system consists of front-end circuit conditio

4、ning module, cs5460 chip energy meter module, microcontroller stc89c52 modules, display modules, memory modules and other components. cs5460 power measurement and the realization of single chip with stc89c52 energy measurement method is to present a more mature method. cs5460 is a single bi-directio

5、nal serial interface with power power integrated circuit chip, it can be easily formed with multi-function electronic power meter and distributed energy metering management system. cs5460 chip design which uses a simple single-phase watt- hour meter can be used to power industrial field data collect

6、ion and simple power calculation, using the cs5460 digital chip design for residential electricity meter measures the most accurate and cost-effective meter program, designed to open new areas of the meter, the meter is ideal for the next generation of civilian products and the best industrial solut

7、ions. at present, china university student apartment commonly used power rationing measures to control energy use of schools, apartment management outsourcing, the restrictions on students use of electricity will be changed to encourage students to safe use of electricity, which will use the safe po

8、wer limit, restrict basic electricity, excess charges form. key words:cs5460 chips; stc89c52 scm; lcd module;c51 program 目 录 一 引言1 1.1 电度表的作用1 1.2 电度表的发展1 1.3 电度表的发展前景1 二系统的总体设计思路2 三系统硬件组成及介绍3 3.1 cs5460 简介3 3.2 cs5460 引脚分配及功能5 3.3 cs5460 的功能.6 3.4 cs5460 寄存器配置.8 3.5 cs5460 的工作过程.10 四硬件电路设计11 4.1 前端

9、电路调理模块13 4.2 电能芯片 cs5460 模块14 4.3 单片机 stc89c52 模块15 4.4 液晶显示模块17 五程序设计19 5.1 单片机 c51 程序设计的优点11 5.2 程序设计思路12 5.3 cs5460 驱动程序13 5.4 cs5460 的设置和启动15 5.5 读写 cs546016 5.6 结果显示程序17 六 总结23 谢辞 参看文献 附录 一引言 1.1 电度表的作用 电能表是我国电工仪表行业中产量最大的产品。近几年,国家连续出台的多项与 电能表行业发展相关的政策以及房地产产业的迅速发展,为电能表需求的上升及保持 行业发展的相对稳定起到了一定的保障作

10、用。目前我国高校学生公寓普遍采用限电措 施来控制学校电能利用,公寓管理社会化后,限制学生用电将改为鼓励学生安全用电,从 而将采用限制安全功率、限制基本电费、超量收费的形式。住宅用电计量的最精确, 并具成本效益的电表方案,打开了电表设计的新领域,是下一代民用电表的理想产品 和最好的工业解决方案。 随着高新技术尤其是电子信息技术的快速发展,电子式、多功能、高精度、多费 率、自动抄表等产品的优势突显,且已经逐步成为电能表发展的主流,在未来几年里, 这种趋势将更加明显。 1.2 电度表的发展 作为测量电能的专用仪表电能表,自诞生至今已有 100 多年的历史。随着电力系 统及其相关产业的发展以及电能管理

11、系统的不断完善,电能表的结构和性能也经历了 不断更新、优化的发展过程:由最初的感应电能表,发展到后来的感应系统脉冲电能 表,直至现在的纯电子式电能表。感应系电能表是利用处于交变磁场的金属圆盘中的 感应电流与有关磁场形成力的原理制成的。感应系统脉冲电能表仍采用感应系电能表 的测量机构作为工作援建,由光电传感器完成电能脉冲转换,然后静电子电路对脉冲 进行处理,从而实现对电能的测量。纯电子式电能表的原理是采用电子电路来实现电 能计量,所以电子式电能表的共同特点是采用乘法器,根据所依托的乘法器为模拟的 还是数字的分为模拟乘法器型电子电能表和数字乘法器型电子电能表。 随着电能管理的现代化,需要访问电能表

12、很多信息,同事决策还要与电能表进行双向 通讯,由于数字乘法器型电能表是以微处理器为核心,所以功能容易扩展,易和配电 自动化系统集成,cs5460 是一种带有串行接口的单相双向功率电能集成电路芯片。 1.3 电度表的发展前景 城乡电网改造,使电工仪器仪表行业步入了快速发展的轨道,同时也为行业企业 提供了一个科技创新的平台,电工仪器仪表生产企业抓住机遇,通过对国外先进技术 的兼收并蓄,并高标准、高起点自主开发了一系列高技术产品。 电力用户是我国电工 仪器仪表最大的用户群体,需求量占整个市场需求量的 90%,对该类产品的销售起着决 定性作用。国家城乡电网改造结束后,电工仪器仪表行业进入了平稳过渡期,

13、出现了 短暂的低潮,但行业的发展并未停滞,以华立集团、宁波三星、林洋电子等为代表的 行业企业在低谷中不断拓宽服务领域,寻求新的发展空间,从而在竞争中提高企业的 核心竞争力. 经过国内外市场的净化和洗礼,产品也发生了质的变化,开始从单纯量的增长向技术 创新过渡,并步入高质量、高技术、高附加值时代,生产模式逐步向集约化大规模转 变,核心竞争力不断增强,产品出口主要以电能表、便携式电表为主,出口辐射到几 十个国家。特别是近几年,一些企业还通过在国外建厂等形式消化国内的市场,出口 创汇不断攀升 二系统的整体设计思路 cs5460 可用于单相 2 线或 3 线功率/电能测量中应用。本次系统主要由前端电路

14、调 理模块,电能表芯片 cs5460 模块,单片机 stc89c52 模块,液晶显示模块。前端调理 模块采用由电阻 r1,r2 构成的电阻分压器测量作用于负载上的电压,当然该电压必须 为芯片所能允许的 150mv 的电压范围内,故对电阻 r1,r2 的比值需做要求,经变换的 信号以差模电压的形式直接加到电能表的芯片 cs5460 上,用 rs 测量流过负载的电流 然后以差模电流的形式加到 cs5460 芯片端上(如图 2.1) ,通过输入的瞬时电压值和瞬 时电流值得到电压和电流的有效值,单片机从 cs5460 中读取的瞬时电压、瞬时电流和 瞬时功率等数据经处理后存在存储器内, 上电后单片机从存

15、储器内读数据到内存中, 再通过显示模块的液晶屏正常显示所测电压,电流,功率。 引言文本框的格式。 三三系统硬件组成介绍系统硬件组成介绍 3.1 cs5460 简介 cs5460 是 crystal 公司最新推出的带有串行接口的单相双向功率/电能计量集成电 路芯片,该芯片比目前比较流行的电子电度表芯片如 ad7750、ad7755 更容易实现与微 处理器的连接。用 cs5460 可以方便的组成多功能电子式电度表和分布电度表和分布式 电能计量管理系统。cs5460 是一个高度集成的数模转换器,它将两个数模转换单元, 一个高速能量计算单元和一个芯片上的串行接口结合起来,他可以用于精确的测量和 计算仪

16、器,单相两线或三线电能表的应用程序的能量,瞬时功率,irms 和 vrms。cs5460 具有低成本分流或变压器测量电流接口,与测量电压的电阻分压器或变 压器。该 cs5460 具有双向串行接口与微控制器连接和一个固定宽度的可编程频率输出 同样能量。该产品初始化并完全根据电功能,并包括设施系统级控制校准用户程序的。 该 cs5460 旨在从单一经营+5v 电源或双2.5v 电源供电,提供一个 30mvrms 至 150mv 范围通道,并提供一个范围为 150mvrms 电压通道。由于是单供应,cs5460 适用 于一般模式信号。 cs5460 的内部组成模块如下: 一个电流通道可编程增益放大器

17、,其增益为 10 和 50 可选; 一个电压通道固定增益放大器,其增益为 10; 两个同时采样的模数转换器; 两个高速数字滤波器; 两个可选用的高通滤波器; 一个功率计算引擎; 一个 2.5v 片内电压基准; 一个可以检测电力不足或电源故障的电源监视器; 一个持续监视串口通讯的看门狗; 一个内部时钟发生器; 一个串行接口; 一个电能/脉冲变换器; 一个校准用 其内部组成模块如图 1 所示。 图 2.1 cs5460 内部组成模块 3.23.2 cs5460cs5460 的引脚分配及功能的引脚分配及功能 cs5460 的主要技术指 标: 差分电压输 入范围:150mv; 温度系数: 60ppm/

18、; 功率消耗: 10mw; 电能计量精 度:在 300动态范 围以上每秒读取 0.1; 电压测量精 度:读数的 0.1; 电流测量精 度:读数的 0.1; 瞬时功率测 量精度:读数的 0.1。 3.3 cs5460的功能 cs5460 可以在单+5v 电源或双2.5v 电源下运行,电流通道输入范围可为 30mvrms 或 150mvrms,电压通道输入范围 150mvrms。cs5460 可以测量瞬间电流,瞬间 电压,瞬间功率,能量,rms 电流和 rms 电压。测量的结果是以 24 位有符号或无符号 数据形式输出的,同满量程的百分比形式一样。当接收到一个开始转换命令时,测量 开始进行。当计算

19、周期结束时,状态和屏蔽寄存器的 drdy 被置位。 加电后,该芯片被初始化后开始工作,电流通道和电压通道的信号被片内放大器 放大后,通过内部模数转换器转换为数字信号,再通过高通滤波器消除了信号中的直 流成分,将之送到能量计算引擎中算出功率和能量值,并存入 cs5460 的寄存器中,然 后通知 cpu 计算完毕,由 cpu 将功率和能量值取走,同时也可输出可编程的输出可编 程的输出频率来。 1)中断 引脚名称引脚功能 1xout晶体振荡器输出 2cpuclk:cpu 时钟输出 3vd+数字电路电源正极 4dgnd数字地 5sclk 串行时钟输入 6sdo串行数据输出 7cs片选 8nc空脚 9v

20、in+差分电压正输入端 10vin-差分电压负输入端 11vrefout参考电压输出 12vrefin参考电压输入 13va-模拟地 14va+模拟电源正极 15iin-差分电流负输入端 16iin+差分电流正输入端 17pfmon电源掉电监视输出 18nc空脚 19reset复位输入 20int中断输出 21eout电能脉冲输出 22edir功率方向指示输出 23sdi:串行数据输入 24xin晶体振荡器输入 管脚用来指示转换器发生了值得注意的事件。这些事件通知系统运行的状态和内 部误差状态。通过把状态寄存器与屏蔽寄存器组合产生信号。当状态寄存器的一个位 有效,并且屏蔽寄存器相应的位是逻辑

21、1,信号被激活。当状态寄存器的这一位恢复为 无效时,中断状态被清除。 2)清除状态寄存器 与其它的寄存器不同,状态寄存器的位只能被清除(设置为逻辑 0) 。当向状态寄 存器写入字时,字中的任何 1 都可以清除状态寄存器相应的位,其它位保持不变。这 可以在不清楚其它位的情况下,清除特定位。这种机制方便了信号交换,并将丢失未 处理事件的危险性减到最小。 3)激活状态 激活由配置寄存器的 si1 和 si0 位控制,管脚可以被置为低电平(缺省) ,置为高 电平,恢复逻辑 0(上升沿) ,或恢复逻辑 1(下降沿) 。 4)看门狗 看门狗(wdt)提供一种警告系统与微控制器的通讯可能崩溃的手段,通过允许

22、 wdt 产生中断,微控制器可以从死机状态跳出来。超时被编程为大约 5 秒。每次能量寄 存器被读取,递减计数都重新启动。在典型情况下,每秒能量寄存器都被读取,因此, wdt 不会超时。在将看门狗用在其他方面时,必须能够保证能量寄存器至少每 5 秒读取 一次。 接地接地 图 2.2 cs5460 与 stc89c52 单片机接口电路图 cs5460 可以在单+5v 电源或双2.5v 电源下运行,电流通道输入范围可为 30mvrms 或 150mvrms,电压通道输入范围 150mvrms。cs5460 可以测量瞬间电流,瞬间 电压,瞬间功率,能量,rms 电流和 rms 电压。测量的结果是以 2

23、4 位有符号或无符号 数据形式输出的,同满量程的百分比形式一样。当接收到一个开始转换命令时,测量 开始进行。当计算周期结束时,状态和屏蔽寄存器的 drdy 被置位。 加电后,该芯片被初始化后开始工作,电流通道和电压通道的信号被片内放大器 放大后,通过内部模数转换器转换为数字信号,再通过高通滤波器消除了信号中的直 流成分,将之送到能量计算引擎中算出功率和能量值,并存入 cs5460 的寄存器中,然 后通知 cpu 计算完毕,由 cpu 将功率和能量值取走,同时也可输出可编程的输出可编 程的输出频率来。 3.43.4 scs5460scs5460 寄存器配置寄存器配置 cs5460 内部集成了包括

24、偏置寄存器,增益寄存器,脉冲速率寄存器和参数寄存器 等 16 个寄存器,还集成了串行口发送寄存器,串行口接受寄存器和一个命令解释状态 机,用于完成 cs5460 的设置,采集数据的存储和串行输入输出的控制,图 2.3 为内部 寄存器分配图。 此命令通知状态机,一个寄存器的访问是必需的。在读取地址教育署到输出缓冲 区,由 sclk 时钟了。在写数据移入输入缓冲器到第 24sclk 的处理登记。w/ r 写入/读 控制 0 =读寄存器 1 =写入寄存器 注册地址位。二进制编码的 0 到 31。所有寄存器都是 24 位 地址名称的说明 00000 配置寄存器 00001 电流偏移校准 00010 电

25、流增益校准 00011 电压偏移校准 00100 电压增益校准 00101 数转换整合以上(n) 00110 脉冲率用于校准/规模的能量频率 00111 最后电压值 01000 最后权价值 01001 最后的总能量值 01011 rms 电流值 01100 rms 电压值 01101 定时基校正 01110 内部只使用 01111 状态寄存器 10000 保留 10111 保留 11000 内部只使用 11001 内部专用 11010 中断屏蔽寄存器 11011 内部专用 11100 保留 11111 保留 3.53.5 cs5460cs5460 的工作过程的工作过程 在 cs5460 执行的

26、是瞬时电流,瞬时电压,瞬时电力,能量,rms 电流和 rms 电压 的测量。这些测量是以 24 位有符号和完整规模的无符号数据格式作为输出。 图 2.5 写时序 图 2.6 读时序 寄存器读写命令如下: 其中,wr 为 0 读寄存器,为 1 写寄存器,ra(04)寄存器地址说明如下: 00000:配置寄存器,00001:电流偏移校准,00010:电流增益校准,00011:电压偏 移校准,00010:电压增益校准,00101:转换次数,00110:能量,00111:最新电流, 01000:最新电压,01001:最新功率,01111:状态寄存器,10000:交流电流偏移寄 存器,10001:交流电

27、压偏移寄存器 cs5460 实现瞬时电压、瞬时电流、瞬时功率的测量, 电压和电流通道输入信号被 送到 cs5460 功率计算单元,由输入的瞬时电压值和瞬时电流值计算得到瞬时功率值, 同时还可以通过输入的瞬时电压值和瞬时电流值得到电压和电流的有效值。 cs5460 的串行接口部分集成了一个带有发送接收缓冲器的状态机,状态机在 sclk 上升沿解释 8 位命令字。根据对命令的解码,状态机将执行相应的操作,或者, 为把寻址的内部寄存器的数据传送到发送缓冲区,写操作在数据传输前要等 24 个 sclk 周期。通过寄存器读写命令,数据可被写入或从 cs5460a 中读出,图 2、图 3 为读、 写时序。

28、数据的读、写通过向串口 sdi 引脚写入相应的 8 位命令字(高位在前)来启 动。需要注意的是:一些命令字在执行时受周期计数寄存器和配置寄存器内容的影响, 需要先对周期计数器和配置寄存器内容进行正确设置。寄存器写指令后必须跟 24 位数 据,先写命令字启动写操作,然后随着 24 个连续的串行时钟脉冲,cs5460a 将从串行 输入引脚 sdi 接收串行数据,一旦收到数据,状态机便将数据写入配置寄存器并返回 到命令模式。寄存器读指令可以终止在 8 位的边界上。通过 sdi 引脚写入命令后,可 从 sdo 引脚读出数据 电压、电流有效值可直接从电压有效值寄存器、电流有效值寄存器中读取。 而由于计算

29、周期设为 1s,电能寄存器中的电能值即为有功功率值,因此有功功率值可直 接从电能寄存器中读出。功率因数可由公式 cos=p/(ui)得出。 频率的测量:将循环计数寄存器的 n 值改变为 1,此时电压、电流瞬时值数据的刷 新率为 4000hz,这就为通过软件进行信号过零判断创造了条件。频率测量的具体方法是: 通过一个过零函数来记录电压信号正向过零次数,并同时记下读取数据次数,如果取 10 个周期的平均时间为实测周期时间,那么当记到第 11 次正向过零时,停下来算出每个周 期内读取数据次数,默认两次读取数据的时间差为 250,便可算出频率。 四硬件电路设计四硬件电路设计 4.14.1 单相电度表的

30、工作原理:单相电度表的工作原理: (1)前端电路调理模块把所输入的大电压电流信号转变成 cs5460 可接受的小电 压信号,以差模电压或电流的形式输入进去。 (2)由 vin+ , vin - 输入的差模电压模拟信号由 模拟数字转换器进行转换, 获得瞬时电压,转换后的数字信号被送入功率计算器。由 vin + , vin- 输入的差模电 流模拟信号同样由 模拟数字转换器进行转换, 获得瞬时电流,转换后的信号也被 送入功率计算器。 3)cs5460 根据采样电路输入的瞬时电压、瞬时电流计算出瞬时功率,然后把瞬时 电压、瞬时电流及瞬时功率由双向串行接口传送给单片机 stc89c52。 4)单片机根据

31、程序指令显示测量结果,也可输入程序通过累加计算出能量。 该系统各个模块芯片引脚连接情况如下图所示: cs5460stc89c52 液晶显示 4.24.2 前端电路调理模块前端电路调理模块 cs5460 的 iin+,iin-接分流器的两端 rs 的两端,借助 rs 测量流过负载的电流。 rs 的选取须保证在最大允许电流负荷下,其采样电压值不超过正负 150mv。cs5460 的 vin+,vin-接由 r1,r2 组成的电阻分压器 r1 的两端,将被测信号电压通过电阻 r1,r2 的阻值比不同,将其换算到不超过正负 150mv 的电压范围内,从而以差模信号的形式 加到 cs5460 芯片的差模

32、信号输入端。本电路图中取 r1=200,r2=500k,得到其变比系数 为 2500。类似,取 rs=110k,将电流以差模电流的形式输入到 cs5460 芯片中。如图 4.1 所示。 n n l l 图 4.1 前端电路调理模块 4.34.3 电能芯片电能芯片 cs5460cs5460 模块模块 经调理电路的调理的电压信号,电流信号通过 iin+,iin-,vin+,vin-接口送入电能 表芯片 cs5460,芯片被初始化后开始工作,电流电压通道的采样信号被片内放大器放 大,经内部模数转换器转换为数字信号,在通过高通滤波器消除直流分量,并由计算 引擎计算出瞬时功率,在此过程中也可以算出瞬时电

33、压,瞬时电流,根据采样频率的 设定值可以计算出电能值,电流有效值,电压有效值,并将其存入相应的寄存器中, 然后将单片机与其相连,从而将芯片寄存器中的电能值,电压有效值,电流有效值读 出,并送于液晶显示 单片机与 cs5460 的连接图如图 4.1 所示: cs5460cs5460 stc89c52stc89c52 图 4.1 单片机 stc89c52 与 cs5460 的连接图 4.4 单片机 stc89c52 模块 本次系统设计中采用的是 c52 单片机,是 c51 单片机的增强版,其引脚及其功能 与 c51 单片机类似,其引脚图如下所示 stc89c52 4.5 液晶显示模块 本次设计的单

34、相电度表中,单片机通过液晶的串口向液晶寄存器写命令,进而实 现对液晶显示的控制,图 4.2 是单片机与液晶模块连接图。该模块用于显示电压,电 流和功率。通过读取显示的数值再乘以变比系数则可以得到被测器件真实的电压,电 流和功率值。在本次设计系统中 五程序设计五程序设计 5.15.1 单片机单片机 c51c51 程序设计的优点程序设计的优点 因为本次系统设计中虽然采用 c52 单片机,但鉴于其二者引脚功能基本一致,故采 用 c51 的编程方法即可。 现在有许多可以对 80c51 单片机硬件进行操作的 c 语言,它们通常统称为 c51。 当系统规模较大时,设计人员都趋于采用 c 语言,这是因为 c

35、 语言具有良好的可读性、 易维护性、可移植性和硬件操作能力。采用 c51 进行单片机应用系统的程序开发,编 译器能自动完成变量的存储单元的分配,编程者可以专注于应用程序的设计,可以对 常用的接口芯片编写通用的驱动函数,对常用的功能模块和算法编写相应的函数,可 以方便地进行信号处理算法和程序的移植等等,从而加快了单片机应用系统的开发速 度。 目前,c51 的代码长度已经达到了汇编程度水平的 1.2 倍-1.5 倍。当代码长度超过 4kb 以上时,c51 比汇编语言具有较为明显的优势。另外,还可以借助于仿真器,对 应用程序的关键代码进一步进行优化,以减少代码的长度,提高运行的速度。同时, 由于单片

36、机生产工艺的发展,单片机的运行速度和内部存储器容量都有了较大的提高, 这些都为 c51 应用程序的应用创造了更为有利的条件。 5.25.2 程序设计思路:程序设计思路: stc89c52 的 into 接到 cs5460 的 int 端,当有中断申请时,通过读取内部状态 寄存器,以获得 cs5460 的工作情况,经判断执行相应的处理程序。 5.35.3 cs5460cs5460 驱动程序驱动程序 5.45.4cs5460cs5460的设置和启动的设置和启动 步骤: 1)复位cs546,对cs5460的复位脚发复位脉冲,脉冲不少于10ms。 2)写同步控制命令字。 3)从外部存储器读原来保存的校

37、准值,并将读出的值写入相应的校准寄存器。 4)写控制寄存器,设置各寄存器参数。 5)清状态寄存器。 6)启动cs5460a开始转换。 7)读cs5460a的ad转换值或计算结果。 5.55.5 读写读写 cs5460cs5460 步骤: 1)读能量寄存器。 2)读电流有效值寄存器。 3)读电压有效值寄存器。 4)读状态寄存器,回写状态寄存器。 5)设置中断。 写cs5460 void wr5460(uchar command,uchar wh_byte,uchar wm_byte,uchar wl_byte) cs=0; wr5460byte(command); wr5460byte(wh_b

38、yte); wr5460byte(wm_byte); wr5460byte(wl_byte); cs=1; 写cs5460一个字节 void wr5460byte(uchar wrbyte) uchar i; for (i=0;i8;i+) sclk=0; if(wrbyte else sdi=0; wrbyte=wrbyte 1; sclk=1; sclk=0; sdi=1; 读cs5460 void rd5460(uchar command) cs=0; wr5460byte(command); rh_byte=rd5460byte(); rm_byte=rd5460byte(); rl_

39、byte=rd5460byte(); cs=1; 读cs5460一个字节 uchar rd5460byte(void) uchar i,val; val=0; for (i=0;i8;i+) val=val1; if(sdo) val=val | 0 x01; if (i=7) sdi=0; else sdi=1; sclk=1; _nop_(); sclk=0; _nop_(); return(val); 5.65.6结果显示程序结果显示程序 步骤: 1)将显示缓存清零。 2)初始化单片机。 3)设置时钟。 4)六位数码管显示程序。 显示程序代码: void display(void) /六

40、位数码管显示程序,disdat是要显示的内 容(是09的数字),xsd是在那一位显示小数点 uchar i,disa,disb,disc; disb = 0 x00;/显示第n位 for (i=0;i6;i+)/共显示6个数据 disa = disdati; /显示数据 if (disa 10) p2 = disb; disc = tabdisa; /显示段码 if (xsd != 5) /增加小数点显示 p0 = disc;/送显示 delay ();/延时 p0 = 0 x0; disb+;/下一个要显示的位置 p2 = 0 xff; 总 结 cs5460 代表了新一代的电能专用芯片,用它

41、设计出来的专用电度表具有成本低, 精度高,调教简单,与微处理器接口方便等优点,使电量管理者能够获得更有用的数 据,且用户投入费用低,具有广阔的市场前景。本文所研究的基于 cs5460 的单相电度 表测量系统设计就是一个高精度芯片和单片机的应用。系统以 89c52 单片机和芯片 cs5460 为核心,利用该芯片及外围电路实现信号的模拟-数字转换和功率计量,并通 过单片机的程序设置很好的完成了数据的累加,从而计算得到总的能量。本系统有两 个主要模块组成:第一个是数据采样及功率的计算,主要由芯片 cs5460 和外围电路组 成。外围电路将输入电压信号转换为 cs5460 可以接受的 小电压信号。cs

42、5460 则完成 电压信号的采样及功率计算,并将结果通过串行接口输入给单片机。第二个是结果显 示模块,它主要由单片机及数码管及外围电路组成。该模块将第一个模块得到的结果 显示到数码管上,并存入存储器内,同时累计得到电能,再乘以相应的比例系数则可 以得到所测的真实值。 本设计的主要难点: 1)前端调理模块中外围电路电阻阻值的选取,电阻阻值应尽量精确,且阻值的选取应 很好的满足 cs5460 对输入电压信号大小的要求。 2)程序的编写。本设计中的程序包括芯片 cs5460 的参数设置、cs5460 内部寄存器的 读写,数码管显示函数等。虽然我们系统的学习了,对 51 系列 单片机有了一定的了解,但

43、在实验中多数应用汇编语言进行程序的编写,现在用 c 语 言编写程序有一定的困难,最后参考老师所给程序才能很好的完成本次设计。 谢 辞 时光匆匆飞逝,四年多的努力与付出,本设计的完成既为大学四年划上了一个完美的 句号,也为将来的人生之路做了一个很好的铺垫。 本设计得以完成,要感谢的人实在 太多了,首先要感谢龙海南老师,因为本设计是在龙老师的悉心指导下完成的。龙老 师渊博的专业知识、严谨的治学态度、一丝不苟的作风、诲人不倦的高尚师德对我影 响深远,一直是我工作、学习中的榜样,他的循循善诱的教导和不拘一格的思路也给 予了我无尽的启迪。 在整个设计过程中,龙老师每星期都定时与我们交流,听取我们的设计进

44、展,为我们 解答设计过程中遇到的各种问题,并安排布置下一步的设计任务。在我做毕业设计的 三个月里,龙老师指导我完成了外文文献的翻译、开题报告、中期报告的撰写等等, 每次他都认真地给我们修改,指出其中的不当之处。龙老师要指导很多同学的毕业设 计,加上本来就有的教学任务,工作量之大可想而知。 三个多月的毕业设计即将结束,在龙老师的悉心指导和帮助下,加上我个人的努力, 完成了本课题的设计与论文撰写。在完成设计的过程中,我综合运用四年来所学的专 业知识,并且翻阅了大量的参考资料。通过查资料和搜集有关的文献,培养了我的自 学能力和动手能力,并且由原先的被动地接受知识转换为主动地寻求知识,这可以说 是学习

45、方法上有了很大的突破。同时,我学会了如何将学到的知识真正转化为自己的 东西,怎么更好地处理理论和实践相结合的问题。 四年的大学学习生活即将结束,在论文即将完成之际,向四年来辛勤培养、教育、关 心和帮助过我的老师们表示最诚挚的敬意和感谢!同时,设计的顺利完成也离不开各 位同学和朋友的关心和帮助,他们积极的帮助我查资料和提供有利于本设计的建议和 意见,使得本设计在一定程度上得到完善。我也从各位同学身上学到了很多东西,在 此也向他们表示最诚挚的谢意! 参看文献 1 李全利,仲伟峰,徐军单片机原理及应用北京:清华大学出版社,2006, 2 陈龙三8051 单片机 c 语言控制与应用北京:清华大学出版社

46、,1999 3 张培仁基于 c 语言编程:mcs-51 单片机原理与应用北京:清华大学出版社,2003 4 谭浩强c 语言程序设计北京:清华大学出版社,2000 5 郑文,赵伟等,电能自动抄表技术及相关思考、电测与仪表【j】 、2001 6 赵伟,庞海波等,电能表的发展历史、电测和仪表j,1999 7 刘乐善,微型计算机接口技术原理及应用m,华中理工大学出版社,1999 8 付先学,智能电力监测系统设计方案j,电测与仪表,2004 9 henzinger t, kirsch c, majumdar r, et al. time-safety checking for embedded prog

47、rames. in proc.of the intl. workshop on embedded software of lecture notes in computer science, 2002. 10 henzinger a thomas, benjamin horowitz, christoph meyer kirsch. embedded control systems development with giotto. the proceedings of the acm workshop on languages, compliers and tools for embedded

48、 systems (lctes), 2001. 附附 录录 附录 1 附录 2 程序源代码: #pragma db oe #include #include #include #include #include #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long void wr5460(uchar command,uchar wh_byte,uchar wm_byte,uchar wl_byte); void rd5460(uchar command); void

49、wr5460byte(uchar wrbyte); uchar rd5460byte(void); void delay(uint n); void initport(void); uchar rh_byte; uchar rm_byte; uchar rl_byte; sbit sclk = p10; sbit sdo = p11; sbit sdi = p12; sbit cs = p13; sbit reset= p14; sbit int= p32; void initport(void) reset=0;/cs5460 复位 delay(100); reset=1; int=1; s

50、do=1; ea=0; wr5460(0 xff,0 xff,0 xff,0 xfe); /*同步*/ wr5460(0 x40,0,0,1); /*配置寄存器*/ wr5460(0 x5e,0 xff,0 xff,0 xff); /*清状态寄存器*/ wr5460(0 x74,0 x80,0 x00,0 x00); /*写中断屏蔽寄存器*/ rd5460(0 x1e); /*读状态寄存器*/ wr5460(0 x5e,rh_byte,rm_byte,rl_byte); /*回写状态寄存器*/ cs=0; wr5460byte(0 xe8); /*启动转换*/ cs=1; /* 写 cs546

51、0 */ void wr5460(uchar command,uchar wh_byte,uchar wm_byte,uchar wl_byte) cs=0; wr5460byte(command); wr5460byte(wh_byte); wr5460byte(wm_byte); wr5460byte(wl_byte); cs=1; /* 读 cs5460 */ void rd5460(uchar command) cs=0; wr5460byte(command); rh_byte=rd5460byte(); rm_byte=rd5460byte(); rl_byte=rd5460byt

52、e(); cs=1; /* 写 cs5460 一个字节 */ void wr5460byte(uchar wrbyte) uchar i; for (i=0;i8;i+) sclk=0; if(wrbyte else sdi=0; wrbyte=wrbyte 1; sclk=1; sclk=0; sdi=1; /* 读 cs5460 一个字节 */ uchar rd5460byte(void) uchar i,val; val=0; for (i=0;i8;i+) val=val1; if(sdo) val=val | 0 x01; if (i=7) sdi=0; else sdi=1; sc

53、lk=1; _nop_(); sclk=0; _nop_(); return(val); /* 延时程序 延时时间n*15 us */ void delay(uint n) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /5 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /10 _nop_(); /_nop_(); /_nop_(); n-; while (n); #pragma db oe #include #include #include #include #include #include #

54、define uint unsigned int #define uchar unsigned char #define ulong unsigned long extern void yj_init(void); extern void yj_clrtext(void); extern void yj_clrgraph(void); extern void dishz(uchar x,uchar y,uchar *a); extern void dishzf(uchar x,uchar y,uchar *a); extern void diszf(uchar x,uchar y,char a

55、); extern void diszff(uchar x,uchar y,char a); /extern void yj_lines(uchar x,uchar y,uchar cd,uchar zx); extern void yj_lineh(uchar x,uchar y,uchar cd,uchar zx); extern void yj_clxy(uchar x,uchar y,uchar cd,uchar kd); extern void yj_hz2424(uchar x,uchar y,uchar cod); extern void wr5460(uchar command

56、,uchar wh_byte,uchar wm_byte,uchar wl_byte); extern void rd5460(uchar command); extern void wr5460byte(uchar wrbyte); extern uchar rd5460byte(void); extern void delay(uint n); extern void initport(void); extern uchar rh_byte; extern uchar rm_byte; extern uchar rl_byte; void initsiu(void); void hm0(v

57、oid); void cjdat(void); void hm1(void); uchar pyg_h,pyg_m,pyg_l; uchar irms_h,irms_m,irms_l; uchar vrms_h,vrms_m,vrms_l; float xdata pyg,irms,vrms; uchar xdata zfbuf20; uchar xdata recbuf100; uchar mljsw,rspoint; union dualchar auc4;long ans; union dual var; sbit intcs= p32; main() uchar j; initsiu(

58、); initport();/*端口初始化*/ yj_init(); hm0(); do cjdat(); hm1(); while (1); void cjdat(void) _nop_(); while (intcs !=0); rd5460(0 x14); pyg_h=rh_byte; pyg_m=rm_byte; pyg_l=rl_byte; /*读能量寄存器*/ rd5460(0 x16); irms_h=rh_byte; irms_m=rm_byte; irms_l=rl_byte; /*读电流有效值寄存器*/ rd5460(0 x18); vrms_h=rh_byte; vrms

59、_m=rm_byte; vrms_l=rl_byte; /*读电压有效值寄存器*/ rd5460(0 x1e); /*读状态寄存器*/ wr5460(0 x5e,rh_byte,rm_byte,rl_byte);/*回写状态寄存器*/ _nop_(); if (pyg_h /*判断正、负*/ else var.auc0=0 x0; var.auc1=pyg_h; var.auc2=pyg_m; var.auc3=pyg_l; pyg=var.ans*7.437e-9; var.auc0=0 x0; var.auc1=irms_h; var.auc2=irms_m; var.auc3=irms_

60、l; irms=var.ans*1.49e-5; var.auc0=0 x0; var.auc1=vrms_h; var.auc2=vrms_m; var.auc3=vrms_l; vrms=var.ans*1.49e-5; _nop_(); void hm0(void) uchar i; yj_clrtext(); yj_clrgraph(); yj_lineh(0,18,30,0 xff); dishz(0,0,cs5460 test); dishz(3,21,p); dishz(20,21,w); dishz(3,42,vrms); dishz(20,42,mv); dishz(3,63

温馨提示

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

最新文档

评论

0/150

提交评论