基于单片机数字密码锁的设计要点.pdf
《基于单片机数字密码锁的设计要点.pdf》由会员分享,可在线阅读,更多相关《基于单片机数字密码锁的设计要点.pdf(41页珍藏版)》请在三一文库上搜索。
1、摘要 随着科技和人们的生活水平的提高, 如何实现家庭防盗这一问题也变的尤其的突 出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵 活性好,安全系数高,受到了广大用户的青睐。 单片机也被称微控器,是因为它最早被用在工业控制领域。单片机是靠程 序运行的,并且可以修改。 本设计系统主机采用8052单片机, MCS-51 单片机的程序存储器和数据存储器的 地址空间是相互独立的,而且程序存储器一般为ROM 或 EPROM,只能读出不能写入。 扩展用的程序存储器芯片大多采用EPROM 芯片,最大可扩展到 64K字节。该设计使用 矩阵键盘输入。 LED数码管显示输入密码,用74HC
2、245驱动数码管发光显示数码, LCD1602控制显示。密码正确,二极管发光。输入密码错误次数超过三次系统报警, 蜂鸣器发出报警音。 关键词:单片机软件电路硬件电路 目录 第一章 设计要求 1 第二章系统组成及工作原理2 第三章硬件电路设计 3 3.1 STC89C52 单片机的介绍 .3 3.2 单片机最小系统 .5 3.3 键盘电路设计 6 3.4 LCD1602 显示电路 .8 3.5 开锁电路 11 3.6 报警电路 11 3.7 仿真效果图 12 第四章软件设计 13 4.1 PROTEUS 仿真软件 .13 4.2 KEIL编译设计 15 4.3 普中 ISP 自动下载软件 .16
3、 4.4 程序流程图 .18 第五章 设计、调试和测试结果与分析19 第六章 设计小结 .23 参考文献 .24 附录.25 - 1 - 第一章设计要求 采用单片机、 LCD等芯片,设计电子密码锁,能随时修改密码,具有防多次试探 功能,连续输入密码达到一定次数, 发出光声报警密码输入错误时有报警功能,连续 输入 3 次错误,键盘自锁,等待管理解锁;开锁后或修改密码后可以选择退出,返回 开锁前状态。 掌握 Proteus 软件的基本应用, 用于设计与仿真, 需要用 PROTEUS软件 绘制电路原理图及局部原理图;掌握单片机编程语言,可选用汇编语言或C语言; 本次课程设计是要设计一个数字密码锁,设
4、计要求如下: 1、设计一个数字式密码锁。 2 、密码由 4 6 位数字组成。 3 、密码相符开锁,三次不符报警。 4 、密码可以更新。 - 2 - 第二章系统组成及工作原理 STC89 C52 图 2.1 系统总设计图 该电子密码锁采用4*4 键盘作为输入信号, 输入到作为主机 STC89C52 单片机,通 过软件编程的程序, 做出判断, 结果再经 1602LCD液晶显示器作为输出显示。 晶振电 路提供单片机运行脉冲。 STC89C52 单片机:STC89C52 是一种低功耗、 高性能 CMOS8 位微控制器, 具有 8K 在系统可编程 Flash 存储器。具有以下标准功能: 8k 字节 Fl
5、ash ,512 字节 RAM , 32 位 I/O 口线,看门狗定时器,内置4KB EEPROM,复位电路, 3 个 16 位定时器 / 计数器, 4 个外部中断,一个7 向量 4 级中断结构(兼容传统51 的 5 向量 2 级中断 结构),全双工串行口。 复位电路:复位电路,就是利用它把电路恢复到起始状态。就像计算器的清 零按钮的作用一样, 以便回到原始状态, 重新进行计算。 使 CPU 及系统各部件处于确 定的初始状态。 键盘控制电路:在此次的设计中,输入密码,修改密码等都需要通过键盘来 实现,键盘采用矩阵键盘,这样可以减少I/O 口的使用。 LCD显示电路:本次实验采用的是LCD160
6、2液晶显示,好处是相比于LED数 码管显示方便许多,也比较符合消费者的要求。 超次报警电路:密码箱最重要的是保护消费者的财产及隐私,若非本人操作 很难一下子输对密码, 本次设计是三次输入密码不正确蜂鸣器会响,模拟报警的装置。 开门电路:输对密码之后,继电器吸合,小灯点亮,模拟开保险箱的动作。 复位电路 键盘控制 电路 开锁电路 超 次 报 警 电路 LCD 显示 电路 - 3 - 第三章 硬件电路设计 3.1 STC89C52 单片机的介绍 STC89C52 是一种低功耗、高性能CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术
7、制造,与工业80C51 产品指令 和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在 单芯片上,拥有灵巧的8 位 CPU 和在系统可编程 Flash ,使得 STC89C52 为众多嵌入 式控制应用系统提供高灵活、超有效的解决方案。 STC89C52 具有以下标准功能: 8k 字节 Flash ,256字节 RAM ,32 位 I/O 口线, 看门狗定时器, 2 个数据指针,三个16 位定时器 / 计数器,一个 6 向量 2 级中断结 构,全双工串行口,片内晶振及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操 作,支持 2 种软件可选择节电模式。掉电
8、保护方式下,RAM 内容被保存,振荡器被 冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 图 3.1 STC89C52 功能引脚图 VCC: 电源 GND:地 - 4 - P0口:P0口是一个 8位漏极开路的双向 I/O 口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0 端口写“ 1”时,引脚用作高阻抗输入。当访问外部程序和数据 存储器时, P0口也被作为低8 位地址 / 数据复用。在这种模式下,P0 具有内部上 拉电阻。在 flash编程时, P0 口也用来接收指令字节;在程序校验时,输出指令 字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8
9、 位双向 I/O 口,p1 输出缓冲器能驱 动 4 个 TTL逻辑电平。对 P1 端口写“ 1”时,内部上拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因, 将输出电流(IIL )。此外, P1.0 和 P1.2 分别作定时器 / 计数器 2 的外部计数输入 (P1.0/T2 ) 和时器 / 计数器 2 的触发输入(P1.1/T2EX) ,在 flash编程和校验时, P1口接收低 8 位地址字节。 P2 口:P2 口是一个具有内部上拉电阻的8 位双向 I/O 口,P2 输出缓冲器能驱 动 4 个TTL 逻辑电平。对 P2 端口写“ 1”时,内部上
10、拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因, 将输出电流( IIL )。在访问外部程序存储器或用16 位地址读取外部数据存储器 (例如执行 MOVX DPTR)时, P2 口送出高八位地址。在这种应用中,P2 口使用 很强的内部上发送1。在使用 8 位地址(如 MOVX RI)访问外部数据存储器时, P2口输出 P2 锁存器的内容。在flash编程和校验时, P2口也接收高 8 位地址字 节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8 位双向 I/O 口,P2输出缓冲器能驱动4 个 TTL逻辑电平。对P3端口写“ 1”时,内部上
11、拉电阻把端口拉高,此时可以作 为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输 出电流( IIL )。P3口亦作为 STC89C52 特殊功能(第二功能)使用,如表3-1 所 示。在 flash编程和校验时, P3口也接收一些控制信号。 表 3-1 P3口的第二功能表 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD TXD INT0 INT1 T0 T1 WR RD - 5 - RST: 复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。 看门狗计时完成后, RST 脚输出 96 个晶振周期的高电平。 ALE
12、/PROG:地址锁存控制信号 (ALE )是访问外部程序存储器时,锁存低8 位地址 的输出脉冲。在 flash编程时,此引脚( PROG)也用作编程输入脉冲。 在一般情况下, ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或 时钟使用。 PSEN: 外部程序存储器选通信号(PSEN )是外部程序存储器选通信号。 当 STC89C52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两 次,而在访问外部数据存储器时,PSEN 将不被激活。 EA/VPP:访问外部程序存储器控制信号。 为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA必须接 GND
13、。为了执行内 部程序指令, EA应接 VCC 。在 flash编程期间, EA也接 12 伏 VPP电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 3.2 单片机最小系统的设计 单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外, 还需要包括电源供电电路、时钟电路、复位电路。 1、时钟电路单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控 制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信 号通常有两种产生方式 : 内部时钟方式和外部时钟方式。内部时钟方式的原理电路如 图 2-8 所示
14、。在单片机 XTAL1和 XTAL2引脚上跨接上一个晶振和两个稳频电容,可以 与单片机片内的电路构成一个稳定的自激振荡器。晶振的取值范围一般为024MHz , 常用的晶振频率有6MHz 、12 MHz 、11.0592 MHz、24 MHz等。一些新型的单片机还可 以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶 振频率一致,同时起到稳定频率的作用,一般选用2030pF的瓷片电容。 2、复位电路无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需 要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这 个状态开始工作。单片机的复位条件 : 必
15、须使其 RST引脚上持续出现两个 (或以上 ) 机 器周期的高电平。单片机的复位形式 : 上电复位、按键复位。 - 6 - 图 3.2 单片机最小系统 3.3 键盘电路设计 按键工作处于两种状态:按下与释放。一般按下为接通,释放为断开,这两种状 态要被 CPU 识别,通常将两种状态转换为与之对应的低电平或高电平。CPU通过按键 信号电平的高低来判断按键的状态。 使用矩阵键盘,所以本设计采用行列式键盘,可减少键盘与单片机接口是所占用 的 I/O 线的数目,按键比较多时,通常采用这种方法。矩阵式键盘又叫行列式键盘。 用 I/O 接口线组成行、列结构,键位设置在行、列的交点上。例如本设计(图 4-4
16、)4*4 的行、列结构可组成 16 个键盘,比一个键位用一根I/O 口线的独立式键盘少了一半的 I/O 接口线。而且键位越多,情况越明显。因此,在按键比较多时,往往采用矩阵式 键盘。矩阵式键盘的按键识别方法有“行扫描法”。行扫描法又称为逐行(或列)扫 描查询法,是一种最常用的按键识别方法,介绍过程如下。 (1)判断键盘中有无键按下将全部行线 Y0-Y3 置低电平,然后检测列线的状态。 只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4 根行线相交叉的 4 个按键之中。若所有列线均为高电平,则键盘中无键按下。 - 7 - (2)判断闭合键所在的位置在确认有键按下后,即可进
17、入确定具体闭合键的过 程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电 平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低, 则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 图 3.3 键盘扫描电路图 每一条行线和列线交叉处通过一个按键来连接,利用这种行列式矩阵结构只需要 N条行线和 M条列线就可组成 N*M个按键。 在这种行列式矩阵键盘非键盘编码的单片机中,键盘处理程序先执行等待按键并确认 有无键盘按下的程序段。确认有键盘按下后,下一步执行识别哪一个键按下。 对照 4*4 键盘,首先识别键盘中有无键盘按下, 由单片机 I/O 口向键盘送
18、全扫描 字 00H ,把全部的列线置为低电平,然后把列线的电平状态读入累加器A中,如有键 按下,总会有一根线电平为低使行线不全为1。 判断键盘中哪一个键被按下, 使通过将列线逐列置低电平后, 检查行输入状态来 实现的。方法是:依次给列线送低电平,然后检查行输入状态来实现。如果全为1, - 8 - 则所按下键不在此列, 如果不全为 1 则按下的键必在此列。 而且是与零电平线相交的 交点上的键。 按键列表如下: 1 4 7 SET 2 5 8 0 3 6 9 OK 理想的按键信号是一个标准脉冲,但键的按下和释放都需要一个过程来实现,在 这一过程中是处于高低电平之间一种不稳定状态,称为抖动。 抖动时
19、间的长短, 频率 的高低与按键机械特征有关,一般在5 到 10ms之间。这就有可能造成CPU 对一次按 键过程进行多次处理。 为了避免这种情况应采取措施消除抖动。消抖常见有两种方法, 硬件消抖:如用滤波器, 双稳态电路等。 另一种用软件来实现, 即当发现有键按下时, 间隔 10ms以上时间,才能进行下一次查询,这样就让过了抖动过程,键的释放进行 同样处理。本设计为减少电路复杂程度,减少成本。采用软件消抖的方法。 本次的设计没有用字母, 仅仅是用 0-9 十个数字以及确定和重置十二个键。所以 3*4 的键盘也只用了 7 个 IO 口分别为 P1.0-P1.6 3.4 LCD1602显示电路 字符
20、型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD ,目前 常用 16*1,16*2,20*2 和 40*2 行等的模块。下面以长沙太阳人电子有限公司的1602 字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图3.4. - 9 - 图 3.4 LCD1602 字符型液晶显示器实物图 LCD1602 液晶显示器是一种字符点阵式LCD显示器模块。 它不仅能够显示阿拉伯数 字,而且还能够显示特殊的符号,以及英文字母(即英文语句提示信息),因此其用 途比较灵活,应用比较广泛,当然价格也较高。单片机STC89C52 从接收器得到的数 据运算程序后,结果传送给1602LC
21、D数据端并在液晶屏上显示出。显示电路如图3.4 所示。 LCD1602采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明 如表 3-2 所示: 表 3-2 LCD 功能引脚表 编号符号引脚说明编号符号引脚说明 1 VSS 电源地9 D2 数据 2 VDD 电源正极10 D3 数据 3 VL 液晶显示偏压11 D4 数据 4 RS 数据/ 命令选择12 D5 数据 5 R/W 读/ 写选择13 D6 数据 6 E 使能信号14 D7 数据 7 D0 数据15 BLA 背光源正极 8 D1 数据16 BLK 背光源负极 - 10 - 在仿真的过程中, PROTEUS里面找不到
22、 LCD1602 这个液晶显示的芯片,但找到了 LM016L液晶显示模块。通过查找资料这两款液晶显示的芯片功能差不多,仅有少数 引脚与 LCD1602 有差别,但是功能却一样。 所以在仿真的过程中并不影响整个设计的 效果。 P0.0-P0.7用作 LCD1602 的数据输入, P2.5,P2.6,P2.7用作 LCD的控制端。 LCD1602与 STC89C52 单片机的仿真连线如图3.5 所示。 图 3.5 LCD1602 显示电路 - 11 - 3.5 开锁电路的设计 本设计中, 发光二极管亮就表示开锁, 用继电器来控制发光二极管亮或灭,输入 密码正确,继电器动作, 发光二极管点亮, 输入
23、密码错误, 发光二极管保持灭的状态。 为更好的驱动继电器需要接一个三极管。开锁电路与单片机的连线如图3.6 。 图 3.6 开锁电路 3.6 报警电路 报警电路由蜂鸣器和单片机组成。选择一只压电式蜂鸣器, 压电式蜂鸣器工作时 需要约 100mA 的驱动电流。 蜂鸣器电路如图所示。 当 STC89C52 的 P3.0 口输出为低电 平时,蜂鸣器产生蜂鸣音。STC89C52 输出为高电平时,蜂鸣器不发音。 然而在 PROTEUS仿真的过程中, 电脑里放置的元器件并没有报警,为了更清楚的 显示现象所以在这里的仿真仅仅是用一个发光二极管代替,三次没有输对密码之后, 发光二极管点亮,代表报警。 图 3.
24、7 报警电路 - 12 - 3.7 仿真效果图 系统电路总图是将单片机最小系统(包括晶振以及复位电路) 和报警电路, 开锁 电路以及 LCD1602 显示电路组合在一起,由单片机的引脚控制各个模块的功能实现。 具体的引脚控制以及模块的放置如图3.8 仿真效果图。 3.8 仿真效果图 - 13 - 第四章 软件设计 4.1 PROTEUS仿真软件 Proteus 软件是英国 Lab Center Electronics公司出版的 EDA工具软件 ( 该软件 中国总代理为广州风标电子技术有限公司) 。它不仅具有其它EDA 工具软件的仿真功 能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 密码锁 设计 要点
链接地址:https://www.31doc.com/p-5207632.html