ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:492.09KB ,
资源ID:4260962      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4260962.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C51单片机技术应用与实践任务密码锁.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C51单片机技术应用与实践任务密码锁.docx

1、C51单片机技术应用与实践任务密码锁第3篇 单片机接口应用任务5、电子密码锁模块问题的提出:日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科技的发展和社会生活水平的提高,人们对日常生活中的安全保险器件的要求越来越高,电子安全密码锁是基于这一要求的保险器件,用密码代替钥匙。目前使用的密码锁种类繁多,如指纹锁、红外密码锁、GPS密码锁、卡片锁等,各具特色,其中最为广泛的是键盘式电子密码锁(如图5-1),该产品主要应用于保险箱、保险柜等,

2、还有一部分应用于保管箱和运钞车。键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失,难以被窃。尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。 图5-1 电子密码箱 图5-2 电子门禁系统5.1 I2C总线的基本原理I2C总线是英文“Inter Integrated Circuit Bus”内部集成电路的

3、缩写,是一种串行的数据总线系统,源于计算机技术,是国际上最先进的大规模数字化集成电路,是通过时钟和数据总线的双向控制进行数据的读写。现主要用于电视机的各个功能模块(亮度、色度、对比度、音量等)进行有效的跟踪控制,能够提高电视的可靠性,同时方便维修。5.1.1 I2C总线结构I2C串行总线只有两根信号线,一根是双向的数据线SDA,另一根是双向的时钟线SCL。所有连接到I2C总线上的芯片的数据引脚SDA都连接到总线的SDA线,各芯片的时钟引脚SCL都连接到总线的SCL线。典型I2C配置如图5-3所示。在信息的传输过程中,I2C总线上发送数据的设备称为发送器,而接收数据的设备称为接收器。能够初始发送

4、、产生时钟、起始信号、停止信号的设备称为主机或主控制器(Multimastering);而被主机寻址的设备称为从机。主机和从机之间的数据传送,可以由主机发送数据到从机,也可以由从机发送数据到主机。I2C总线上的每个芯片(例如微控制器、LCD驱动器、存储器或键盘接口)都有唯一的地址,就像电话机一样都有各自唯一的号码,只有被选址的芯片即从机才和主机(例如单片机)通信,就像电话机只有在被拨通各自的号码时才能通话。图5-3 I2C主/从系统结构图I2C器件的数据线SDA是双向通信的,既可用于向总线上发送数据,也可以接收总线上的数据。时钟线SCL也是双向的,控制总线数据传送的主机通过时钟线SCL发送时钟

5、信号,同时也要检测SCL上的电平以决定什么时候发送下一个时钟脉冲电平。作为接收主机命令的从机,要按总线上SCL的信号发出或接收SDA上的信号,也可以向SCL线发出低电平信号以延长总线时钟信号的周期。由于SDA和SCL均通过上拉电阻连接到5V电源,所以总线空闲时,SDA和SCL线都保持高电平,任一器件输出的低电平都会使相应的总线信号电平变低,即各器件的SDA和SCL都是“与”的关系。I2C总线最主要的优点是其简单性和有效性。由于接口直接在芯片上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量。I2C总线能够以10Kbps的最大传输速率支持40个器件,并支持多个主机,任何能够进

6、行发送和接收的设备都可以成为主机。主机能够控制信号的传输和时钟频率。当然,在同一时间段,只能有一个主机。当有多个主机同时向I2C总线发送起始信号,要求控制总线,将通过仲裁过程,决定哪些主机放弃总线控制权,而仅由一台主机控制总线。注意:没有必要在一个系统中指定某个器件作为主机,任何一个发送起始信号和从机地址的器件就成为该次数据传输的主机。5.1.2 I2C总线协议1)主机从机和接收器发送器I2C总线上的每个器件都可以作为一个发送器或接收器,这由器件的功能决定。很明显LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机,

