基于AT24C02电子密码锁的设计

单片机应用课程设计设计题目:基于AT24C02电子密码锁的设计目录1 设计任务........................ 错误!未定义书签。

2 系统总体方案设计................ 错误!未定义书签。

2.1各个模块方案论证............. 错误!未定义书签。

2.1.1 芯片选择................. 错误!未定义书签。

2.1.2 显示器的选择............. 错误!未定义书签。

2.2总体方案设计................. 错误!未定义书签。

3 硬件电路设计.................... 错误!未定义书签。

3.1单片机最小系统............... 错误!未定义书签。

3.2AT24C20储存密码电路......... 错误!未定义书签。

3.3矩阵键盘电路 (6)3.4液晶显示电路 (6)4 系统软件设计.................... 错误!未定义书签。

4.1主程序流程图 (7)4.2子程序流程图 (8)4.2.1 AT24C20子程序流程图 (8)4.2.2 1602子程序流程图 (9)5实物调试........................ 错误!未定义书签。

5.1实性物能分析 (9)6心得体会........................ 错误!未定义书签。

附录1 ............................ 错误!未定义书签。

(1)系统总电路图 (15)(2)系统仿真图 (15)附录2 ............................ 错误!未定义书签。

(1)程序清单 ................... 错误!未定义书签。

1.设计任务基本要求:采用AT24C02与单片机STC89C52相结合设计电子密码锁,然后通过矩阵键盘按键进行密码的输入、清除、更改、开锁等功能。

2.系统总体方案设计2.1各个模块方案讨论2.1.1芯片选择由于设计的是电子密码锁,而单片机AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。

RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。

P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

所以我们以此单片机为核心,采用AT24C02作为储存密码芯片,利用单片机进行控制,外加显示电路和键盘电路,即构成一个基本的电子密码锁系统。

2.1.2显示器的选择LCD1602具有微功耗、体积小、显示内容丰富、超薄轻巧,对比度可调、内含复位电路、提供各种控制命令等特点,完全满足本次设计的需要,因此,选择LCD1602作为显示器进行使用。

2.2总体方案设计密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:1、密码输入功能:插上电源后,第一次使用或忘记密码时可以用111111对其密码初始化,LCD提示输入密码,输入密码时在1602LCD上显示“*”每输入一个数字,LCD上向右移一格,同时“*”加一个。

值到输入6个“*”为此,若一次性输入大于6个密码,则只保留前6位密码,按“确定”生效。

若按取消键,锁关闭,所有输入清除错误。

输入计数达三次时,报警并锁定键盘。

2、密码更改功能:密码锁在打开的状态再次输入原密码,会有提示输入新密码,输入新密码后按修改键再次输入新密码后就能成功修改密码(初始密码是6个1 )。

3、当密码输入成功后,或者密码修改成功后,LCD上有提示成功字符LED 灯亮,同时蜂鸣器响两声作为提示。

AT24C02电子密码锁总体设计方案如图1所示。

图1 总体设计方案3.系统硬件电路设计3.1单片机最小系统单片机是电子时钟系统的主控制器。

其最小系统主要由STC89C52单片机、晶振电路及单片机复位电路组成。

晶振系统由两个30pf的陶瓷电容和一个12MHz的晶振组成,分别接在XTAL1、XTAL2上,在单片机内部,这两个端口是一个反相放大器的输入端,这个放大器构成了片内振荡器,它决定了单片机的时钟周期。

单片机有一个复位引脚RST,高电平有效,只要RST保持高电平,单片机将循环复位,复位期间,ALE、PSEN输出高电平。

RST从高电平变为低电平之后,PC指针变为0000H,使单片机从程序存储器地址为0000H的单元开始执行。

当单片机执行程序出错或进入死循环时,也可按复位按钮重新启动。

单片机最小系统如图2所示。

图23.2AT24C02储存密码电路.为了保存用户设置的密码,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的T0、T1端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;E0、 E1、E2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。

该电路要注意的是SCL、SDA必须加上一上接电阻,阻值为 4.7K。

用户设置的密码存放在ST24C02中,当需要更改或读取用户密码时,只需对ST24C02里的数据更改或读取。

ST24C02储存密码电路如图3所示。

图33.3 矩阵键盘电路矩阵键盘电路主要作用就是输入密码,它由行线和列线组成,按键位于行、列的交叉点上,行列分别连接到按键开关的两端。

无按键按动作时列线处于高电平状态;有按键按下时,交点的行线和列线相通,列线电平状态将由与此列线相连的行线电平决定。

行线电平如果低,则列线电平为低;行线电平如果为高,则列线电平也为高。

这是识别矩阵式键盘按键是否被按下的关键所在。

由于矩阵键盘中行、列线为多键公用,各按键均影响该键所在的行和列的电平,所以必须将行、列线信号配合起来作适当的处理,才能确定闭合键所在的位置。

矩阵式键盘节省了好多的I/O口,适用于按键数量比较多的场合。

本设计的4*4键盘即采用矩阵式键盘。

矩阵键盘电路图如图4所示图43.4液晶显示电路1602的引脚功能:第1脚:为地电源。

第2脚:VCC接5V正电源。

第3脚:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:E端为使能端,E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:15脚接VCC,16脚接地。

1602电路图如图5所示。

图54系统软件设计由于单片机是可编程控制器,故采用C语言对单片机进行程序的编写。

主程序主要由矩阵键盘程序、1602液晶屏程序及AT24C02程序组成。

4.1主程序流程图图6上图6为主程序流程图。

开始先初始化,然后屏幕显示password先扫描按键,确认是否可以按键按出密码,如果没有按键按下,则重新扫描按键,若有键按下则按下修改键并保存密码就会出现新的密码,若不按下修改键则还是原来刚设置的初始密码,按下输入键并输入密码,不按下输入键则重新回到扫描按键步骤,若密码正确则开锁。

密码错误则报警显示错误。

4.2 子程序流程图4.2.1 AT24C02 子程序流程图图7图7展示了AT24C02的一个工作流程:首先是对AT24C02进行初始化,方便密码的输入,当输入的密码正确,就会解锁,显示屏显示open,否则显示error 并重新输入密码。

4.2.2 1602子程序流程图图81602显示器的工作流程图展示了1602的工作流程:启动时,首先对1602进行初始化,然后检测有没有数据写入,当有数据写入时,1602便读出数据并显示,没有数据写入时,1602就一直处于等待中,直至有数据写入。

1602子程序流程图如图8所示。

5实物调试5.1实物性能分析用KEIL编写程序软件编写程序、经过Proteus仿真软件仿真调试之后,确认了此系统可正常运行,在这样的前提下,我们利用一个单片机最小系统、一块用电路板焊接的模块和一个1602液晶显示屏完成了第一次实物仿真。

图9图9界面显示为输入密码,这时我们按下按键输入密码。

当我们输入密码时,下图为密码正确的实物图,如图10所示。

图10当密码输入正确时,显示屏就会显示OPEN。

若密码输入错误,下图为密码输入错误的实物图,如图11所示。

图11当我们输入错误的密码时,显示屏就会显示error。

下图为密码修改成功的实物图,如图12所示。

图12当密码修改成功时,显示屏就会显示RestPasswordOK。

6心得体会通过此次课程设计,我重新把单片机及相关知识联系在了一起虽然掌握的知识不是很多,但通过查找资料我还是对单片机有了很好的了解和掌握。

在设计中我才发现单片机虽然体积小但是功能很强大,在生活中很多地方都可以用到它。

单片机这门学科博大精深,在以后的学习中只有多看书,理论与实践结合才能把这门课掌握好。

掌握了LCD的使用方法与编程。

同时我也体会到合作的好处。

让我懂得了如何合作,对不同看法发表自己的意见。

此次设计中最要的一点是,让我知道了,理论联系实践的好处。

不管理论学的再怎么好都必须联系实践,只有在实践中我们才会更加懂得如何运用自己的所学,在实践中将自己的知识实物化。

理论联系实践是我们获取知识的最佳途径。

参考文献[1]谭浩强主编. C程序设计题解与上机指导(第3版)[M]. 北京,清华大学出版社,2005.16-24[2]谢维成杨家国董秀成,单片机原理与应用及C51程序设计(第2版)[M],北京,清华大学出版社,2009.7.25-36附录1(1)系统总电路图系统总电路图,如图12所示。

图13 (2)系统仿真图系统仿真图,如图13所示。

合集下载

基于单片机的电子密码锁的设计27...

基于单片机的电子密码锁的设计27...

基于单片机电子密码锁的设计摘要:随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。

由于传统机械锁存在构造简单,钥匙互开容易等不安全因素;使得家庭的安全性与保密性降低。

电子锁由于其保密性高,使用灵活性好,安全系数高,显得日趋重要。

本设计以单片机A T89C51与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。

它具有以下的功能:输入密码正确,实现开锁;输入密码错误三次以上,报警;可以根据用户需求更改密码。

本设计用用Keil软件进行编译,C51语言编写主控芯片控制程序与EEPROMAT24C02读写程序相结合,设计出一款可以更改密码,并且具有报警功能的电子密码控制系统。

软件设计采用自上而下的模块化设计思想,增强系统的可扩展性和运行的稳定性,使系统朝着分布式、小型化方向发展。

本密码锁具有一定的推广价值。

关键词:单片机;A T89C51;密码锁;报警;液晶显示Microcontroller-based Design Of Electronic LocksAbstract: With the improvement of social science and the living level of people, how to realize the family anti-theft,this problem also become particularly prominent. Because of the traditional mechanical lock has e many unsafe factors,such as simple structure, easy open; Reduces the security and privacy of family. Electronic lock is increasingly important,because of its high confidentiality, use good flexibility, high safety coefficient.This system by theAT89C51 with low power CMOS based E ² PROM AT24C02 as the master chip and the data memory unit, combined with the external keyboard, LCD display, alarm, unlock and other circuit modules. It has the following features: enter the password correctly under the premise of unlocking; Input wrong password more than three times case the alarm; password can be changed according to user needs.This design use Keil software to compile,Master in C language control program and EEPROM AT24C02 chip to read and write process are combined.designed a number you can change the password, the password with an electronic alarm control system.The software design adoption the design thought from top to bottom, strengthen the system and can expand the stability and circulate,to make the system toward wear distribute type,turn to the direction development of small.The lock has some promotional value.Keywords: singlechip; AT89C51;cryptogram lock;alarm; LCD目录摘要 (i)Abstract (i)目录 (iii)1绪论 (1)1.1单片机的应用领域 (2)1.1.1智能仪器仪表 (2)1.1.2工业控制 (2)1.1.3家用电器 (2)1.1.4计算机网络和通信 (2)1.1.5医用设备 (2)1.1.6大型电器 (3)1.2课题的目的和意义 (3)1.2.1选题目的 (3)1.2.2选题意义 (3)1.3国内外研究现状与水平 (3)1.4发展趋势 (4)1.5本设计特点 (4)2分析 (5)2.1方案选择 (5)2.2总体设计思路 (5)2.2.1系统实现功能 (5)2.2.2系统运行过程 (6)2.2.3系统总设计结构图 (6)2.3主要元器件介绍 (7)2.3.1AT89C51介绍 (7)2.3.2LCD1602显示器介绍 (9)2.3.3存储芯片AT24C02介绍 (10)2.3.4I2C总线介绍 (11)2.3.5矩阵键盘介绍 (13)3设计 (14)3.1硬件设计 (14)3.1.1单片机的晶振、复位电路 (14)3.1.2键盘输入电路 (15)3.1.3显示电路 (16)3.1.4存储电路 (17)3.1.5报警电路 (17)3.1.6开锁电路 (18)3.1.7生成电路图 (18)3.1.8元器件采购 (19)3.2软件设计 (19)3.2.1主程序 (19)3.2.2键盘扫描程序 (23)3.2.3密码修改程序 (26)3.2.4LCD显示程序 (28)3.2.5延时程序 (30)3.2.6中断程序 (31)3.3调试程序 (32)3.3.1Proeus 软件介绍 (32)3.3.2Keil C51软件介绍 (32)3.3.3Proteus 软件与Keil uVision 的结合 (32)4结论 (34)致谢 (2)参考文献 (3)1 绪论随着新技术的不断开发与应用,日常生活中住宅的安全防范以及一些个人资料的保存等一系列安全防盗问题已成为社会普遍关注的问题。

