【《智能水表的软件设计案例》3000字】_第1页
【《智能水表的软件设计案例》3000字】_第2页
【《智能水表的软件设计案例》3000字】_第3页
【《智能水表的软件设计案例》3000字】_第4页
【《智能水表的软件设计案例》3000字】_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

智能水表的软件设计案例目录TOC\o"1-3"\h\u4349智能水表的软件设计案例 135781.1智能水表的设计思路 177811.2智能水表的主程序 242681.3智能水表的子程序 3251351.3.1初始化模块 4316961.3.2流量监测模块 5120051.3.3IC卡处理模块 6221231.3.4LCD显示模块子程序 670301.3.5阀门模块 7244981.4智能IC卡水表通信过程与协议 7180061.1.1非接触IC卡与读卡器的通信过程 7286851.1.2通信协议 7130441.5MFRC500的命令集与内部寄存器 8243941.1.1MFRC500的命令集 870561.1.2MFRC500的内部寄存器 84071.5非接触IC卡的指令流程 8为了实现智能水表流量采集、信息显示、阀门控制等功能,软件设计主要有:主程序、初始化模块、IC卡设备模块、LED显示模块等、阀门控制模块等,针对每个模块都有程序管理编程,经过单片机的核心控制,统一协调每个模块的功能实现,最终完成智能水表系统的设计成型。1.1智能水表的设计思路前文介绍了硬件系统设计的思路和细节要点,硬件功能结合软件程序,才能实现孵化箱智能系统的执行,软件的设计逻辑要求严密,必须要对系统执行逻辑有清晰的认识,结合算法进行编程,将程序写入单片机,单片机会按照程序语言的指令控制各种信息,编写程序的步骤设计了主程序、初始化程序、显示子程序等。1.2智能水表的主程序主程序作为智能水表的主控软件程序,发挥着重要作用,当系统启动的时候,首先需要完成各种模块对应端口的初始化操作,调节各类参数指标,初始化程序主要控制内部存储初始、特殊功能寄存器参数设置、LED显示模块运行参数设置。在该系统里面我们采用的是中断机制,主程序将会比对中断参数设定,更具数值对应的吻合与否,判断出系统的运行状态,是否需要做相应的调整。程序执行操作周期性的扫描,当没有出现中断信号指令的时候,系统整体进入半待机的工作状态,此时的系统功耗很低,电源能量主要维持核心基础模块运行,这样能够极大的节约能源消耗,保证水表系统的使用耐久度。当中断信号指令发出,系统开始整体运行,对中断信号的模块进行处理,以此循环。1.3智能水表的子程序单片机的子程序分为以下几个模块,初始化模块、水量计量模块、卡处理模块、阀门处理模块、显示模块。每个模块逐一运行,占用全部的资源,中断程序尽量做到最小的堆栈、最大的RAM利用率。每个模块都可以独自处理事物,更加方便独立编程、调试、测试。在单片机的调控下智能水表的的操作按照以下图所示步骤进行,如图4-1。图4-1各模块程序流程图依次是水量事件处理程序、卡事件处理程序、显示事件处理程序、阀门事件处理程序之后返回水量时间处理检测是否处理完毕,完毕之后既是完成了智能水表的工作流程,进入低功耗模式,等待被中断唤醒。1.3.1初始化模块初始化是对内部存储器单元清零,将特殊功能寄存器设置初值、液晶显示设置等。接下来进入到主循环,判断电源、电压是不是没有错误的,要是所有都正常就打开阀门供水。要是有低电压出现,系统就会提示欠压,蜂鸣器就会发出报警,以提醒用户更换新的电池;当剩余水量即将用尽时,系统也会报警,以便提醒用户充值,要是用户没有及时的充值,当剩余水量为零的时候,阀门就会关闭。初始化模块的功能:1)完成对单片机中各功能模块的控制寄存器初始化设置;2)完成对单片机I/O口的初始化设置;3)判断RAM数据的可靠性;4)调用状态检测程序对水表状态进行初始化设置。1.3.2流量监测模块流量监测模块主要功能:1)确认有效地流量脉冲;2)依据剩余的水量判断对用水量不足时关闭阀门,而且作为报警关闭阀门标志位;3)对实际的用水量进行处理;水量计量模块程序流程图如图4-3。图4-3水量计量模块程序流程图1.3.3IC卡处理模块IC卡处理模块的主要功能:1)判断IC卡是否为本装置相应的卡;2)判断IC卡的密码正确与否;3)根据卡类型与设置信息进行相对应的操作。在设计中,不同类别的IC卡有着不一样的认证方式,同一类的IC卡在不同的阶段也有着不一样的认证方式,所以认证的过程很是复杂,因此在设计中单独设计了一个对卡进行认证的功能子程序。程序流程图如图4-4。图4-4IC卡处理模块程序流程图1.3.4LCD显示模块子程序在智能水表设计系统中的显示模块和单片机采用间接方式相连接。显示模块是一个慢显示的器件,因此在执行每一条指令之前,要确认好模块的忙标志位为低电平,表达不忙的意思,若不是如此,此指令失效。要显示字符的时候,要先输入显示字符的地址,告诉模块显示字符的地方在哪里。1.3.5阀门模块根据智能水表的状态与其他模块的设定,来判断阀门是不是动作,同时监控动作的过程,当不可以一次到位时候,可以连续且有条件的4次动作,来保证动作的可靠性。当接连的5次动作不能发挥作用的时候,设置为阀门损坏的标志,以保障阀门的问题不会变大。1.4智能IC卡水表通信过程与协议1.1.1非接触IC卡与读卡器的通信过程非接触式IC卡与读卡器的交易过程,实际上就是IC卡和读卡器之间的数据交换和对IC卡内EEPROM存储器中的数据进行处理的过程。在数据交换过程中,为了确保卡和读卡器之间数据的同步及数据能被正确接收、识别,需要建立系统的通信协议。在交易的过程中,非接触式IC卡遵守通信协议,根据接收的指令,在有限状态机的控制下执行一个工作过程,从而完成所需要的功能。接下来就分别介绍读卡器与IC卡之间的通信协议、MFRC500的命令集及卡对指令的执行过程。1.1.2通信协议非接触式IC卡与读卡器之间采用半双工的通信方式进行通信,使用13.56MHz高频电磁波作为载波,数据以106kbit/s进行传送。在非接触式IC卡与读卡器之间的异步通信中,采用了起止位同步法的帧结构,有以下3种帧结构。(1)复位请求指令的帧结构:起始位、7个数据位和停止位(不包括奇偶校验位)。(2)标准的帧结构:起始位、n个字符(每个字符为8位数据位,还有1位奇偶校验位)和停止位。(3)防冲突指令的帧结构:标准指令结构包括7个字节长度的数据,分为两部分,读卡器传输给IC卡的数据为第一部分,包括一字节的选卡操作码(SEL)、一字节的有效位个数(NVB,有效位个数确定其后读卡器发出的卡序列号的数据位的个数)和卡序列号(UID,在0位到40位之间),第一部分数据最小长度为16位,最大长度为55位;IC卡返回给读卡器的数据为第二部分,是IC卡返回的卡序列号(读卡器发出)的剩余部分,第二部分数据最大长度为40位,最小长度为1位。当这两部分以字节为单位分开时,第一部分的最后一位后加一位奇偶校验位。1.5MFRC500的命令集与内部寄存器1.1.1MFRC500的命令集MFRC500的状态由可执行特定功能的命令集决定,这些命令可通过将相应的命令代码写入Command寄存器来启动,处理一个命令所需要的变量和数据主要通过FIFO缓冲区进行交换。对MFRC500的命令集的介绍可参考相关手册。1.1.2MFRC500的内部寄存器MFRC500共有64个寄存器,8个寄存器为一页,每页的第一个寄存器为页寄存器,其地址分别为0x00、0x08、0x10、0x18、0x20、0x28、0x30、0x38。命令寄存器可用于启动或停止命令执行,通过写入相应命令码至命令寄存器来实现,其所需变量和数据主要由FIFO缓冲器交换。FIFO数据寄存器是内部64字节FIFO缓冲器中的数据输入与输出端口,输入输出数据流在FIFO缓冲器中完成转换,可以并行输入输出。Interrupt寄存器是中断请求标志寄存器,当中断产生时,需要由该寄存器的相关标志位来判断中断的类型。1.5非接触IC卡的指令流程非接触式IC接收到读卡器的指令后,经过指令译码,在有限状态机的控制下进行数据处理,并返回相应的处理结果。非接触式IC卡与读卡器之间的一个完整的交易过程。(1)初始化系统的初始化包括单片机的初始化和对MFRC500内部寄存器设初值、打开RF场以及X5045复位等操作。(2)发送Request指

温馨提示

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

评论

0/150

提交评论