基于单片机的IC卡智能水表控制系统设计附程序+图 联系客服

发布时间 : 星期二 文章基于单片机的IC卡智能水表控制系统设计附程序+图更新完毕开始阅读6dd0da7804a1b0717fd5ddc6

上电复位初始化读取EEPROM中信息YES电压过低?NO表被拆卸?NO按键按下?NO有卡插入?NONO置电压低标志YES置拆卸标志YES调用显示程序YES调用卡处理程序有流量传感信号?YESNO信号有效?YES扣水处理剩余水量为0NONO剩余水量不足?YES报警提示YES关闭阀门睡眠处理进入睡眠 图4.1 系统主程序流程图

INT0保护内容进栈M=M+1M=N?YES剩余水量-1NO用水总量+1YES剩余水量为0?NO关闭阀门剩余水量小于5吨?YES报警提示NO保护内容出栈中断返回 图4.2 外部中断INT0子程序

4.3 外部中断1子程序

以下四种情况均可以使INT1产生中断 (1) 水表被拆卸;(2) 电池欠压或取出电池;(3) 有按键按下;(4) 有IC卡插入。当产生中断后,中断程序马上依次检测P3.6口、P3.2口、P3.3口、P1.5口(原理图见总电路图中检测模块),以确认是哪种情况产生的中断后作出相应处理。其具体流程图如图4.3所示,具体程序见附录B。

INT1保护内容进栈表盖被拆卸吗?NO电池欠压吗?NO表盖被打开吗?NONO有卡插入吗?YES卡处理程序YES报警,置开盖记录YES保护必要的数据存入EEPROM调用显示关阀门保护内容出栈,开中断中断返回 图4.3 外部中断INT1子程序

4.4 IC卡的读写软件设计

系统软件设计的流程应为确认有卡插入后,延时,待IC卡供电电路稳定,读IC卡标志位,并与系统中保存的标志比较,确认后,读数据区。为提高可靠性,IC卡中的数据在两个不连续区作备份,第二组数据作校验。为防止有损坏的字节和其它因素影响数据不可靠,建议将每次写入的数据再读出比较,判断写入的数据是否正确,从而达到保证 对IC书写操作的无误。下面详细地介绍了它的工作原理。

4.4.1 SDA和SCL信号

SDA和SCL双向总线采用I2C-bus(inter-intergrad circuit bus)汇流总线技术,所有的控制命令和数据传输均由这两条双向总线执行,采用SDA和SCL,两条总线就可实现对E2PROM进行读写,并且在读写过程中其信息传递的波特率可以从0到100kbps,其数据传输及时钟脉冲时序图如图4.4所示。

SDA起始条件停止条件SCLACK

图4.4 数据传输及时钟时序图

IC卡的读写其实也就是对IC卡片内E2PROM进行读写。所以在AT24CXX系列IC卡的应用中,与逻辑控制有关的引出端线只有2条:SCL和SDA。所有的地址、数据及读/写控制命令等信号均从SDA端输入/输出。为了区分SDA线上的数据、地址、操作命令以及各种状态的“开始”与“结束”,卡片内设计了多个逻辑控制单元。其中,启动与停止逻辑单元产生控制读/写操作的“开始”和“停止”标志信号。

“开始”状态:当SCL处于高电平时,SDA从高电平转向低电平,即产生“开始”标志信号;

“停止”状态:当SCL处于高电平时,SDA从低电平转向高电平,即产生“停止”标志信号,如图4.7所示。

SDASCL开始停止

图 4.7 读/写的启动与停时序 SDA和SCL通常各自通过一个电阻拉到高电平。当SCL为高电平时,对应的SDA

上的数据有效;而当SCL为低电平时,允许SDA上的数据变化。

数据输入/输出应该应答逻辑单元产生数据输入/输出操作应答信号。操作时所有的地址和数据均为8位码串行输入/输出于卡片。卡片每收到一个8位码长的地址码或数据字后,都以置SDA线为低电平方式“确认”应答信号。其波形如图4.8所示。