利用数字电路实现电子密码锁-毕业设计

利用数字电路实现电子密码锁-毕业设计

利用数字电路实现电子密码锁学生:XXX 指导老师:XXX内容摘要:本数字密码锁采用单片机AT89S52为主控芯片,由EEPROM存储密码。

硬件部分包括主控制系统、人机交互界面以及输出系统三大部分。

主控制系统中主控制芯片使用了AT89S52单片机,该单片机性能优良,能满足一般的普通应用;EEPROM采用AT24C02芯片,掉电后可以存储密码,从而保证了系统的安全性。

人机交互通道部分采用了4×4矩阵键盘输入以及LCD1602标准字符型液晶显示。

输出系统部分包括驱动开锁电路和报警电路;其中,在本系统设计中,驱动开锁电路用发光二极管表示,而报警电路则使用蜂鸣器。

本系统中使用的AT24C02芯片是一个带有I2C总线接口的EEPROM存储器。

I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。

I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。

具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。

本数字密码锁的功能为:密码位数为8位,可选值为0~9,从而保证足够的锁体强度;用户可以自行设定和修改密码;防止密码被盗,输入密码错误次数超过3次则报警;友好的人机界面;输入正确的密码后,驱动开锁电路。

软件部分应用单片机C语言实现了本设计的全部控制功能。

C语言编译方便,易读性好,且移植性方便,能够满足实现本系统的功能要求。

在设计过程中,给出了本系统C语言编程的原理和流程图。

本数字密码锁系统稳定性好,设计人性化,由于使用单片机控制并有记忆模块,功能齐全可靠,并有很好的扩展性,而且成本低廉,具有良好的发展前景。

关键词:数字密码锁 AT24C02芯片安全性Electronic combination lockAbstract:Using the digital circuit realize electronic combination lock This digital locks USES the monolithic integrated circuit AT89S52 as the controller chip, by EEPROM memory password. Hardware including master control system, man-machine interface and output system of three.The Lord control system used in the control chip AT89S52 SCM, this single chip good performance, can satisfy the general common application; The AT24C02 chip EEPROM, after power off can be stored password, so as to ensure the security of the system. Man-machine interactive channel part adopts the 4 x 4 matrix keyboard input and LCD1602 standard character type LCD display. The output of system including drive circuit and alarm lock circuit; Which, in the system design, drive the lock circuit using light-emitting diodes said, and alarm circuit is using a buzzer.The system used AT24C02 chip is a with the I2C bus interface EEPROM memory. The I2C bus is a two-way two wire bus, its simple structure, reliability and anti-interference capability. The I2C bus structure is simple, only two lines, including a data line (SDA) and a serial clock line (SCL). Has the I2C devices through this interface to two lines on the bus, the mutual information transfer.This digital locks function for: password digits for eight, optional value is 0 ~ 9, so as to ensure enough lock body strength; The user can set and modify the password; To prevent the password is stolen, the input password mistake number more than three times the alarm; Friendly human-machine interface; To enter the correct password, drive the lock circuit.Application software of single chip microcomputer C language realized this design of all control function. C compiler convenient, easy to read the gender is good, and easy portability, and can meet the requirement of system function realization. In the design process are given, and the system of the C programming language principle and flow chart.This digital locks system stability, humanized design, because use asingle-chip microcomputer control and a memory module, complete function and reliable, and have a good scalability, and the cost is low, have good development prospect.Keywords: Electronic combination lock AT24C02 chip safety目录前言 (1)1 系统的硬件设计 (2)1.1 硬件的总体结构和原理 (2)1.1.1 硬件系统的总体结构图 (2)1.1.2 硬件系统组成 (2)1.1.3 系统的可能性分析 (3)1.2 单片机AT89S51简介 (4)1.2.1 主要性能 (4)1.2.2 引脚功能描述 (5)1.3 AT24C02简介 (7)1.3.1 功能描述 (7)1.3.2 管脚描述 (7)1.3.3 I2C总线协议 (8)1.4 LCD1602介绍 (8)1.4.1 引脚描述 (9)1.4.2 LCDI602控制指令 (9)1.4.3 LCDI602读写控制时序 (11)1.5 4×4矩阵键盘 (11)1.6 复位电路 (12)1.7 振荡电路 (12)1.8 发光二极管LED电路 (13)1.9 报警电路 (13)1.10 电源输入电路 (14)1.11 使用到的元器件列表 (15)2 软件程序设计 (15)2.1 编译器Keil uVision2简介 (16)2.2 软件总设计流程图 (16)2.3 具体功能软件实现 (17)2.3.1 4×4矩阵键盘扫描程序 (17)2.3.2 显示程序 (19)2.3.3 时钟运行子程序 (19)2.3.4 时钟时、分修改子程序 (20)2.3.5 掉电存储服务程序 (21)2.3.7 密码修改子程序 (23)3 结束语 (24)附录1:PCB原理图 (26)附录2:仿真原理图 (27)附录3:单片机硬件实物图 (28)参考文献 (29)利用数字电路实现电子密码锁前言随着社会物质财富的日益增长,安全防盗已成为社会问题。

m16基于AT24C02的密码锁(1602)

m16基于AT24C02的密码锁(1602)

//rs----PD4//rw----PD5//en----PD6//data---PORTB//SDA---PC1//SCL---PC0//beep--PA6//开锁---PB7//开锁状态----PB5//如果把uchar const initpassword[6]={0,0,0,0,0,0};改为_flash uchar initpassword[6]={0,0,0,0,0,0}; //则出现这错误found `unsigned' expecting `;'可我没找到错误在哪???#include <iom16v.h>#include<macros.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#define uchar unsigned char#define uint unsigned int#define w 6 //定义密码位数uchar operation=0; //操作标志位uchar pass=0; //密码正确标志uchar ReInputEn=0; //重置输入充许标志uchar s3_keydown=0; //3秒按键标志位uchar key_disable=0; //锁定键盘标志uchar countt0,second; //t1中断计数器,秒计数器//void Delay5Ms(void);uchar InputData[6]; //输入密码暂存区uchar CurrentPassword[6]={1,3,1,4,2,0}; //当前密码值uchar TempPassword[6];uchar N=0; //密码输入位数记数uchar ErrorCont; //错误次数计数uchar CorrectCont; //正确输入计数uchar ReInputCont; //重新输入计数#pragma data:codeuchar const a[]={0xFE,0xFD,0xFB,0xF7}; //控盘扫描控制表uchar const start_line[] = {"password: "};uchar const name[] = {"===Coded Lock==="}; //显示名称uchar const Correct[] = {" correct "}; //输入正确uchar const Error[] = {" error "}; //输入错误uchar const codepass[] = {" pass "};uchar const LockOpen[] = {" open "}; //OPENuchar const SetNew[] = {"SetNewWordEnable"};uchar const Input[] = {"input: "}; //INPUTuchar const ResetOK[] = {"ResetPasswordOK "};uchar const initword[] = {"Init password..."};uchar const Er_try[] = {"error,try again!"};uchar const again[] = {"input again "};uchar const initpassword[6]={0,0,0,0,0,0};/************************************************************************************************* **/void port_init(){DDRA|=BIT(6);PORTA|=BIT(6);DDRB=0xFF;PORTB=0xFF;DDRC=0xFF;PORTC=0xFF;}/***********************************************************************************************/ void segg()//关数码显示管函数{DDRA|=BIT(PA3); //PA3设置为输出状态DDRA|=BIT(PA4); //PA4设置为输出状态DDRB=0xff; //PB口设置为输出状态PORTB=0xff; //发送模码PORTA|=BIT(PA3); //PA3输出高电平,DU拉高PORTA&=~BIT(PA3); //PA3输出低电平,DU拉低,段选锁存PORTB=0xff; //发送为选关掉数码管显示PORTA|=BIT(PA4); //PA4输出高电平,WE拉高PORTA&=~BIT(PA4); //PA4输出低电平,WE拉低,位选锁存DDRA|=BIT(PA2); //PA2设置为输出状态用于LED流水灯控制IO口PORTA&=~BIT(PA2); //PA2输出低电平,DU拉低,段选LED流水灯锁存}/****************************************5ms延时*************************************/void Delay5Ms(void){uint TempCyc = 5552;while(TempCyc--);}/****************************************400ms延时*************************************/void Delay400Ms(void){uchar TempCycA = 5;uint TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}}/****************************************24C02****************************************/void mDelay(uint t) //延时{uchar i;while(t--){for(i=0;i<125;i++){;}}}/*******************************************************************************************/ void Nop(void) //空操作{_nop_();_nop_();_nop_();_nop_();}/*****************************************起始条件*****************************************/ void Start(void){//Sda=1;PORTC|=BIT(1);////Scl=1;PORTC|=BIT(0);//Nop();//Sda=0;PORTC&=~BIT(1);//Nop();}/*****************************************停止条件*****************************************/ void Stop(void){//Sda=0;PORTC&=~BIT(1);////Scl=1;PORTC|=BIT(0);//Nop();//Sda=1;PORTC|=BIT(1);//Nop();}/*****************************************应答位*****************************************/ void Ack(void){//Sda=0;PORTC&=~BIT(1);//Nop();//Scl=1;PORTC|=BIT(0);//Nop();//Scl=0;PORTC&=~BIT(0);//}/*****************************************反向应答位*****************************************/ void NoAck(void){//Sda=1;PORTC|=BIT(1);//Nop();//Scl=1;PORTC|=BIT(0);//Nop();//Scl=0;PORTC&=~BIT(0);//}/****************************发送数据子程序,Data为要求发送的数据***********************/ void Send(uchar Data){uchar BitCounter=8;uchar temp;do{temp=Data;//Scl=0;PORTC&=~BIT(0);//Nop();if((temp&0x80)==0x80)//Sda=1;PORTC|=BIT(1);else//Sda=0;PORTC&=~BIT(1);////Scl=1;PORTC|=BIT(0);//temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);//Scl=0;PORTC&=~BIT(0);//}/********************读一字节的数据,并返回该字节值************************************/ uchar Read(void){uchar temp=0;uchar temp1=0;uchar BitCounter=8;//Sda=1;PORTC|=BIT(1);//do{//Scl=0;PORTC&=~BIT(0);//Nop();//Scl=1;PORTC|=BIT(0);//Nop();//if(Sda)if(PORTC&0xF2)/////////////temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}/****************************************************************************************/ void WrToROM(uchar Data[],uchar Address,uchar Num){uchar i;uchar *PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Send(*(PData+i));Ack();Stop();mDelay(20);}}/********************************************************************************/void RdFromROM(uchar Data[],uchar Address,uchar Num){uchar i;uchar *PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Start();Send(0xa1);Ack();*(PData+i)=Read();//Scl=0;PORTC&=~BIT(0);NoAck();Stop();}}//**********************************LCD1602*********************************************//#define yi 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//*********************************************************************************************// void delay(uint xms)//延时函数,有参函数{uint x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}/**********************************写指令****************************************/ write_1602com(uchar com)//****液晶写入指令函数****{PORTD&=~BIT(4);////数据/指令选择置为指令PORTD&=~BIT(5);////读写选择置为写PORTB=com;//送入数据delay(1);PORTD|=BIT(6);//拉高使能端,为制造有效的下降沿做准备delay(1);PORTD&=~BIT(6);//en由高变低,产生下降沿,液晶执行命令}/**********************写数据*****************************************************/ write_1602dat(uchar dat)//***液晶写入数据函数****{PORTD|=BIT(4);//////数据/指令选择置为数据PORTD&=~BIT(5);////读写选择置为写PORTB=dat;//送入数据delay(1);PORTD|=BIT(6);////en置高电平,为制造下降沿做准备delay(1);PORTD&=~BIT(6);////en由高变低,产生下降沿,液晶执行命令}/************************************初始化***************************************/ void lcd_init(void){write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);//开显示不显示光标write_1602com(0x06);//整屏不移动,光标自动右移write_1602com(0x01);//清显示}/*******************************************将按键值编码为数值*************************/ uchar coding(uchar m){uchar k;switch(m){case (0x18): k=1;break;case (0x28): k=2;break;case (0x48): k=3;break;case (0x88): k='A';break;case (0x14): k=4;break;case (0x24): k=5;break;case (0x44): k=6;break;case (0x84): k='B';break;case (0x12): k=7;break;case (0x22): k=8;break;case (0x42): k=9;break;case (0x82): k='C';break;case (0x11): k='*';break;case (0x21): k=0;break;case (0x41): k='#';break;case (0x81): k='D';break;}return(k);}/******************************按键检测并返回按键值*************************************/ uchar keynum(void){uchar row,col,i;DDRD=0x0F;PORTD=0xF0;//KeyRead=PIND; //读取键盘结果//KeyRead&=0x0f; //屏蔽高四位//if((P1&0xf0)!=0xf0)if((PIND&0xf0)!=0xf0){Delay5Ms();Delay5Ms();if((PIND&0xf0)!=0xf0){row=PIND^0xf0; //确定行线i=0;PORTD=a[i];////精确定位while(i<4){if((PIND&0xf0)!=0xf0){col=~(PIND&0xff); //确定列线break; //已定位后提前退出}else{i++;PORTD=a[i];}}}else{return 0;}while((PORTD&0xf0)!=0xf0);return (row|col); //行线与列线组合后返回}else return 0; //无键按下时返回0}/********************************一声提示音,表示有效输入*************************************/ void OneAlam(void){PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//}/*********************************二声提示音,表示操作成功*********************************/void TwoAlam(void){PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//Delay5Ms();PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//}/*******************************三声提示音,表示错误************************************/ void ThreeAlam(void){PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//Delay5Ms();PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//Delay5Ms();PORTA&=~BIT(6);//Delay5Ms();PORTA|=BIT(6);//}/*****************显示输入的N个数字,用H代替以便隐藏*************************************/ void DisplayOne(void){// DisplayOneChar(9+N,1,'*');write_1602com(yi+5+N);write_1602dat('*');}/***********************************显示提示输入**************************************/ void DisplayChar(void){unsigned char i;if(pass==1){//DisplayListChar(0,1,LockOpen);write_1602com(er);for(i=0;i<16;i++){write_1602dat(LockOpen[i]);}}else{if(N==0){//DisplayListChar(0,1,Error);write_1602com(er);for(i=0;i<16;i++){write_1602dat(Error[i]);}}else{//DisplayListChar(0,1,start_line);write_1602com(er);for(i=0;i<16;i++){write_1602dat(start_line[i]);}}}}/**************************************************************************************/ void DisplayInput(void){uchar i;if(CorrectCont==1){//DisplayListChar(0,0,Input);write_1602com(er);for(i=0;i<16;i++){write_1602dat(Input[i]);}}}/******************************************重置密码*******************************/ void ResetPassword(void){uchar i;uchar j;if(pass==0){pass=0;DisplayChar();ThreeAlam();}else{if(ReInputEn==1){if(N==6){ReInputCont++;if(ReInputCont==2){for(i=0;i<6;){if(TempPassword[i]==InputData[i]) //将两次输入的新密码作对比i++;else{//DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j<16;j++){write_1602dat(Error[j]);}ThreeAlam(); //错误提示pass=0;ReInputEn=0; //关闭重置功能,ReInputCont=0;DisplayChar();break;}}if(i==6){//DisplayListChar(0,1,ResetOK);write_1602com(er);for(j=0;j<16;j++){write_1602dat(ResetOK[j]);}TwoAlam(); //操作成功提示WrToROM(TempPassword,0,6); //将新密码写入24C02存储///////// ReInputEn=0;}ReInputCont=0;CorrectCont=0;}else{OneAlam();//DisplayListChar(0, 1, again); //显示再次输入一次write_1602com(er);for(j=0;j<16;j++){write_1602dat(again[j]);}for(i=0;i<6;i++){TempPassword[i]=InputData[i]; //将第一次输入的数据暂存起来}}N=0; //输入数据位数计数器清零}}}}/****************************输入密码错误超过三过,报警并锁死键盘********************************/ void Alam_KeyUnable(void){PORTD=0x00;//{PORTA^=BIT(6);//Delay5Ms();}}/*************************************取消所有操作***********************/void Cancel(void){uchar i;uchar j;//DisplayListChar(0, 1, start_line);write_1602com(er);for(j=0;j<16;j++){write_1602dat(start_line[j]);}TwoAlam(); //提示音for(i=0;i<6;i++){InputData[i]=0;}PORTB|=BIT(7);//关闭锁PORTA|=BIT(6);//报警关operation=0; //操作标志位清零pass=0; //密码正确标志清零ReInputEn=0; //重置输入充许标志清零ErrorCont=0; //密码错误输入次数清零CorrectCont=0; //密码正确输入次数清零ReInputCont=0; //重置密码输入次数清零PORTB|=BIT(5);s3_keydown=0;key_disable=0;N=0; //输入位数计数器清零}/*******************************确认键,并通过相应标志位执行相应功能************************/ void Ensure(void){uchar i,j;RdFromROM(CurrentPassword,0,6); //从24C02里读出存储密码if(N==6){if(ReInputEn==0) //重置密码功能未开启{for(i=0;i<6;){if(CurrentPassword[i]==InputData[i]){i++;}else{ErrorCont++;if(ErrorCont==3) //错误输入计数达三次时,报警并锁定键盘{write_1602com(er);for(i=0;i<16;i++){write_1602dat(Error[i]);}doAlam_KeyUnable();while(1);}else{TIMSK|=BIT(2); //开启定时key_disable=1; //锁定键盘pass=0;break;}}}if(i==6){CorrectCont++;if(CorrectCont==1) //正确输入计数,当只有一次正确输入时,开锁,{//DisplayListChar(0,1,LockOpen);write_1602com(er);for(j=0;j<16;j++){write_1602dat(LockOpen[j]);}TwoAlam(); //操作成功提示音PORTB&=~BIT(7);//开锁///////////////////////////////////pass=1; //置正确标志位TIMSK|=BIT(2); //开启定时/////////////////////////PORTB&=~BIT(5);//开锁指示灯亮//////////////////////////////for(j=0;j<6;j++) //将输入清除{InputData[i]=0;}}else//当两次正确输入时,开启重置密码功能{//DisplayListChar(0,1,SetNew);write_1602com(er);for(j=0;j<16;j++){write_1602dat(SetNew[j]);}TwoAlam(); //操作成功提示ReInputEn=1; //允许重置密码输入CorrectCont=0; //正确计数器清零}}else//============当第一次使用或忘记密码时可以用131420对其密码初始化{if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&& (InputData[5]==0)){WrToROM(initpassword,0,6); //强制将初始密码写入24C02存储//DisplayListChar(0,1,initword); //显示初始化密码write_1602com(er);for(j=0;j<16;j++){write_1602dat(initword[j]);}TwoAlam();Delay400Ms();TwoAlam();N=0;}else{//DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j<16;j++){write_1602dat(Error[j]);}ThreeAlam(); //错误提示音pass=0;}}}else//当已经开启重置密码功能时,而按下开锁键,{//DisplayListChar(0,1,Er_try);write_1602com(er);for(j=0;j<16;j++){write_1602dat(Er_try[j]);}ThreeAlam();}}else{//DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j<16;j++){write_1602dat(Error[j]);}ThreeAlam(); //错误提示音pass=0;}N=0; //将输入数据计数器清零,为下一次输入作准备operation=1;}/********************************************************************************************/ void main(void){uchar KEY,NUM;uchar i,j;segg();port_init();Delay400Ms(); //启动等待,等LCM讲入工作状态lcd_init(); //LCD初始化write_1602com(yi);//日历显示固定符号从第一行第0个位置之后开始显示PORTD=0xFF;TCCR1B=0X05;//1024分频//5msTCNT1H=0XFF;//TCNT1L=0XC5;//TIMSK|=BIT(2);SREG|=BIT(7);for(i=0;i<16;i++){write_1602dat(name[i]);//向液晶屏写日历显示的固定符号部分}write_1602com(er);//时间显示固定符号写入位置,从第2个位置后开始显示for(i=0;i<16;i++){write_1602dat(start_line[i]);//写显示时间固定符号,两个冒号}write_1602com(er+9); //设置光标位置write_1602com(0x0f); //设置光标为闪烁Delay5Ms(); //延时片刻(可不要)N=0; //初始化数据输入位数while(1){if(key_disable==1)Alam_KeyUnable();elsePORTA|=BIT(6); //关报警KEY=keynum();if(KEY!=0){if(key_disable==1){second=0;}else{NUM=coding(KEY);{switch(NUM){case ('A'): ; break;case ('B'): ; break;case ('C'): ; break;case ('D'): ResetPassword(); break; //重新设置密码case ('*'): Cancel(); break; //取消当前输入case ('#'): Ensure(); break; //确认键,default:{//DisplayListChar(0,1,Input);write_1602com(er);for(i=0;i<16;i++){write_1602dat(Input[i]);}operation=0;if(N<6) //当输入的密码少于6位时,接受输入并保存,大于6位时则无效。

