电子密码锁单片机课程设计
电子密码锁单片机课程设计
电子密码锁单片机课程设计一、课程目标知识目标:1. 学生理解单片机的基本原理,掌握其编程方法;2. 学生掌握电子密码锁的工作原理,了解其电路组成;3. 学生了解数字输入输出接口的使用,能运用相关知识进行密码锁设计。
技能目标:1. 学生能运用C语言进行单片机编程,实现电子密码锁的功能;2. 学生能够运用仿真软件对设计的电子密码锁进行调试与优化;3. 学生能够运用所学知识,解决实际电子密码锁单片机课程设计过程中遇到的问题。
情感态度价值观目标:1. 学生培养对单片机及电子技术的兴趣,提高学习积极性;2. 学生培养团队协作精神,提高沟通与协作能力;3. 学生培养创新意识,提高动手实践能力,增强自信心。
课程性质:本课程为实践性较强的课程,要求学生在理解理论知识的基础上,动手实践,完成电子密码锁单片机课程设计。
学生特点:学生处于高年级阶段,已具备一定的单片机编程和电子技术基础,具备独立思考和解决问题的能力。
教学要求:教师应注重理论与实践相结合,引导学生主动参与,培养学生的创新能力和实践能力。
在教学过程中,关注学生的学习进度和需求,及时调整教学策略,确保课程目标的达成。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合运用能力。
二、教学内容1. 单片机基础理论:包括单片机结构、工作原理、编程语言(C语言)等,对应教材第1章至第3章内容。
- 单片机内部结构及功能;- 单片机工作原理及指令系统;- C语言编程基础及单片机程序设计方法。
2. 电子密码锁原理与设计:包括密码锁电路组成、工作原理、设计方法等,对应教材第4章内容。
- 电子密码锁电路组成及各部分功能;- 电子密码锁工作原理及设计要求;- 数字输入输出接口的使用及编程。
3. 单片机编程与调试:包括编程环境搭建、程序编写、仿真调试等,对应教材第5章内容。
- 编程环境(如Keil)的安装与使用;- 单片机程序编写、编译、下载;- 仿真软件(如Proteus)的使用及调试技巧。
电子密码锁课程设计
电子密码锁课程设计一、实验目的1. 了解电子密码锁的工作原理和功能特点;2. 掌握单片机控制电子密码锁的方法;3. 实现简单的密码输入和密码验证功能;4. 提高学生的实际能力和动手能力。
二、实验原理电子密码锁系统是一种安全控制系统,能对进出某些区域的人员进行限制和管理。
它具有输入密码,验证密码和控制出入等功能。
电子密码锁通常由以下部分组成:键盘、单片机控制器、液晶显示器、声音提示器、锁芯以及供电电路等。
本实验设计采用AVR单片机实现电子密码锁的输入密码、验证密码和控制开锁等功能。
1. 输入密码:用户通过键盘输入密码,可输入4位数字密码。
各按键所代表的数字0~9的ASCII码值在程序中已定义好了。
单片机通过扫描键盘,在液晶显示器上实时显示输入的密码。
2. 验证密码:当用户输入4位数字密码完成后,单片机将输入的密码与预设密码进行比较,如果密码正确,则在液晶显示器上显示“Welcome”;如果密码错误,则在液晶显示器上显示“Wrong password”。
3. 控制开锁:在液晶显示器上显示“Welcome”后,单片机控制锁芯电机工作,并同时发出蜂鸣声,表示开锁。
开锁后,液晶显示器提示“Lock opened”;如果输入的密码错误,则不会开锁。
三、实验器材AVR开发板、电子密码锁电路板、1602液晶显示器、4*4矩阵键盘、蜂鸣器、12V电池、导线等。
四、实验步骤1. 按照电路图进行电路连接;2. 用AVR Studio或Keil等软件创建一个AVR单片机工程,编写以下程序:#include <avr/io.h>#include <avr/delay.h>#include <string.h>#include "lcd.h"#define true 1#define false 0unsigned char password[5] = "1234"; unsigned char buffer[6];unsigned char cursor = 0;unsigned char locked = false;unsigned char getKeyCode(){unsigned char i, j, k, key;for(i=0; i<4; i++){PORTB = 0x10 << i;_delay_us(10);k = PINB & 0b00001111;if(k == 0b00001111)continue;for(j=0; j<4; j++)if(k & (1 << j))return i*4+j;}return 0xFF;}void getPassword(){memset(buffer, 0x00, sizeof(buffer));cursor = 0;LCD_gotoxy(0, 1);LCD_puts("Enter password:");while(true){unsigned char key = getKeyCode();_delay_ms(50);if(key == 0xFF)continue;else if(key <= 9){if(cursor < 4){buffer[cursor++] = key + '0';LCD_gotoxy(cursor, 0);LCD_putchar('*');}}else if(key == 10){if(cursor == 4){if(strcmp(buffer, password) == 0){LCD_clrscr();LCD_puts("Welcome");locked = false;_delay_ms(3000);LCD_clrscr();}else{LCD_clrscr();LCD_puts("Wrong password");_delay_ms(3000);LCD_clrscr();}}getPassword();break;}else if(key == 11){if(cursor > 0){LCD_gotoxy(cursor--, 0);LCD_putchar(' ');buffer[cursor] = 0;}}}}void main(){DDRB = 0xF0;PORTB = 0x0F;LCD_init();LCD_puts("Please enter");LCD_gotoxy(0, 1);LCD_puts("password");while(true){if(!locked){PORTD |= 0b00000001;_delay_ms(1000);PORTD &= 0b11111110;_delay_ms(1000);}else{getPassword();}}}3. 编译、下载程序到AVR开发板中,连接电子密码锁电路板和单片机开发板上的接口电缆,接上12V电池;4. 按下电子密码锁电路板上的“reset”按键,程序开始运行,1602液晶显示器上提示“Please enter password”;5. 输入4位数字密码,按“#”键确认,系统进行密码比较,如果密码正确,则在液晶显示器上提示“Welcome”;如果密码错误,则在液晶显示器上提示“Wrong password”;6. 如果密码正确,则系统控制锁芯电机工作,并同时发出蜂鸣声,表示开锁。
单片机课程设计 电子密码锁
第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) 当错误输入某位密码时,可按删除键进行删除,也可按清零键对所输入的数进行整体清除。
单片机密码锁课程设计
单片机课程设计报告题目:电子密码锁系别:班级:姓名:学号:指导老师:时间:目录一系统总体设计方案 (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进入系统后,首先的界面是输入密码,密码对就驱动继电器开锁,否则驱动蜂鸣器发声。
单片机课程设计密码锁设计
单片机课程设计密码锁设计在当今社会,安全问题越来越受到人们的重视,密码锁作为一种常见的安全防护设备,在保护个人财产和隐私方面发挥着重要作用。
本次单片机课程设计的任务就是设计一款基于单片机的密码锁。
一、设计要求本次设计的密码锁需要具备以下功能: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!!!”并返回主菜单。
单片机课程设计-电子密码锁
单片机课程设计-电子密码锁电子密码锁的设计说明书院系:机电汽车工程学院专业:机械设计制造及其自动化班级:姓名:学号:指导老师:同组人员: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单片机的电子密码锁课程设计随着科技的不断发展,越来越多的电子产品应运而生,所以安全已成为一种越来越严重的问题。
电子密码锁作为一种常见的安全产品,在保护身份信息以及财物安全方面起到了重要的作用。
在本篇文章中,我们将会介绍一种基于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.矩阵键盘在电子密码锁输入密码时,可以使用矩阵键盘来实现。
矩阵键盘的输入方式相比普通电子锁更加安全和方便。
综上所述,基于单片机的电子密码锁的课程设计不仅可以提高学生的电子技术和程序设计能力,还可以实现实用价值,为社会贡献力量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南学院课程设计课程名称课题名称电子密码锁设计专业测控技术与仪器班级测控学号姓名指导教师年月日湖南学院课程设计任务书课程名称课题电子密码锁设计专业班级测控学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日目录第1章概述-------------------------------11.1 设计任务---------------------------------------------------------------------11.2 设计要求---------------------------------------------------------------------11.3 主要设计条件---------------------------------------------------------------1第2章系统总体方案设计------------------22.1单片机系统---------------------------------------------22.1矩阵键盘-----------------------------------------------22.3 LED显示-----------------------------------------------22.4报警系统-----------------------------------------------2 第3章硬件电路设计----------------------33.1 键盘电路设计------------------------------------------33.2 LED显示电路设计--------------------------------------53.3 报警电路设计--------------------------------------------6 第4章软件设计--------------------------74.1 软件总体设计-------------------------------------------74.2 各子程序的设计-----------------------------------------7第5章调试总结-------------------------11第6章附录-----------------------------12 附录A源程序清单-------------------------------------------12附录B硬件原理图-------------------------------------------16第7章参考文献-------------------------17第1章概述随着科技的发展和人们生活水平的提高,如何实现保密防盗这一问题变的尤其的突出,传统的机械锁由于其构造的简单,失效的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。
老师布置下这各课题时,其任务要求条件如下:1.1 设计内容:(1)密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2)密码的输入:采用两个按键来完成密码的输入,其中一个按键为功密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
(3)按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
1.2 设计要求:(1)设计方案要合理、正确;(2)系统硬件设计及焊接制作;(3)系统软件设计及调试;(4)系统联调。
1.3主要设计条件:(1)MCS-51单片机实验操作台1台;(2)PC机及单片机调试软件;(3)单片机应用系统板1套;(4)制作工具1套;(5)系统设计所需的元器件。
基于以上,我的此次课程设计以单片机为核心,完成电子密码锁的设计。
第2章系统总体方案设计此次课程设计基于单片机控制的电子密码锁,接到课题后,根据老师布置的任务和相关要求,结合主要设计条件,我设计了如下方案,其总体方案设计如下:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。
系统能完成开锁、超时报警功能。
2.1单片机系统:此次课题采用一种是用以80C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
此次课题用单片机P1口与键盘相连,做输入口,P0口与显示器相连,做显示,P2口做显示器扫描。
2.2矩阵键盘接口电路:此次课程设计采用4*4矩阵键盘,与P1口相连,采用扫描法。
设有0——9十个数字密码,和一个确认键。
开机显示000000,等待密码输入,输入6个密码,按确认键后,密码比较。
2.3LED显示:此次课程设计6密码6显示器,按键后即显示,动态显示。
P0口送示数据,P2口显示扫描,根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,等待重新输入。
2.4报警系统:此次课程设计,当按键三次错误后,系统报警,报警装置由一扬声器实现,从P3.0口输出脉冲,使扬声器鸣报警。
第3章硬件电路设计3.1 键盘电路设计矩阵式键盘电路图3-1:图3-1矩阵式键盘电路图在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图1-1中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
3.1.3 矩阵式键盘的识别方法:确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
判断键盘中有无键按下:(1)先将行线p1.7-p1.4置0111,然后检测列线的状态。
如果p1.3-p1.0为0111,则k0被按下;如果p1.3-p1.0为1011,则k1被按下;如果p1.3-p1.0为1101,则k2被按下;如果p1.3-p1.0为1110,则k3被按下;(2)将行线p1.7-p1.4置1011,然后检测列线的状态,方法同(1);(3)将行线p1.7-p1.4置1101,然后检测列线的状态,方法同(1);(4)将行线p1.7-p1.4置1110,然后检测列线的状态,方法同(1).3.2 LED显示电路设计3.2.1LED显示电路图:图2-2 LED动态显示电路3.2.2 LED显示原理:LED就是light emitting diode ,发光二极管的英文缩写,简称LED。
它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
显示器显示接口按驱动方式可分为静态显示和动态显示,静态显示时,除变更显示数据期间外,各显示器均处于通电状态,每个显示器的通电占空比为100%,静态显示的优点是显示稳定,亮度高,缺点是占用硬件电路多;动态显示的优点是节省硬件电路,缺点是占用软件扫描时占用CPU时间多。
对于多位LED显示器,通常都是采用动态扫描的方法进行显示,即逐个地循环点亮各位显示器,这样虽然在任一时刻只有一显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。
为了实现LED显示器的动态扫描,除了要给显示器的输入之外,还有对显示器选择位的控制,这就是通常所说的段控和位控。
因此,多位LED显示器接口电路需要有两个输出口,其中一个用于8条段控线,另一个用于输出位控线,位控线的数目等于显示器的位数。
为了方便编写程序,通常在内部RAM中设置显示缓冲区,存放显示的数字或字符,显示缓冲区单元个数与LED显示器位数相同。
此次基于单片机的电子密码锁,我选用动态显示,通过与软件配合,每输入一个密码,进行显示一次,扫描,6个密码输入完后,进行比较,密码正确则开锁,密码错误,可重新输入三次,三次后仍然错误,报警!3.3 报警电路设计3.3.1 报警电路图:图3-3 报警电路3.3.2报警电路原理:输入密码与设定密码做比较,当输入密码与设定密码不同,返回再输入,当输入密码次数超过3次时,通过软件从80C51的P3.0输出脉冲,使扬声器鸣笛报警。
相关软件见(附件)第4章软件设计4.1 软件总体设计软件的设计主要包括:密码的固定、键盘识别判断、密码显示、密码比较、密码对处理、错报警。
软件设计总流程图如下:开始固定密码图4-1 软件设计总流程图4.2 各子程序的设计4.2.1 密码的固定定:将密码固定在程序存储器ROM 中,设定6位密码,密码固定在ROM 的20H 到25H 六个单元中 。
4.2.2 键盘的扫描识别判断:用矩阵式键盘,扫描法对键盘进行识别判断,具体流程图如下:图4-2 键盘扫描流程图以上是第一行的扫描,接着MOV P1,#10111111,扫描第二行,判断k4、K5、K6、K7;再MOV P1,#11011111,扫描第三行,判断k8、K9、KA 、KB ;接着MOV P1,#11101111,扫描第四行,判断kC 、KD 、KE 、KF ;并进行相关显示。
如果无键按下,则循环扫描。
4.2.3密码显示:采用LED动态显示,由单片机P0口进行输出显示,P2口扫描,具体显示程序设计流程图如下:图4-3 显示流程图4.2.4 密码比较及对错处理:密码输入完成之后,进行密码比较,即将设定密码单元20H—25H的密码与输入密码26H—31H的密码进行一一比较,如果相同,则密码正确,P3.2置高电平,如果密码错误,则显示器清零,重新等待输入密码,如果三次错,则P3.0输出脉冲,使接在P3.0的使扬声器鸣笛报警。
第5章调试总结时间过得真快,转眼间,两周的微机原理课程设计就结束啦。
这次课程设计,我们是在第一周的星期一接到课题,开始两天我们主要看书,跑图书馆,上网查资料。