电子密码锁单片机课程设计
- 格式:doc
- 大小:239.00 KB
- 文档页数:58
电子密码锁单片机课程设计一、课程目标知识目标:1. 学生理解单片机的基本原理,掌握其编程方法;2. 学生掌握电子密码锁的工作原理,了解其电路组成;3. 学生了解数字输入输出接口的使用,能运用相关知识进行密码锁设计。
技能目标:1. 学生能运用C语言进行单片机编程,实现电子密码锁的功能;2. 学生能够运用仿真软件对设计的电子密码锁进行调试与优化;3. 学生能够运用所学知识,解决实际电子密码锁单片机课程设计过程中遇到的问题。
情感态度价值观目标:1. 学生培养对单片机及电子技术的兴趣,提高学习积极性;2. 学生培养团队协作精神,提高沟通与协作能力;3. 学生培养创新意识,提高动手实践能力,增强自信心。
课程性质:本课程为实践性较强的课程,要求学生在理解理论知识的基础上,动手实践,完成电子密码锁单片机课程设计。
学生特点:学生处于高年级阶段,已具备一定的单片机编程和电子技术基础,具备独立思考和解决问题的能力。
教学要求:教师应注重理论与实践相结合,引导学生主动参与,培养学生的创新能力和实践能力。
在教学过程中,关注学生的学习进度和需求,及时调整教学策略,确保课程目标的达成。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合运用能力。
二、教学内容1. 单片机基础理论:包括单片机结构、工作原理、编程语言(C语言)等,对应教材第1章至第3章内容。
- 单片机内部结构及功能;- 单片机工作原理及指令系统;- C语言编程基础及单片机程序设计方法。
2. 电子密码锁原理与设计:包括密码锁电路组成、工作原理、设计方法等,对应教材第4章内容。
- 电子密码锁电路组成及各部分功能;- 电子密码锁工作原理及设计要求;- 数字输入输出接口的使用及编程。
3. 单片机编程与调试:包括编程环境搭建、程序编写、仿真调试等,对应教材第5章内容。
- 编程环境(如Keil)的安装与使用;- 单片机程序编写、编译、下载;- 仿真软件(如Proteus)的使用及调试技巧。
第1章设计目的1.利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
2.我们这次的课程设计是以单片机为基础,设计出一个具有一定功能的电子密码锁。
3.掌握一些重要芯片的功能特性及使用方法,并能运用其组合成一个简单的单片机机应用系统。
4.锻炼同学们的动手能力和独立思考的能力,巩固理论知识,加深对课堂内容的理解。
5.培养同学们对单片机的兴趣,通过课程设计调动同学们的积极性,使更多的人将来能在单片机领域有所建树。
第2章设计要求及总体思路2.1设计要求1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密“12345”共5位密码。
2、密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。
在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
3、按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
2.2 总体思路系统总体设计方案框图如下:图2-1一般而言,要实现相同的功能,硬件复杂的系统其软件一般较简单,而软件复杂的系统其硬件一般相对简单,本着经济性的原则,我们应该尽可能少用硬件,根据这个设计理念和设计要求,本单片机系统的设计思路如下:1)电子密码锁所用的数据的存储和运算用单片机来完。
2)因为没有专用的输入键盘,所以按键输入用计算器输入键盘代替。
按键密码从P3口输入。
3)用六位显示器显示五位密码,显示器选择动态扫描,用P0口作段控,用P2口作位控。
4)开锁信号从P1.1口输出,报警信号从P1.0口输出。
5) 按键分为功能键和数字键,具体如表2-1。
6)输入五位密码后按确认键,系统验证密码是否正确,若密码正确,则产生开锁信号,若接连三次输入错误密码,则产生报警信号。
7) 当错误输入某位密码时,可按删除键进行删除,也可按清零键对所输入的数进行整体清除。
单片机课程设计密码锁设计在当今社会,安全问题越来越受到人们的重视,密码锁作为一种常见的安全防护设备,在保护个人财产和隐私方面发挥着重要作用。
本次单片机课程设计的任务就是设计一款基于单片机的密码锁。
一、设计要求本次设计的密码锁需要具备以下功能:1、能够设置和修改 4 位数字密码。
2、输入密码正确时,锁打开,并有相应的指示灯提示。
3、输入密码错误时,有错误提示,且错误次数超过 3 次则报警。
4、具备密码重置功能。
二、系统方案设计1、硬件设计单片机选型:选择 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
输入模块:采用 4×4 矩阵键盘作为密码输入设备,可方便地输入数字和功能按键。
显示模块:选用 1602 液晶显示屏,用于显示密码输入状态、提示信息等。
存储模块:使用 EEPROM 芯片 AT24C02 来存储密码,以保证断电后密码不丢失。
报警模块:当密码输入错误次数超过 3 次时,通过蜂鸣器发出报警声音。
2、软件设计主程序:负责系统的初始化、键盘扫描、密码输入处理、密码验证、显示控制等。
键盘扫描程序:检测矩阵键盘上的按键动作,并将按键值返回给主程序。
密码处理程序:包括密码设置、修改、存储和验证等功能。
显示程序:控制 1602 液晶显示屏的显示内容。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振为单片机提供时钟信号,复位电路用于系统的初始化。
2、矩阵键盘电路由16 个按键组成 4×4 矩阵,通过行线和列线的扫描来确定按键值。
3、显示电路1602 液晶显示屏通过数据总线和控制总线与单片机相连,实现数据的传输和显示控制。
4、存储电路AT24C02 通过 I2C 总线与单片机进行通信,用于存储密码数据。
5、报警电路蜂鸣器通过三极管驱动,当单片机输出高电平时,蜂鸣器发声报警。
四、软件程序设计1、主程序流程系统初始化,包括单片机端口初始化、液晶显示屏初始化、EEPROM 初始化等。
目录摘要----------------------------------------------------------- 3 关键字------------------------------------------------------------------------------------- 3 第一章前言----------------------------------------------------------------------------- 3 第二章基本功能设计--------------------------------------------------------------- 4⏹ 2.1 实验任务----------------------------------------------------------------- 4⏹ 2.2基本设计------------------------------------------------------------------ 4⏹ 2.3 系统框图-------------------------------------------------------------- -- 5 第三章硬件设计----------------------------------------------------------------------- 5 3.1硬件工作接线口---------------------------------------------------------------- 5 3.2 LED显示器结构与原理------------------------------------------------------- 6 3.3复位电路----------------------------------------------------------------------------- 6 3.4按键方式--------------------------------------------------------------------------- 7 3.5电路原理图------------------------------------------------------------------------- 8 3.6 元器件清单-------------------------------------------------------------------------9第四章软件设计-------------------------------------------------------------------- 10 4.1软件结构---------------------------------------------------------------------------------- 10 4.2源程序--------------------------------------------------------------------------------------12 第五章心得体会----------------------------------------------------------------------- 13 第六章参考文献----------------------------------------------------------------------- 14【摘要】电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,我们采取的是单片机,它具有超大规模集成电路技术,有极强的数据处理能力,I/O口多以它为核心设计的密码锁,结构小,功能强,现在很多单位甚至家里的各个家用电器,还有保险箱都需要它。
基于单片机的电子密码锁设计一、设计要求和条件1.1 设计要求根据单片机开发板所提供的元件特性和硬件电路,编写相关的程序,通过实验开发板实现电子密码锁在LCD1602上显示的功能。
1.搭建proteus仿真电路图平台,模拟单片机要实现的功能;2.焊接单片机系统开发板;3.编写程序,实现密码锁相关功能;4.下载并调试程序,实现密码锁的具体功能。
1.2 设计目的1.熟练掌握KEIL软件的使用方法;2.熟练掌握PROTEUS软件的使用方法;3.掌握单片机I/O接口的工作原理;4.掌握中断系统的工作原理;5.掌握液晶LCD1602的工作原理及编程方法;6.掌握蜂鸣器的编程使用;7.掌握行列式键盘的工作原理及编程使用方法;8.掌握单片机的ISP下载使用方法。
1.3 功能概述本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了硬件设计方案、软件流程图、C 语言源程序及详细注释等内容,由于单片机实验板上的矩阵键盘为3*3的,则规定0-5号键为数字键,6-8号键为功能键,其中该密码锁的具体功能介绍如下:(1)按“8”号键则输入密码,初始密码为012345,在LCD1602上显示密码值为“******”(密码是保密的),输完6位后键盘就锁定,在LCD1602上显示密码是否正确,若输入的密码长度小于6位,则1602等待密码输入。
(2)若密码输入正确后,则绿色的发光二极管亮表示开锁,并且1602上显示“you are right!”,等待是否修改密码。
(3)密码输入错误时显示“code is wrong”,接着会给你第二、第三次机会输入密码,如果三次密码都错误时,发出“叮咚”的报警声,且红色报警指示灯不停闪烁,按复位键清除报警。
(4)按“7”号键表示若密码不小心输入时,可以删除输入错误的密码。
(5)按“6”修改密码,要求输入原密码是正确的,然后按该键后,蓝色密码修改指示灯会亮,并且1602上会显示“Input new code”,输入正确要求再次输入,两次输入一致提示“Modify right!!!”并返回主菜单。
大连民族大学《单片机系统课程设计》课程报告2020-2021第一学期学院:机电工程学院专业:自动化班级:学生姓名:任课教师:日期:2020年12月28日目录1 任务分析及性能指标 (5)1.1任务分析 (5)1.2性能指标 (5)2 总体方案设计 (5)2.1硬件方案(包括元件功能介绍) (5)2.2软件方案(模块结构、流程图) (6)3 电路原理图及仿真(附仿真过截图及说明) (7)4 实物功能及效果(附照片) (9)5 程序清单 (11)6 调试及性能分析 (20)6.1硬件连接及分析(附截图及截图说明) (20)6.2软件调试过程及分析(截图) (21)7 总结 (23)8 参考文献 (24)1任务分析及性能指标1.1 任务分析一个电子密码锁,应该能实现以下功能:(1)能够从键盘中输入密码,并相应地在数码管上显示‘8’;(2)能够判断密码是否正确,正确则接通继电器示意开锁过程,同时蜂鸣器响,错误则不同的蜂鸣器声响;(3)能够实现密码的修改;(4)在操作错误达到一定次数后锁定键盘一段时间,并持续蜂鸣。
1.2 性能指标(1)该课程设计采用89C52单片机,其晶振频率设置为12MHZ。
(2)两个四位数码管均为共阴极数码管。
(3)蜂鸣器不同参数,产生不同频率的声音。
(4)P0、P1、P2、P3端口引脚在默认情况下为高电平(1)。
(5)该单片机板子进行位选时,07FH为最低位数码管,对07FH进行右移选中的数码管依次向左。
2总体方案设计2.1 硬件方案(包括元件功能介绍)根据以上的分析,本次电子密码锁的主要设计的重点是以下几个部分:4x4矩阵键盘设计、数码管显示、密码的掉电存储和密码的比较和处理。
当然,除了这几个部分外还有定时器/计数器计时中断、继电器和报警等功能模块。
各元件功能介绍:4x4矩阵键盘:包括数字键和功能键,负责信息的输入。
数码管:显示数字,从视觉判别密码对错;用74LS373供电跳线端子,控制数码管的段码和位码的选取,从而控制八位数码管显示。
单片机课程设计-电子密码锁电子密码锁的设计说明书院系:机电汽车工程学院专业:机械设计制造及其自动化班级:姓名:学号:指导老师:同组人员:1中文摘要摘要:随着经济的发展,人们对日常生活质量的要求也越来越高,从工作、学习、出行、购物等的各个方面,人们也对现代安全设施提出来更高的要求。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
密码锁具有安全性高、成本低、功耗低、易操作等优点,同时还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
本次电子密码锁的设计主要就针对于这种社会需求,从程序设计到硬件设计以及硬件安装连接都做了详细的说明。
2设计说明本次设计使用 ATMEL公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:①密码通过键盘输入,若密码正确,则将锁打开。
②报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED 提示灯,报警蜂鸣器等。
密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:①密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。
②密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。
③开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
主要的设计实施过程:首先,选用 ATMEL公司的单片机AT89C51,以及选购其他电子元器件。
第二步,使用 DXP 20043设计硬件电路原理图,并设计 PCB图完成人工布线(后因 PCB 板损坏决定采用万能板焊接的方法)。
单片机电子密码锁课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握电子密码锁的基本工作原理。
2. 使学生掌握电子密码锁设计中涉及的编程知识,如C语言基础、寄存器操作等。
3. 帮助学生了解电子密码锁电路的组成,熟悉相关电子元器件的使用。
技能目标:1. 培养学生运用所学知识设计并实现一个简单的单片机电子密码锁的能力。
2. 提高学生动手实践能力,学会使用编程软件、烧录器和相关调试工具。
3. 培养学生团队协作和问题解决能力,学会分析电子密码锁故障并找出解决办法。
情感态度价值观目标:1. 激发学生对电子制作的兴趣,培养创新意识和动手能力。
2. 培养学生严谨的科学态度,注重实验数据和实验结果的准确性。
3. 引导学生关注单片机技术在日常生活中的应用,提高对科技的认识和热爱。
本课程针对高年级学生,他们在之前的学习中已经具备了一定的电子和编程基础。
因此,课程设计将注重实践操作,以项目为导向,让学生在动手实践中巩固知识,提高技能。
通过本课程的学习,学生将能够独立设计并实现一个具有实用价值的单片机电子密码锁,提升解决实际问题的能力。
二、教学内容1. 单片机基础原理:回顾单片机的组成、工作原理,重点讲解51单片机的内部结构、时钟电路和复位电路。
教材章节:第三章《单片机原理与接口技术》2. C语言编程基础:介绍C语言在单片机编程中的应用,讲解数据类型、运算符、控制语句等基本语法。
教材章节:第四章《单片机C语言编程》3. 电子密码锁原理:讲解电子密码锁的基本工作原理,分析锁体的电路组成和功能。
教材章节:第七章《单片机应用实例》4. 硬件设计:学习并设计电子密码锁的硬件电路,包括键盘输入、显示模块、锁驱动电路等。
教材章节:第五章《单片机接口技术》5. 软件设计:编写电子密码锁的控制程序,实现密码输入、校验、开锁等功能。
教材章节:第四章《单片机C语言编程》6. 系统调试与优化:学习使用调试工具,对电子密码锁系统进行调试和优化。
单片机课程设计密码锁一、课程目标知识目标:1. 理解单片机的基础知识,掌握其基本原理和编程方法;2. 学习并掌握密码锁的原理与设计,能够运用单片机实现密码锁功能;3. 了解并掌握相关传感器和执行器的使用,实现密码锁的输入和输出控制。
技能目标:1. 能够运用所学知识,设计并编写出实现密码锁功能的单片机程序;2. 掌握使用相关调试工具,对单片机程序进行调试和优化;3. 提高学生的动手能力,培养实际操作中解决问题的能力。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养创新意识和实践精神;2. 培养学生团队协作精神,学会与他人共同解决问题;3. 引导学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感。
课程性质:本课程为实践性较强的课程,旨在通过单片机实现密码锁的设计与制作,让学生在动手实践中掌握单片机知识。
学生特点:学生处于高年级阶段,已具备一定的单片机基础,对实际应用有较高的兴趣。
教学要求:结合学生特点和课程性质,注重实践操作,强调理论知识与实际应用相结合。
通过课程学习,使学生能够独立完成一个具有实际应用价值的单片机项目。
在教学过程中,关注学生的学习进展,及时调整教学策略,确保课程目标的实现。
将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 单片机基础知识回顾:C语言编程基础,单片机工作原理,I/O口编程。
教材章节:第一章单片机基础。
2. 密码锁原理与设计:- 密码锁的组成和工作原理;- 矩阵键盘原理与编程;- 密码比对算法;教材章节:第三章输入输出接口,第六章矩阵键盘。
3. 单片机与外部设备接口:- 传感器与执行器的应用;- 单片机与继电器、电磁锁等执行器的连接;教材章节:第四章传感器与执行器,第五章单片机与外部设备接口。
4. 程序设计与调试:- 程序结构设计;- 程序编写与调试;- 优化程序性能;教材章节:第七章程序设计与调试。
5. 实践操作:- 搭建电路,连接硬件;- 编写程序,实现密码锁功能;- 调试与优化;教材章节:实践操作部分。
单片机课程设计题目基于单片机的电子密码锁设计郑州科技学院单片机课程设计任务书一、设计题目基于单片机的电子密码锁设计二、设计任务与要求(1)本设计为防止密码被窃取在输入密码时屏幕上显示8。
(2)设计开锁密码位为六位密码的电子密码锁。
(3)能够在密码正确时显示“1HELLO”,密码错误时显示“2ERROR”,输入密码的位数时显示为8的个数。
(4)4×4的矩阵键盘中包括0-9的数字键确认键和消除键的功能键。
(5)本产品具备报警功能,当输入密码错误时蜂鸣器响(6)在密码输入过程中,若输入错误,可以利用“C”键删除刚才输入的错误的数字。
在输入密码的过程中可以随时对输入的密码进行修改。
三、主要参考文献[1] 何宏主编.单片机原理与接口技术.[M]北京:国防工业出版社. 2006.07[2] 赵益、徐晓林、周振峰. 电子密码锁的系统原理. [M]北京:清华大学出版社. 2003.[3] 张培仁.基于C语言编程MCS- 51单片机原理与应用.北京:清华大学出版社. 2002. 12四、设计时间2015 年01月16日至2015 年01月16 日指导教师签名:年月日目录1 电子密码锁的背景 (1)2 总体设计方案的确定 (2)2.1 电子密码锁设计要求 (2)2.2 总体设计方案选定 (2)3 系统硬件设计 (3)3.1 设计原理 (3)3.2 单片机STC89C52简介 (3)3.4七段数码管显示器部分 (7)3.5 键盘设计 (8)3.6 蜂鸣器模块 (8)4 系统软件设计 (9)4.1 主程序模块 (9)5 系统制作及调试 (11)5.1 焊接注意事项 (11)5.2 硬件调试问题及解决方法 (11)6 结论 (12)参考文献 (13)附录1:实物图 (14)附录2:元件清单 (15)附录3:电路原理图 (16)附录4:程序 (17)1 电子密码锁的背景随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。
课程设计任务书课程名称单片机原理及应用课题基于单片机的密码锁设计专业班级测控技术与仪器0601班任务书下达日期 2014 年 2 月 24 日任务完成日期2014 年 3月 7 日第1章系统概述1.1系统功能 (1)1.2设计内容及要求 (1)第2章系统方案设计2.1总体方案 (2)2.2系统组成 (2)第3章硬件设计3.1按键电路设计 (9)3.2指示灯及报警蜂鸣器的电路设计 (9)3.3显示电路设计 (10)第4章软件设计4.1主程序设计 (11)4.2按键识别与编码设计 (11)4.3显示程序设计 (13)4.4密码修改程序设计 (15)第5章系统调试5.1软件模拟调试 (16)5.2硬件接线及调试 (17)第6章总结6.1课程设计总结 (18).附:A、硬件图B、主程序流程图C、程序清单第1章系统概述1.1系统功能本次设计使用ATMEL公司的AT 80C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。
(3)状态指示、报警、锁定键盘功能。
密码输入正确时有GOOD提示信息、密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘,并且相应的有指示灯指明状态。
电子密码锁的设计主要由三部分组成:4×4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED提示灯,报警蜂鸣器等。
1.2设计内容及要求(1)密码的设定,此密码是固定在程序存储器ROM中,假设预设的密为“12345”共5位密码。
(2)密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键另一个按键为数字键。
在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
(3)按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
单片机技术及应用综合训练设计报告前言随着人们生活水平的提高;如何实现家庭防盗这一问题也变得尤为突出..在科学技术不断发展的今天;电子密码防盗锁作为防盗卫士的作用显得日趋重要..本文从经济实用的角度出发;系统由STC89C52与低功耗CMOS型E2PROMAT24C02作为主控芯片与数据存储器单元;结合外围的键盘输入、LCD显示、报警、开锁等电路模块..它能完成以下功能:正确输入密码前提下;开锁;错误输入密码情况下;报警;密码可以根据用户需要更改..用C语言编写的主控芯片控制程序与EEPROMAT24C02读写程序相结合;并用Keil软件进行编译;设计了一款可以多次更改密码;具有报警功能的电子密码控制系统..本密码锁具有设计方法合理;简单易行;成本低;安全实用;保密性强;灵活性高等特点;具有一定的推广价值..关键词:电子密码锁、报警、液晶显示目录一、选题要求 (1)二、硬件电路设计 (1)2.151单片机 (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保密性好;编码量多;远远大于弹子锁..随机开锁成功率几乎为零..2密码可变;用户可以随时更改密码;防止密码被盗;同时也可以避免因人员的更替而使锁的密级下降..3误码输入保护;当输入密码多次错误时;报警系统自动启动..4无活动零件;不会磨损;寿命长..5使用灵活性好;不像机械锁必须佩带钥匙才能开锁..6电子密码锁操作简单易行;一学即会..二、硬件电路设计下面是整个设计的流程图:2.151单片机这次课程设计采用的是5系列单片机AT89C52..其外部封装如下图所示:AT89C52单片机有4组8位的可编程I/O口;分别位P0、P1、P2、P3口;每个口有8位8根引脚;共32根8..P0口Pin39~Pin32:8位双向I/O口线;名称为P0.0~P0.7P1口Pin1~Pin8:8位准双向I/O口线;名称为P1.0~P1.7P2口Pin21~Pin28:8位准双向I/O口线;名称为P2.0~P2.7P3口Pin10~Pin17:8位准双向I/O口线;名称为P3.0~P3.72.2键盘电路本次试验采用的是行列键盘;C语言程序中有相应的驱动程序;其硬件电路如下所示;下右对应的为各个按键所对应的数字及功能..2.3液晶显示电路实验中采用的是LM016L液晶显示;其数据端口采集数据通过单片机的P0口;接法如下图所示..不同情况下会有不同的显示;显示内容包括:Welcome、HelloBoss、Wrong、OK等内容..2.4警报电路下图是警报电路连接图;警报触发为:连续三次输错密码;警报触发后会有一个时间延迟;延迟时间内任何操作都是无效的;过后通过关锁按钮可解除..2.5密码储存电路实验中考虑到实用性方面时;就想到了密码储存及修改的问题;于是采用了FM24C02F作为面膜储存模块;电路连接如下所示:2.6晶振、复位及关锁晶振、复位及关锁电路如下所示作图所示按钮为复位按钮:三、软件设计C语言源程序:include<reg52.h> include<stdio.h> include<intrins.h> defineCHECK_BUSY defineDataPortP0 defineKeyPortP1 sbitRS=P2^4;//液晶显示的定义端口sbitRW=P2^5;sbitEN=P2^6;sbitscl=P3^0;//24c02端口定义sbitsda=P3^1;sbitbaojing=P2^1;//报警器sbitjdq=P2^0;//继电器sbitjb=P2^3;//警报灯sbitclose=P2^2;unsignedcharold1;old2;old3;old4;o ld5;old6;//原始密码000000 unsignedcharnew1;new2;new3;new4;n ew5;new6;//代表新密码voiddelay1unsignedintm{unsignedintn;forn=0;n<m;n++;}voiddelayunsignedintm{unsignedinta;unsignedcharb;fora=0;a<m;a++{forb=0;b<125;b++;}}voidDelayUs2xunsignedchart{while--t;}voidDelayMsunsignedchart{whilet--{DelayUs2x256;DelayUs2x256;}}voidbaojingqi{baojing=0;DelayUs2x256;ifbaojing==0{baojing=0;DelayUs2x256;}}bitLCD_Check_Busyvoid//判忙函数{ifdefCHECK_BUSYDataPort=0xFF;RS=0;RW=1;EN=0;_nop_;EN=1;returnbitDataPort&0x80;elsereturn0;endif}voidLCD_Write_Comunsignedcharcom/ /写入命令函数{//whileLCD_Check_Busy;//忙则等待DelayMs5;RS=0;RW=0;EN=1;DataPort=com;_nop_;EN=0;}voidLCD_Write_DataunsignedcharDat a//写入数据函数{//whileLCD_Check_Busy;//忙则等待DelayMs5;RS=1;RW=0;EN=1;DataPort=Data;_nop_;EN=0;}voidLCD_Clearvoid//清屏函数{LCD_Write_Com0x01;DelayMs5;}voidLCD_Write_Charunsignedcharx;u nsignedchary;unsignedcharData//写入字符函数{ify==0{LCD_Write_Com0x80+x;}else{LCD_Write_Com0xC0+x;}LCD_Write_DataData;}voidLCD_Write_Stringunsignedcharx ;unsignedchary;unsignedchars//写入字符串函数{whiles{LCD_Write_Charx;y;s;s++;x++;}}voidLCD_Initvoid //液晶显示的初始化函数{LCD_Write_Com0x38;//显示模式设置DelayMs5;LCD_Write_Com0x38;DelayMs5;LCD_Write_Com0x38;DelayMs5;LCD_Write_Com0x38;LCD_Write_Com0x08;//显示关闭LCD_Write_Com0x01;//显示清屏LCD_Write_Com0x06;//显示光标移动设置DelayMs5; LCD_Write_Com0x0C;//显示开及光标设置}unsignedcharKeyScanvoid//键盘扫描函数;使用行列反转扫描法{unsignedcharcord_h;cord_l;//行列值中间变量KeyPort=0x0f;//行线输出全为0 cord_h=KeyPort&0x0f;//读入列线值ifcord_h=0x0f//先检测有无按键按下{DelayMs10;//去抖ifKeyPort&0x0f=0x0f{cord_h=KeyPort&0x0f;//读入列线值KeyPort=cord_h|0xf0;//输出当前列线值cord_l=KeyPort&0xf0;//读入行线值whileKeyPort&0xf0=0xf0;//等待松开并输出returncord_h+cord_l;//键盘最后组合码值}}return0xff;//返回该值}unsignedcharKeyProvoid{switchKeyScan{case0x7e:return0;break;//0按下相应的键显示相对应的码值case0x7d:return1;break;//1case0x7b:return2;break;//2case0x77:return3;break;//3case0xbe:return4;break;//4case0xbd:return5;break;//5case0xbb:return6;break;//6case0xb7:return7;break;//7case0xde:return8;break;//8 case0xdd:return9;break;//9 case0xdb:return10;break;//10 case0xd7:return11;break;//11 case0xee:return12;break;//12 case0xed:return13;break;//13 case0xeb:return14;break;//14 case0xe7:return15;break;//15 default:return0xff;break;}}voidinit//24c02初始化子程序{scl=1;_nop_;_nop_;sda=1;_nop_;_nop_;}voidrespons //应答{unsignedchari;scl=1;_nop_;_nop_;whilesda==1&&i<250i++;scl=0;_nop_;_nop_;}voidclock//I2C总线时钟{unsignedchari=0;scl=1;_nop_;_nop_;whilesda==1&&i<255i++;scl=0;_nop_;_nop_;} voidstart//启动I2C总线{sda=1;_nop_;_nop_;scl=1;_nop_;_nop_;sda=0;_nop_;_nop_;scl=0;_nop_;_nop_;}voidstop//停止I2C总线{sda=0;_nop_;_nop_;scl=1;_nop_;_nop_;sda=1;_nop_;_nop_;}voidwritebyteunsignedchara//写一个字节{unsignedcharb;tem;tem=a;forb=0;b<8;b++{tem=tem<<1;scl=0;_nop_;_nop_;sda=CY; //temp左移时;移出的值放入了CY中_nop_;_nop_;scl=1; //待sda线上的数据稳定后;将scl拉高_nop_;_nop_;}scl=0;_nop_;_nop_;sda=1;_nop_;nop_;}unsignedcharreadbyte//读一个字节{unsignedchari;j;k=0;scl=0;_nop_;_nop_;sda=1;fori=0;i<8;i++{_nop_;_nop_;scl=1;_nop_;_nop_;ifsda==1j=1;elsej=0;k=k<<1|j;scl=0;}_nop_;_nop_;returnk;}unsignedcharread24c02unsignedchar address//从24c02的地址address中读取一个字节数据{unsignedchardate;start;writebyte0xa0;clock;writebyteaddress;clock;start;writebyte0xa1; clock;date=readbyte;stop;delay1100;returndate;}voidwrite24c02unsignedcharaddress ;unsignedcharinfo//向24c02的address地址中写入一字节数据info {start;writebyte0xa0;clock;writebyteaddress;clock;writebyteinfo;clock;stop;delay15000;//这个延时一定要足够长;否则会出错..因为24c02在从sda上取得数据后;还需要一定时间的烧录过程..}main{unsignedcharnum;i;bj;c=0; unsignedchartemp6;bitFlag;init;//初始化24C02LCD_Init;//初始化液晶屏DelayMs10;//延时用于稳定;可以去掉LCD_Clear;//清屏LCD_Write_String0;0;"welcome";//写入第一行信息old1=read24c02110;old2=read24c02111;old3=read24c02112;old4=read24c02113;old5=read24c02114;old6=read24c02115;while1//主循环{num=KeyPro;//扫描键盘ifnum=0xff//如果扫描是按键有效值则进行处理{ifi==0//输入是第一个字符的时候需要把改行清空;方便观看密码LCD_Write_String0;1;"";//清除该行ifi<6//密码是6位;大于6位时不再输入按键值{tempi=num;LCD_Write_Chari;1;'';}i++;//输入数值累加ifnum==11 //重试键{i=0;LCD_Write_String0;1;"";}}ifnum==12{i=0;LCD_Write_String0;1;"";ifbj==0{whilei<=6{num=KeyPro;//扫描键盘ifnum=0xff//如果扫描是按键有效值则进行处理{ifi==0//输入是第一个字符的时候需要把改行清空;方便观看密码LCD_Write_String0;1;"";//清除该行ifi<6//密码是6位;大于6位时不再输入按键值{tempi=num; LCD_Write_Chari;1;'';}i++;//输入数值累加ifnum==11 //重试键{i=0;LCD_Write_String0;1;"";}}ifnum==10{num=0;new1=temp0;new2=temp1;new3=temp2; new4=temp3;new5=temp4;new6=temp5; old1=new1;old2=new2;old3=new3; old4=new4;old5=new5;old6=new6;//新密码代替旧密码write24c02110;old1;write24c02111;old2;write24c02112;old3;write24c02113;old4;write24c02114;old5;write24c02115;old6;LCD_Write_String0;1;"ok";bj=1;DelayMs220;DelayMs220;DelayMs220;}ifclose==0{bj=1;i=0;LCD_Write_String0;1;"";}}}i=0;}ifnum==10 //数字10为确认键{new1=temp0;new2=temp1;new3=temp2;new4=temp3;new5=temp4;new6=temp5;ifi==7//6位后的按键输入数值;相当于确认按键任意按键即可{i=0;//计数器复位Flag=1;//先把比较位置1old1=read24c02110;old2=read24c02111;old3=read24c02112;old4=read24c02113;old5=read24c02114;old6=read24c02115;Flag=Flag&new1==old1&new2==old2&n ew3==old3&new4==old4&new5==old5&n ew6==old6;//比较输入值和已有密码ifFlag//如果比较全部相同;标志位置1{i=0;LCD_Write_String0;1;"HelloBoss";/ /密码正确显示的信息jdq=0;bj=0;delay3000;jdq=1;LCD_Write_String0;1;"";}else{i=0;c++;LCD_Write_String0;1;"error";//密码错误;提示重新输入whilec==3{baojingqi;jb=0;DelayMs255;DelayMs255; baojing=1;i=0;jb=1;LCD_Write_Stri ng0;1;"";ifclose==0{i=0;bj=1;jb=1;c=0;baojing=1;LCD_W rite_String0;1;"";}}}}else//当密码不是6位数字时按下确认键也算输错密码一次{i=0;LCD_Write_String0;1;"error"; c++;whilec==3{baojingqi;jb=0;DelayMs255;DelayMs255;ifclose==0{i=0;jb=1;bj=1;c=0;baojing=1;LCD_W rite_String0;1;"";}}}}ifclose==0{i=0;bj=1;jb=1;c=0;jdq=1;baojing=1;LCD_Write_String0;1;"";jdq=1;}}四、软硬件调试结果4.1电路总原理图电路总原理图如下所示:4.2调试结果各种情况下的的调试结果如下个图所示:依次为开机、开锁、成功修改密码、密码错误..五、总结在这次实验中;用到了单片机和C语言的知识;这两门知识都是非常具有实用性的..在这次实验中再次加深了对此的认识..首先;在一开始输程序的时候;在程序仿真过程中出现了不能打开头文件的现象;后来经老师知道后知道了头文件的具体作用和使用方式..这些都是以前所没能掌握的..在后面的硬件电路调试过程中也遇到了很多问题;经过不懈努力之后都一一解决了..本次试验为期一周;不得不说;这次试验让我学到了好多东西..也感谢老师的辛勤指导。
目录1 系统总体方案设计11.1 系统方案11.2 系统设计思路:12 硬件电路设计22.1 键盘电路设计22.2 LED显示电路32.3 解锁电路52.4 报警电路53 软件设计63.1 软件设计思路63.2 每个子程序的设计64 系统调试104.1 系统硬件连接示意图:104.2 部分系统测试115 经验12参考文献13发送13附录131 系统总体方案设计1.1 系统方案的选择综合其他方案的优缺点,采用基于AT89S51的单片机控制方案。
凭借单片机灵活的编程设计和丰富的IO口,以及其控制的精确性,不仅可以实现基本的密码锁功能,而且还增加了功率调节和存储、声光提示等功能。
遥控。
原理如图1-1所示。
图1-1 单片机控制方案该方案活动空间大,既能实现所需功能,又能在很大程度上扩展功能,还可以方便地进行系统升级。
本方案采用以89S51为核心的单片机控制方案。
凭借单片机灵活的编程设计和丰富的I/O端口,以及其控制的准确性,实现了基本的密码锁功能。
1.2 系统设计思路:1. 使用矩形键盘进行密码输入,包括数字键和功能键。
2.LED数码管显示输入密码,74JS247用于驱动数码管点亮并显示数字,74LS138用于控制各个位置的显示及时显示。
3. 将解锁电路更换为LED,表示解锁。
4、密码输入错误次数超过3次,系统会报警。
5、上电后显示屏显示“”,原密码为“123456”。
只需输入此密码即可开门。
这样可以防止断电后再次调用时没有密码可用。
000000”6. 按“C”键清除显示为“.000000”7. 要重置密码,首先在记录“*”上输入密码。
8. 输入密码,然后按“D”键。
如果密码与设置的密码相同,开门。
否则,显示清零为“00000”。
9、软件设计主要包括键盘读键、LED显示程序、密码比对程序和报警程序。
2 硬件电路设计2.1 键盘电路设计采用矩阵键盘,因此本设计采用行列式键盘,同时可以减少键盘与单片机接口时占用的I/O线数。
基于单片机电子密码锁的课程设计本文将介绍基于单片机电子密码锁的课程设计,包括设计目的、设计理念、硬件设计、软件实现和实验结果。
通过这篇文档,读者可以了解到使用单片机进行电子密码锁设计的方法和步骤,并了解到电子密码锁在现代生活中的应用。
一、设计目的本次课程设计的主要目的是为了加深学生对单片机的理解和应用,同时锻炼学生的设计能力和实践能力。
通过电子密码锁的设计,可以培养学生的系统思维和解决问题的能力,同时也可以让学生了解到电子密码锁在现代生活中的应用。
二、设计理念电子密码锁是一种智能化的安全设备,其设计理念是通过输入密码来进行开锁,实现门禁控制和安全防护的功能。
本次课程设计的设计理念是通过单片机控制电子密码锁的开关,实现对门禁的控制和管理。
同时,本次设计还考虑到了密码的安全性和可靠性,确保用户信息的安全和可靠性。
三、硬件设计1、硬件模块本次课程设计的硬件模块主要包括单片机模块、显示屏模块、键盘模块、电子锁模块和电源模块。
2、模块连接单片机模块、显示屏模块、键盘模块、电子锁模块和电源模块之间通过连线进行连接。
其中,单片机模块和显示屏模块之间通过串口进行通讯,单片机模块和键盘模块之间通过IO 口进行通讯,单片机模块和电子锁模块之间通过IO口进行通讯,电源模块则为整个系统提供电源供应。
四、软件实现1、程序流程本次课程设计的程序流程主要包括初始化、密码输入、密码验证、开锁和关闭等步骤。
其中,初始化主要是对各个模块进行初始化和设置,包括显示屏、键盘、电子锁等模块的初始化和设置;密码输入是通过键盘输入密码,将密码存储在单片机中;密码验证是对密码进行比对,如果密码正确,则开锁,否则显示密码错误的提示信息;开锁则是对电子锁进行控制,将开关状态进行切换;关闭则是对电子锁进行控制,将开关状态进行切换。
2、代码实现本次课程设计的代码实现主要采用C语言进行编写,并通过Keil C IDE进行编辑和调试。
具体代码可以参照下面的代码:int main(void){ //初始化模块Init_LCD(); Init_Keypad(); Init_Lock(); while (1) { //获取用户输入的密码Get_Password(); //判断密码是否正确if(Check_Password()) { //解锁Unlock_Lock();//显示解锁成功信息Display_LCD("UnlockSuccessed"); } else { //显示解锁失败信息Display_LCD("Unlock Failed"); } }}五、实验结果通过本次课程设计,设计并制作出了一款基于单片机电子密码锁。
基于C单片机的电子密码锁课程设计基于C单片机的电子密码锁课程设计随着科技的不断发展,越来越多的电子产品应运而生,所以安全已成为一种越来越严重的问题。
电子密码锁作为一种常见的安全产品,在保护身份信息以及财物安全方面起到了重要的作用。
在本篇文章中,我们将会介绍一种基于C单片机的电子密码锁课程设计。
1. 课程设计的目的和意义本课程设计的目的在于让学生掌握电子密码锁的基本原理及设计方法,通过使用C单片机和软件来实现密码锁的设计和开发。
此外,设计过程还可以增强学生的团队合作精神、锻炼其技术能力,促进其对电子技术的认识和理解。
通过这个课程设计,学生可以掌握C单片机的基本操作,了解数字电路设计和开发,掌握密码锁设计和开发的基本技能,为未来的工作打下坚实的基础。
2. 课程设计的主要内容本设计的主要内容涵盖了电子门锁设计的所有基本知识和操作,包括:(1)单片机选择:本设计选用STC89C52RC作为单片机核心模块,因为它集成了丰富的资源和接口,可以方便地实现密码锁的功能。
(2)密码锁的设计:通过4X4矩阵键盘输入密码,并通过蜂鸣器进行声音提示以及LED灯进行信息提示。
(3)电子门锁的控制:通过LCD液晶屏幕来显示输入密码的结果,通过电机来实现门锁的控制。
(4)电路设计:本设计还设计了一个基于C单片机的数字电路并进行相关的测试,并阐述了设计电路时所需的基本理论知识。
3. 设计过程设计电子密码锁需要经过以下的基本步骤:(1)确定所需功能:包括锁头的设计、键盘的设计、输入电路的设计、解锁电路的设计。
这些可以通过对电子密码锁内部部件的分析得出。
(2)编写代码:根据所需功能的定义编写相应的代码程序,并通过仿真软件模拟电子密码锁的工作效果。
(3)选用元件:在电子密码锁中使用元件需要注意功耗和可靠性问题。
(4)电路设计:确定电路中的各元件及其相应的连接方式,包括锁头、键盘、蜂鸣器、LED灯、电机等。
(5)电路测试:通过测试来验证电子密码锁的实际工作效果。
基于单片机的电子密码锁的课程设计随着科技的发展,电子密码锁在日常生活中得到越来越广泛的应用。
电子密码锁具有安全性高、易于操作、使用方便等优点,受到了广泛的欢迎。
因此,在大学的课程设计中,基于单片机的电子密码锁也成为了一个热门的课程设计课题。
本文将介绍这个课程设计的步骤、具体内容和实现方法。
一、课程设计的步骤课程设计步骤主要包括需求分析、电路设计、程序设计和实验验证。
在需求分析阶段,需要明确电子密码锁的基本功能与操作流程,包括输入密码、判断密码正确性、开关门等。
在电路设计阶段,需要考虑到电路的可靠性、安全性以及实现的复杂度等因素。
在程序设计阶段,需要编写代码和测试程序。
在实验验证阶段,需要将课程设计投入实际应用,并测试其功能、稳定性等指标。
二、课程设计的具体内容1.硬件设计硬件设计主要包括电路设计和元器件选择两个部分。
电路设计主要包括输入密码电路、密码储存电路、密码判断电路和驱动开锁电路等。
元器件选择主要包括单片机、键盘、LCD屏幕和驱动芯片等。
2.软件设计软件设计主要包括系统流程设计、密码的输入和储存、密码的判断和开锁等功能的编写和测试。
3.系统整合系统整合是将硬件和软件组合到一起,实现功能的完整性并检测系统的稳定性和实用价值。
三、实现方法1.铁电非易失存储器电子密码锁需要存储用户密码信息,可以使用铁电非易失存储器来实现密码数据的存储和读取,铁电非易失存储器比普通存储器更加安全和稳定。
2.芯片加密在硬件电路的设计中,可以使用芯片加密的技术来提高电子密码锁的安全性。
通过软件和加密芯片相结合,可以防止非法破解和恶意攻击。
3.矩阵键盘在电子密码锁输入密码时,可以使用矩阵键盘来实现。
矩阵键盘的输入方式相比普通电子锁更加安全和方便。
综上所述,基于单片机的电子密码锁的课程设计不仅可以提高学生的电子技术和程序设计能力,还可以实现实用价值,为社会贡献力量。
单片机课程设计报告题目:电子密码锁系别:班级:姓名:学号:指导老师:时间:目录一系统总体设计方案 (2)1设计课题任务 (2)2 功能要求说明 (2)3 总体方案介绍及工作原理 (2)二方案选择 (3)1 控制器: (4)2 键盘模块: (4)3显示模块: (5)三硬件部分 (5)四软件部分 (7)五总结 (8)1 系统总体设计方案1.1 设计课题任务设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后显示小数点,进入准备工作状态。
该密码锁设有系统原始密码000000。
1.2 功能要求说明密码锁主要实现的功能是:在输入的密码正确时驱动继电器开锁,但错误时,蜂鸣器发出警报音。
1.3 总体方案介绍及工作原理电子密码锁的总体功能原理是以AT89S51单片机为主要的控制核心,通过外接4*4矩阵式键盘作为信号源,七段数码管阵列,继电器,蜂鸣器作为提示音器件,单片机实时的去执行相应的功能。
CPU控制原理图如下图所示。
三、方案选择1、控制器:由于这个题目不是很复杂,使用8位的单片机就可以完成,这里我们选用价格便宜使用较为广泛的AT89S51单片机。
2、键盘模块:数字密码锁的设计肯定是离不开键盘的,这里根据题目的要求只需要一个自制一个4*4的小键盘就能够满足要求了。
键盘在整个设计中也是很重要的,这里我们使用的是行扫描的方法读取键盘的值,其程序流程图如下:行扫描的原理就是逐行对键盘进行扫描,先扫描第一行,如果没有健按下就继续扫描第二行直道某一行有键按下就跳出扫描重头再来,若是扫描完四行后都没有键按下就返回。
键盘扫描和显示如下:3、显示模块:显示的方法有很多,比较简单的就是数码管的显示,这样就需要数码管阵列。
显示函数与片选信号要调整好;四、硬件部分硬件连接图:图2图2是整个设计的硬件连接图,由图可以看到键盘接在P1口,数码管的数据端口接在P0口,其控制端口和两个指示灯都接在P3口,总体的电路结构不是很复杂。
五、软件部分既然硬件部分比较简单那主要的任务就在程序的编写上了,总体程序流程图如下:图3进入系统后,首先的界面是输入密码,密码对就驱动继电器开锁,否则驱动蜂鸣器发声。
电子密码锁单片机课程设计单片机原理与应用技术课程设计报告电子密码锁设计专业班级:电气 124姓名:时间:2015年1月2日指导教师:***2015年1月2日电子密码锁课程设计任务书1.设计目的与要求设计出一个电子密码锁。
准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)状态显示功能:锁定状态时系统用3位数码管显示OFF,用3位码管显示成功开锁次数;成功开锁时用3位数码管显示888,用3位数码管显示成功开锁次数。
(2)密码设定功能:通过一个4×4的矩阵式键盘可以任意设置用户密码(1-26位长度),同时系统掉电后能自动记忆和存储密码在系统中。
(3)报警和加锁功能:密码的输入时间超过12秒或者连续3次输入失败,声音报警同时锁定系统,不让再次输入密码。
此时只有使用管理员密码方能对系统解锁。
2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
1电子密码锁电气124 赵政权摘要:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
本设计利用51单片机编程控制原理,采用矩阵键盘、数码管显示、数据存储器和报警系统构成电子密码锁的设计成品。
其中数码管使用两组三位一体共阳数码管,数据存储器使用AT24C04芯片通过IIC协议实现数据的传输,矩阵键盘用执行效率极高的代码扫描控制。
使用Keil4.6编写程序代码,用Proteus进行仿真,无误后使用Altium制图,最终做成能使用的成品。
关键词: 51单片机 IIC协议矩阵键盘动态显示 Keil Proteus Altium21 引言电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁,特点如下:1.保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
2.密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
3.误码输入保护。
当输入密码多次错误时,报警系统自动启动。
4. 电子密码锁操作简单易行,一学即3会。
5. 干扰码功能,在输入正确密码前可输入任意码。
6. 管理员功能,能使用管理员密码获得最高权限。
7. 人性化设计,输密码的倒计时、用户输入密码的位数、剩余输入密码的次数等能够在相应的界面显示出来,提醒用户。
2 总体设计方案2.1 设计思路利用单片机编程控制原理,采用矩阵键盘、数码管显示、数据存储器和报警系统构成本电子密码锁的设计成品。
2.1.1方案确定(1)单片机最小系统模块单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可4以工作的系统。
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。
复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。
典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。
一般推荐C 取10u,R取8.2K。
当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。
晶振电路:11.0592MHz可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合;12MHz可以产生精确的us级时歇,方便定时操作。
所以我们这里5使用12MHz的晶振。
这里没有使用片外程序模块,所以EA 接高电平。
P1口接330欧姆的电阻原因详见数码管显示模块和蜂鸣器模块的讲解,单片机最小系统的模块图如下:图2.1.1-1 单片机最小系统模块(2)数码管显示模块和蜂鸣器模块首先我们需要了解单片机引脚灌电流和拉电流的一些参数。
单片机的引脚,可6以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。
但是程序控制不了单片机的输出电流。
单片机的输出电流,很大程度上是取决于引脚上的外接器件。
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”,如图2.1.1-2左图所示;单片机输出高电平时,则允许外部器件,从单片机的引脚拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”,如图2.1.1-2右图所示。
这些电流一般的大小,最大限度等这就是常见的单片机输出驱动能力的问题。
每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为 10 mA;每个 8 位的接口(P1、P2 以及 P3),允许向引脚灌入的总电流最大为 15 mA,7而 P0 的能力强一些,允许向引脚灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。
而当这些引脚“输出高电平”的时候,单片机的“拉电流”能力太差,不到 1 mA。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,就没有输出电流的能力。
图2.1.1-2 灌电流和拉电流我们分析一下拉电流负载和灌电流负载的区别:图2.1.1-2左图中,是灌电流负载。
单片机输出低电平时,LED亮;输出高电平的时候,那就什么电流都没有,此时就不产生额外的耗电。
图2.1.1-2右图中,是拉电流负载。
单片机输出低电平的时候,LED不亮,此时VCC通过R2把电流全部灌进单片机IO口,并且电流时5ma,单片机输出高电平的时候,VCC通过R2将电流注入到LED中,led亮。
这时应该能注意到LED 不发光的时候,上拉电阻给的电流全部灌入单片机的引脚了,如果在一个8位的接口,安装了8个1K 的上拉电阻,当单片机都输出低电平的时候,就有40mA 的电流灌入这个8位的接口!如果四个8位接口,都加上1K的上拉电阻,最大有可能出现32×5=160mA的电流,都流入到单片机中,这个数值已经超过了单片机手册上给出的上限。
此时单片机就会出现工作不稳定的现象。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快等后果。
综上所述,灌电流负载,是合理的;而“拉电流负载”和“上拉电阻”会产生很大的无效电流,并且功耗大。
设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。
所以这里的数码管我们选择共阳的。
之所以选择共阳的其实这里还有另一个原因:单片机的P0口是开漏输出,也就是当单片机P0口设置为1时,它相当为浮空状态,并不能提供高电平,如果需要高电平则需要接上拉电阻。
我们发现这里如果使用共阳的数码管就不需要接上拉电阻,因为浮空状态和高电平都是让数码管灭,效果是一样的。
这样可以减少电路的复杂性。
(3)密码掉电存储模块单片机的RAM区在掉电之后会清除,ROM区空间又小,所以一些数据要存储在外部存储器中。
本设计利用24C04来存储用户密码和管理员密码,利用IIC协议来实现24C04芯片和单片机的通信。
I2C总线只有两根双向信号线。
一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。
图2.1.1-3 IIC起始和终止信号数据传送格式:字节传送与应答每一个字节必须保证是8位长度。
数据传送时,先传送最高位,每一个被传送的字节后面都必须跟随一位应答位即一帧共有9位。
如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。
如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。
当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。
这个信号是由对从机的“非应答”来实现的。
然后,从机释放SDA线,以允许主机产生终止信号。
图2.1.1-4 IIC字节传送与应答数据帧格式:I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。
每次数据传送总是由主机产生的终止信号结束。
但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
图2.1.1-5任一地址写入数据格式图2.1.1-6任一地址读取数据格式AT24C04的芯片地址如下图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B实验板上三根地址线都为0。
最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。
图2.1.1-7 AT24C04的芯片地址(4)用户输入模块用户主要利用按键输入密码等操作。
考虑到用户密码需要1个启动输入密码功能按键、0~9这10位按键、1个确定按键、1个消除密码按键、1个返回按键、1个启动修改密码功能按键共15个按键。
我们这里可以采用4×4扫描式矩阵按键,共16个按键,剩余1个按键预留拓展,以便于产品的升级开发。
2.2设计方框图根据设计思路,可分为人机交换层、控制层、数据交换层,这3层从上到下如下框图图2.2-1 设计方框图3 设计原理分析3.1 数码管电路的设计设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。
这里选择共阳的其实这里还有另一个原因:单片机的P0口是开漏输出,也就是当单片机P0口设置为1时,它相当为浮空状态,并不能提供高电平,如果需要高电平则需要接上拉电阻。