7、见表5-1。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。表5-1 I2C总线术语的定义术语描述发送器发送数据到总线的器件接收器从总线接收数据的器件主机初始化发送、产生时钟信号和终止发送的器件从机被主机寻址的器件多主机同时有多于一个主机尝试控制总线,但不破坏数据主机从机、接收器发送器这些关系不是持久的,只由当时数据传输的方向决定。例如在如下的传输数据的过程中:(1)微控制器 A 要发送信息到微控制器B微控制器 A(主机)寻址微控制器 B(从机)微控制器 A(主机发送器)发送数据到微控制器 B(从机接收器)微控制器 A终止传输 (2)如果微控制器

8、 A 想从微控制器 B 接收信息微控制器 A(主机)寻址微控制器 B(从机)微控制器 A(主机接收器)从微控制器B(从机发送器)接收数据微控制器 A终止传输2)I2C总线位的传输I2C总线为同步传输总线,总线数据与时钟完全同步。I2C总线规定时钟线SCL上一个时钟周期只能传送一位数据。当时钟SCL线为高电平时,对应数据线SDA线上的电平即为有效数据位(高电平为1,低电平为0);在数据传送开始后,SCL为高电平的时候,SDA的数据必须保持稳定,只有当SCL为低电平的时候,才允许SDA上的数据改变。当SCL发出重复的时钟脉冲时,每次为高电平时,SDA线上对应的电平就是一位一位传送的数据,其中最先传

9、输的是字节的最高位数据,其时序如图5-4所示。图5-4 I2C总线上SDA和SCL的时序关系3)起始条件和停止条件在I2C总线中,起始(S)条件和停止(P)条件是根据SDA和SCL线上的电平状态定义的,如图5-5所示。其中一种情况是在SCL线保持高电平时,SDA线从高电平向低电平切换,即SDA线上出现一个下降沿,这种情况表示一次数据传送的开始。所有操作均必须由起始条件开始。出现起始信号以后,总线被认为“忙”。另一种情况是当SCL保持高电平时,SDA线由低电平向高电平切换,即SDA线上出现一个上升沿,表示停止条件。出现停止信号后,总线被认为“空闲”。 也就是SCL和SDA都保持高电平,总线就是空

10、闲的。在连续读写时,如收到-个“停止条件”。则所有读写操作将终止,芯片将进入等待模式。起始条件和停止条件般由主机产生。起始条件:当SCL线为高电平时,SDA线由高到低的转换。停止条件:当SCL为线高电平时,SDA线由低到高的转换。图5-5 I2C总线的起始条件和停止条件4)应答信号接收数据的芯片在接收到8位数据后,向发送数据的芯片发出特定的低电平脉冲,表示已收到数据。应答位的时钟脉冲也由主机产生。发送器在应答时钟脉冲高电平期间,将SDA线拉为高电平,即释放SDA线,转由接收器控制。接收器在应答时钟脉冲的高电平期间必须拉低SDA线,以使之为稳定的低电平作为有效应答,如图5-6所示。若接收器不能拉

11、低SDA线,则为非应答信号。图5-6 I2C总线上的应答发送器向接收器发出一个字节的数据后,等待接收器发出一个应答信号,发送器接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为接收器出现故障。5)数据字节的传送发送到SDA线上的每个字节必须为8位。每次传输可以发送的字节数量不受限制,但每个字节后必须跟个应答位,数据传输的顺序是首先传输数据的最高位MSB,然后在每一个SCL线的时钟周期内,传送一位数据,在8个SCL时钟周期后,SDA线上完成一个字节的数据传送。在传输时,若SCL线为高电平,SDA线上电平需保持稳定不变,只有SCL为低电平时,SDA线上的电平才能改

12、变。否则,若SCL线为高电平,而SDA线上的电平由高跳变到低,则为起始信号;由低跳变到高,则为停止信号。SDA线上完成一个字节的数据传送后,在第9个SCL时钟周期,接收器需发出一个应答信号,即在SCL线为高电平时,将SDA线拉低,以使之为稳定的低电平作为有效应答,表明正确收到了发送器发送的数据。如果接收器要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL在应答信号后保持低电平迫使发送器进入等待状态,当接收器准备好接收下一个数据字节并释放时钟线SCL(即SCL为高电平)后,继续数据传输。I2C的数据字节传输如图5-7所示。图5-7 I2C总线上

