数字抢答器的设计.doc

上传人:飞****2 文档编号:60091243 上传时间:2022-11-13 格式:DOC 页数:35 大小:601KB
返回 下载 相关 举报
数字抢答器的设计.doc_第1页
第1页 / 共35页
数字抢答器的设计.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《数字抢答器的设计.doc》由会员分享,可在线阅读,更多相关《数字抢答器的设计.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 绪论1.1 IC卡的介绍以及国内外应用概况1.1.1 IC卡的介绍IC卡,又称“集成电路卡”、“智能卡”,英文名称“Integrated Circuit Card”或“Smart card” ,它将具有存储、加密及数据处理能力的集成电路芯片模块封装于信用卡尺寸一样大小的塑料基中,便构成了IC卡。IC卡的概念是20世纪70年代初提出来的,法国布尔(BULL)公司于1976年首先创造出IC卡产品,并将这项技术应用到金融、交通、医疗、身份证明等多个行业,它将微电子技术和计算机技术结合在一起,提高了人们生活和工作的现代化程度1。根据卡中所镶嵌的集成电路的不同,IC卡可以分为以下三类:1.存储器卡:

2、卡中的集成电路为EEPROM(电可擦除的可编程只读存储器)。2.逻辑加密卡:卡中的集成电路具有加密逻辑和EEPROM。3.CPU卡:卡中的集成电路包括中央处理器CPU、EEPROM、随机存储器RAM以及固化在只读存储器ROM中的片内操作系统COS。2一般认为,智能卡(SmartCard)是指上述的第三种IC卡,即CPU卡。但也有的文献把存储器卡和微处理器卡统称为智能卡。智能卡上通常安装有智能卡操作系统智能卡操作系统是以功能函数的形式对智卡的具体应用进行操作和管理的一种系统软件1-3。1.1.2 IC卡的国内外应用概况随着全球信息化,网络化和知识化经济浪潮的到来,智能卡产业的战略地位越来越重要,

3、它己成为事关国民经济、国防建设、人民生活和信息安全的基础性、战略性产业。特别是近几年来,在世界半导体产业环境不断改善,集成电路的性能以惊人的速度向快速和微型方面发展,其发展潜力,高技术含量和广阔的市场都令人叹为观止4。我国的IC卡产业及应用始于20世纪90年代初,是伴随着我国政府启动的“金卡工程”而发展起来的,至今已有近十年的历史。在这短暂的十年里,我国的IC卡产业及应用从无到有、从小到大,迅速走过了启动阶段,发展的速度是惊人的。特别是近两年来,我国的年发卡量均超亿张,年增长率达到30%一40%,已成为世界IC卡应用发展最快的国家之一。目前,我国IC卡产业的成熟度主要集中在生产环节上,与生产环

4、节相反,从事高端研发的企业数量偏少,不管是在芯片的设计、还是COS的开发都比较缺乏,国际主要的IC卡供应商已经纷纷在我国设立了研发中心,争夺我国的市场已成为其全球市场的一个重要策略。智能IC卡这一新型信息技术的结晶正在迅速地进入社会生活和人们消费活动的各个方面。由于智能IC卡在各种应用中所承担的特殊性工作使得智能IC卡及信息安全性研究无疑有着十分重要的意义1-3。1.2 IC卡密码安全性以及其研究现状1.2.1 IC卡硬件安全性智能卡作为人与信息系统连接的纽带,其应用范围不断扩大,针对智能卡的各种各样的攻击手段不断出现,智能卡的安全和保密性则显得尤为重要。智能卡由半导体芯片,电极模片和塑料模片

5、三大部分组成。其中半导体芯片是智能卡的核心部分,在半导体芯片中包含了存储器、译码电路、接口驱动电路、微处理器单元等各种功能电路。其中随机字发生器、时钟频率保护电路、欠压保护电路等对智能卡的安全起到至关重要的作用。智能卡芯片具有一定的计算能力。它不仅能够管理各种输入输出的数据、校验来自接口设备输入的个人密码,而且能够根据应用系统的要求主动识别与之连接的接口设备。因此,在智能卡中能够建立多种应用系统的授权,存放多个应用系统的相关数据,并实现对相关数据信息的高可靠性、高安全性控制;可以进行复杂的信息处理和计算,并保持智能卡芯片上信息的机密性和完整性。在智能卡芯片的设计阶段、生产环境、生产流程及使用过