基于单片机的四位电子密码锁的设计

基于单片机的四位电子密码锁的设计
//#define Busy 0x80//用于检测LCM状态字中的Busy标识
#define w 4//定义密码位数
sbit lcd1602_rs=P2^7;
sbit lcd1602_rw=P2^6;
sbห้องสมุดไป่ตู้t lcd1602_en=P2^5;
sbit wxbz=P3^6;
sbit Scl=P3^4;//24C02串行时钟
(1)密码输入、显示及开锁功能;
(2)密码重置(两次输入旧密码正确后,再两次输入新密码无误则修改成功);
(3)上锁功能;
(4)声光提示(蜂鸣器和发光二极管);
(5)错误报警、输入次数任意更改(0-9次);
(6)液晶屏省电/正常模式任意切换;
(7)产生随机密码并可一键保存;
(8)输入密码的显示/隐藏任意切换;
第2章 硬件电路设计
图2-1-1 AT89S52最小工作系统
1、时钟电路:
单片机工作的时间基准,决定单片机工作速度。时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。AT89S51单片机时钟频率范围:0—33MHz。本设计晶振选择频率为12MHZ,电容选择30pF如图(3-4)。经计算得单片机工作胡机器周期为:
电子密码锁的设计与总结报告
摘要:
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
本次设计使用ATMEL公司的AT89S51单片机为芯片主体,采用AT24C02为掉电存储器的芯片。这种芯片稳定性高,成本低,还能扩展很多功能。如红外探测技术,指纹识别技术,语音识别技术,图像识别技术等。这些扩展的技术国外发展的比较迅速,有些已经投入使用。本设计没有采用这些扩展。其主要具有如下功能:

单片机电子密码锁课程设计

单片机电子密码锁课程设计

单片机技术及应用综合训练(设计报告)前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。

在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。

本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。

它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。

用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。

本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。

关键词:电子密码锁、报警、液晶显示目录一、选题要求 (1)二、硬件电路设计 (1)2.1 51单片机 (2)2.2 键盘电路 (2)2.3 液晶显示电路 (2)2.4 警报电路 (3)2.5 密码储存电路 (3)2.6 晶振、复位及关锁 (3)三、软件设计 (4)四、软硬件调试结果 (9)4.1 电路总原理图 (9)4.2 调试结果 (10)五、总结 (11)一、选题要求本文从经济实用的角度出发,设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共6位密码,每位的取值范围为0~9,用户可以自行设定和修改密码。

用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,期间输入密码无效,以防窃贼多次试探密码。

6位密码同时输入正确,锁才能打开。

锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的,因此保密性强、灵活性高。

其特点如下:1) 保密性好,编码量多,远远大于弹子锁。

随机开锁成功率几乎为零。

密码锁课程设计文档

密码锁课程设计文档

1 密码锁设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的密码锁。

该密码锁上电或按键复位后能自动显示系统提示符“P .”, 进入准备工作状态。

该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。

1.2 设计课题总体方案介绍及工作原理说明(1)原始密码的设定,此密码是固定在程序存储器ROM 中,假设预设的密码为“88888888”共8位密码。