13、数据的传送6)一帧完整数据的传送一次典型的I2C总线数据传输包括一个起始条件(START)、一个地址字节(位7-1:7位从机地址;位0:R/W方向位)、一个或多个字节的数据和一个停止条件(STOP)。每个地址字节和每个数据字节后面都必须用SCL高电平期间的SDA低电平(如图5-6)来应答(ACKNOWLEDGE简写为ACK)。如果在数据传输了一段时间后,接收器件不能接收更多的数据字节,接收器件将发出一个“非应答”(NACK)信号,这用SCL高电平期间的SDA高电平表示,发送器件读到“非应答”信号后终止传输。方向位占据地址字节的最低位。方向位被设置为逻辑1表示这是一个“读”(READ)操作,即主

14、机接收从机发送的数据;方向位为逻辑0表示这是一个“写”(WRITE)操作,即从机接收主机发送的数据。所有的数据传输都由主器件启动,可以寻址一个或多个目标从机。主机产生一个起始条件,然后发送地址和方向位。如果本次数据传输是一个从主机到从机的写操作,则主机每发送一个数据字节后等待来自从机的确认。如果是一个读操作,则由从机发送数据并等待主机的确认。在数据传输结束时,主机产生一个停止条件,结束数据交换并释放总线。图5-8示出了一次典型的I2C总线数据传输过程。图5-8 I2C总线上完整数据的传送5.1.3 I2C总线的传送格式前面介绍了I2C总线的传送格式为主从式,对系统中的某一器件来说有四种可能的工

15、作方式:主发送方式、从发送方式、主接收方式、从接收方式。1)主发送从接收主机在SDA上发送串行数据,在SCL上输出串行时钟。首先主机产生一个起始条件,然后发送含有目标从机地址和数据方向位的第一个字节。该字节内容见表5-2。表5-2 第一个字节的定义 MSB 7位从机地址 LSBR/W 最高位 最低位在这种情况下数据方向位(R/W)应为逻辑0,表示这是一个“写”操作。发送完第一个字节后,主机等待由从机产生的应答信号(ACK)。收到从机的应答信号(ACK)后,主机发送一个或多个字节的串行数据,并在每发送完一个字节后等待由从机产生的应答信号(ACK)。最后,为了指示串行传输的结束,主机产生一个停止条

16、件。典型的主发送从接收时序如图5-9所示。图5-9 典型的主发送从接收时序2)从发送主接收主机在SDA上接收串行数据,在SCL上输出串行时钟。首先主机产生一个起始条件,然后发送含有目标从机地址和数据方向位的第一个字节。在这种情况下数据方向位(R/W)应为逻辑1,表示这是一个“读”操作。发送完第一个字节后,主机等待由从机产生的应答信号(ACK)。收到从机的应答信号(ACK)后,从机开始发送数据,主机每收到一个字节都要发送一个应答信号ACK。若从机收到的ACK=0有效应答,那么从机继续发送;若ACK=1非有效应答,那么从机停止发送。最后,为了指示串行传输的结束,主机产生一个停止条件。典型的主接收从

17、发送时序如图5-10所示。图5-10 典型的主接收从发送时序5.2 AT24CXX1)引脚介绍AT24CXX系列E2PROM是支持I2C总线数据传送协议的串行CMOS E2PROM,AT24C02的管脚配置如图5-11所示 ,采用双列直插DIP-8封装,管脚功能见表5-3 。图5-11 管脚配置表5-3 管脚功能描述管脚名称功能A0、A1、A2器件地址选择SDA串行数据/地址信号线SCL串行时钟信号线WP写保护VCC、VSS+1.86.0V工作电源、低SCL:串行时钟信号线。用于产生器件所有数据发送或接收的时钟,在写方式,SCL为高电平时,数据必须保持稳定且下降沿送数;SDA:串行数据信号线。