6、程中会遇到各种潜在的威胁。攻击者可能采取各种方法对智能卡实施物理探测以获取智能卡的设计信息和操作内容。其目的是弄清硬件的安全机制、访问控制机制、鉴别机制、数据保护系统、存储体分区、密码模块程序的设计细节以及初始化数据、私有数据、口令或密码密钥等敏感数据。另外攻击者可以利用电子探测和修改智能卡上重要安全数据的方法,非法获得对智能卡的使用权。对于各种方式的攻击智能卡采用了多种安全手段进行防范。其安全措施的基本原理是:增加集成电路上的复杂性;提高抗干扰能力;增加噪声来掩盖真正的电源功率的消耗;提高对异常信号的控制功能。具体措施有:限制程序计数器技术;插入随机的时钟信号;采用低频报警的低频传感器技术;

7、使用多层电路设计方法;附加顶层传感器网;加入自毁技术;采用抗电磁波探测密码技术;在智能卡处理器中加入锁存电路和随机多线程技术。1.2.2 IC卡软件安全性在系统的初始化阶段选择性的对相关存储数据的芯片进行合法性验证,可以保证数据资料的安全。例如:在特定的存储芯片的指定地址中,设置安全标识的内码,该标识仅仅对程序编写人员是透明的。上电初始化时,读取该内码与程序内的内码比较,若相同则表示该芯片是合法的。这样可以杜绝潜在恶意的篡改数据资料。对于IC卡的攻击者,其最主要的目的是攫取卡中的信息、或者对卡进行非法复制、或者篡改卡中内容、或者冒用他人的卡等,以达到破坏系统的目的。对IC卡进行攻击的有效途径通

8、常有以下两种:1.穷举法具体方法是:在终端设备上进行口令校验尝试,由于校验错误时,错误计数将减少一次,因此,必须保留至少一次机会,留待使用应用系统进行正确校验,以恢复错误计数,恢复之后再重新进行尝试,直到找出卡中密码为止。可见,穷举法实施的条件是:IC卡的口令空间较小,攻击者掌握了IC卡应用系统。2.中途拦截中途拦截是指在IC卡与应用系统间的通信过程中截获信息。当然,有人提出过一些措施以抗中途拦截攻击,但仍然不是非常安全可靠。所以,有必要加强对卡中数据的保密,使得即使口令保护失效时,攻击者也很难获取卡中信息。1.3 信息安全特性及实施方法智能IC卡是存储重要信息的载体,其所具有的安全技术必须足

9、以保证信息的安全。一般讲,其信息安全至少应具有以下五个方面的特性:1.机密性(Confidentiality):防止未经授权的信息获取,如未经授权应无法理解信息本身的真正涵义等;2.完整性(Iniegrity):防止未经授权的信息更改,如未经授权,应无法对信息进行任何形式的更改。一般用于防止对信息的主动恶意的篡改;3.可获取性(Accessibility):防止未经授权的信息截流;4.真实性(Anthenticity):能通过一系列的技术手段验证信息的真实性;5.持久性(Durability):长时间信息保存的可靠性,准确性等。智能IC卡的安全性应从以下三个方面逐步全面实施:1.智能IC卡用芯

10、片制造和芯片运输的安全技术; 2.智能IC卡硬件的安全技术;3.智能IC卡软件的安全技术。随着现代社会信息化程度的提高,不管是政府部门还是民间组织,都将信息视为最宝贵的资源,更加重视有关信息的安全及保密。特别是在我国,随着“金卡工程”等智能IC卡应用工程的推广实施,智能IC卡将广泛应用于金融、电信、医疗、保险及交通等国民经济的各个领域。其中智能IC卡作为信息传输、存储、处理及交换等的中间媒介,对有关信息的安全保护起着举足轻重的作用。为此,它所采用的安全保护措施就更为人们所关注7。1.4 研究目的及主要工作本课题的研究目的是研究IC卡系统及其密码控制相关技术,加大对IC卡电子密码锁方面的研究来加

