单相电子式预付费电度表单片机期末课程设计Word下载.docx
《单相电子式预付费电度表单片机期末课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《单相电子式预付费电度表单片机期末课程设计Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
若为空卡,则显示“空卡”。
4、当用电时,剩余电能递减,已用电能递增。
5、当插入无效卡时,系统提示“IC卡型号不对,请换卡”。
6、当电用完时,切断电源,并显示:
“电用完,请及时购电”。
第2节系统主要硬件电路设计
2.1有功电能测量的基本原理
本设计采用有功电能测量集成电路SM9903,芯片内部包含了四象限模拟乘法器、积分器、电压/频率转换器VFC、计数器(分频器)及控制逻辑,它能将正弦电压和电流相乘后,转换为频率输出。
只需对输出脉冲累计计数,就可计量出电能。
在正弦稳态情况下,设正弦电压和电流分别为:
(2-1)
(2-2)
式中,u为交流电压瞬时值,i为交流电流瞬时值,U为交流电压有效值,I为交流电流有效值,
为交流电的角频率,
=
u-
i为电压电流的相位差。
经四象限模拟乘法器相乘后的瞬时功率为:
(2-3)
可见,瞬时功率有恒定分量UI
和正弦分量两面三量两面三刀部分,正弦分量的频率是电压(或电流)频率的两倍。
图2-1正弦电流、电压和瞬时功率的波形图
在图2-1中,u是瞬时电压,i是瞬时电流,p是瞬时功率。
瞬时功率p经积分器后,得有功功率P,即
P=
(2-4)
以上分析表明,有功功率P为恒定分量,将正比于P的电压经V/F变换后,输出的是频率随P变化的脉冲,只需将脉冲累计计数,则计数值N即为电能。
2.2预付费电度表电路工作原理
预付费电度表的硬件电路可分为电能计量电路、显示电路、IC卡接口、电能存储器、掉电检测和电源几大模块。
2.2.1电能计量电路
电能计量电路采用了电度表专用集成电路SM9903。
SM9903采用3
m硅栅BICMOS工艺制成。
电路设计先进,内部集成有缓冲放大器、乘法器、V/F型A/D转换器等电路。
本芯片模拟部分和数学部分可分开供电,所以可靠性较高。
封装采用DIP20塑封。
图2-2SM903构成的电能计量电路
2.2.2控制部分
控制部分为整个电度表的心脏,实现电能脉冲、掉电信号、IC卡信号、串行EEPROM数据的采集与读写,完成显示驱动模块的控制和驱动等功能。
单片机的选择是决定电度表性能的关键因素,本设计采用MCS-51系列单片机,其特点是通用强,堆栈丰富和编程容易。
51系列单片机的指令系统中,2-3B的指令很多。
当程序指针PC跳飞至某条指令的中间时,会把操作数当成指令码执行而引起混乱,这一致命的弱点将导致电度表的可靠性下降。
图2-3由AT89C52组成的主控电路
2.2.3显示电路
本系统采用液晶显示器。
其特点是显示内容丰富(可显示汉字),功耗小,可靠性高,电路简单。
器件型号是:
SMG12232B-2,显示容量为122*32点阵。
采用总线方式连接。
图2-4液晶显示接口电路
2.2.4IC卡接口电路
IC卡接口电路采用的是Atmel公司的存储IC卡AT24C01,用于存储由售电管理系统写入的密码、卡号、电度数等,是电管部门与用户连接的桥梁。
为了提高IC卡操作的可靠性,必须有卡上下电控电路、卡插入检测电路、卡短路检测电路等辅助电路,结合软件可以大大提高其读写的准确性和可靠性。
图2-5IC卡接口电路
2.2.5电能存储器
电能存储器由串行EEPROM和上拉电阻组成,在串行时钟和数据端接了上拉电阻R25和R27,分别连接到IC4的P3.0和P3.1端。
串行EEPROM选用AT24C04,AT24C04为低电压(2.5V-5.5V)、长寿命(可擦写10万次以上)器件。
在掉电时存储剩余电度数。
图2-6电能存储电路
2.2.6掉电检测电路
掉电检测电路比较器(运放LM393)、电压基准LM336(2.5V)、R31、R32、R33、R34、R35、R36和二极管VD7组成。
图2-7掉电检测电路
2.2.7磁保持继电器驱电路
磁保持继电器使电器能使电磁线圈中保持上次驱动脉冲所注入的磁场不变,即在正常工作时不需要加驱动电流,只在需要改变触点状态时加上200ms左右的反向脉冲即可。
随后不需要任何驱动。
这就大节省了能量,降低了功耗。
磁保持继电器由AT89C52的P1.0、P1.1发出控制信号,P1.1为高电平时线圈中有正向电流,P1.0为高电平时线圈渡过反向电流。
驱动电路由电阻R21、R45、R46、R47、R48、R49、R50、R51、PNP三极管VT1、VT4,三极管VT5、VT6、VT7、VT8组成。
L为电磁圈。
当P1.1=1、P1.0=0时三极管VT4、VT7、VT8导通,而VT1、VT5、VT6截止。
流经L的电流方向为+12V=>VT4的E极=>VT4的C极=>线圈B端=>线圈A端=>VT7的C极=>VT7的E极=>地,继电器触点接通;
当P1.1=0、P1.0=1时三极管VT4、VT7、VT8截止,而VT1、VT5、VT6导通。
流经L的电流方向为+12V=>VT1的E极=>VT1的C极=>线圈A端=>线圈B端=>VT6的C极=>VT6的E极=>地,继电器触点断开。
当P1.1=P1.0=0时,所有三极管均截止,线圈无电流。
P1.1=P1.0=1是不允许的情况,因为这时所有的三极管导能,功耗很大。
图2-8磁保持继电器驱动电路
第3节系统的软件设计
系统软件程序设计主要包括:
主程序设计,IC卡检测及读写程序,外中断0服务程序(掉电保护),定时器0中断服务程序等。
3.1主程序设计流程图以及相应代码
图3-1主程序流程图
ORG0100H
MAIN:
MOVSP,#60H;
堆栈设置
LCALLDIRRST;
执行显示复位程序
LCALLKEYRST;
执行键盘复位程序
LCALLAT24RST;
执行E2PROM复位程序
LCALLAT24RSTI;
执行IC卡复位程序
LCALLDDJCRST;
设置中断
LCALLDLCSRST;
设置定时器
MAIN1:
LCALLKEY;
执行键扫描程序
MOVA,SEER
CJNEA,SEE,MAIN3
MOVA,#1
CJNEA,SEE,MAIN2
SJMPMAIN4
MAIN2:
MOVA,#2
CJNEA,SEE,MAIN5
MAIN3:
MOVSEER,SEE
LCALLLCDRESET;
执行液晶显示器复位程序
MOVA,#00H
LCALLLCDFILL
MAIN4:
LCALLDIR;
执行显示程序
MAIN5:
LCALLICK;
执行IC卡检测及读写程序
AJMPMAIN1
3.2IC卡检测及读写程序设计
ICK:
JNBK2,ICK1
SETBVCCI
RET
ICK1:
MOVDEL,#10
LCALLDELY
JNBK2,ICK2
ICK2:
CLRVCCI
JBVCCDL,ICK3
MOVSEERR,SEE
MOVSEE,#5
LCALLDIR
MOVDEL,#60
MOVSEE,SEERR
ICK3:
MOVMRDI,#00H
MOVNUMBYT,#8
MOVSLA,#0A0H
LCALLRDNBYTI
MOVA,#0AAH
CJNEA,MRD1I,ICK4
CJNEA,MRD2I,ICK4
CJNEA,MRD3I,ICK4
CJNEA,MRD4I,ICK4
CJNEA,MRD5I,ICK4
CJNEA,MRD6I,ICK4
CJNEA,MRD7I,ICK4
CJNEA,MRD8I,ICK4
SJMPICK5
ICK4:
MOVSEE,#4
ICK5:
MOVMRDI,#10H
MOVNUMBYT,#3
CJNEA,MRD1I,ICK6
CJNEA,MRD2I,ICK6
CJNEA,MRD3I,ICK6
MOVSEE,#7
ICK6:
MOVSEE,#8
MOVMTD1I,#00H
MOVMTD2I,#00H
MOVMTD3I,#00H
MOVMTDI,#10H
MOVNUMBYT,#4
LCALLWRNBYTI
CLRET0
CLRTR0
MOVA,MRD3I
CLRC
ADDA,SDL3
MOVSDL3,A
MOVA,MRD2I
ADDCA,SDL2
MOVSDL2,A
MOVA,MRD1I
ADDCA,SDL1
MOVSDL1,A
LCALLZHCS
MOVTH0,#0FFH
MOVTL0,#0FEH
SETBET0
SETBTR0
MOVSEE,#12
ICK7:
JBK2,ICK8
SJMPICK7
ICK8:
MOVSEE,#2
3.3外中断0服务程序的流程图以及代码
图3-2外中断0服务程序(掉电保护)流程图
外中断初始化程序-----------
DDJCRST:
SETBIT0
SETBEA
SETBEX0
;
外中断服务程序
DDJC:
PUSHA
PUSHB
PUSHDPL
PUSHDPH
PUSH00H
PUSH01H
PUSH02H
PUSH03H
PUSH04H
PUSH05H
PUSH06H
PUSH07H
MOVJWW,C
MOVMTD1,YDL1
MOVMTD2,YDL2
MOVMTD3,YDL3
MOVMTD4,YDL4
MOVMTD5,SDL1
MOVMTD6,SDL2
MOVMTD7,SDL3
MOVMTD,#00H
LCALLWRNBYT
MOVC,JWW
POP07H
POP06H
POP05H
POP04H
POP03H
POP02H
POP01H
POP00H
POPDPH
POPDPL
POPB
POPA
RETI
3.4定时器0中断服务程序以及代码
图3-3定时器0中断服务程序流程图
DLCSRST:
MOVTMOD,#05H
MOVTL0,#0FFH
MOVMRD,#00H
MOVNUMBYT,#7
LCALLRDNBYT
MOVYDL1,MRD1
MOVYDL2,MRD2
MOVYDL3,MRD3
MOVYDL4,MRD4
MOVSDL1,MRD5
MOVSDL2,MRD6
MOVSDL3,MRD7
MOVA,SDL1
CJNEA,#00H,DLCSRST1
MOVA,SDL2
MOVA,SDL3
SETBDYKG
MOVSEE,#9
DLCSRST1:
CLRDYKG
DLCS:
CJNEA,#00H,DLCS1
AJMPDLCS3
DLCS1:
MOVA,#100
ADDA,YDL4
MOVYDL4,A
CLRA
ADDCA,YDL3
MOVYDL3,A
ADDCA,YDL2
MOVYDL2,A
ADDCA,YDL1
MOVYDL1,A
SUBBA,#100
SUBBA,#00H
CJNEA,#00H,DLCS2
CJNEA,#4EH,DLCS2
CJNEA,#20H,DLCS2
MOVSEE,#13
DLCS2:
DLCS3:
ZHCS:
MOVZY4,YDL4
MOVZY3,YDL3
MOVZY2,YDL2
MOVZY1,YDL1
MOVZS3,SDL3
MOVZS2,SDL2
MOVZS1,SDL1
MOVR7,#32
MOVR2,A
MOVR3,A
MOVR4,A
MOVR5,A
MOVR6,A
YBCDT1:
MOVA,ZY4
RLCA
MOVZY4,A
MOVA,ZY3
MOVZY3,A
MOVA,ZY2
MOVZY2,A
MOVA,ZY1
MOVZY1,A
MOVA,R6
ADDCA,R6
DAA
MOVA,R5
ADDCA,R5
MOVA,R4
ADDCA,R4
MOVA,R3
ADDCA,R3
MOVA,R2
ADDCA,R2
DJNZR7,YBCDT1
ANLA,#0FH
MOVSEE08,A
SWAPA
MOVSEE09,A
MOVSEE06,A
MOVSEE07,A
MOVSEE04,A
MOVSEE05,A
MOVSEE02,A
MOVSEE03,A
MOVSEE00,A
MOVSEE01,A
MOVR7,#24
SBCDT1:
MOVA,ZS3
MOVZS3,A
MOVA,ZS2
MOVZS2,A
MOVA,ZS1
MOVZS1,A
DJNZR7,SBCDT1
MOVSEE16,A
ANLA,#0FH
MOVSEE17,A
MOVA,R3
MOVSEE14,A
MOVSEE15,A
MOVSEE12,A
MOVSEE13,A
MOVSEE10,A
MOVSEE11,A
RET;
结束语
通过这次的课程设计让我明白了自己对单片机的整体运用还不太会,虽然在上课的时候觉得好像自己都懂了,但一旦运用到实现中就不会了,这也充分说明了要想把一种知识学会,一定要到实际行动中去。
只有自己动过手才能真正明白自己掌握了多少,什么方面是自己比较陌生的。
不过通过这次的课程设计让我的知识也增长了不少。
以前我不知道课程设计应该怎么写,如今我知道了,这正是从这次课程设计中学会的,更重要的一点是让我对单片机的了解有了更加深刻的了解,刚一开始接触时我不知道应该如果下手,于是查了大量的书籍,在写该课程设计时自己也在不断的学习,在不知不觉中自己已经对单片机的了解进入了更高层次的地步。
本设计有很多优点,比如说电能计量准确,精度高,IC卡的保密性高,可以显示剩余电能值,已用电能值,当电能不足时会提醒用户及时购电,具有电保护等,本设计的功能已经在前面讲过了,所以该设计一定能得到广泛的传播,应用领域会越来越多。
虽然本设计有很多优点,但是本设计还有一些不足之处:
众所周知系统失效和硬件损坏