资源描述
山东科技大学课程设计 1 多用户电能表的应用设计 课程设计报告 姓 名: 学 号:200901101026 专 业:电气工程及其自动化 班 级:09-2 班 邮 箱: 指导教师: 山东科技大学课程设计 2 摘要 电子式电能表是通过对用户供电电压和电流实时采样,采用专用的电能表 集成电路,对采样电压电流信号进行处理并相乘转换成与电能成正比的脉冲输 出,通过计度器或数字显示器显示用户使用的电量。本文将设计一个以 C8051F360 芯片为核心,配有电能转换模块、 LED 显示模块、掉电存储模块等 功能模块,实现对八户的用电状况进行采集检测。 本次设计用户数为八户,即实现八位用户循环显示电能量。同时,基于 E2PROM 24C16 芯片实现单片机的掉电数据保护,基于 74HC165 芯片实现单片 机的清零。 基于 AD7755 芯片实现电能脉冲的发生;应用单片机 C8051F360 编制程序 完成脉冲的读取、计数、计算、存储、送显示等功能;应用 74HC164 及八段译 码显示器完成数据的显示;应用 74HC165 及键盘控制对脉冲清零;应用 E2PROM 24C16 完成数据的定时写入以防停电时数据丢失。 关键词:8 用户电能表;AD7755;24C16;C8051F360 山东科技大学课程设计 3 ABSTRACT Electrical meter is through user power supply voltage and current real-time sampling, using special integrated circuit of electric energy meter, the sampling voltage current signal processing and multiplication convert to electric proportional to the pulse output, through the JiDuQi or digital display shows users with the use of the power. This paper will design a C8051F360 chips as the core, equipped with electric energy conversion module, LED display module, power lost storage module function module, realizes to eight of the power consumption and the collection detection. The design for the eight users at home, which realize the eight users cyclic display electric energy. At the same time, based on the single chip microcomputer chip realize 24 y E2PROM chips was the power lost data protection, based on the 74 HC165 chip microcontroller cleared of realization. Based on AD7755 chip realize the energy pulsing occur; C8051F360 single chip microcomputer application program to complete pulse to read, counting, computation, storage, send display function; Application HC164 and eight section 74 decoding display finish data display; 74 HC165 keyboard control and application of pulse reset; Application E2PROM chips was complete data of the timing 24 y write in case of power data is lost. Keywords:electric energy meter; 8 the user watt-hour meter; AD7755;24C16;C8051F360 山东科技大学课程设计 4 目录 1 设计目的及要求 .1 1.1 设计目的 .1 1.2 设计要求 .1 2 设计内容 .1 2.1 设计系统方案 .1 2.2 设计系统框图 .2 3 硬件电路设计 .2 3.1 24C16 功能介绍 .2 3.2 六段数码管显示电路 .3 3.3 C8051F360 功能介绍 .4 3.4 5V 稳压电源的设计 .5 3.5 光电隔离电路 .5 3.6 AD7755 电路设计 .6 4 软件电路设计 .12 4.1 主程序流程图设计 .12 4.2 显示用户及相应电能子程序框图 .13 4.3 读 24C16 子程序框图 .14 4.4 写 24C16 子程序流程图 .15 4.5 查询键盘流程图 .16 4.6 中断子程序流程图 .17 5 结束语 .18 致谢: .18 参考文献 .19 附录 .20 山东科技大学课程设计 1 1 设计目的及要求 1.1 设计目的 设计多用户电能表,掌握单片机在电力系统中的应用,并且可以通过计算 机的编程实现对户的用电状况进行显示,进一步熟练单片机编程,了解 24C16 的功能实用。完成系统的硬件设计及软件设计。 本次设计用户数为八户,即实现八位用户循环显示电能量。同时,基于 24C16 芯片实现单片机的掉电数据保护,基于 74HC165 芯片实现单片机的清零。 1.2 设计要求 1.3.1 户数:8 户。 1.3.2 精度:0.001。 1.3.3 脉冲数:每 1000 个脉冲为 1 度电 。 1.3.4 循环显示:8 户电能循环显示,每隔 3S 显示一户。 1.3.5 掉电保护:掉电时不能丢失数据,24C16 掉电保护电路的设计。 1.3.6 数据显示:实现交流电表对单相交流电能的测量并显示。 基于 AD7755 芯片实现电能脉冲的发生;应用单片机 C8051F360 编制程序完 成脉冲的读取、计数、计算、存储、送显示等功能;应用 74HC164 及八段译码 显示器完成数据的显示;应用 74HC165 及键盘控制对脉冲清零;应用 E2PROM 24C16 完成数据的定时写入以防停电时数据丢失。 2 设计内容 2.1 设计系统方案 根据设计题目要求,以及原始资料的精度要求,电能转化脉冲芯片有 AD7755 可供选择 ,因为它是一种高准确度电能测量集成电路,稳定性强并且价格不贵; 单片机芯片选择 C8051F36x 器件,它具有片内上电复位电路、 VDD 监视器、看 门狗定时器和时钟振荡器,是真正独立工作的片上系统;数据保护电路芯片可 选 FM24C16 ,用先进的铁电技术制造的 16K 位的非易失忆的记忆体;另外要求 为 LED 显示,使用 74LS164 串入并出 8 位移位记存器进行存储数据;因为各芯 片需提供直流电源,我们要进行设计交直流变化和降压电路,大体的设计选择框 架思路就是这些。 电能变换电路采用 AD7755 芯片,工作时 AD7755 芯片将电流采样信号和电压 采样信号送入缓冲放大器,经模拟乘法器相乘,再经 V/F 转换器转换将电压信 号转换为脉冲信号,AD7755 芯片的快速脉冲输出为 3200 脉冲/KWh,与用户使 用电能相对应。 输出的快速脉冲信号经光电隔离送给单片机,我们采用 C8051F36x 单片机 山东科技大学课程设计 2 对脉冲信号进行采集和计数,P2 口(8 位)同时工作即可对 8 户电能脉冲进行 采集与计数,我们将为每户开辟 2 个字节的内存计数。 2.2 设计系统框图 电 压 信 号 电流 型电 压互 感 器 电 流 信 号 电流 互感 器 电 能 转 换 脉 冲 芯 片 AD7755 光 电 耦 合 LED 显示 单机 芯片 C8051 F360 E2PR OM24 C16 图 2.1 设计总体框图 3 硬件电路设计 3.1 24C16 功能介绍 图 3.1 24C16 管脚图 CAT24WC16 支持是一个 16 位串行 CMOS EEPROM,功耗小,有一个 16 字节页写缓存区,通过 I2C 总线接口进行操作,有专门的写保护功能。其中 I2C 总线协议规定,任何数据传送到总线的器件作为发送器,任何从总线接收数 稳压电源 稳压电源 山东科技大学课程设计 3 据的器件为接收器。SCL 是一个输入管脚,产生器件所有数据发送和接收的时 钟,SDA 是一个开漏输出管脚,用于器件所有数据的发送和接收, A0、A1、A2 为器件地址输入端,WP 接到 VCC 所有内容被写保护(只能读) , WP 管脚接到 VSS 或悬空,允许器件进行正常的读/ 写操作。 CAT24WC16 使用铁电技术制造的 16K 位的非易失性的记忆体,并且可以 快速读写数据被可以长时间掉电保存,并且其非易失性存储器可靠性更高,系 统更简单,并且 24C16 可以承受超过 100 亿次的速写或者是比 EPROM 高一万 倍的写操作,当数据采集系统对写入数据的频率要求比较高即速度要求快的时 候 E2PROM 24C16 也可以可靠的实时采集数据。 3.2 六段数码管显示电路 Vin3 ADJ 1 +Vout 2 WY1 LM317T 压C17 104/0.1uF g f a b dp c d e +5 g f a b dp c d e g f a b dp c d e g f a b dp c d e g f a b dp c d e g f a b dp c d e +5 +5 +5 +5 +5 +5 COM COM COM COM COM COM P1.0P1.1 A1B2 CL K 8 /M R 9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U1074HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U474HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U174HC164 L2-L19 +5 +5+5 A1B2 CL K 8 /M R 9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U974HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U374HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U674HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U274HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U774HC164 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U874HC164 R61K R23390 L4L5L6 L1-L13 A1B2 CLK8 /MR9 Q71 3 Q61 2 Q51Q41 0 Q36Q25Q14Q03 U574HC164 +5 L18-L15 L2L10-L8L1 L3 L7 SM1 SM2 SM3 SM4 SM5 SM6 RRR Yelow GrenGren RR RRYelow L14R R25.1KR215.1K +5 图 3.2 74HC164 与 LED 数码管显示电路图 数码管显示电路采用 74HC164,本次设计使用六个共阳极 LED 数码管,其 数码管段码值如表 3.1: 表 3.1 段码 值 88H EBH 4CH 49H 2BH 19H 18H 0CBH 08H 09H 7FH 数值 0 1 2 3 4 5 6 7 8 9 - 74HC164 芯片是一个 8 位移位寄存器,串行输入,并行输出,当时钟信号 端(CLOCK)出现上升沿时,开始向 164 中写入数据,串行数据输入端为 A,B 的线与,当 A、B 中任意一个为低电平时,禁止新数据输入,但本设计可以直 接向 164 送数据,因 P1.0 管脚为 A、B 的线与,当 P1.0 管脚为 1,则向 164 送 1,若 P1.0 为 0,则向 164 送 0。如若想送一个数据 49H,需先把数据送给寄存 器 A,将寄存器 A 中的数据带进位循环右移,此时 C 中的数据为 1,先将时钟输 入端 CLOCK 清零,再将时钟输入端 CLOCK 置一,读入 C 中的数据送给 164 的 Q0,再将寄存器 A 中的数据右移一位,此时 C 中的数为 0,然后寻找时钟输 入端的上升沿,将 0 写入,此时 164 的 Q0 管脚变为 0,Q1 管脚变为 1,照此 规律依次将八位二进制数存入 164 中,最后 Q0Q1Q2Q3Q4Q5Q6Q7 中的数据分 别为 01001001,即 49H。因本设计所使用的电路板有 10 个 74HC164,6 个 LED 数码管前后各有两个与二极管连接的 164,数据传输时会先将第一个数据传给 第一个 74HC164,这样如果传送 6 位数据,则会出现最后两个 LED 数码管不显 示数据的现象,因此应在调用两次显示子程序,将两个存在与二极管连接的 164 中的数据移到 LED 数码管中,显示全部数据。本次设计使用的共阳极 LED 数码管的管脚设置图如下: 山东科技大学课程设计 4 图 3.2 LED 数码管管脚设置图 其显示原理为公共阳极接高电平,管脚接电平,二极管导通,则相应的笔 画段亮,由发亮的笔画段组合得到各种显示字符,上图使用的数码管阴极各段 接 10001000 时,显示器显示“0”字符,即对于共阳极 LED 显示器, “0”字符 的字形码是 88H。很多产品为方便接线,常不按规则的方法去对应字段与位的 关系,这时字形码就必须根据接线自行设计了。 3.3 C8051F360 功能介绍 C8051F360 单片机为主要部件,它具有片内上电复位电路、VDD 监视器、 看门狗定时器和时钟振荡器器件,是真正能独立工作的片上系统。FLASH 存 储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新 8051 固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外 设以节省功耗。其 P1.0,P1.1 口产生的脉冲向 74HC164 显示输送数据,使其显 示相关信息,P2 口接拨码开关,模拟 AD7755 电量脉冲, PCF8563、24C16 部 件实时存储用户电量信息,并在掉电后保存,单片机上电复位后能够从中读取 数据。 山东科技大学课程设计 5 图 3.3 C8051F360 电路图 3.4 5V 稳压电源的设计 电源电路设计是整个电路设计中的重要部分,其性能的好坏对整个电路的 影响极大,是整个系统能稳定工作的前提和关键,系统的各个单元电路都需要 使用直流电源供电。本设计将 220V 交流市电通过电源变压器换成交流低压, 再经过桥式整流电路整流和滤波,在固定式三端稳压器两端形成一个并不是很 稳定的直流电压,然后再经过 W7805 的稳压和电容的频率补偿,形成精度高, 稳定性好的直流输出电压,并且集成三端稳压器精度高、外围电路简单,体积 小、容易设计和制作、维修简单。 图 3.4 稳压电源电路的设计 220V5V 的共两套,一套给 AD7755,另一套给显示模块和 5V3.3V 电源。 5V3.3V 电源供给 C8051F360 和 24C16。 220V5V 转换电路中,相关参数如下: C1=330uf,为滤波电容;C2=0.33uf ,用于抵消输入线较长时的电感效应,以防 山东科技大学课程设计 6 止电路产生自激震荡;C3=1uf,用于消除输出电压中的高频噪声。 3.5 光电隔离电路 在许多应用中,许多电路链接之间需要非直接的连接,从而在提供数据的 同时避免来自系统某一部分的危险电压或电流对另一部分造成破坏,造成这种 破坏的可能是电源质量低劣、接地故障等各种故障。电路隔离的主要目的是通 过隔离元件把干扰的路径切断,从而达到抑制干扰的目的,保护电子设备。在 两点间避免电流流过,而允许有数据或功率传送时需要使用隔离技术。电路隔 离主要有:模拟电路的隔离、数字电路的隔离、数字电路与模拟电路之间的隔 离。所使用的隔离方法有:脉冲变压器隔离法、继电器隔离法、光电耦合器隔 离法、直流电压隔离法、A/D 转换器隔离法。 传统的光耦隔离电路虽然也能实现很高的线性度, 不过这些电路需要的电 源种类较多, 线路比较复杂, 设计成本比较高。 为了解决这些问题, 本次设计中一种新的光电耦合结构, 由它组成的光耦隔 离电路具有很高的线性度, 且只需采用普通的光电耦合器和简单的电路结构。 应用这个电路解决了弹载黑匣子的电压采样信号的光电隔离问题。 光电耦合器的工作原理和特性如下: 光电耦合器件是把发光器件(如发光二极管)和光敏器件(如光敏三极管)组装 在一起, 通过光线实现耦合构成电) 光 ) 电的转换器件。当电信号送入光电耦 合器的输入端时, 发光器件将电信号转换为光信号。光信号经光敏器件感应接 收, 再还原成电信号。 图 3.5 是一种典型反相应用电路, 当输入端有电流流过时, 发光二极管发光, 使光电三极管导通, 其集电极就有电流 I C 流过。 光电耦合器其主要特点为: 1) 输入、 输出之间在电气上相互绝缘; 2) 信号传输是单方向的, 输出端的噪声不影响输入端; 3) 体积小、 寿命长、 无触点,功耗低; 4) 光电耦合器的传输特性具有非线性和随温度变化性; 图 3.5 光电隔离电路 3.6 AD7755 电路设计 山东科技大学课程设计 7 图 3.6.1 AD7755 内部功能图 3.6.1 AD7755 电路只在 ADC 和基准电源中使用模拟电路,所有其它信号处理 (如相乘和滤波)都是用数字电路,这使 AD7755 在恶劣环境环境条件下仍能 保持极高的准确度和长期的稳定性。 3.6.2 设计参数: 基准电压: 220V10% 基准电流:Ib=5A 最大电流:Imax=4Ib=20A 计量精度:1% 最小电流:Imin=2%Ib=0.1 脉冲数:3200/kw.h 3.6.3 参数计算: 3.6.3.1 以 AD7755 设计的电能表的相关参数计算: 配合 C8051F360 芯片的 16 进制算法与课程设计的参数要求,参考基本电 流与脉冲的建议数,选定基准电流 Ib=5A,每 kw.h 计度需要的脉冲数为 3200, 即 CF 的输出为 3200imp/ kw.h。 线路电压 220V,基本电流 Ib 为 5A,动态范围 400(规定准确度的电流范围为 2%IbImax,即 100mA40A);计度器的电表常数 C 为 3200imp/ kw.h,即 AD7755 发 3200 个脉冲,单片机记录 1 kw.h 电。为满足电流通道的动态范围且留有充分 的余量,选用 350 的分流器;以其将负载电流转换为电压 ,接 V1P 和 V1N。线 路电压经电压分压器分压,也降到允许的最大电压范围之内,接 V2P 和 V2N。负 载电流为基本电流(5A) 时 ,线路的功耗为 P=2205=1.1 kw。 选择 f1-4=3.4Hz,SCF=0,S1=0,=S0=1,此时 CF 频率为 f1 的 32 倍,所要求的 频率恰为 f1, f2 段的脉冲计数标准为 100imp/ kw.h。 3.6.3.2 乘以此常数得 Ib 情况下的输出频率: fF1=PC=1.13200/3600=0.9777778Hz 查 AD7755 数据表,所选择 f1-4=3.4Hz,满足最大电流为 40A 和再留有足够 余量的要求。 fF1=8.06U1U2Gf1-4U2REF 山东科技大学课程设计 8 U1=5350=1750V=1.75mV 并以最大电流产生的压降和表 1,选择 G=16 U2=fF1U2REF8.06U1Gf1- 4=0.0305552.528.061.75163.4=248.9mV 原理图中 R1、C1,R2 、C2,R3、C3,R4(R5R16)、 C4 为抗混叠滤波器。 因为 AD7755 以 900kHz 过采样速率采样,故大大简化了抗混叠滤波器的设计。 不过,两个通道之间的相位匹配非常重要。例如,当 cos=0.5 时,0.2的外部相 位误差将产生 0.6%的测量误差。为使两个通道的相位匹配,电阻、电容的取值分 别为 R1=R2=R3=R4=1k(精度为 1%);C1=C2=C3=C4=33nF;R5= 300k,R6= 150k,R7= 75k,R8=39k ,R9=18k ,R10=9.1k,R11=5.1k ,R12=2.2k,R13=1.2k,R14 =560 ,R15=R16=330k 。考虑到选用的分流器和基准源都存在允差,原理图中 设置了校准网络,通过短接或断开 J1J10,可在30%范围内进行调节。因为 R15+R16=660k,大于大于 R4(1k),因此,即使 R5R14 全部短接,这条支路的- 3dB 频率仍由 R4 和 C4 的值决定。据厂家介绍,从 J1J10 全部接通变化到 J1J10 全部断开,50Hz 处产生的相移仅为 0.0004。考虑到分流器存在寄生电 感,较大时需要进行补偿。当分滤器阻值很小时,如,小于 200,特别要注意此 问题。AD7755 的供电电压由电容分压器分压、二极管整流、RC 滤波和 7805 IC 稳压产生。7805 的输出以 C13(10F)和 C12(100nF)退耦,接 AD7755 的 DVDD。VDD 再经 R22(10)、C10(100nF)和 C11 (220F) 滤波,接 AD7755 的 模拟电路电源管脚 AVDD。AD7755 的 CLKIN 和 CLKOUT 管脚接 3.579545MHz 晶体和 2 只 22pF 陶瓷电容。考虑抗电磁干扰,除原有的滤波电路 外,原理图电流输入通道中增加了 Z3、Z4 铁氧体,电源电路部分增加了由 Z1 铁 氧体、C16 电容和 MOV1 金属氧化物压敏电阻组成的滤波网络等。 3.6.3.3 C8051F360 单片机部分管脚及参数 由原理图知: P1.0P1.7 分配给八个用户,作为脉冲输入端口。 P2.0 和 P2.1 分配给 LED 显示部分作为时钟信号和数据输入。 P2.4 和 P2.5 分配给 24C16 作为 SCL 和 SDA 信号脚。 此外,C8051F360 功能强大,结构复杂,其余端口与本设计无关,故其分 配情况不再详述。 晶振采用 11.0592MHz,电源使用 3.3V。 3.6.3.4 电源参数 220V5V 的共两套,一套给 AD7755,另一套给显示模块和 5V3.3V 电源。 5V3.3V 电源供给 C8051F360 和 24C16。 220V5V 转换电路中,相关参数如下: C1=330uf,为滤波电容;C2=0.33uf ,用于抵消输入线较长时的电感效应, 山东科技大学课程设计 9 以防止电路产生自激震荡;C3=1uf,用于消除输出电压中的高频噪声。 图 3.6.2 AD7755 性能测试电路 3.6.4 器件选择: AD7755 电能脉冲发生器的选择: AD7755 是美国 AD 公司生产的专用于功率/电能测量的低成本集成电路。 它的技术指标满足 GB/T17215-1998 标准规定的准确度等要求。 AD7755 有 24 条引脚,以 DIP 和 SSOP 形式封装。 AD7755 在电子电能表中 的连接如图 1 所示。管脚功能如下: P1 DVDD,数字电路电源,5(5%)V ;P2AC/DC, 高通滤波选择脚,逻辑高,高 通滤滤器使能;P3 AVDD,模拟电路电源,5(5%)V ;P4、P19 NC,未接;P5-P6 V1P-V1N,通道 1(电流通道)模拟输入,最大差动输入电压为470mV;P7-P8 V2N-V2P,通道 2(电压通道)模拟输入,最大差动输入电压为660mV; P9 RESET,复位引脚,逻辑低使 ADC 和数字电路保持复位状态,清内部寄存器;P10 REFIN/OUT,电压基准脚,片上基准为 5(8%)V,可接外部基准源;P11 AGND,模 拟电路参考地;P12 SCF,校准频率选择脚; P13、P14 S1、S0, 数-频转换频率选择 脚;P15、P16 G1、G0,通道 1 增益选择脚;P17 - P18 CLKIN- CLKOUT,外接时 钟,钟频 3.579545MHz;P20 REVP,负功率指示脚 ,电压信号和电流信号之间的相 位差90 时变为逻辑高 ;P21DGND,数字电路参考地;P22 CF,校准频率输出; P23、P24 F2 、F1,低频输出。 它由模拟电路(模数转换电路、基准电路与电源电压监测电路)和数字信号 处理电路两部分组成。被测电压、电流转换为数字量后,接下来的信号处理都在 数字域实现;AD7755 内部的相位校正电路、高通滤波器、乘法器、低通滤波器、 数字- 频率转换器等都为数字电路。AD7755 内有两个以 900kHz 过采样速率采 样的 16 位 2 阶 - 模数转换器(ADC)。被测电流经可编程增益放大器(PGA) 放大后接电流通道的 ADC,并由此 ADC 转换为对应的数字信号。再经相位校正 山东科技大学课程设计 10 和高通滤波,进入乘法器。乘法器的另一路输入是由电压通道 ADC 转换而来的、 与被测电压对应的数字信号。相乘后产生瞬时功率信号。此信号经低通滤波器 滤除其中的交流分量,提取出负载消耗的瞬时有功功率。AD7755 对这个瞬时有 功功率信号进行一段时间的累计、平均,求得平均有功功率,以较短时间对瞬时有 功功率进行累计,求得与瞬时有功功率成正比的高频频率并经 CF 输出,用于校准 或送微控制器累加计数,实现对电能的计量。电流通道的 PGA 的增益受管脚 G1、G0 控制。 高 通滤波器是否接入受管脚 AC/DC 控制。逻辑高,HPF 使能。用来去除电流通道 的直流偏移和由此引起的误差。高通滤波器接入或断开造成的相移,由相位校正 电路校正,使电压通道和电流通道的相位匹配。如前所述,管脚 F1、F2 输出与平 均有功功率成正上的电压有效值具有下列关系: fF1=fF2=8.06U1U2Gf1-4U2REF(1) 式中,U1、U2 分别为电流通道和电压通道输入端的 rms 差动电压(V),G 为电 流通道的增益,选择方法见表 1;UREF 为基准电压值 (V);f1-4 为以 S1、S0 逻 辑输入选择的频率(Hz),选择方法见表 2。 表 3.6.1f1-4 等选择表 表 3.6.1 第 7 列是与两个通道都输入最大电压所对应的最高输出频率 (Hz)。考虑到实际电网电压存在波动和负载电流可能超载,设计电能表时,两个模 拟通道的输入电压一般都留有足够的超量程余地。比如,取允许的最大值的一半。 山东科技大学课程设计 11 表 2 第 5 列是用管脚 SCF、S1、S0 逻辑输入选择的转换系数,CF 脚输出的频率 为 fCF=KfF1(2)由表 2 知,CF 端输出的频率能高达 fF1 的 2048 倍。 设计参数如下 基准电压: 220V20% 基准电流:Ib=A 最大电流:Imax=4Ib=20A 计量精度:0.001 最小电流:Imin=0.001 脉冲数:1000/KW.H 图 3.6.3 AD7755 电能脉冲发生器 3.7 键盘设计电路 图 3.7 键盘设计电路 键值 1 2 3 4 键码 F7H EFH DFH FDH 键值 5 6 7 8 山东科技大学课程设计 12 键码 FBH BFH 7FH FEH 表 3.7 键值键码对应表 38 采样电路 R 2 C 1 C 2 A G N D V 1 P V 1 N F 1 R 1 I 1 2 3 F 1 A G N D 图 3.8 电流采样电路 使用分流器的电流采样电路如图 2.6 所示,其中 F1 为分流器,R1、R2 为 采样电阻,C1、C2 为采样电容,他们为电流采样通道提供采样电压信号,采样 电压信号的大小由分流器的阻值和流过其上的电流决定。 4 软件电路设计 4.1 主程序流程图设计 山东科技大学课程设计 13 单片机初始化 读取 E2PROM 24C16 存储值 利用定时器 T0 设置中断 读取 P2 口状态 开始 调用显示用户及相应电能子程序 向 E2PROM 中写脉冲 数 循环 结束 图 4.1 主程序流程图设计 4.2 显示用户及相应电能子程序框图 山东科技大学课程设计 14 开始 结束 调用查询键盘程序 处理脉冲数据 调用显示程序显示,并延时一秒 八户是否显示完否 是 图 4.2 显示用户及相应电能子程序框图 4.3 读 24C16 子程序框图 山东科技大学课程设计 15 开始 发送起始地址 送写控制字 向 24C16 送入一个字节串行数据 发送字节地址 结束 写失败 否 是 将字节地址送入 24C16 重新发起始条件 将 24C16 里的数据读出 发控制字 应答则传送 读最后一个数据前发非应答信号 发终止条件 图 4.3 读 24C16 子程序框图 山东科技大学课程设计 16 4.4 写 24C16 子程序流程图 开始 发送起始地址 送写控制字 向 24C16 送入一个字节串行数据 发送字节地址 结束 写失败 否 是 将字节地址送到 24C16 写数据到 24C16 并发应答信号 发数据 否 是 8 个字节发送完否 数据接收错误 是 4.4 写 24C16 子程序流程图 4.5 查询键盘流程图 山东科技大学课程设计 17 将键盘状态存入 74HC165 读出一个键盘状态 键盘是否按下 对相应用户进行清零 键盘状态是否已全部移出 结束 是 是 否 开始 图 4.5 查询键盘流程图 4.6 中断子程序流程图 山东科技大学课程设计 18 开始 将新的脉冲状态存入 20H 单元 新旧脉冲状态进行比较 是否有脉冲来 相应用户的脉冲个数加一 是 否 结束 4.6 中断子程序流程图 5 结束语 两个星期的课程设计结束了,从中我学到了很多东西且感悟良多体会到了 山东科技大学课程设计 19 课本联系实际、设计思想、实际动手能力都有所提高。初学单片机时觉得它深 奥难懂枯燥无味,通过课程设计我体会到了编程的灵活性。巩固了以前所学过 的知识,而且学到了很多在书本上所没有学到过的知识。课程设计从设计电路 到调试结束失败很多次也修改很多次可谓是屡败屡战,可我们并未气馁我们坚 持到了最后虽然最后做出的电路不太让人满足但总算完成了总算看到我们的成 果了总算可以激动兴奋一番了。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知 识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结 论,才能真正弄明白,从而提高自己的实际动手能力和独立思考的能力。在设 计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到 过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学 过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方 法,对单片机汇编语言掌握得不好在老师和学长的辛勤的指导下,最后我 们顺利地完成了这次的课程设计。这次课程设计让我的实际动手能力得到了大 大的锻炼让我解决实际问题的能力得到了大大的提高并对本专业的课程布满了 浓厚的兴趣及对以后的学习充满了信心;决定在以后的学习生活中加强练习端 正心态迎接新的挑战。同时,对给过我帮助的所有同学和各位指导老师再次表 示衷心的感谢! 在设计中借鉴了往届同学以及网上的一些资料,才知道自己还有很多的不 足之处,在编写程序上以及实际运用知识上还很欠缺,所以以后要更多的理论 联系实际,这样才会对知识有更深的了解。 致谢: 通过这次的实验,我深刻认识到自己在理论与实际动手方面结合的不足之 处,对单片机了解和认识的程度不高。在实验中,通过听取学长们的讲解和同 学的互相探讨,终于对实验的基本原理和方法有了一定程度的了解。最后终于 得出了实验程序和结果。 最后,感谢公老师和学长对我们的悉心教导,让我们增长了知识,使实验 圆满做成功。 参考文献 山东科技大学课程设计 20 1 公茂法、黄鹤松、杨学慰等,MCS-51/52 单片机原理与实践 2罗旭、张彦斌等,单相电子式电能表的特点及其原理,第 1 期:10-17,2003. 3邬宽明,单片机外围器件实用手册数据传输接口器件分册, 北京:北京航空航天大学出版 社,1999 年. 4张毅坤、陈善久、裘雪红等编著, 单片微型计算机原理及应用, 西安电子科技大学出版 社,1998. 5马彪 ,基于 ADE7757 的公寓电能计量管理系统设计, 第 2 期:5-8,2001. 6邱关源,电路第四版 ,高等教育出版社,2002. 7公茂法、马宝甫、孙晨等编著,单片机人机接口实例集,北京:北京航空航天大学出版 ,1998. 附录 $NOMOD51 山东科技大学课程设计 21 $include (c8051f360.inc) CLK EQU P1.1 ;LED 显示部分的时钟信号 DATE EQU P1.0 ;LED 显示部分的数据输入 SCL EQU P1.6 ;24C16 的串行时钟信号 SDA EQU P1.3 ;24C16 的串行数据信号 PB0 EQU P2.0 ;P2 口八路信号输入 PB1 EQU P2.1 PB2 EQU P2.2 PB3 EQU P2.3 PB4 EQU P2.4 PB5 EQU P2.5 PB6 EQU P2.6 PB7 EQU P2.7 PD0 EQU P1.4 ;74HC165 的串行输出信号 CLK165 EQU P1.5 ;74HC165 的时钟信号 PL EQU P1.2 ;74HC165 的移位控制端 ORG 00H LJMP MAIN ORG 0BH ;中断入口地址 LJMP T0_INT ORG 0100H /主程序/ MAIN : LCALL CHUSHI ;调用初始化子程序 LCALL I2C_RD ;调用 I2C 总线读子程序 MAIN1: MOV 20H,P2 ; 读取外部 P2 口状态 MOV TMOD,#01H ; 利用定时器 T0 读取外部脉冲 MOV TH0,#0D5H ;定时器定时 50ms MOV TL0,#0A0H SETB ET0 ;开中断 SETB EA SETB TR0 LCALL CLEAR ;调用全部清零子程序 LCALL I2C_RD BEGIN: MOV R0, #60H ;脉冲计数存储首地址 MOV R7, #1 ;初始户名 LOOP : MOV A,R0 LCALL XSYUSHU ;调用显示子程序,显示第六位 LCALL XSYUSHU ;调用显示子程序,显示第五位 MOV B,#10 DIV AB PUSH ACC MOV A,B LCALL XSYUSHU ;调用显示子程序,显示第四位 山东科技大学课程设计 22 POP ACC LCALL XSD ;调用显示小数点子程序,显示第三位 MOV A,#10 LCALL XS ;调用显示子程序,显示- MOV A, R7 LCALL XS ;调用显示子程序,显示户名 MOV A,0FFH ;输入两个灭码 CALL XS MOV A,0FFH CALL XS LCALL DELAY INC R7 INC R0 INC R0 CJNE R7, #9, LOOP ;判断是否显示完八户,显示完顺序执行 LCALL I2C_WR ;启动 24C16 写数据 LJMP BEGIN /初始化程序/ CHUSHI: MOV SFRPAGE,#0FH MOV P1MDIN,#0FFH ;数字输入 MOV P1MDOUT,#0EFH ;推挽输出 MOV XBR1,#40H ;交叉开关使能 MOV PCA0MD,#00H ;关闭看门狗 clear MOV PSCTL,#13H MOV OSCICN,#83H ;内部振荡器允许,不分频 MOV DPTR,#TAB RET /中断子程序/ T0_INT: MOV TH0, #0D5H ;定时器重新赋初值 MOV TL0, #0A0H MOV R1,#60H ;脉冲计数首地址 PUSH ACC ;堆栈保护 MOV A, 20H ;读取 P2 口状态 MOV 20H, P2 JNB ACC.0, BJ1 NEXT1: JNB ACC.1, BJ2 ;判断外部脉冲的状态,为低电平则跳转 NEXT2: JNB ACC.2, BJ3 NEXT3: JNB ACC.3, BJ4 NEXT4: JNB ACC.4, BJ5 NEXT5: JNB ACC.5, BJ6 NEXT6: JNB ACC.6, BJ7 NEXT7: JNB ACC.7, BJ8 LJMP DONE 山东科技大学课程设计 23 BJ1: JB PB0,ADD1 ;与原来外部的状态进行比较 JMP BJ01 ;若相等则继续下一个外部状态 ADD1:LCALL AD01 ;若不等则调用计数子程序 BJ01:LJMP NEXT1 BJ2: JB PB1,ADD2 JMP BJ02 ADD2:LCALL AD02 BJ02: LJMP NEXT2 BJ3: JB PB2,ADD3 JMP BJ03 ADD3:LCALL AD03 BJ03: LJMP NEXT3 BJ4:JB PB3,ADD4 JMP BJ04 ADD4:LCALL AD04 BJ04:LJMP NEXT4 BJ5:JB PB4,ADD5 JMP BJ05 ADD5:LCALL AD05 BJ05:LJMP NEXT5 BJ6:JB PB5,ADD6 JMP BJ06 ADD6:LCALL AD06 BJ06:LJMP NEXT6 BJ7:JB PB6,ADD7 JMP BJ07 ADD7:LCALL AD07 BJ07:LJMP NEXT7 BJ8:JB PB7,ADD8 JMP STP1 ADD8:LCALL AD08 STP1:LJMP DONE DONE:POP ACC ;出栈 LCALL CLEAR1 ;判断是否清零 RETI ;中断返回 /用户 1 计数/ AD01:CJNE R1,#99,AD11 ;判断低字节是否满 99 JMP AD12 ;满 99 低位清零,高位加 1 AD11:INC R1 ;不满 99,低位加 1 LJMP EX01 AD12:MOV R1,#00H INC R1 INC R1 EX01:RET 山东科技大学课程设计 24 /用户 2 计数/ AD02:MOV R1,#62H CJNE R1,#99,AD21 ;62H JMP AD22 AD21:INC R1 LJMP EX2 AD22:MOV R1,#00H INC R1 ;63H INC R1 EX2:RET /用户 3 计数/ AD03:MOV R1,#64H CJNE R1,#99,AD31 ;64H JMP AD32 AD31:INC R1 LJMP EX3 AD32:MOV R1,#00H INC R1 ;65H INC R1 EX3:RET /用户 4 计数/ AD04:MOV R1,#66H CJNE R1,#99,AD41 ;66H JMP AD42 AD41:INC R1 LJMP EX4 AD42:MOV R1,#00H INC R1 ;67H INC R1 INC R1 EX4:RET /用户 5 计数/ AD05:MOV R1,#68H CJNE R1,#99,AD51 ;68H JMP AD52 AD51:INC R1 LJMP EX5 AD52:MOV R1,#00H INC R1 ;69H INC R1 EX5:RET /用户 6 计数/ AD06:MOV R1,#6AH CJNE R1,#99,AD61 ;6AH 山东科技大学课程设计 25 JMP AD62 AD61:INC R1 LJMP EX6 AD62:MOV R1,#00H INC R1 ;6BH INC R1 EX6:RET /用户 7 计数/ AD07:MOV R1,#6CH CJNE R1,#99,AD71 ;6CH JMP AD72 AD71:INC R1 LJMP EX7 AD72:MOV R1,#00H INC R1 ;6DH INC R1 EX7: RET /用户 8 计数/ AD08: MOV R1,#6EH CJNE R1,#99,AD81 ;6EH JMP AD82 AD81:INC R1 LJMP EX8 AD82:MOV R1,#00H INC R1 ;6FH INC R1 EX8:RET /除十显示余数子程序/ XSYUSHU: MOV B,#10 DIV AB PUSH ACC MOV A,B LCALL XS ;调用显示子程序 POP ACC RET /显示子程序/ XS:PUSH ACC MOVC A,A+DPTR ;查询段码 MOV R4,#8 LOOP1: RRC A ;A 中八位循环移入 Cy 位 JC SET1 山东科技大学课程设计 26 JMP SET0 SET1: CLR CLK ;为 1 则将 1 通过C164 写入 LED SETB DATE SETB CLK DJNZ R4,LOOP1 JMP RETURN SET0:CLR CLK ;为 0 则将 0 通过C164 写入 LED CLR DATE SETB CLK DJNZ R4,LOOP1 RETURN:POP ACC RET /显.子程序/ XSD:PUSH ACC MOVC A,A+DPTR ;查询段码 ANL A,#0F7H ;显示小数点 MOV R4,#8 ;八户 LOOP2: RRC A ;A 中八位循环移入 Cy 位 JC SETO1 JNC SETO0 SETO1: CLR CLK ;为 1 则将 1 通过C164 写入 LED SETB DATE SETB CLK DJNZ R4,LOOP2 JMP RETURN2 SETO0: CLR CLK ;为 0 则将 0 通过C164 写入 LED CLR DATE SETB CLK DJNZ R4,LOOP2 RETURN2:POP ACC RET /I2C_WR/ I2C_WR: LCALL START ;调开始子程序 MOV A,#0A0H ;控制字,2416 的物理地址和写控制位 LCALL SENDI2C ;调向 2416 写一字节并接收信号子程序 JB F0,I2C_WR ;若写失败,从头开始 MOV A,#00H ;选择地址 LCALL SENDI2C JB F0,I2C_WR ;至此,地址写完 MOV R0,#60H MOV R7,#16 II1: MOV A,R0 ;将 60h-6FH 的内容写到 2416 中 山东科技大学课程设计 27 LCALL SENDI2C JB F0,I2C_WR INC R0 DJNZ R7,II1 LCALL STP ;调停止子程 LCALL LDELAY RET /I2C_RD/ I2C_RD: LCALL START MOV A,#0A0H ;控制字,2416 的物理地址和写控制位 LCALL SENDI2C ;调 向 2416 写一字节并接收信号子程序 JB F0,I2C_RD ;若写失败,从头开始 MOV A,#00H ;选择地址 LCALL SENDI2C JB F0,I2C_RD ;至此,地址写完 lcall START MOV A,#0A1H ;控制字,2416 的物理地址和读操作位 LCALL SENDI2C JB F0,I2C_RD MOV R0,#60H MOV R7,#16 JJ3: LCALL LOADI2C ;调用从 2416 中读 1 字节子程序 MOV R0,A ;将从 2416 中读出的内容存储到 60h-6Fh 中 INC R0 DJNZ R7,JJ3 INC R0 SETB F0 ;F0=1,读最后一个数据标志 LCALL LOADI2C ;读出一个数据 MOV R0,A LCALL STP ;发终止条件 RET /I2C 启动条件/ START: SETB SDA NOP SETB SCL NOP NOP NOP NOP CLR SDA NOP NOP NOP 山东科技大学课程设计 28 NOP CLR SCL RET /I2C 终止条件/ STP: CLR SDA NOP SETB SCL NOP NOP NOP NOP SETB SDA NOP NOP NOP NOP RET /LOADI2C/ LOADI2C: MOV R5,#08H RCV: SETB SDA ;置数据线为输入方式 NOP CLR SCL;置低准备接受数据位 NOP NOP NOP NOP NOP SETB SCL;置高使数据线上数据有效 NOP NOP NOP NOP NOP CLR C JNB SDA,RCV0;读数据位,若为 0 则置 0 SETB C ;读数据位,若为 1 则置 1 RCV0: RLC A ;接收数据位放入 ACC 中 NOP NOP DJNZ R5,RCV ;没接受完继续 CLR SCL ;接受完置低发应答或非应答信号 NOP NOP NOP 山东科技大学课程设计 29 NOP CLR SDA JNB F0,SENDACK ;判断继续接受数据?如需转发送应答位 SETB SDA ;发送非应答信号 SENDACK:NOP NOP SETB SCL ;置高使应答有效 NOP NOP NOP NOP NOP CLR SCL ;准备接受停止条件 CLR F0 ;清接受非应答信号 RET /SENDI2C/ SENDI2C:MOV R5,#8 CLR SCL AR_LP1: NOP NOP NOP NOP NOP RLC A MOV SDA,C ;传送 1 位数据 NOP NOP SETB SCL ;接收数据 NOP NOP NOP NOP NOP CLR SCL ;准备接受下 1 位 DJNZ R5,AR_LP1 ;8 位发送完 NOP NOP SETB SDA ;发送完,准备接受应答位 NOP NOP NOP SETB SCL ;开始接受应答位 NOP NOP 山东科技大学课程设计 30 NOP NOP CLR F0 ;预先清发送数据出错标志 JNB SDA,ACKEND;判断正常否?正常转 ACKEND SETB F0;未收到,置位错误标志 ACKEND:NOP CLR SCL ;准备下一步操作 NOP NOP RET /LDELAY10ms 延时/ LDELAY:MOV R3,#10 LDELAY1:MOV R2,#0FAH LDELAY2:MOV 50H,#70H DJNZ R2, LDELAY2 DJNZ R3, LDELAY1 RET /延时 1S 子程序/ DELAY: MOV R3,#5 DELAY1: MOV TMOD,#10H SETB TR1 MOV TH1,#3CH MOV TL1,#0B0H JNB TF1,$ CLR TF1 DJNZ R3,DELAY1 RET /清零子程序/ CLEAR1: CLR P1.2 ;P1.2 口清零,准备将按键状态输入 74H165 CLR P1.2 CLR P1
展开阅读全文