11、快发展IC卡行业的可靠性和安全性,同时促进信息产业的发展,给社会进步做出贡献。本课题采取理论分析和实验研究相结合的方法开展通用型IC卡读写技术的设计研究工作,主要完成硬件设计和软件设计两方面的内容,包括以下工作和任务:1.根据系统的总体目标和功能要求,完成总体设计方案;2.完成系统硬件设计,实现IC卡与单片机主机之间的通信功能,采用串行通信的方式与51单片机连接,确定元器件选型; 3.根据硬件设计方案和器件选择结果,设计电路原理图; 4.编辑程序,实现对IC卡的相应密码控制功能,然后将操作结果或读来的数据传送回单片机,通过报警电路来显示结果。2 系统总体方案2.1 方案一硬件系统平台的模块结构

12、和外部接口见图2-1。电源模块由5V直流稳压电源输入,通过稳压器件,为系统提供各种电源。IC卡插入IC卡模块中的IC卡座后,系统可对IC卡进行读写。RS-232接口通过直连串口线与PC机或者其他设备的串口相连,用于系统调试或者数据传输。硬件系统平台的模块结构见图2.1。电源模块由5V直流稳压电源输入,通过稳压器件,为系统提供各种电源。IC卡插入IC卡模块中的IC卡座后,系统可对IC卡进行读写。RS-232接口通过直连串口线与PC机或者其他设备的串口相连,用于系统调试或者数据传输。 图2-1方案一总体设计框图本硬件平台与嵌入式软件平台一起构成一套IC卡手持终端原型系统。本平台采用模块化设计的思想

13、,各个模块各自独立、自成体系。模块化设计,增强了各个部分的可重用性。2.2 方案二单片机的选择:在本次设计中采用AT89C51单片机作为控制部分,它的特点是能兼容MCS51指令系统;具有4KBFlashROM;32条双向输入输出线,并且每条均可单独做I/O的控制;有两个16为可编程定时器/计数器;可编程UARL通道;低功耗空闲和掉电模式;128X8bit内部RAM;可直接驱动LED显示器。键盘部分的选择:采用4*4矩阵式按键键盘。IC卡部分的选择:采用存储器卡,即集成电路为E2PROM(可用电擦除的可编程只读存储器)的智能卡。当输入密码时,单片机会将输入的密码和IC卡内保存的初始密码比对,只有

14、在比对完全相同的条件下,系统才认为输入密码正确,才能使用IC卡进行想要进行的操作。所以,首先必须采用4*4的按键键盘来输入密码,通过系统比对后,会将比对结果通过报警电路显示出来5。方案二的的总体色设计框图如图2.2所示。图2-2方案二总体设计框图2.3 方案比较及选择本文采用的是方案二,设计的是一个IC卡密码锁系统,它主要包括两个部分:IC卡数据通信部分和密码管理部分。当输入密码时,单片机会将输入的密码必须采用4*4的按键键盘来输入密码,来节省I/O口以用于系统应用。LCD的显示需要比较多的I/O口,并且LCD的成本比LED的高很多。IC卡是以ATMEL公司的AT24系列存储器芯片AT24C0

15、1A作为串联通信的接口电路。AT24C01A支持I2 C总线数据传送协议,I2 C总线协议规定,任何将数据传送到总线的器件作为发送器。本设计基于单片机实现传统电子密码锁基本功能, 引入嵌入式技术, 减少电子密码锁外围元器件, 硬件电路简单,采用组合逻辑电路,但电路较复杂,可靠性差,由此,人们想到用单片机来实现,将密码存人RAM区,但由于断电后,密码无法保存故实用价值不大。现介绍一款本人用AT89C5l和串行R0M制作的电子密码锁,就克服了以上两大缺陷主要特点为:1保密性好,由于采用6位密码,随机破码率很低,并能随时更改密码就避免因人员的更替而使锁的密级下降。2误码输入保护。三次输入错码发出警告

16、声并封闭主控电路。3由于采用了串行R0M芯片停电不丢码。4结构简洁,故障率低,密码输入操作简便。5通用性强,可根据需要,安装在不同的设备上。在本系统需求分析后发现使用这款芯片会造成极大的资源浪费,大大增加开发成本。具体表现如下:(l)对Flash要求不高(2)只需要25个通用I/0引脚。使用AT89C51这款芯片既满足了用户的要求,又节约了成本。下面会详细介绍这款芯片。3 系统硬件电路设计3.1 硬件总体设计本设计采用的是AT89C51作为控制核心,基本的设计思路是在通过4*4的按键键盘输入密码,通过AT89C51的比对,将结果输出到LED显示出来。用51单片机的I/O口的输入输出模拟出串行E

