基于单片机原理的电能表设计_第1页
基于单片机原理的电能表设计_第2页
基于单片机原理的电能表设计_第3页
基于单片机原理的电能表设计_第4页
基于单片机原理的电能表设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

设计任务LCD设计目的IC掌握信号获取、传输、处理及检测的一般方法;综合运用已有的理论和技术,制定设计方案,掌握用电量的测量方法;IC力;计的基本技能,为今后的深入学习等奠定基础。设计要求参考利用存储电路、IC卡、单片机及其接口技术研制出一种新型电能表,设计内容包括:IC设计合理的计算测量电路;ICLCD应用程序,并对程序作详细的分析和解释。列出制作该装置的元器件,搭建试验电路,并进行试验验证调试。撰写详细的设计技术报告。设计方案与技术分析ICLCDEEPROM1AT89C51IC控制等功能。AT89C51单片机简介Ⅰ、89C51单片机的基本组成本电能表的硬件设计原则是在低功耗的前提下,实现多功能目的,该芯片功耗低,特别PAGEPAGE31适用于电能表控制线路多、功能全、功耗低的要求。它能方便地读取ICEEPROM89C51一个8位的微处理器CPU。片内256字节数据存储器RAM/SFR/果、最终结果以及欲显示的数据等。4KBFlashROM,用以存放程序、一些原始数据和表格。(4)4个8位并行I/O端口P0-P3,每个端口既可以用作输入,也可以用作输出。16/计数器都可以设置成计数方式。5LCDLCD显示IC卡模块EEPROM存储器单片机(AT89C51)电能计量芯片电路电源电路图1硬件系统框图一个全双工UART的串行I/OPC行通信。片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。以上各个部分通过片内八位数据总线相连接。Ⅱ、89C51单片机引脚及其功能如图2所示为单片机AT89C51的引脚图。图2单片机AT89C51的引脚图XTAL(19脚:振荡器反相放大器及内部时钟发生器的输入端。XTAL(18脚:振荡器反相放大器的输出端。RS9脚RST将使单片机复位。P0口3932脚P0口是一个漏极开路的8位准双向I/O端口。作为漏极开路8LSTTLP01,此时P0P3口1017脚P3口是一组带有内部上拉电阻的8位双向I/OP34个TTLP3“1”P3CPU不对P3SFR/输入线时,由内部硬件使锁存器Q1。PEROMALE10ms停止工作。但RAM,RAM电能计量芯片模块采用现在比较流行的电能计量芯片CS5460ACS5460ACrystalCS5460CS5460AΔΣ模-数转换器ADC、高速电能计算功能和一个串ΔΣIRMSVRMS23CS5460ACS5460ACS5460A具有方便的片上AC/DC系统校准功能。“自引导”的特点使CS5460A能独自工作,在系统上电后自动初始化。在自引导模式中,CS5460A从一个外部EEPROM工作时CS5460A概述Ⅰ、基本结构及功能图3CS5460内部结构图CS5460A3一个电流通道可编程增益放大器其增益为1050²一个电压通道固定增益放大器,其增益为10²两个同时采样的AD²两个高速数字滤波器²²一个功率计算引擎²一个片内电压基准²²一个持续监视串口通讯的看门狗²一个双向串行接口²一个校准用SRAMⅡ、主要特性在片计算和处理功能;可以从串行E2PROM具有ACDC看门狗定时器;(6)片上2.5V基准(60³10-6/OC),单电源+5V或双向2.5V±10℅电源;具有功率方向输出指示;脉冲转换;具有相位补偿和系统校准功能;步进电机驱动器;内带电源监视器;10001±0.1%;<12mW;(15)电源配置:VA+=+5V,VA-=0V;VD+=+3V至+5V或VA+=2.5V,VA-=-2.5V;VD+=+3V1、控制命令字CS5460A包含一系列控制命令,对CS5460A写入指定的控制字,即可完成相应的操作。这些控制命令包括:、启动转换命令只要对CS5460A写OXE8控制命令,CS5460A即开始进行AD转换,并输出计算结果,这个命令一般在CS5460A复位操作完成后输入,以使CS5460A进入正常工作状态。0(OXFE)1(OXFF)这两个命令主要用在一连串的读写命令之前,复位串行通信接口。Power_up/HaltControl(OXAO)这个命令主要用在系统校准之前,以中断CS5460A正在执行的操作,而执行系统校准命令。10VIRGO这个命令完成指定的某项系统校准。V、I、R、G、O的说明如下:VI:00-不允许出现0001-电流通道选择电压通道选择R:0-DC1-AC校准G:0-正常操作1-执行增益校准O:0-正常操作执行偏置校准2、控制寄存器ConfigRegister(OX00)Default:=0x000001PC6PC5PC4PC3PC2PC1PC0GIEWAPH1PH0SI1SI0EODDL1DL0RSVHPFIHPFICPUK3K2K1K0K[3:0]:指示将主频MCLK分频作为CS5460A内部时钟DCLK:有效值分别为1、2、4。0001:DCLK=MCLK/10010:DCLK=MCLK/20100:DCLK=MCLK/4IHPF:电流通道高通滤波器控制位0=VHPF:电压通道高通滤波器控制位0=禁止高通滤波器,1=使用所有的滤波器RS:CS5460A复位控制位,当RS=1,CS5460A复位,复位周期至少10个机器周期DCO:当EOD=1,EDIR作为通用输出口,其输出电平由DC0决定。DC1:当EOD=1,EOUT作为通用输出口,其输出电平由DC1决定。EOD:EOUT,EDIR允许控制位。0:允许EOUT/EDIR输出(DEFAULT)1:用户定义的控制输出端SI[1:0]:00:低电平有效DEFAUL。01:高电平有效。10:下降沿有效。11:上升沿有效。EWA:允许多片CS5460A的EOUT和EDIR连接在一起DEFAULT=。GI:电流增益控制0=10;1=50;PC[6:0]:相位补偿,CS5460A没有自动相位补偿功能,通过调整PC[6:0]值可以实现-2.8度到+2.8度的相位补偿。CYCLECOUNTREGISTER(0X05)Bit23bit22bit0这个寄存器的值决定每秒钟完成计算的次数,其计算方法请参见后面的例子。PULSERATEREGISTER(0X06)Bit18bit17bit-5这个寄存器的值决定在某一功率时CS5460A每秒钟输出的脉冲数。其值的设置请参见后面的计算方法。STATUSREGISTERDRDYEOUTEDIRCRDYMATHRESIORVORPWORIRORVROREOREOORRESID3ID2ID1ID0WDTVODIODLSDO/IC状态寄存器指示CS5460Abit都会使bit001/IC:数据无效指示。读状态寄存器时判断该位可以确定该寄存器的值是否有效。LSD:低电压指示,当PFMON相对于VA-电平值低于2.5V时,该位置1。IOD:电流超界指示位,当输入电流值大于指定的满度电流时,该位置1。VOD:电压超界指示位,当输入电压值大于指定的满度电压时,该位置1。WDT:1。ID[3:0]版本标识。EOR:当计算出的能量值太大或太小超出范围时,该位置1。EOOR:当EOUTEOUT超界。VROR:电压超界。IROR:电流超界。PWOR:功率校准超界。VOR:电压校准超界。IOR:电流校准超界。MATH:(0。CRDY:转换完成。EDIR:01EOUT:EOUTDRDY:数据准备好或控制操作完成。CONTROLREGISTER(0X1C)RESRESRESRESRESRESRESRESRESRESRESRESRESRESRESRESMECHRESINTLSYNCNCPUNOSCSTEPSTOP:1=结束EEPROMBOOT模式。RES:保留。MECH:加宽EOUT和EDIR的输出脉宽。INTL:设置/INT引脚为开漏方式。SYNC:使CS5460A内部AD转换脉冲与转换命令同步。NOOSC:停止振荡器振荡。STEP:允许EOUT和EDIR输出作为步进马达驱动信号。Ⅲ、操作时序CS5460A串行口包括4条控制线:串行时钟SCL、串行数据输入SD输出SD)和片选CS,器读写时序如图4所示:图4CS5460A操作时序图CS5460A/SCLK824SCLKADC24位。上电复位后,串行状态机初始化为命令模式,等待接收有效的命令(输入串口的前8为数据寄存器输入输出数据。81624SCLKSDO8位的边界上(8,1624。同样,数据寄存器读出允许采用“命令链16个连续的读数据串行时钟脉冲后,执行写命令字(如状态寄存器清零命令,数据从SDI引脚输入,同时剩下的8位读出数据被传送到SDO16SDO8SDISDO引脚输出数据时,必须用SYNC0(NOP)SDI引脚处于选5图5CS5460A与AT89C51的硬件连接EEPROM存储器模块Ⅰ、AT24C01简介AT24C01是美国ATMEL公司的低功耗CMOS串行256³82.~5.5、擦写次数多(大于10000次、写入速度快(小于10m)等AT24C011,86为AT24C01图6AT24C01的引脚图SCL:串行时钟。在该引脚的上升沿时,系统将数据输入到每个EEPROM器件,在下降沿时输出。SDA:串行数据。该引脚为开漏极驱动,可双向传送数据。A0~A2:器件/页面寻址。为器件地址输入端。Wp:硬件写保护。当该引脚为高电平时禁止写入,为低电平时可正常读/写数据。Vcc:电源。一般输入+5V电压。Vss:接地。Ⅱ、硬件原理图7AT89C5124C01I2C/写校验操作。图7记忆单元硬件原理图LCD显示模块为现实多费率下对相应多项参数的显示,目前大多数相应电能表都采用液晶显示器LCD或发光二极管显示器LED。LCD的优点是一屏可以显示许多字符,工作电流小,供电系统停用图形液晶显示模块GXM12864,它内含KS0108B/HD61202CMOS技术实现的点阵图形LCD模块,有8128³64位映射DDRAM128³64KS0108BKS0107BKS0107B不与CPU和各种同步信号,比较简单。液晶显示模块GXM12864的工作原理图如图8所示。图8LCD显示模块GXM12864的工作原理图电位器R15RSTVout1DB0~DB7P0D/I、R/W线/CSA、/CSBP26、、、0P2.3在进行液晶显示模块的硬件调试时务必注意正确的接线错,否则会烧坏电路上的芯片。为避免液晶模块的损坏,在加液晶驱动电压V0/VEE比加逻辑电压VDD滞后50mV0/VEE需要比逻辑电压VDD提前50ms关断。GXM12864的引脚定义如表1所示。表1GXM12864的引脚定义引脚名称引脚名称引脚定义/CSA、/CSB、2VSSVSS数字地VDD逻辑电源+5VV0对比度调节D/I指令数据通道R/W读/写选择E使能信号、高电平有效DB0-DB78RST复位信号VEE液晶驱动电源A、K背光正电源端、背光接地端电源电路模块+5V-10V电压。本设计中系统采用电池供电,其输入电压为+3V,所以电源部分的设计要求为+3V输入,+5V和-10V双电压输出。MAX1677DC-DCLCD(0.7-5.5V)电池的空间和所需的不同电池电压与容量,灵活的选择电池的种类。9MAX1677Vin=3VVout1和Vout2,分别是+5V和-10V,+5V-10V作为液晶显示模块的背光电源。电路中的其他器件说明如下。

图9 直流电源的设计L1、L2为CoilCraft的DO1608C-103表贴磁芯电感,电感值为10Uh。D1、D216V二极管。R11R12式:R11=R12*[Vout/1.25-1](R12的取值范围为10-200千欧姆)电阻R14和R13的比值决定了LCD对比度输出的电压值VLCD(对应图中的Vout2)需满足下面的公式:R14=R13*|VLCD|/1.25(V)(R14的取值范围为500-2000千欧姆)电阻R8和R7的比值决定了系统欠电压监测的门槛电压值VTRIP需满足下面的公式R8=R7*[VTRIP/0.614-1] (R7≤130千欧)LBO电压,LBO引脚输出为低电平。如果不是用欠电压监测的话,只需要将第三引脚接地即可。1.5VVout1连接MAX1677的第16+5VVout2连接MAX167710-10V前端电路调理模块的设计1、电压调理部分对于系统的前端电压调理部分,我们采用变比为2mA/2mA的电流互感器和高精度电阻作10220V2mA2mA/2mA1125ΩCS5460A然电阻R2RC动电容保护芯片。2、电流调理部分电流调理部分采用变比2000:1的电流互感器,然后经一精密电阻将电流信号转变成电压信号。并加入RC补测信号以差模电压的形式接到CS5460ACS5460A具有相位补偿功能(可进行-2.+2.°的相位补偿,步进0.3°,可以大大减小互感器角差的影响。图10前端调理电路实时时钟电路模块MCUlOs电源掉电情况下的时钟保护电路和备份电源自动切换控制电路RAMMCUMCU8DIPCPU23I/ODSl302DALLAS31RAM,日历时(2.5V5.5V),功耗低芯11图11时钟芯片DSl302的接口电路采用三线串行通讯方式,/RST为通信允许信号,/RST=l,允许通信,/RST=0禁止通信。SCLK为串行数据的位同步脉冲信号。为双向串行数据传送信号。AT89C51单片机通过控制I/ODSl302X1X2的石英晶振,VCClVCC2VCCl1数据传送是以AT89C51AT89C51DSl302入一个命令字节开始。命令字节格式如图12图12命令字节格式命令字节的最高位必须为l,RAM/CK位为RAM/时钟选择位选择RAM操作,RAM/CK=0选择时钟操作A4至A0为片内日历时钟寄存器或RAM地址选择位。选择时钟操作时A4至A0为00H至06H对应日历时钟寄存器地址,分别存放秒,分,时,日,月星期,和年等信息。秒寄存器的最高位为时钟暂停控制位,该位为0时时钟振荡器暂停,DSl302进入低功耗状态,该位为1时启动时钟。地址07H为写保护寄存器,用以控制对片内日历时钟寄存器的写允许,地址08H为涓 流充电控制寄存器,控制内部涓流充电过程及充电电路的连接方式。选择片内RAMA4AORAM00H~1EH,RD/WDSl302RAM)地址,读取数据并通过I/OAT89C51,RD/W=0DSl302AT89C51DSl302RAMDSl302AT89C51I/0SCLK字节为单位,低位在前,高位在后,传送一个字节数据需要8SCLK13图13字节传送时序IC卡模块1、Mifare1射频IC卡Mifare1ICPhilipsMifare1ICS50系列微晶片,其内1KBEEPROM、数字控制模块和一个高效率射频天线模块。卡片本身不带电池供2VIC在信道保证和数据完整性方面,Mifare1标准还提供了信道检测、存储数据冗余校验、三Mifare1IC(1)1KB的EEPROM,分为16个扇区,每个扇区分为4块,每块16B,以块为存取单位。每个扇区有独立的一组)密码及存取权限设置。32具有防冲突机制、支持多卡操作。无电源,自带天线,内含加密控制逻辑和通信逻辑电路。101013.56MHZ。(8)106kbps的快速数据传输速率。(9)10cm(取决于天线设计。(10)工作温度范围:-20--+50。C。Mifare12、H6152图14H6152基本结构示意图H6152的基本结构如图14所示。图中,对外通信的接口为J3和J4。J37RS-232/422LEDH6152PCB板载天线电路和RS-232/422接口的集成读写模块,还提供了RS-232/422TTLH6152+5V工作频率:13.56MHz。、19200bps、38400bps57600bps4(3)接口:RS-232/422/485。天线尺寸:45mm³70mm。。电流供应:80mA。(8)工作温度:-40~+85℃.(9)最大读写距离:50mm。3、IC卡读写电路的原理及说明IC卡应用系统的硬件设计结构框图如图15所示单片机AT89C51是本设计的核心器件它主要完成了对射频卡1卡)的读写操作H6152读写器对射频卡进行读写后通过串口电平转换电路将RS-232电平转换为单片机所识别的 TTL电平,从而达到了使用AT89C51单片机来控制射频卡的读写过程。串口电平串口电平转换电路IC单片机AT89C51IC报警电路15硬件设计结构框图H6152316171816单片机模块图17串口电平转换模块图18H6152读写模块U1AT89C51P1.0H6152H6152XTAL0和XTAL1分别为反向放大器的输入和输出。该反向宽无任何要求,但必须保证脉冲的高低电平要求的宽度。本设计的外部时钟电路是将XTAL0(18XTAL1(19)脚分别对接外部晶体和微调电容的两端所构成。另外单片机中还带有复位端,为了安全方便,单片机采用了上电自动复位和手动复位两种。串口电平转换电路采用MaximMAX3232MAX3232TTL,然后与H6152的RS-232RS-232C和数据通信设备(DCE)之间的接口标准,是在微机接口应用中常用的一种串行通信总线标准,全称为EIA-RS-232C(ElectoronicIndustrialAssociateRecommendedStandard-232RS-232C2522229如COM19RS-232C5~15V(MARK信号5~15V表示逻0(SPACE信号,内阻为几百欧姆,可以带2500pF的电容负载。负载开路时电压不得253V13V0电能表程序设计如图19所示为电能表主流程图:开始开始电能采集实时时钟是峰电?谷电加峰电加数据存储LCD显示IC卡<5°断电图19主流程图程序如下:#include<reg51.h>#include<stdio.h>#include<intrins.h>sbitSDA=P1^3;sbitSCL=P1^4;#defineucharunsigned#definelcdP0sbitrw=sbitrs=P2^2sbite=P2^3sbitbusy=ACC^7unsignedcharcountunsignedchartimer//unsignedcountAunsignedcountBunsignedcount1 //峰值电量unsignedcount2unsignedcountunsigneddecountcountA=0;

//谷值电量voidmain() //主函数程序{countB=ReadMemory();//读电量计数模块值decount=countB-countA; //一样则开始计数;while(decount==0){count++;while(count<100){timer=readbyte(); //if(timer>12)count1++;elsecount2++ ;Remain=total-count1*0.5-count2*0.6; //计算剩余的金额write(count1);write(count2);write(Remain);}}

//向IC卡内分别写入峰值电量、谷值电量、剩余金额if(remian<5.0)flag=1;}

//如果剩余金额不足则置报警显示位unsignedcharControl,enumeepromtypeenumer)//EEPROM程序{voidDelay(unsignedcharDelayCount);/*voidStart(void);/**/voidStop(void);/*IICbitRecAck(void);/**/voidNoAck(void);/*IICvoidAck(void);/*IIC*/unsignedcharReceive(void);/*IICvoidSend(unsignedcharsendbyte);/*IIC*/unsignedchardataj,i=ERROR;biterrorflag=1;/*while(i--){Start();/*启动总线*/Send(Control&0xfe);/*IICif(RecAck())continue;/**/if(RecAck())continue;}Send((unsignedchar)Addr);/*IIC*/if(RecAck())continue;/*if(!(Control&0x01))判断是读器件还是写器件{j=Length;errorflag=0;/*while(j--){Send(*DataBuff++);/*向IIC总线写数据*/if(!RecAck())continue;/*如写正确结束本次循环*/errorflag=1;break;}}else{

if(errorflag==1)continue;break;Start();/*启动总线*/Send(Control);/*IIC*/if(RecAck())continue;//器件没应答结束本次本层循环while(--Length)/*字节长为0结束*/{*DataBuff++=Receive();Ack();/*IIC*/}*DataBuff=Receive();/*NoAck();/*IIC*/errorflag=0;break;}Stop();/*IICif(!(Control&0x01)){Delay(255);Delay(255);Delay(255);Delay(255);return(errorflag);}/*****以下是对IIC总线的操作子程序*****//******启动总线*****/voidStart(void){SCL=0;/*SCL,SDA*/SDA=1;/*状态,SCL=1;_nop_();_nop_();_nop_();SDA=0;_nop_();_nop_();_nop_();_nop_();SCL=0;SDA=1;}/*****IIC****voidStop(void){SCL=0;/*SCL,SDASDA=0;表示一个停止状态,该状态终止所有通讯*/SCL=1;_nop_();_nop_();_nop_();/*SDA=1;_nop_();_nop_();_nop_();SCL=0;}/*****检查应答位*****/bitRecAck(void){SCL=0;SDA=1;SCL=1;_nop_();_nop_();_nop_();_nop_();CY=SDA;/*因为返回值总是放在CY中的SCL=0;return(CY);}/****IIC****voidAck(void){SDA=0;/*EEPROM通过在收到每个地址或数据之后,*/SCL=1;/*SDA低电平的方式确认表示收到读SDA*/_nop_();_nop_();_nop_();_nop_();SCL=0;_nop_();SDA=1;}/*********IIC*****/voidNoAck(void){SDA=1;SCL=1;_nop_();_nop_();_nop_();_nop_();SCL=0;}/*********IIC总线写数据*****/voidSend(unsignedcharsendbyte){unsignedchardatafor(;j>0;j--){SCL=0;sendbyte1;/*CY=sendbyte^7;SDA=CY;/*CY*/SCL=1;}SCL=0;}/*********IIC*****/unsignedcharReceive(void){registerreceivebyte,i=8;SCL=0;while(i--){SCL=1;receivebyte=(receivebyte<<1)|SCL=0;}return(receivebyte);}/********一个简单延时程序*************/voidDelay(unsignedcharDelayCount){while(DelayCount--);}voidlcd_mwcode(uchari) //LCD液晶显示,{rw=1;rs=0;lcd=0;e=1;do{ACC=lcd; //e=0;}while(busy);rw=0;lcd=i;e=1;e=0;}voidlcd_mwdata(uchari) //输入数据,{rw=1;rs=0;lcd=0;e=1;do{ACC=lcd;e=0;}while(busy);rw=0;rs=1;lcd=i;e=1;e=0;}voidsetpos(ucharrow,ucharcol)//选择行,列,{lcd_mwcode(0xb8+row);lcd_mwcode(0x40+col);}voidlcd_init(void) //初始化{lcd_mwcode(0xc0);lcd_mwcode(0x3f);}voiddisp1(ucharcode*hz) //显示汉字上半区,{uchari;for(i=0;i<16;i++)lcd_mwdata(*(hz+i));}voiddisp2(ucharcode*hz) //{uchari;for(i=16;i<32;i++)lcd_mwdata(*(hz+i));}voidselect(ucharx){switch(x){case1:cs1=0;cs2=1;break;//左屏,case2:cs1=1;cs2=0;break;//右屏,default:cs2=0;cs2=0;}}}ucharreadbyte(temp) //时钟程序{uchar i;Iongdelay0;temp=0;for(i=0;i<8;i++){temp=temp>>1:if(dat==1)temp=temp+0x80;clk=1:shortdelay0;clk=0;//时钟下降沿读出有效shortdelay0;}returntemp;}ucharDateWrite(1ongidata*_bur)序

//IC卡程{uchartemp=(uchar*)_Value;//转存指针ucharwritecheck=DATA_ERR;//写入状态标记,用于返回值_buf[0]=*(temp+3);_buf[1]=*(temp+2);_buf[2]=(temp+1);_buf[3]=*temp;//数据转存到缓冲区_buf[4]=~_buf[0];_buf[5]=~_buf[1];_buf[6]=_buf[2];_buf[7]=~_buf[3];//值备份_buf[8]=_bur[0];_buf[9]=_buf[1];_buf[10]=_buf[2];_buf[11]=_buf[3];_buf[12]=_LgeAdr;_buf[13]=~_LgcAdr;_bull14]=LgcAdr;_buf[15]=~_LgcAdr;//转存地址,并备份writecheck=writecheck&mifs_write(_block+1,_buf)writecheck=writecheckmifs_write(_block,_buf)writecheck}reset_5460=0;//reset_5460为CS5460A的复位脚 //计量模Delay_10MS();reset_5460=1

温馨提示

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

评论

0/150

提交评论