18、用于传送地址和所有数据的发送和接受,仅仅在SCL为低电平时数据才可以改变;WP:写保护。如果WP管脚连接到Vcc,所有的内容都被写保护,只能读而不能写。此时AT24C02可以接收从机地址和字节地址,但在接收到第一个数据字节后不发送应答信号,从而避免寄存器区域被编程改写。当WP管脚连接到Vss或悬空,允许AT24C02进行正常的读/写操作。A0、A1、A2:器件地址输入端。这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。一个微控制器最大可级联8个AT24C02。如果系统只有一个AT24C02被总线寻址,这三个地址输入脚A0、A1、A2可悬空或连接到Vss。AT24C系列E2P

19、ROM的型号地址高四位皆为1010,器件地址中的低3位为引脚地址A2、A1、A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定,见表5-4所示。表5-4 AT24C02的地址定义 最高位 7位从机地址 最低位1010A2A1A0R/W D7 D6 D5 D4 D3 D2 D1 D0 2)AT24C02的读写操作(1)AT24C02的写操作AT24C02的写操作可分为字节写和页写两类。 字节写。在字节写模式下,主机发送起始信号和从机地址信息,R/W位置零。在从机产生应答信号后,主机发送AT24C02的内部字节地址,该地址表明一个字节的数据要写入AT24C02的哪一个字

20、节。主机在收到从机的另一个应答信号后,再发送数据到AT24C02内部字节地址表明的存储单元。AT24C02再次应答,并在主机产生停止信号后开始内部数据的擦写。在内部擦写过程中,AT24C02不再应答主机的任何请求。字节写时序如图5-12所示。图5-12 字节写时序 页写用页写AT24C02可以一次写入8个字节的数据。页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号。主机被允许再发送7个额外的字节,每发送一个字节数据后,AT24C02产生一个应答信号,并将内部字节地址自动加1。如果写到此页的最后一个字节,即发送完8个字节数据后,主机继续发送数据,数据将从该页的首地址写入,先

21、前写入的数据将被覆盖,造成数据丢失。接收到8字节数据和主机发送的停止信号后,AT24C02启动内部写周期将数据写到数据区,所有接收的数据在一个内部写周期内写入AT24C02。页写时序如图5-13所示。图5-13 页写时序(2)AT24C02的读操作AT24C02的读操作可分为立即地址读、选择性读和连续读。 立即地址读。AT24C02的地址计数器内容为最后操作字节的地址加1。也就是说,如果上次读/写的操作地址为N,则立即读的地址从地址N+1开始。如果N=255,则计数器将翻转到0且继续输出数据。因为AT24C02的存储容量是256字节。AT24C02接收到从机地址信号后,R/W位置1,它首先发送

22、一个应答信号,然后发送一个8位字节数据。主机不需发送一个应答信号,但要产生一个停止信号。立即地址读时序如图5-14所示。图5-14 立即地址读时序 选择性读选择性读操作允许主机对AT24C02寄存器的任意字节进行读操作。主机首先通过发送起始信号、从机地址和它想读取的字节数据的地址,执行一个伪写操作。在AT24C02应答之后,主机重新发送起始信号和从机地址,此时R/W位置1,AT24C02响应并发送应答信号,然后输出所要求的一个8位字节数据,主器件不发送应答信号但产生一个停止信号。选择性读时序如图5-15示。图5-15 选择性读时序 连续读连续读操作可通过立即读或选择性读操作启动。在AT24C0

23、2发送完一个8位字节数据后,主机产生一个应答信号来响应,告知AT24C02主器件要求更多的数据,对应每个主机产生的应答信号,AT24C02将发送一个8位数据字节。当主机不发送应答信号而发送停止信号时结束此操作。从AT24C02输出的数据按顺序由N到N+1输出。读操作时地址计数器在AT24C02整个地址内增加,这样整个寄存器区域在可在一个读操作内全部读出。当读取的字节超过255,计数器将翻转到零并继续输出数据字节。连续读时序如图5-16 所示。图5-16 连续读时序5.3 电子密码锁模块设计5.3.1 目标要求电子密码锁模块的设计要实现以下功能:(1)首次开机进行6位密码初始化;(2)用户可以进