17、EPROM的各条指令的时序。用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接协议(I2C总线协议)和三线串行链接协议。系统总体设计框图如图3-1所示。图3-1系统总体设计框图总体方案采用两级控制、主从式结构及总线型网络拓扑结构。键盘采用4*4矩阵排列, 主控芯片采用AT89C51, 键盘扫描电路进行行扫描, 按键采用机械式开关结构, 每个按键都有自己相应的作用, 可分为数字按键和功能按键。整个控制系统的实现过程是当密码控制系统工作后,通过的按键键盘查询方式进行密码输入,输入的密码与AT89C51从IC卡芯片读取的原始密码在主控制器中进行比对,只有输入密码和原始密码完全

18、相同,才会开放某些权限;反之,不会开放权限,并且会发出报警信号7-9。3.2 AT89C51芯片介绍AT89C51完全兼容MCS一51系列单片机的所有功能,比以往惯用的8O31CPU外加EPROM为核心的单片机系统在硬件上具有更加简单方便等优点。AT89C51的常见封装如图3-2所示。图3-2 AT89C51的DIP封装3.2.1 主要性能特点(1) 适于控制应用的8位CPU(2) 具有布尔处理(位处理)能力(3) 64KB程序存储器空间(4) 64KB数据存储器空间(5) 128字节片内数据存储器空间(6) 两个16位定时/计数器(7) 一个全双工的串行I/O接口(8) 6源5向量中断结构,

19、每个中断源都具有两级(低级和高级)(9) 片内时钟振荡器(10) 4K字节片内程序存储器(11) 32根双向并可按位寻址的I/O口线3.2.2 管脚说明VCC : 供电电压。GND : 接地。P0口 : 它既可作为通用I/O口,也可作为地址/数据线使用。作为I/O使用时要接510K欧的上拉电阻。P1口 : 是一个带内部上拉电阻的8位双向I/O口P2口 : 是一个带内部上拉电阻的8位双向I/O口,它既可作为通用I/O口,也可以跟P0口配合构成地址的高8位信号。当P2口作为地址线使用时,就不能再作通用的I/O口使用了。 P3口 : 是一个带内部上拉电阻的8位双向I/O口,也可作为AT89C51的一

20、些特殊功能口,P3口管脚第二功能如表3-1所示。表3-1P3口第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(计时器0外部输入)P3.5T1(计时器1外部输入)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)RST:复位输入。AT89C51便能完成系统重置的各种动作,使得内部特殊功能寄存器之内容均被设置成已知状态,并且至地址0000H处开始读入程序代码并执行程序。本设计中在这个引脚接入一个开关,当系统自动掉电后通过手动控制单片机复位,即按键电平复位。XTAL1,TXAL2: 用来接晶振10。本设计中在

21、XTAL1和XTAL2上接上一只12MHz石英震荡晶体系统就可以动作了,同时为了避免噪音的干扰而死机,在两个引脚与地之间加入一个20F的小电容,从而使系统工作更加稳定10。3.3 键盘模块电路设计虽然独立式键盘结构简单,使用方便,但每一个按键开关要占一根I/O口线,因此在按键较多时,为了减少键盘与单片机接口时所占用的I/O口线的数目,通常都将键盘排列成行列矩阵式,如图。每一水平(行线)与垂直线(列线)的交叉处不相通,是通过一个按键连通的。利用这种行列矩阵结构只需N个行线和M个列线即可组成M*N个按键的键盘。在这种行列矩阵式非编码键盘的单片机系统中,对键的识别通常采用两步扫描判别法。如图3-4所

22、示的4*4键盘,首先判别按键所在的行,由单片机P2口向键盘输出列扫描字,然后读入行线状态来判断。其方法是:向P2口输出0FH,即列线全部输出0,行线输出全1,然后将P2口低4位(即行线)的电平状态读入一个临时变量中,如果有按键按下,总会有一根行线被拉到低电平,从而使行输入不全为1。然后判别按键所在的列,由单片机P2口向键盘输出的行扫描字,然后读入列线状态来判断。其方法是:向P2口输出F0H,即行线输出全0,列线输出1,然后将P1口高4位(即列线)的电平状态读入另一临时变量中。如果有按键按下,总会有一根列线被拉到低电平,从而使列输入不全为1。采用4*4的行列式键盘,分别接51单片机的P2.0P2

