3软件设计
3.1主程序流程
软件是电表的灵魂所在。电能表需要完成电能计量、费率和时段控制、查询、显示、电费充值、负荷控制、事件记录、测试输出等功能。电能表软件设计主要采用C语言,采用模块化编程思想,主要包括以下几个模块:上电初始化模块、主程序模块、电量累计模块、数据存储模块、中断程序模块、LCD显示模块、按键处理模块、费率处理模块、实时时钟处理模块、射频读写模块、通讯事件处理模块、负荷控制模块等。主程序流程图如图4所示。
图4主程序流程图
主程序检查脉冲中断子程序累计的用电量是否达到某个预定的值(如0.1kWh)。到达则将此值记入累计用电量的单元。因为是复费率电能表,根据实时时钟切换费率,要按设定的不同时段将它们分别存入峰电量、平电量或谷电量单元,并按照需求显示电量以及相关数据。
3.2射频卡读写流程
Mifare卡与读写器天线之间的工作距离≤10mm,数据传输速率为106kbit/s,完成一次读写的时间可小于0.1s。该卡具有防冲突功能。整个电路(除线圈外)集成在一个芯片内。单片机首先对MFRC500进行初始化配置,寄存器设置好后MFRC500就可以接收MCU的命令执行操作,实现与Mifare卡片通信了。Mifare卡可以根据接收到的指令进行相应操作。但是单片机并不是通过简单的指令就可以读写IC卡片,需要一系列的操作才能完成通信。主要包括:1)请求唤醒;2)防重叠(防止多张卡片重叠造成的数据错误);3)选择卡片;4)密码认证;5)读写操作。单片机对Mifare卡片的这一系列操作流程必须按固定的顺序进行。当有Mifare卡进入到射频天线的有效范围,读卡程序将开始进行上述一系列的操作。为提高处理和响应速度,程序设计采用单片机汇编语言和C语言混合编程。中断服务程序采用汇编语言编写.其它程序采用C语言编写,调用PHILIPS公司提供的基本库函数实现各种功能。