(2)密码的输入: 采用按键来完成密码的输入,输入时密码处于显示保密状态,输入八位密码后,自动结束输入,并判断其正确性 。

(3)密码若输入错误,显示输入错误提示信息,密码输入正确后,可以用键盘任意输入数字,若按下第十一个按键,则进入修改密码。

(4)密码修改:可以任意输入“0-9”中的八位数字作为密码,密码输入时处于保密显示状态,修改密码必修两次输入密码,八位密码输入结束确认后显示密码已保存。

电源.下载电路复位电路行列式键盘电路单片机晶振电路液晶显示电路存储电路图1 设计总电路框图2 密码锁硬件系统设计2.1 设计课题硬件系统各模块功能简单介绍此次课程设计是基于单片机控制的电子密码锁,结合主要设计条件,本设计由单片机系统、行列式键盘、液晶12864显示和AT24C02掉电保护系统组成,系统能完成开锁、错误显示、密码修改、掉电保护等功能,设计硬件系统如下: (1)单片机系统:此次课程设计采用以AT89S52单片机为核心的控制方案,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。

本次设计用单片机的P1口与行列式键盘相连,作为密码的输入。

P0口与LCD12864相连,来控制液晶显示屏。

(2)行列式键盘接口电路:此次课程设计采用行列式键盘,将按键的一端相连后接至单片机的P1口的低四位,把按键的另一端相连接到单片机P1口的高四位,用扫描法进行键盘扫描。

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计基于单片机的电子密码锁设计单片机是典型的嵌入式微控制器,由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。

下面是小编为你带来的基于单片机的电子密码锁设计,欢迎阅读。

摘要:随着电子技术的发展,人们对锁的需求越来越多,所以各种各样的电子锁层出不穷,未来电子密码锁的市场将非常广阔。

这次设计是以STC89C51单片机为技术控制核心,显示部分选用了1602液晶显示,密码储存模块采用AT24C02芯片,结合设计的外围报警模块,矩阵键盘输入模块,继电器模块完成了电子密码锁的设计。

关键词:密码锁;单片机;液晶显示一、引言(一)设计的背景和研究意义。

自从人类脱离原始社会、开始有私有财产的概念以来,锁就成为了人们生活中的重要组成部分。

随着科技的发展,电子密码锁被越来越多的人所接受,它已经在生活中随处可见了. 电子密码锁拥有太多机械锁完全无法相比的优点。

它不但能完成“锁”自身的功用,还可以具有记忆、辨识、警报等特别的作用。

因为电子密码锁的更安全性、更便宜、易操作,越来越多人开始关注这一领域。

随着单片机的迅速发展,其应用领域越来越广泛,将其应用到保密和安全方面是相当可靠,相当有意义的。

基于单片机的电子密码锁的研究在保护财产和人身安全方面可以给人们带来更多更好的选择(二)设计的主要环节。

设计的主要方案如下:(1)控制模块采用STC89C51为控制中心模块。