23、.7。键盘采用查寻方式来响应按键的按下和放开两个过程11。键盘电路原理图如图3.4所示。 图3-4键盘部分的原理图3.4 I2C总线接口电路设计目前市场上的IC卡种类较多,比较有代表性的有ATMEL公司的AT系列和SIEMENS公司的SLE系列,我们根据用户的要求和市场的供给情况选用了ATMEL公司设计的AT24C01A卡。此卡的特点是:(1)卡内有1K位的存储容量,内部组态为128个8位字节。(2)双线串行接口,双向数据传送。(3)串行口满足ISOIEC 78163同步传递协议;(4)自定写人周期最大为10mS;(5)存储器可擦除100,000次以上,数据可保存100年。3.4.1 I2C总

24、线概述1. I2C总线简介I2C总线,是Inter Integrated Circuit BUS的缩写,即内部集成电路总线,是Philips Semiconductors公司在20世纪80年代中期推出的芯片间串行传输数据总线, I2C总线采用时钟线(SCL)和双向数据线(SDA)两根线进行数据传输,接口十分简单。该总线有严格的时序要求,总线工作时,串行时钟线SCL传送时钟脉冲,串行数据线SDA传送数据。且基于兼容器件共享总线,主控器使用软件寻址方式识别每个套件,省掉了每个器件的片选信号线,使系统的连线非常简洁。2. 时序信号的定义:起始信号:时钟线SCL保持高电平期间,数据线SDA电平从高到低

25、的跳变作为I2C总线的起始信号。起始和停止信号的控制书序如图3-5所示。图3-5 起始、停止控制时序图停止信号:时钟线SCL保持高电平期间,数据线SDA电平从低到高的跳变作为I2C总线的停止信号。逻辑“0” :时钟线SCL保持高电平期间,数据线SDA电平为低的状态作为I2C总线的停止信号。逻辑“1” :时钟线SCL保持高电平期间,数据线SDA电平为高的状态作为I2C总线的停止信号。应答信号:一个字节传送完毕后,在时钟钱SCL保持高电平期间,数据线SDA电平为低的状态作为总线的应答信号,简称“ACK” 。3数据传送过程在数据传送过程中,必须确认数据传送的开始和结束。开始信号后,总线上出现的每一个

26、8位的数据称为控制字(包含7位地址和1位读写控制位)。命令控制字是这样构成的,高4位为1、0、1、0,后4位的前三位是器件寻址码,分别对应A2、A1、A0,最后一位是读写选择位(RW )。具体格式就是:l 0 1 0 A2 A1 A0 RW,对照表3.3,可以给出写命令控制字为1 0 1 0 0 0 0 0 B,或A0H;读命令控制字为l 0 1 0 0 0 0 l B,或AIH。控制字的配置如表3-2所示。表3-2控制字1010A2A1A0在总线上每次传送的数据字节数是不受限制的,但每一个字节必须为8位。3.4.2 AT24C01A芯片简介AT24C0X IC卡是一种串行EEPROM存贮器,

27、该卡如名片大小,具有携带方便、价格低廉、工作电压低、擦写次数多、保存时间长等优点具有广泛的应用前景。AT24C01A芯片是一个1K的支持I2C总线数据传送协议的串行,可用电擦除,自动定时写周期的。串行一般具有两种写入方式,一种是字节写入方式,还有另一种页写入方式。允许在一个写周期内同时对1B到一页的若干字节的编程写入,1页的大小取决于芯片内页寄存器的大小。AT24C01的管脚结构如图3-6所示。图3-6AT24C01A管脚结构图管脚说明:SCL:串行时钟 AT24C01串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚SDA:串行数据/地址 AT24C01双向串行数据/地址管

28、脚用于器件所有数据的发送或接收SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线A0 A1 A2: 器件地址输入端, 这三个引脚是器件地址选择引脚。将这三个引脚配置成不同的编码值,在同一串行总线上最多可扩充8片同一容量或不同容量的24系列串行EEPR0M芯片WP:写保护,如果WP 管脚连接到Vcc 所有的内容都被写保护只能读当WP 管脚连接到GND或悬空允许器件进行正常的读/写操作11。3.4.3 AT89C51与AT24C01A的联接本文是AT89C51与串行AT24C01A的接口电路,AT24C01A的接口线可接到单片机的任何通用双向I/O口上。其中A2、A1和A0为器件的片

29、选地址位,片选地址为000。本系统利用AT89C51的P1.0和P1.1来模拟I2C总线,实现单片机AT89C51与AT24C01A之间的数据交换。I2C总线电路设计原理图如图3-7所示。图3-7 总线电路设计原理图3.5报警电路设计AT89C51的P3.4接蜂鸣器,蜂鸣器的驱动采用PNP三极管8550来驱动,低电平有效。当P3.4送出高电平时PNP三极管Q7截止,无电流通过,蜂鸣器BELL不响,当P3.4送出低电平时PNP三极管导通,有电流通过,蜂鸣器BELL发出响声。当P3.4交替送出高低电平时,蜂鸣器可发出“滴,滴,滴”的声音,可通过控制交替送出高低电平的频率来控制发音长短。报警电路的原

30、理图如图3-8所示。图3-8 报警电路原理图3.6 电源电路设计模块电源需要提供+5V直流电压为系统供电,所以220V交流电压信号首先通过一个变压器进行降压,同时也对电力线上的高频载波信号起到隔离作用,因为载波信号跨越线性变压器时衰减很大,通过变压器后基本可以完全滤除高频载波信号。该电路虽然结构简单,但可以从两个相同的次级绕组中产生出三组直流电压。电路的特点是二极管D1的连接方式,起着全波整流作用。模块电源电路如图3-9所示.图3-9 模块电源电路图4 系统软件设计4.1 通信协议4.1.1 帧结构本系统建立了一个简单而有效的通信协议,该协议可以实现误码检验和校正,使得ST7536系统可靠的工

31、作。该协议中应用了帧结构,收发数据以帧为单位进行传输,每帧包括引导数据、系统地址、目标地址、控制块和数据块,帧结构如表4-1所示。表4-1 帧结构引导数据系统地址目标地址控制块数据块2字节2字节3字节3字节3字节引导数据和系统地址长度为2个字节,目标地址、控制块和数据块为3个字节。导引数据用来调整ST7536发射和接收同步,它包括两组8位数码()。接收模块需要用它调整接收时钟,因为发射的前三个字节不能保证是正确的。引导数据也是用来克服传输开始时的数据不可靠问题的,因此引导数据中不包含有用数据。系统地址用来区分某一特定的电力线网络上存在的多个系统。它可以避免其他系统的干扰,系统地址长度为8位,为

32、避免误动作发送两次。引导数据和系统地址的总长度为4个字节(32位),引导数据和系统地址在每帧中位置如图4-1所示。8位 8位 8位 8位引导数据系统地址目标地址控制块数据块引导数据引导数据系统地址系统地址2字节 2字节 3字节 3字节 3字节图4-1 引导数据和系统地址字节结构接收的目标地址、控制块和数据块必须非常可靠的,因此需要误码校正。上述数据将被发送3次,目标地址的长度为1个字节(8位),以块1、块2、块3形式发送3次,控制块和数据块也一样。图4-2所示为每帧中目标地址的结构,所有的块中包含相同的字节,可以用它们进行纠错以获取正确字节。目标地址用来选择系统中的一个用户(或从机),所有的从

33、机都拥有各自不同的地址,欲激活相应的从机,就必须给入对应的目标地址。在该协议中,通信对象仅为主机和从机之间。因此,每个从机发射的目标地址都是主机地址,在主机发射帧中,目标地址为被叫的从机目标地址。引导数据系统地址目标地址控制块数据块2字节 2字节 2字节 2字节 2字节目标地址目标地址目标地址图4-2 目标地址字节结构控制字节用来描述帧的各类信息,本协议中控制块用于说明该帧为命令帧还是响应帧。该功能由第7位控制,该位置位表示数据字节中包含主机传达给从机的命令,该位未置位表示该帧为从机对主机的响应,其他字节未定义,允许用户自定义其他协议特征。在数据字节中包含了响应数据。4.1.2 误码校正数据传

34、输中,假设所有的帧都正确是不现实的,因此许多重要信息(目标地址、控制块和数据块)必须进行误码校正。误码校正通过冗余字节实现,对于干扰噪声严重的信道而言,这是一种十分有效的方法。每个传输字节被发射3次,软件根据3次接收的结果判断得到正确信号,该操作符合少数服从多数的原则。即使接收的3个数据块都包含错误,仍然能够获得正确的字节数据。例如:第一个接收块包含3个错误(位于第6、4、1字节),第二个接收块包含2个错误(位于第7、3字节),第三个接收块包含3个错误(位于第5、2、0字节),该系统可以从3位中排出1位错误数据,如果选择发送9组冗余数据,就可以排出4位错误数据,具体如图表4-2所示。表4-2