24、行6位密码的修改;(3)用户输入密码正确按开锁键则开锁;(4)用户输入密码错误则有提示和报警。5.3.2 问题分析(1)用户设置密码存放E2PROM24C02中,要弄清24C02的工作原理,编写24C02的多字节读写程序;(2)密码输入采用44行列式键盘,掌握行列式键盘的扫描处理方法;(3)用户修改密码的时候要进行用户权限的确认。5.3.3 硬件设计1)电子密码锁模块原理图电子密码锁模块原理图如图5-17。图5-17 电子密码锁模块原理图2)电子密码锁模块的主要元器件清单电子密码锁模块主要元件清单见表5-5。表5-5 电子密码锁模块主要元件清单元器件名称参数数量元器件名称参数数量单片机STC8

25、9C521排阻10k1ICAT24C021电位器10k1液晶16021按钮-17晶振12MHz1电解电容10uF/16v1LED-1瓷片电容30pF25.3.4软件编程1) 端口分配密码输入采用44行列式键盘,通过单片机STC89C52的P2进行键盘的行列扫描;显示采用1602字符型液晶,P1.0接片选端RS, P1.1接读写选择端R/W, P1.2接使能端E;AT24C02的SDA(串行数据线)接P3.3, SCL(串行时钟线) 接P3.2; P1.5口控制LED。2) 程序流程电子密码锁模块程序主要包括主程序(如图5-18)、AT24C02写多字节数据子程序(如图5-19)、AT24C02

26、读多字节数据子程序(如图5-20),具体如下:图5-18 电子密码锁模块主程序 图5-19 AT24C02写多字节数据子程序 图5-20 AT24C02读多字节数据子程序2) 具体程序#include#include#include#define Delay4us(); _nop_();_nop_();_nop_();_nop_();#define uchar unsigned char#define uint unsigned intuchar Pre_KeyNo=16,KeyNo=16;uchar code Title_Text=Your Password.;char DSY_BUFFER

27、16= ;char UserPassword16= ;sbit LCD_RS=P10;sbit LCD_RW=P11;sbit LCD_EN=P12;sbit LED_OPEN=P15;sbit SCL=P32;sbit SDA=P33;/*函数功能:延时若干毫秒 入口参数:x*/void Delaynms(uint x) uchar i; while(x-) for(i=0;i123;i+);/*关于24C02的程序*/*24C02启动信号*/void Start() SDA=1; SCL=1; Delay4us(); SDA=0; Delay4us(); SCL=0;/*24C02停止信号

28、*/void Stop() SDA=0; SCL=1; Delay4us(); SDA=1; Delay4us(); SCL=0;/*24C02IIC初始化*/void IIC_Init() SCL=0; Stop();/*24C02发送应答信号*/void ACK() SDA=0; SCL=1; Delay4us(); SCL=0; SDA=1;/*24C02发送非应答信号*/void NO_ACK() SDA=1; SCL=1; Delay4us(); SCL=0; SDA=0;/*从24C02读取1字节*/uchar RecByte() uchar i,rd; rd=0x00; SDA=

29、1; for(i=0;i8;i+) SCL=1; rd=1; rd|=SDA; Delay4us(); SCL=0; Delay4us(); SCL=0; Delay4us(); return rd;/*向24C02发送1字节*/uchar SendByte(uchar wd) uchar i; bit ack0; for(i=0;i8;i+) SDA=(bit)(wd&0x80); _nop_(); _nop_(); SCL=1; Delay4us(); SCL=0; wd=1; Delay4us(); SDA=1; SCL=1; Delay4us(); ack0=!SDA; SCL=0; Delay4us(); return ack0;/*向24C02发送多个字节*/uchar SendString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N) uchar i;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1