(2)键盘输入采用4x3的共阴极键盘输入可以节省IO口的使用。

(3)显示模块采用液晶显示密码的输入和修改等提示。

(4)报警模块通过蜂鸣器和LED灯闪烁来完成。

(5)继电器用来控制密码锁的开关。

二、系统的硬件原理图硬件设备是以单片机为核心,结合电源电路、密码储存电路、显示电路、报警电路和继电器电路等外围设备来完成设计要求。

其原理框图如图1。

三、系统硬件部分设计(一)AT24C02 EEPROM存储器。

用户在使用电子密码锁的时候若更改了系统的初始密码,密码锁系统断电之后密码就容易丢失,而曾加了AT24C02就能把密码储存起来防止丢使。

基于单片机的密码锁 4位数码管+24c02+蜂鸣器

基于单片机的密码锁
------4位数码管+24C02+蜂鸣器
本系统是基于单片机的密码锁,用户可以通过按键输入4位密码,系统会把用户输入的密码跟之前储存在系统的密码进行比较(出厂默认密码“1234”),如果一致则蜂鸣器发出”滴滴“,数码管显示“YESS”,如果输入错误蜂鸣器发出”滴“,数码管显示“NO”,连续输入三次错误密码,系统自动锁定,数码管显示“dead”,蜂鸣器常鸣,需按复位键从新进入系统。

输入正确密码进入后,用户可以设置新的密码,设置完之后按“确定”键,进入输入密码状态。

上电后,显示“CODE”,等待输入密码:
密码输入正确后提示:
密码输入错误提示:
输入错误3次提示:
详情参照:
/item.htm?spm=a1z10.1.w8789017464.21 .catC8u&id=23157508996。

第八章 基于AT24C02的电子密码锁的设计

2 2
图 8-7 应答信号时序
六、I2C 总线的传送格式
I2C 总线的传送格式为主从式, 对系统中的某一器件来说有四种工作方式: 主发送方式、 从发送方式、主接收方式、从接收方式。 单片机发送 24C02 接收为主发送方式。 主器件产生开始信号以后, 发送的第一个字节为控制字节。 前七位为从器件的地址片选 信号。最低位为数据传送方向位(高电平表示读从器件,低电平表示写从器件) ,然后发送 一个选择从器件片内地址的字节,来决定开始读写数据的起始地址。接着再发送数据字节, 可以是单字节数据,也可以是一组数据,由主器件来决定。从器件每接收到一个字节以后, 都要返回一个应答信号(ASK=0) 。主器件在应答时钟周期高电平期间释放 SDA 线,转由从器 件控制,从器件在这个时钟周期的高电平期间必须拉低 SDA 线,并使之为稳定的低电平,作 为有效的应答信号。
第八章 基于 AT24C02 的电子密码锁的设计
8.1 硬件电路的设计
图 8-1 AT24C02 硬件电路
备注:SCL、SDA 引脚需要接 10K 的上拉电阻,学习板上,所有引脚都也接 10K 上拉电阻。
8.2 I C 总线的 AT24C02 存储器简介
一、什么是 I2C 总线
I C 总线(Inter Integrated Circuit Bus) :是 Philips 公司推出的串行总线标准(为 二线制) 。总线上扩展的外围器件及外设接口通过总线寻址,是具备总线仲裁和高低速设备 同步等功能的高性能多主机总线。 串行数据线 SDA 和串行时钟线 SCL 构成的,可发送和接收数据。 2 2 所有挂接在 I C 总线上的器件和接口电路都应具有 I C 总线接口,且所有的 SDA/SCL 同名端 相连。总线上所有器件要依靠 SDA 发送的地址信号寻址,不需要片选线。 特点:组成系统结构简单,占用空间小,芯片管脚的数量少,无需片选信号,价格低。 允许若干兼容器件共享总线, 应用比较广泛。 总线的长度可达 7.6m, 传送速度可达 400kbps, 2 标准速率为 100kbps。支持多个组件。支持多主控器件(某时刻只能有一个主控器件) 。I C 总线上所有设备的 SDA, SCL 引脚必须外接上拉电阻。

基于AT24C02电子密码锁的设计

单片机应用课程设计设计题目:基于AT24C02电子密码锁的设计目录1 设计任务....................... 错误!未定义书签。

2 系统总体方案设计............... 错误!未定义书签。

2.1各个模块方案论证............ 错误!未定义书签。

2.1.1 芯片选择................ 错误!未定义书签。

2.1.2 显示器的选择............ 错误!未定义书签。

2.2总体方案设计................ 错误!未定义书签。

3 硬件电路设计................... 错误!未定义书签。

3.1单片机最小系统.............. 错误!未定义书签。

3.2AT24C20储存密码电路........ 错误!未定义书签。

3.3矩阵键盘电路 (6)3.4液晶显示电路 (6)4 系统软件设计................... 错误!未定义书签。

4.1主程序流程图 (7)4.2子程序流程图 (8)4.2.1 AT24C20子程序流程图 (8)4.2.2 1602子程序流程图 (9)5实物调试....................... 错误!未定义书签。

5.1实性物能分析 (9)6心得体会....................... 错误!未定义书签。

附录1 ........................... 错误!未定义书签。

(1)系统总电路图 (15)(2)系统仿真图 (15)附录2 ........................... 错误!未定义书签。

(1)程序清单 .................. 错误!未定义书签。

1.设计任务基本要求:采用AT24C02与单片机STC89C52相结合设计电子密码锁,然后通过矩阵键盘按键进行密码的输入、清除、更改、开锁等功能。

2.系统总体方案设计2.1各个模块方案讨论2.1.1芯片选择由于设计的是电子密码锁,而单片机AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档