35、误码校正0 0 1 0 1 0 1 1发射字节0 1 1 1 1 0 0 1接收块11 0 1 0 0 0 1 1接收块20 0 0 0 1 1 1 0接收块30 0 1 0 1 0 1 1校正字节载波Modem主要完成对数字信号和载波信号的转换,根据工作流程不同分为主Modem和从Modem,主Modem安装在客厅,从Modem安装在各个房间相应的地方。主、从Modem在硬件设计上基本相同,通过不同的软件控制其各自的工作流程。主Modem平时工作在串口接收状态,接收到由终端发来的命令,调制后进行载波发送,数据发送完后置于载波接收状态,接收到电力线上传来的数据进行解调后通过串口传送给采集终端,

36、然后再置串口为接收状态。4.2 程序设计在设计应用软件时应考虑两个主要方面:(1)程序承担的任务:程序设计的首要任务就是确定程序承担的任务;(2)程序的适应性:所谓适应性,就是要求设计出来的程序具有灵活性,主要考虑将来系统扩展时必要的修改,增加通用性;本设计软件采用模块化设计思想。将一个完整的程序分成若干个可以独立完成某些任务的功能模块,各模块又分为若干子模块,各子模块之间相互独立,又受主程序模块的控制。使整个系统层次分明,逻辑清楚,便于程序的编制、调试、修改和查错。利用模块化技术,可以将错误局限在各个模块内部而不影响整体,提高了系统的可靠性、灵活性和可维护性。4.2.1 主程序设计硬件电路设

37、计完成后,结合软件部分共同组成系统,本文软件部分主要由键盘输入部分和I2C总线控制部分组成。该模块的功能包括系统的初始化、系统初始密码的设置、调用密码比较判断、修改密码等程序模块。密码判断程序放在主程序中,有按键时读取,当确定键按下时做出判断。在程序中设置6字节的空间存放设定的密码和6字节存放键盘输入的数据。根据读取的键盘数据和预先设定的密码逐位比较就可以判断输入密码的正确性,将键盘输入的密码与设定的密码进行比较,若密码正确,则开锁;若不正确,则密码输入次数计数单元计数,如达不到3次,返回键盘扫描模块;若计数已达3次,则调用报警模块。主程序流程如图4-3所示。图4-3 主程序流程图只有锁被打开

38、,用户按下密码“修改键”后,才可以执行密码修改动作。密码修改程序要求新密码输入两次,程序将两次输入的密码进行比较, 如果一致,则用此密码代替原先的密码,如果不一致,则重复操作,这样就避免了修改密码的随机性。密码修改流程如图4-4所示。图4-4 密码修改程序流程图4.2.2 键盘部分程序设计程序中判断P2端口的各位是否为0,当某一位为0时说明该位所接键盘的按键被按下,然后输出对应键按下的提示信息。键拉动会引起一次按键被误读多次,为了确保单片机对键的一次闭合仅做一次处理,必须去除键拉动,在键闭合稳定时取键状态,并且必须判别到键释放稳定后再进行处理。按键去抖动可用硬件或软件两种方法消除。程序设计的方

39、案为:首先判别按键所在行,由单片机P2口向键盘送出列扫描字,然后读入行线状态来判断。向P2口输出0XFFH,一行一行的查询是否有按键按下,如果有,则该行线被拉至低电平。图4-5 键盘程序流程图4.2.3 E2PROM接口程序1. 起始和停止时序I2C总线定义的起始条件是:在SCL线为高电平时,SDA线从高电平向低电平转换。AT24C01A串行EEPROM遵守I2C总线标准,主器件在读写操作开始和结束的时候分别产生开始信号和结束信号。开始信号和结束信号由SCL高电平期间SDA的跳变决定,下跳变时启动I2C总线,上跳变时停止总线,见图4-6所示。图4-6 起始程序设计流程图程序如下:/* * *

40、* * * 启动总线 * * * * */void Start(void) SCL=0; /* SCL处于高电平时,SDA从高电平转向低电平表示 */ SDA=1; /* 一个开始状态,该状态必须在其他命令之前执行 */ SCL=1; _nop_(); _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; SDA=1; I2C总线定义的停止条件是:在SCL线为高电平时,SDA线从低电平向高电平转换。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态

41、。如果产生重复起始(Sr)条件而不产生停止条件,总线会一直处于忙的状态。此时的起始条件(S)和重复起始(Sr)条件在功能上是一样的。图4-7 停止程序设计流程图程序如下:/* * * * * 停止IIC总线 * * * * */void Stop(void) SCL=0; /*SCL处于高电平时,SDA从低电平转向高电平 */ SDA=0; /*表示一个停止状态,该状态终止所有通讯 */ SCL=1; _nop_(); _nop_(); _nop_(); /* 空操作 */ SDA=1; _nop_(); _nop_(); _nop_(); SCL=0;2. 应答时序在I2C总线传输数据过程中

42、,每传输一个字节,都要跟一个应答状态位。接收器接收数据的情况可以通过应答位来告知发送器。应答位的时钟脉冲仍由主机产生,而应答位的数据状态则遵循“谁接收谁产生”的原则,即总是由接收器产生应答位。主机向从机发送数据时,应答位由从机产生;主机从从机接收数据时,应答位由主机产生。I2C总线标准规定:应答位为“0”表示接收器应答(ACK);为“1”则表示非应答(NACK)。发送器发送完LSB之后,应当释放SDA线(拉高SDA输出晶体管截止),以等待接收器产生应答位。I2C总线协议中数据的有效性为SDA线上的数据必须在时钟(SCL)的高电平周期保持稳定。数据线(SDA)的高或低电平状态只有在SCL线的时钟

43、信号是低电平时才能改变。/* * * * *对I2C总线产生应答 * * * * */void Ack(void) SDA=0; /* EEPROM通过在收到每个地址或数据之后, */ SCL=1; /* 置SDA低电平的方式确认表示收到读SDA口状态 */ _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); SDA=1;/* * * * * 检查应答位 * * * * */bit RecAck(void) SCL=0; SDA=1; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); CY=SDA; /*

44、因为返回值总是放在CY中的 */ SCL=0; return(CY);/* * * * * * * * * 不对I2C总线产生应答 * * * * */void NoAck(void) SDA=1; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); SCL=0;3. 对AT25C01的读写操作1) 对AT24C01A的写操作微控制器对AT24C01A写入数据,可有两种方式:字节写和页写。AT24WC01A每收到一个字节,内部将数据地址低3位加1,以使接收下一个字节,并进行确认,微控制器收到确认后,继续发下一个字节,发完8个字节后,产生停止条件。由于数据地址的

45、高4位不会被内部自动加1,若微控制器发完8个字节后,未产生停止条件,而是继续发送数据,则内部数据地址计数器“返回”。当前页的开始处,本页开始的数据会被覆盖。现微处理器89C51为主器件,AT24C01A为从器件,则其读写约定步骤为:主器件发S1、ART信号,占据串行总线,随后发送7位从器件地址和一位读写方向位。从器件接收到主器件发送的器件寻址信号后,将在SDA总线上返回主器件一个确认信号A(低电平有效),表示做好读写准备。主器件在收到从器件的确认信号后,向从器件发送要访问的数据地址(即片内地址),从器件收到后又向主器件返回一个确认信号A,这样EEPROM 的读写准备工作完成。若为写EEPROM

46、则主器件向从器件发送所写数据;若是读EEPROM则由主器件接收从器件发送的指定单元的8位数据。数据读写操作结束,主器件将发送停止信号STOP。其读写操作流程如图4-8所示。图4-8AT24C01A读/写操作流程图/* * * * * * * * * 向IIC总线写数据 * * * * */void Send(unsigned char sendbyte) unsigned char data j=8; for(;j0;j-) SCL=0; sendbyte = 1; /* 使CY=sendbyte7; */ SDA=CY; /* CY 进位标志位 */ SCL=1; SCL=0;2) 对AT24C01A的读操作AT24C01A的读操作是微控制器从EEPROM读取数据。AT24C01A内部的数据地址计数器当上次访问结束后加1,即指向下个要访问的字节。接收到微控制器的读命令后,确认并发送当前地址的8比特数据。微控制器收到后不作应答,而是直接产生停止条件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