基于多密钥iButton的智能水卡的设计

发布者:WhisperingWind最新更新时间:2007-03-09 手机看文章 扫描二维码
随时随地手机看文章
摘要:DS1991是一种多密钥信息纽扣,文章介绍了DS1991的主要特点、工作原理及读写方法。给出了一种基于DS1991和PIC单片机的智能水卡设计方案,同时给出了整个系统的硬件组成原理和软件设计方法。 关键词:信息纽扣;单总线;单片机 1 DS1991概述 iButtoninformation Button信息纽扣是一种封装在扁圆型不锈钢外壳里的直径为16毫米的微型智能化信息载体。具有双向通讯功能,数据传输使用独特的1-Wire(单总线)协议,仅用一根数据线即可与外界进行信息交换。iButton信息钮扣与其读写器的信息传递只需短暂接触即可完成,传输速率可达16.3kbps。信息纽扣内置的NVSRAM存储器可存放文字或数字化的图像,任何时刻只要短暂的触碰就可更改存放的信息。在每一个信息纽扣的晶片上都有工厂光刻的、独一无二的64位注册码,该号码具有不可伪造性。先进的设计理念及封装形式赋予了iButton超强的抗冲击、防静电、防腐蚀、防水、防摩擦等性能,极大的提高了数据的安全性,并可确保十年以上的使用寿命。 图1 DS1991是一种加密存储型信息纽扣,它有三个独立的电子密钥分区(提供1152位的可读写非易失安全存储器)和512位暂存器。每个密钥分区包括384位,具有独立的64位密码和64位ID码。对密钥分区的读/写操作均需进行密码验证。三个区的数据可分别操作,互不干扰。512位的暂存器主要用于加密数据的拷贝,以保证安全存储器中数据的完整性。DS1991可在恶劣环境中实现带密码保护的数据传送。 DS1991通过严格的1-Wire(单总线)协议传输数据。1-Wire协议定义了复位脉冲、应答脉冲、写0、写1和读数据时序等几种信号类型,所有单总线命令序列都是由这些基本的信号类型组成的。单片机访问DS1991必须严格遵循单总线命令序列,即初始化、ROM操作、存储器功能命令。 DS1991的ROM操作命令有读取(33H)、匹配(55H)、搜索(F0H)、跳过(CCH)等。这些命令可作用于DS1991的64位光刻注册码。DS1991有6个设备检测命令:写暂存器(96H)、读暂存器(69H)、复制暂存器(3CH)、 写密码(5AH)、写密钥子区(99H)、读密钥子区(66H)。存储器功能命令由三段组成:一为功能代码,二为命令的起始地址和子密钥的地址代码,三为第二个字节的取反。 2 系统结构与工作原理 本文设计了一种基于DS1991的智能水卡。这种智能水卡由于运用了iButton信息纽扣,因而便于携带,不易损坏,只需在触头上一碰,水就哗哗的流出,再次触碰则可关闭水龙头,从而很好的达到了节约用水的目的。 本设计中的单片机选用Microchip公司的PIC16C63,其最大优点是省电,该单片机在低功耗休眠状态时的静态电流小于1μA,正常工作时的最小工作电流仅为15μA,并具有看门狗复位电路,特别适合用来设计小型电子产品。无用户用水时,系统处于休眠状态,当水卡第一次碰触头时,单片机从休眠状态唤醒。iButton触头与单片机的连线极其简单,只需将PIC16C63的一根口线与其相连并外接一个上拉电阻即可。选用24WC02存储器可在掉电时保存数据。CD4098是双单稳态触发器。流量传感器选用基于模拟水表的旋翼式结构,可将叶轮的旋转转换为电信号。电磁阀选用12V低压电磁阀。其硬件连接如图1所示。 使用时,先由管理员将用户预购的水量存于卡中。用水时,用户将水卡与触头一碰。单片机首先判断是否为坏卡,然后读取iButton序列号以判断是否为该供水系统所接受的智能水卡。水卡辨识正确后再读取卡中的水量信息并打开电磁阀,此后,数码管动态显示并扣除卡中所有现存水量,以防用户不进行关水触碰。单片机实时采集流量信号,并做相应扣除。当剩余水量小于初始给定值时,水卡发出声音报警提示用户及时购水。当用户用水完毕再次触碰后或剩余水量为零时,关闭阀门,并将剩余水量存入水卡,同时存储器实时存储卡中信息,以备系统故障时正确处理。 3 软件设计 本系统对DS1991进行的操作主要包括三个过程:其中读取序列号和读密钥子区的流程图见图2所示。写密钥子区的流程图见图3。为确保数据传输的正确性,本设计对欲写的数据组都追加一个计算出的CRC校验码,并对读出的数据组添加CRC校验。只有检验正确,才视为读出的数据组,从而确保了触碰时数据传输的正确。 1-Wire的CRC校验码由如图4所示的多项式生成。该多项式方程为X8+X5+X4+1。每片DS1991都有唯一的64位ROM代码,即:8位家族码+48位唯一序列码+8位CRC校验码。移位寄存器进行零初始化后从8位家族码的最低有效位开始移入,每次移1位,当第8位家族码移入后开始移入序列号,第48位序列号移入后,移位寄存器中的值即是CRC值,此后继续移入DS1991内部的8位CRC校验码。此时如果接收数据正确,则使移位寄存器归零。CRC的编程如下: CHECKCRC: MOVLW 8 MOVWF RXBUF CRCLP: BTFSS MD2,0 GOTO CRC0 MOVLW 1 GOTO CRC1 CRC0: MOVLW 0 CRC1: XORWF MD1,W MOVWF NUMB RRF NUMB BTFSS STATUS,0 GOTO CRC2 MOVF MD1,W XORLW 18H MOVWF MD1 CRC2: RRF MD1 RRF MD2 DECFSZ RXBUF GOTO CRCLP RETURN 本系统软件采用模块化设计,分为初始化模块、检验坏卡模块、读序列号模块、CRC校验模块、读/写DS1991模块、流量检测数据处理模块、I2C存储器存储模块、动态显示模块以及报警提醒模块等。 4 结束语 使用iButton作智能水卡时,其坚固的不锈钢外壳确保了水卡的抗冲击、防水、耐磨、耐腐蚀特性;而先进的防静电电路及芯片则可确保iButton能承受高达8,000伏的静电,从而保证自身和存储数据的安然无恙。在耐用性、识别成功性、使用方便性、加密性能及携带性等方面,该水卡比现今较流行的磁卡、IC卡、射频卡都优越许多。此外,DS1991的多密钥特性更是为数据的保密提供了可靠的保证。
引用地址:基于多密钥iButton的智能水卡的设计

上一篇:空调主板显示数据实时监测电路的设计
下一篇:基于SST89C54/58的单片机仿真器的设计

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved