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

3.5 晶振部分
根据实际情况,本设计中采用12MHZ做为系统的外部晶振,电容取值为20pF。
图3-6 晶振电路原理图
3、硬件电路
3.6 显示部分
为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示LCD1602取代普通的数码管来完成。其显示部分引脚接口如图3-8所示:
基于单片机的电子密码锁设计
1、系统结构分析
图1-1 系统结构框图
本设计系统主要由单片机芯片、电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分显示部分、报警部分、开锁部分组成。
AT 89S51
键盘输入
复位电路
密码存储电路
晶振电路
电源输入
显示电路
报警电路
开锁电路
选用单片机AT89S51作为本设计的主控芯片。 采用矩阵键盘进行功能按键的输入。 外接AT24C02芯片用于密码的存储与修改。 利用LCD1602液晶显示器进行显示。 利用蜂鸣器进行报警工作。
图3-3 键盘输入原理图
3.3 电源输入部分
3、硬件电路
密码锁主控制部分电源需要用5V直流电源供电,其电路如图3-5所示:
图3-4 电源输入电路原理图
3.4 复位部分 根据实际情况选择如图3-6所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键。
3、硬件电路
图3-5 电源输入电路原理图
2、方案设计
3.1 存储芯片AT24C02
3、硬件电路
图3-1 AT24C02的电路接线图
3.2 矩阵键盘 采用4*4矩阵式键盘实现密码输入功能。 4*4键盘不但能完成密码的输入,还能作特别功能键使用,比如修改密码功能等。
3、硬件电路
图3-2 矩阵键盘
(毕业论文设计范文)基于单片机的电子密码锁的设计

(毕业论文设计范文)基于单片机的电子密码锁的设计毕业设计(论文)基于单片机的电子密码锁的设计摘要本设计是基于单片机的电子密码锁设计方案。
根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。
该电子密码锁充分利用了51系统单片机软、硬件资源,引入了智能化分析功能,提高了系统的可靠性和安全性。
本系统由单片机系统、矩阵键盘和报警系统组成。
系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。
另外,电子密码锁若与串行通信结合在一起将会成为宾馆、工厂、学校等需要进行统一管理的建筑群不可缺的商品。
机电一体化的电子密码锁,其功能大大超过弹子锁,且性能更稳定、更安全。
其特点,首先保密性好,其次编码可变;其三误码输入保护;其四停电不掉码。
由于自身的优势,电子密码锁会受到越来越多人们的欢迎,使用会越来越广泛,同时,也将会被社会所接受认可,并与弹子锁平分秋色。
关键词: AT89C2051 自动报警电子密码锁I:基于单片机的电子密码锁设计Design of Electronic Coded Lock Based on MCUAbstractThis design is locks the design proposal based on monolithic integratedcir cuit’s password according to the request has given the hardware electric circuit and the software procedure which this monolithic integrated circuit password locks simultaneously has given monolithic integrated circuit model contents and so on choice hardware design software flow chart monolithic integrated circuit memory cell assignment assembly language source program and detailed annotation.This electronic combination lock could use 51 system monolithic integrated circuit software and hardware resources fully, has introduced the intellectualized analysis function, enhanced system's reliability and the security, moreover, electronic combination lock, This system consists ofsingle-chip microcomputer system, matrix keyboard, LED display and alarm system. System to complete the unlock, overtime alarm, lock, administrators decrypt, modify the user s password locks the basic functions.if with theserial communication unified will become the guesthouse, the factory, the school and so on to need together to carry on the commodity which the global administration the architectural complex could not lack.Integration of machinery's electronic combination lock, its function surpasses the spring lock greatly, and the performance is stabler, is safer.Its characteristic, the secrecy is first good, next the code variables; Its three error code input protection; Its four power cut code. As a result of own superiority, the electronic combination lock will receive more and morepeople's welcome, the use will be getting more and more widespread, simultaneously, also will be accepted by the society the approval, and will share half and half with the spring lock.key word:AT89C2051 Autoalarm Electron trick lockII毕业设计(论文)目录引言 ........................................................................... ............................... 错误!未定义书签。
毕业设计-基于51单片机电子密码锁设计

基于51单片机电子锁设计摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,本系统各项功能已达到本设计的所有要求。
关键词:单片机;密码锁;单片机设计,电子锁。
Electronic Lock Design with 51 Serires Single Chip ControllerAbstractAlong with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low, Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.keyword:singlechip;cryptogram lock;singlechip design; electronics lock.目录1 绪论 (1)1.1 引言 (1)1.2 电子密码锁的背景 (1)1.3 电子锁设计的意义的本设计特点 (2)2.系统设计 (3)2.1系统总设计结构图 (3)2.2.开锁机构设计 (3)2.2.1主控芯片AT89C51单片机的简介 (4)3系统硬件设计 (6)3.1键盘设计 (6)3.2系统电路设计: (8)3.2.1 晶振时钟电路 (8)3.2.2复位电路设计 (8)3.2.3串口引脚功能介绍 (8)3.2.4 其它引脚 (9)3.3电路图的绘制 (9)3.3.1 PROTEL 99 SE简介: (12)3.4原器件采购 (14)3.5电路焊接 (14)4.软件设计 (17)4.1 系统软件设计整体思路 (17)4.2系统软件设计流程图 (18)5 程序调试 (19)5.1 程序调试用到的软件及工具 (19)5.2 KEIL C51简介 (19)5.3 调试过程 (19)6 设计总结与展望 (22)致谢 (23)参考文献 (24)附录 (25)1 绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。
基于单片机的电子密码锁

基于单片机的电子密码锁第一章:引言电子密码锁是随着科技的不断进步,应用于各个领域的一种新型门禁系统。
相较于传统的机械锁具,电子密码锁具有更高的安全性与便捷性。
而基于单片机的电子密码锁,则是通过单片机作为核心控制器,通过输入正确的密码才能进行开锁操作。
本文旨在介绍基于单片机的电子密码锁的原理、设计和实现过程。
第二章:电子密码锁的工作原理2.1 单片机简介单片机是一种集成了微处理器、存储器和各种输入输出接口于一体的微型计算机系统。
它具有体积小、功耗低、性能稳定等特点,适用于各种电子设备的控制系统。
2.2 电子密码锁的组成部分基于单片机的电子密码锁由输入模块、控制模块、显示模块和输出模块组成。
输入模块用于输入密码,控制模块用于验证密码的正确性和执行开锁指令,显示模块用于显示相关信息,输出模块用于控制锁的状态。
2.3 电子密码锁的工作原理当用户输入密码时,控制模块将用户输入的密码与预设密码进行比较。
如果输入的密码正确,则控制模块发送开锁指令,输出模块解除锁的限制,用户可以开启门。
否则,控制模块继续等待用户输入密码。
第三章:电子密码锁的设计步骤3.1 系统需求分析根据实际应用需求,确定电子密码锁系统的功能、性能和外观设计等方面的要求。
3.2 硬件设计根据系统需求,设计硬件电路,包括输入模块、控制模块、显示模块和输出模块等。
3.3 软件设计基于单片机的电子密码锁需要编写适用的软件程序。
根据密码验证算法,编写程序实现密码的比较和开锁指令的发送。
3.4 电子密码锁的制作流程根据硬件设计和软件设计的结果,进行电子密码锁的组装和制作。
3.5 电子密码锁的测试与调试对制作完成的电子密码锁进行测试,包括考虑用户输入的密码是否正确、开锁是否正常、显示是否准确等方面的问题。
第四章:电子密码锁的功能与特点4.1 密码设置与管理用户可以根据需要设置密码,并进行密码的管理,包括密码的增、删、改等功能。
4.2 多种开锁方式电子密码锁可以支持多种开锁方式,例如密码开锁、指纹识别、刷卡开锁等。
毕业设计(论文)-基于单片机控制的电子密码锁设计

基于单片机控制的电子密码锁设计目录摘要 (I)关键词 (I)Abstract ................................................................................................................... I I Key words ............................................................................................................... I I 1 绪论. (1)1.1 课题背景 (1)1.2 课题的目的和意义 (1)1.3 电子密码锁发展趋势 (1)1.4 本设计完成的工作 (2)2 总体方案设计 (2)2.1 电源模块 (3)2.2主控制器模块 (3)3 硬件实现及单元电路设计 (4)3.1 主控制模块 (4)3.2 单片机的时钟电路与复位电路设计 (4)3.3 单片机管脚说明 (5)3.4 键盘电路设计 (6)3.5 数码管显示电路设计 (6)3.6 存储芯片电路设计 (7)3.7 报警电路 (7)3.8 密码锁电路 (7)4 红外遥控电路设计 (8)4.1 红外通信基本原理 (8)4.2红外通信标准 (9)4.3 红外线遥控原理 (10)4.4 主要模块设计 (10)5 系统软件设计方案 (11)5.1 主程序流图 (11)5.2 开锁软件设计 (12)6 系统的安装与调试 (15)6.1硬件的安装 (15)6.2单片级密码锁的仿真 (16)结论 (16)致谢 ...................................................................................... 错误!未定义书签。
参考文献 (17)附录1 整机电路原理图 (18)附录2 部分源程序 (18)附录3:实物图 (27)基于单片机控制的电子密码锁设计摘要:本设计研究的对象是单片机密码锁,单片机密码锁由硬件和软件组成,硬件部分有电源输出电路、晶振电路、复位电路、键盘接口电路、开锁电路、报警电路、继电器、以及51单片机组成。
基于单片机电子密码锁设计论文

第1节引言1.1 电子密码锁概述随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。
随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。
从而使密码锁具有很高的安全性、可靠性。
目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。
但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。
很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。
电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。
设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。
1.2 本设计主要任务(1)共8位密码,每位的取值范围为1~8。
(2)用户可以自行设定和修改密码。
(3)按每个密码键时都有声、光提示。
(4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。
(5)开锁密码错3次要报警10分钟,报警期间输入密码无效,以防窃贼多次试探密码。
(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。
(7)密码键盘上只允许有8个密码按键和1个发光管。
基于单片机的电子密码锁毕业论文设计

本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2011年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。
电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。
另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。
电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。
同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。
关键词单片机密码锁 4*4矩阵键盘 EEPROM存储芯片实用经济AbstractThis project designed a digital electronic lock which used a MCU as data process and control chip. The main functions digital electronic lock are as follows:The design of the electronic password lock is mainly made up of four parts: 4×4 matrix keyboard interface circuit, data processing and control circuit, eeprom memory chip that is used to keep password when the lock loses power and display circuit. In addition the system also consists of LED lights, alarm buzzers, single-chip reset circuit and so on..The key question of the electronic lock designing is the realization of functions, such as the input password, clear password, unlock, change password and other functions.And the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,it works well as a residence lock and has great potential for commercial development.Key words: SCM Cipher lock 4*4matrix keyboard EEPROM Practical economy目录1 绪论 (1)1.1国内外研究综述 (1)1.2选题的目的和意义 (2)1.3本论文的任务 (3)2电子密码锁总体设计 (4)2.1系统总体设计 (4)2.2单片机 (5)2.3密码存储芯片选择 (10)2.4键盘输入方案比较 (12)2.5显示方案比较 (13)3电子密码锁的硬件设计 (1)3.1系统结构框图 (1)3.2主控部分 (2)3.3显示部分 (3)3.4键盘输入部分 (4)3.5密码存储部分 (5)3.6电源部分 (5)3.7其它功能部分 (8)3.8 电子密码锁的电路原理图 (10)4电子密码锁的软件组成 (12)4.1系统软件设计流程 (12)4.2 Keil uVision2软件介绍 (13)4.3各主要部分的功能实现程序设计 (14)4.3.1初始化程序设计 (14)4.3.2按键处理程序设计 (17)4.3.3密码更改程序设计 (21)5系统仿真 (24)5.1系统仿真过程 (24)5.2仿真调试中遇到的问题及解决办法 (25)总结 (1)致谢 (2)参考文献 (3)附录 (4)1 绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。
基于单片机电子密码锁的设计原理

本科生毕业设计目录设计总说明 (I)DESIGN INTRODUCTION ................................................................ 错误!未定义书签。
第1章绪论 . (1)1.1背景 (1)1.2电子锁 (1)1.3电子密码锁的特点 (1)1.4电子密码锁的发展趋势 (2)第2章系统总体设计 (2)2.1系统结构 (3)2.2 系统组成 (3)2.3 系统可行性分析 (3)第3章硬件电路设计 (4)3.1单片机AT89C51简介 (4)3.1.1 主要特性 (5)3.1.2 管脚说明 (5)3.1.3 震荡特性 (7)3.1.4 芯片擦除 (7)3.2 4×4矩阵键盘 (7)3.3复位电路 (8)3.4 振荡电路 (8)3.5 数码管 (8)3.6 发光二极管LED (9)3.7 电动锁 (10)3.8 蜂鸣器 (10)3.9 完整电路图 (11)第4章软件程序设计 (13)4.1软件设计流程图 (14)4.2 具体功能软件实施 (15)第5章结束语及展望 (21)第6章鸣谢 (22)第7章参考文献 (23)附录 (22)设计总说明在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛农业大学第六届大学生电子设计竞赛设计题目多功能电子密码锁设计方案专业班级 10级通信工程参赛团队 BT 参赛队员孙硕、李修虎、李庆坤完成时间 2012-05-262012 年 06 月 03 日基于STC89C52单片机多功能电子密码锁的设计摘要选用STC89C52单片机为核心的系统来实现按键输入、开锁和密码识别。
采用具备I2C总线接口的E2PROM 的AT24C02芯片来完成密码的存储,通过1602液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。
该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能。
其中加入了门铃,语音,温度检测,时钟,烟雾检测(小型的火警报警器),音乐播放等实用功能。
关键词:密码锁、多功能、STC89C52、温度、时钟、门铃、烟雾一、前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
随着单片机的问世,出现了电子密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。
电子密码锁通常使用单片机控制[1],单片机相对ARM来说成本较低,实现较为简单,功能较为完善,因此使用单片机控制较多。
用单片机控制的密码锁通常使用汇编语言来编写程序,数码管做显示器,但本设计使用移植性及可读性强的C语言编写,同时采用显示清楚、功率消耗小而且寿命长的1602液晶显示器,从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报警等功能的电子密码锁。
电子密码锁的附加功能有温度检测,可以时时检测当前温度;电子时钟,可以显示当前的时间,为人们的生活提供便利;门铃系统,可以替代传统的敲门并且还能够与房间内进行通话;防火报警器,利用温度传感器和烟雾传感器,对周围环境进行实时监控,对业主财产安全起到一定的防卫作用。
终上所述,我们努力用最低的成本实现最全面的功能,使本密码锁不仅仅作为一个作品展现在人们面前,而且能够实实在在运用到实际生活当中,对解决实际生活中的困难起到一定作用。
总之,我们努力用最小的成本,实现最多,最稳定的功能,这就要求我们对各个器件、电路相当了解。
二、总体方案设计以STC89C52单片机为电子密码锁系统核心,协调和控制各个模块正常工作;使用4*4矩阵键盘对本密码锁的多种功能进行控制;并驱动1602A显示器提示程序运行过程和开锁的步骤;利用AT24C02芯片实现密码掉电存储和密码的读取;通过DS1802温度传感器及MQ-2烟雾传感器对周围环境实时监控并传回数据,当温度过高或有害气体浓度超标时及时发出警报;由蜂鸣器为门铃,TDA2822实现声音的放大功能使房内主人可清晰听到客人的喊话。
其中MQ-2烟雾报警模块与语音模块作为独立模块,使其实用更加方便和人性化。
图1为单片机控制密码锁的系统原理框图。
图1 单片机控制密码锁的系统原理框图由于利用单片机灵活的编程设计和强大的I/O 端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能。
因此,这个方案比较合理化。
三、 单元模块设计 3.1硬件支持使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602、4×4矩阵键盘、报警蜂鸣器、独立按键、DS1802温度传感器、MQ-2烟雾传感器、TDA2822、LM7805、NE555、MAX232芯片、DB9、电容、晶振、电阻、发光二极管、三极管和继电器。
3.2功能单元模块设计3.2.1 开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁(电磁锁用LED发光二极管代替)吸合,从而达到开锁的目的。
如图3所示,为密码锁开锁电路原理图。
当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁(由LED代替),达到开门的目的。
本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。
其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。
图3 密码锁开锁电路原理图3.2.2 矩阵键盘设计电路每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M ×N个按键的键盘。
由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。
本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。
矩阵键盘设计电路图,如图4所示。
键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。
图4 矩阵键盘设计电路图3.2.3 声音提示电路设计声音提示电路采用小蜂鸣器提示。
蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。
蜂鸣器电路,如图5所示。
图5 蜂鸣器电路3.2.4 显示模块设计本设计中,显示电路采用1602A 液晶显示器显示。
如下所示,图6为1602A 液晶显示器的接口示意图,表1为接口说明。
0 * # D图6 1602A液晶显示器的接口示意图本设计中液晶串口一共用到11根导线与单片机相连,具体连接情况如表2显示模块与MCU连接说明所示。
3.2.5 AT24C02掉电存储单元的设计本设计中掉电存储单元采用AT24C02外部存储器,其作用是在系统电源断开的时候,存储当前设定的密码数据。
AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,含一个16字节页写缓冲器,具有写保护功能。
其采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
如下所示,图7为AT24C02管脚示意图,表3为AT24C02管脚说明。
图7 AT24C02管脚示意图表3 AT24C02管脚说明3.2.6 语音模块设计此功能模块中采用驻极体话筒做音频输入,TDA2822芯片做功率放大器。
电路图如下:图8 语音模块电路图驻极体话筒具有体积小、结构简单、电声性能好、价格低的特点,广泛用于盒式录音机、无线话筒及声控等电路中。
属于最常用的电容话筒。
TDA2822是意法半导体(ST)开发的双通道单片功率放大集成电路,通常在袖珍式盒式放音机(WALKMAN)、收录机和多媒体有源音箱中作音频放大器。
具有电路简单、音质好、电压范围宽等特点,可工作于立体声以及桥式放大(BTL)的电路形式下。
若将音频信号接到TDA2822输入端,可轻松实现音乐播放功能。
3.2.7 烟雾报警器模块及电源设计烟雾报警器由MQ-2可燃性气体传感器和可控多谐振荡器组成。
MQ-2可燃性气体传感器特点,探测范围广、灵敏度高(快速响应回复)、稳定性优异以及寿命较长。
NE555,只需简单的电阻器、电容器,即可组成可控的多谐振荡器。
烟雾报警器及电源电路:图9 烟雾报警器及电源电路当空气中可燃性气体、烟雾浓度超标时,MQ-2传感器两端电阻骤减,555的4脚电压上升,当大于1V时,555多谐振荡器开始震荡,蜂鸣器发出报警。
当可燃性气体、烟雾散去,MQ-2传感器两端电阻增加,555的4脚电压降低,555多谐振荡器停止震荡,报警停止。
四、程序设计与系统仿真4.1 模块介绍与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、1602A液晶显示模块等。
系统程序流程如图9所示:图9 系统程序流程图4.1.1 主程序模块主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测按键;调用显示等功能。
4.1.2 密码比较判断模块该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。
其密码输入和比较判决流程图如图10所示。
图10 密码输入和比较判决流程图4.1.3 键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。
如图11所示,为键盘扫描流程图。
图11 键盘扫描流程图4.1.4 修改密码模块在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。
图12为修改密码流程图。
图12 修改密码流程图4.1.5 1602A液晶显示模块此模块包括液晶初始化、命令的输入等。
五、系统功能5.1 实现功能本设计中系统可实现功能如下:(1)通过输入密码控制开关;(2)通过发光二极管和蜂鸣器,对解密正确或者错误进行声光报警;(3)6位密码修改;(4)在密码遗失情况下,通过初始密码进行密码再设置;(5)采用AT24C02外部存储器,完成断电密码保护功能;(6)采用DS1802温度传感器,时时检测温度;(7)采用TDA2822的语音模块;(8)采用MQ-2烟雾报警;(9)音乐播放;(10)时钟;(11)键盘照明;此外设计留有扩展口,用户可根据自身不同需求进行扩展、完善功能。
5.2 系统运行待机状态:(1)电磁锁闭合;(2) LCD显示欢迎界面;(3)烟雾报警器及温度传感器处于工作状态,以便及时发现险情;(4)可通过按键接通门铃和语音模块与主人对话;工作状态流程:六.设计总结从基本方案的制定,到硬件电路的选择,再到电路的焊接,最后进行程序调试——在此期间我们遇到很多困难,但经过团队的不懈努力,终于击破了各个难点,达到的所需要的效果。
在这次设计中,我们深刻认识到自身的不足——缺少实战经验。
与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。
由于本次设计时间有限,一些设想没有完全实现,比如说:无线遥控控制、电子密码锁的网络通信扩展,人机界面智能化。
期待以后有机会对以上设想进行进一步研究实践。
参考文献[1]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2003.[2]谭浩强.C程序设计[M].北京:清华大学出版社,2005[3]杨章伟,韩雪,张浩然.跟我学C程序设计[M].北京:清华大学出版社,2010[4]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,2002[5]AT24C02[DB/OL]./view/1837975.htm[6]at24c02中文资料[DB/OL]./p-87119727654.html附录:A、元器件清单C、密码锁源程序1、主程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define WriteDeviceAddress 0xa0 //定义器件在 IIC 总线中的地址#define ReadDviceAddress 0xa1extern TemperatuerResult(); //声明引用外部函数extern unsigned int idata Temperature;void Start();void M24c02();void Write24c02();void Change();void Welcome();void MMinput();sbit E=P2^6;sbit RS=P2^7;sbit light=P2^5;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit rd=P3^7;sbit SCL=P2^1;sbit SDA=P2^0;sbit beep=P2^2;sbit green=P2^4;sbit red=P2^3;uchar key;uchar temp;uchar dis_buf;uchar turn;uchar count,s1num;uchar miao,shi,fen;uchar mima[6];uchar code tab[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};uchar code wel1[]=" Welcome! ";uchar code wel2[]="Press * To Enter";uchar code star[]="Please To Chose!";uchar code a[]="123A456B789C*0#D";uchar code b[]={0x01,0x02,0x03,0x00,0x04,0x05,0x06,0x00,0x07,0x08,0x09,0x00,0x00,0x00,0x00 };uchar minp24[6]={0};uchar timeinp[4]=0;uchar code times[]="The Time Input";uchar code timen[]=" Password! ";uchar code error[]=" Error! ";uchar code ok[]=" Unlocked! ";uchar code old[]=" Old Password! ";uchar code new[]=" New password! ";uchar code new1[]=" Press Again! ";uchar code ok1[]=" Saved! ";uchar code table[]="Time:";uchar code table1[]=" 00:00";//定时函数void delay(uint z){int i,j;for(i=z;i>0;i--)for(j=112;j>0;j--);}//开始总线void SStart(){SDA=1;SCL=1;SDA=0;SCL=0;}//结束总线void Stop(){SCL=0;SDA=0;SCL=1;SDA=1;}//发 ACK0void NoAck(){SDA=1;SCL=1;SCL=0;}//测试 ACKbit TestAck(){bit ErrorBit;SDA=1;SCL=1;ErrorBit=SDA;SCL=0;return(ErrorBit);}//写入 8 个 bit 到 24c02void Write8Bit(unsigned char input) {unsigned char temp;for(temp=8;temp!=0;temp--){SDA=(bit)(input&0x80);SCL=1;SCL=0;input=input<<1;}}//写入一个字节到 24c02 中void Write24c02(uchar ch,uchar address) {SStart();Write8Bit(WriteDeviceAddress);TestAck();Write8Bit(address);TestAck();Write8Bit(ch);TestAck();Stop();delay(10);}//从 24c02 中读出 8 个 bituchar Read8Bit(){unsigned char temp,rbyte=0;for(temp=8;temp!=0;temp--){SCL=1;rbyte=rbyte<<1;rbyte=rbyte|((unsigned char)(SDA));SCL=0;}return(rbyte);}//从 24c02 中读出 1 个字节uchar Read24c02(uchar address){uchar ch;SStart();Write8Bit(WriteDeviceAddress);TestAck();Write8Bit(address);TestAck();SStart();Write8Bit(ReadDviceAddress);TestAck();ch=Read8Bit();NoAck();Stop();return(ch);}//写入按键次数到 24c02void M24c02() // 24c02主程序{uint i; uchar c1;for(i=0;i<6;i++){c1=Read24c02(tab[i]);mima[i]=c1;}}//LCD命令函数void RS_com(uchar com){RS=0;P0=com;delay(5);E=1;delay(5);E=0;}//LCD数据函数void RS_dat(uchar dat){RS=1;P0=dat;delay(5);E=1;delay(5);E=0;}//LCD初始化void LCDinit(){E=0;RS_com(0x38);RS_com(0x0c);RS_com(0x06);RS_com(0x01);RS_com(0x80);}//Time显示初始化void Timeinit(){uchar num;E=0;RS_com(0x38);RS_com(0x0c);RS_com(0x06);RS_com(0x01);RS_com(0x80);for(num=0;num<5;num++){RS_dat(table[num]);delay(5);}RS_com(0x80+0x40);for(num=0;num<9;num++){RS_dat(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}//时间写入,在LCD液晶屏显示void RS_sfm(uchar add,uchar dat) {uchar shi,ge;shi=dat/10;ge=dat%10;RS_com(0x80+0x40+add);RS_dat(0x30+shi);RS_dat(0x30+ge);}//时间更改void Tkeyscan(){rd=0;if(s1!=0){delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;RS_com(0x80+0x40+7);RS_com(0x0f);}}if(s1num==2){RS_com(0x80+0x40+4);}if(s1num==3){s1num=0;RS_com(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){fen++;if(fen==60)fen=0;RS_sfm(7,fen);RS_com(0x80+0x40+7);}if(s1num==2){shi++;if(shi==24)shi=0;RS_sfm(4,shi);RS_com(0x80+0x40+4);}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){fen--;if(fen==-1)fen=59;RS_sfm(7,fen);RS_com(0x80+0x40+7);}if(s1num==2){shi--;if(shi==-1)shi=23;RS_sfm(4,shi);RS_com(0x80+0x40+4);}}}}}//时间主函数void Time(){Timeinit();RS_sfm(4,shi);RS_sfm(7,fen);while(P1==0xf0){Tkeyscan();}if(P1!=0xf0);Start();}//时间void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}RS_sfm(4,shi);}RS_sfm(7,fen);}}}// 键扫描子程序 (4*4 的矩阵)void keyscan(void){temp = 0;P1=0xF0; //高四位输入行为高电平列为低电平 delay(1);temp=P1; //读P1口temp=temp&0xF0; //屏蔽低四位temp=~((temp>>4)|0xF0);if(temp==1) // p1.4 被拉低key=0;else if(temp==2) // p1.5 被拉低key=1;else if(temp==4) // p1.6 被拉低key=2;else if(temp==8) // p1.7 被拉低key=3;elsekey=16;P1=0x0F; //低四位输入列为高电平行为低电平delay(1);temp=P1; //读P1口temp=temp&0x0F;temp=~(temp|0xF0);if(temp==1) // p1.0 被拉低key=key+0;else if(temp==2) // p1.1 被拉低key=key+4;else if(temp==4) // p1.2 被拉低key=key+8;else if(temp==8) // p1.3 被拉低key=key+12;elsekey=16;dis_buf=a[key];turn=b[key]; //键值入显示缓存}//判断键是否按下void keydown(void){P1=0xF0;if(P1!=0xF0) //判断按键是否按下如果按钮按下会拉低P1其中的一个端口{keyscan();P1=0xF0;}}//密码输入void MMinputmenu(){int j;RS_com(0x01);RS_com(0x80);for(j=0;j<16;j++){RS_dat(new1[j]);delay(20);}delay(200);MMinput();}void MMinput(){uint x=0,i;for(i=0;i<6;i++) minp24[i]=0;LCDinit();RS_com(0x80+0x40);while(1){while(P1!=0xf0){keydown();if(key==3) break;if(key==7){MMinputmenu();}delay(300);RS_dat('*');delay(5);minp24[x++]=turn;if(x==5) break;}if(key==3) break;}}//更改密码void Change(){int i,j;uchar comp[6];LCDinit();for(i=0;i<16;i++){RS_dat(old[i]);delay(20);}while(P1==0xf0);MMinput();M24c02();for(i=0;i<6;i++){RS_com(0x80);if(minp24[i]!=mima[i]){for(j=0;j<16;j++){RS_dat(error[j]);delay(20);}while(P1==0xf0);Change();}if(i==5){RS_com(0x80);RS_com(0x01);for(j=0;j<16;j++){RS_dat(new[j]);delay(20);}while(P1==0xf0);MMinput();for(j=0;j<6;j++) comp[j]=minp24[j];RS_com(0x01);RS_com(0x80);for(j=0;j<16;j++){RS_dat(new1[j]);delay(20);}while(P1==0xf0);MMinput();RS_com(0x01);for(j=0;j<6;j++){if(minp24[j]!=comp[j]){RS_com(0x80);for(j=0;j<16;j++){RS_dat(error[j]);delay(20);}while(P1==0xf0);Change();}if(j==5){for(j=0;j<6;j++){ Write24c02(minp24[j],tab[j]);}RS_com(0x80);for(j=0;j<16;j++){RS_dat(ok1[j]);delay(20);}delay(200);while(P1==0x0f);Start();}}}}}//密码校对void MMcmp(){int i,j=0;long int k;LCDinit();for(i=0;i<16;i++){RS_dat(timen[i]);delay(20);}while(P1==0xf0);while(1){MMinput();M24c02();for(i=0;i<6;i++){if(minp24[i]!=mima[i]){j++;break;}if(i==5){green=1;RS_com(0x01);for(i=0;i<16;i++){RS_dat(ok[i]);delay(20);}for(k=0;k<=100000;k++){if(P1!=0xf0){keydown();if(key==11){delay(300);Change();}}}Start();}}LCDinit();for(i=0;i<16;i++){RS_dat(error[i]);delay(20);}if(j==3) break;RS_com(0x80+0x40);for(i=0;i<16;i++){RS_dat(times[i]);delay(20);}RS_com(0x80+0x44);RS_dat(a[j]);while(P1==0xf0);}for(i=0;i<10;i++){beep=1;red=1;delay(400);red=0;beep=0;delay(300);}Welcome();}//温度数据写入void Display(uchar i,uchar j,uchar shuju) //在指定位置显示{RS_com(0x80+j*0x40+i);delay(5);RS_dat(shuju);delay(5);}//温度主函数void Temperatuer(){LCDinit();RS_com(0x01);while(P1==0xf0){TemperatuerResult();Display(0,0,'T');Display(1,0,'e');Display(2,0,'m');Display(3,0,'p');Display(4,0,'e');Display(5,0,'r');Display(6,0,'a');Display(7,0,'t');Display(8,0,'u');Display(9,0,'r');Display(10,0,'e');Display(11,0,' ');Display(12,0,'i');Display(13,0,'s');Display(0,1,(Temperature/16%10000/1000+0x30));Display(1,1,(Temperature/16%1000/100+0x30));Display(2,1,(Temperature/16%100/10+0x30));Display(3,1,(Temperature/16%10+0x30));Display(4,1,'.');Display(5,1,(Temperature*10/16%10+0x30));Display(6,1,'`');Display(7,1,'C');}Start();}//开始菜单void Start(){long int i;light=1;red=0;green=0;P1=0xf0;P3=0xff;LCDinit();delay(30);for(i=0;i<16;i++){RS_dat(star[i]);delay(20);}for(i=0;i<120000;i++){if(P1!=0xf0){keydown();if(key==3){delay(300);MMcmp();}else if(key==15){delay(300);Temperatuer();}else if(key==7){delay(300);Time();}else Start();}}Welcome();}//待机界面void Welcome(){uint i;P1=0xf0;light=0;LCDinit();while(P1==0xf0){for(i=0;i<16;i++){RS_dat(wel1[i]);delay(5);}RS_com(0x80+0x40);for(i=0;i<16;i++){RS_dat(wel2[i]);delay(5);}}keydown();if(key==12){delay(300);Start();}}//主函数void main(){beep=0;red=0;green=0;Welcome();}2、DS18B20驱动程序#include <reg52.H>#include <intrins.h>sbit D18B20=P3^7;#define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/bit flag;unsigned int idata Temperature;unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节unsigned char idata id_buff[8];unsigned char idata *p,TIM;unsigned char idata crc_data;//************************************************************void TempDelay (unsigned char idata us){while(us--);}//************************************************************void Init18b20 (void){D18B20=1;_nop_();D18B20=0;TempDelay(80); //delay 530 uS//80_nop_();D18B20=1;TempDelay(14); //delay 100 uS//14_nop_();_nop_();_nop_();if(D18B20==0)flag = 1; //detect 1820 success!elseflag = 0; //detect 1820 fail!TempDelay(20); //20_nop_();_nop_();D18B20 = 1;}//************************************************************void WriteByte (unsigned char idata wr) //单字节写入{unsigned char idata i;for (i=0;i<8;i++){D18B20 = 0;_nop_();D18B20=wr&0x01;TempDelay(3); //delay 45 uS //5_nop_();_nop_();D18B20=1;wr >>= 1;}}//************************************************************unsigned char ReadByte (void) //读取单字节{unsigned char idata i,u=0;for(i=0;i<8;i++){D18B20 = 0;u >>= 1;D18B20 = 1;if(D18B20==1)u |= 0x80;TempDelay (2);_nop_();}return(u);}//************************************************************ void read_bytes (unsigned char j){unsigned char idata i;for(i=0;i<j;i++){*p = ReadByte();p++;}}//************************************************************ void TemperatuerResult(void){Init18b20 ();WriteByte(0xcc); //skip romWriteByte(0x44); //Temperature convertInit18b20 ();WriteByte(0xcc); //skip romWriteByte(0xbe); //read Temperaturep = temp_buff;read_bytes (2);Temperature = temp_buff[1]*0x100 + temp_buff[0];TempDelay(1);}D、多功能密码锁使用说明书按下电源键,使密码锁正常工作。