单片机密码锁实验报告

合集下载

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

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

山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间: 2015.6.1—2015.6.12课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日一、设计内容及要求本实验基于51单片机利用矩阵按键、步进电机、lcd1602等模块实现电子密码锁的输入密码、密码比对、步进电机的驱动、修改密码等功能。

设计内容包括:1)lcd1602显示;2)矩阵按键的输入;3)24C08的储存于读取;4)步进电机的驱动;5)线路的链接。

设计要求:1)能演示;2)能回答答辩过程中提问的问题;3)完成设计报告。

二、设计原始资料单片机原理及接口技术李全利 2010年 1月单片机原理及应用教程范立南 2006年 1月单片机原理及应用教程刘瑞新 2003年07月三、设计完成后提交的文件和图表1.计算说明书部分1)方案论证报告打印版或手写版2)程序流程图3)具体程序2.图纸部分:具体电路原理图打印版四、进程安排教学内容学时地点资料查阅与学习讨论 2天 406实验室分散设计 4天 406实验室编写报告 2天 406实验室成果验收 2天 406实验室按分组选择不同的实验台,每组3人,题目可重复选择,但每题目不得超过10人。

五、主要参考资料《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月《单片机原理及接口技术》张毅刚人民邮电出版社.2008年《实用电子系统设计基础》姜威 2008年1月《单片机系统的PROTEUS设计与仿真》张靖武 2007年4月指导老师成绩答辩小组成绩总成绩目录摘要 (1)1.设计要求 (2)2.功能概述 (2)3.总体设计 (2)4.硬件设计 (3)4.1矩阵按键设计 (3)4.2 LCD显示设计 (4)4.3步进电机模块设计 (5)4.4密码修改设计 (5)4.5密码比较模块 (6)5.软件设计及流程图 (6)6.个人体会 (8)7.参考文献 (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。

基于51单片机的密码锁设计报告

基于51单片机的密码锁设计报告

基于51单片机的密码锁设计报告课程:单片机原理学院:电子与信息工程学院专业:班级:姓名:学号:指导老师:完成日期:目录一、矩阵按键 (1)(1)按键接口 (1)(2)按键开关的抖动问题 (1)二、LCD1602液晶 (2)(1)1602 液晶的介绍 (2)(2)液晶的读写时序介绍 (4)(3)1602 液晶的指令介绍 (6)三、设计 (7)(1)输出密码后,显示LCD1602 (7)(2)输出密码后,交替亮灭显示LED (7)四、程序设计 (7)(1)主程序 (7)(二)LCD1602程序 (9)(3)矩阵键盘程序 (10)五、仿真截图 (12)(1)输出密码后,显示LCD1602 (12)(2)输出密码后,交替亮灭显示LED (15)基于51单片机的密码锁设计一、矩阵按键(1)按键接口键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向单片机输入指令、地址和数据。

一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。

(2)按键开关的抖动问题组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。

在下图1、图2中,当按键被按下时,P1.0输入为高电平;当按键按下后,P1.0输入为低电平。

由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P1.0输入端的波形如图2所示。

这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为单片机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对单片机而言,这已是一个“漫长”的时间。

图1图2按键抖动波形为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。

单片机中常用软件法,因此,对于硬件方法我们不介绍。

软件法,就是在单片机获得P1.0口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。

51单片机电子密码锁报告

51单片机电子密码锁报告

信息工程学院51单片机的密码锁控制器的设计实验报告专业:电气工程及其自动化班级:10040921基于51单片机的密码锁控制器设计一、设计目的:要求设计的电子密码锁的密码用键盘上的数字按键产生的6位数字码构成的密码。

如果输入密码正确开锁(发光二极管量),如果密码不正确,发出报警信号。

二、实验要求:1、显示位数:6位密码显示2、键盘设置密码三、设计方案:本设计包括矩阵键盘接口电路、密码锁的控制电路和输出显示电路等三部分。

键盘部分包括键盘扫描时序产生电路;键盘扫描;弹跳消除;键盘译码;按键存储。

程序控制包括数字按键的数字输入;存储及清除;功能按键的功能设计;移位寄存器的设计与控制;密码清除、变更、存储;激活开锁电路;密码核对;解除电锁电路。

输出显示电路的设计包括:数据选择;BCD对显示译码;七段显示扫描。

(1)密码数据输入:每按一个数字键,在显示器上显示一个“-”最多可设置6位密码。

(2)密码设置:每按一个数字键,就输入一个数值,并在显示器上的最右方显示出该数值,并将先前已经输入的数据依序左移一个数字位置。

注意:密码设置必须是在开锁状态下设置。

(3)数码清除:按下此键可清除前面所有的输入值,清除成为“000000”。

(4)密码更改:按下此键时将目前的数字设定成新的密码。

(5)激活电锁:按下此键可将密码锁上锁。

(6)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。

(7)密码错误:声光报警四、实验电路及连线:1、实验接线2、LED电平显示电路实验仪上装有8只发光二极管及相应驱动电路。

见下图,L0―L7为相应发光二极管驱动信号输入端,该输入端为高电压电平“1”时发光二极管点亮。

我们可以通过P1口对其直接进行控制,点亮或者熄灭发光二极管。

LED电平显示电路3、键盘及LED显示电路键盘和LED显示的地址译码见下图,做键盘和LED实验时,需要将KEY/LED CS接到相应的地址译码上。

位码输出的地址为0X002H,段码输出的地址为0X004H,键盘行码读回的地址为0X001H,此处X是由KEY/LED CS决定,参见地址译码。

单片机综合实训二-密码锁的设计

单片机综合实训二-密码锁的设计
SUBB A,#09
JZ NEXT1
INC BIT_SEL
MOV A, BIT_SEL
MOVC A,@A+DPTR
MOV P2,A ;选择要显示的数码管
;MOV BIT_SEL, A ;数码管位号BIT_SEL左移1位
MOV A, ROW_NO ; 将31H单元内容-列号取出
JNB ACC.0,D1 ; 第1列按键,转D1
SETB P3.0
SETB EX1 ;开重置密码中断
LJMP MAIN
BIT0: MOV A,KEY_CNT
SUBB A,#08
JNZ PWN_SOUND ;密码修改不是8位警报
LJMP BIT_close
PWN_SOUND: MOV A,R7
JZ SOUND
CLR P3.7 ;密码修改错误,LED发光二极管亮并报警
SOUND: MOV R2,#3
START1: JNB FLAG, NEXT3 ; flag=0报警低音声,flag=1报警高音声
MOV R6,#200
DV: CPL P3.5 ; P1.0产生200个500Hz脉冲,报警低音声
LCALL DELY500
LCALL DELY500
DJNZ R6,DV
CPL FLAG ;标志位取反,两种报警声音(500Hz和1KHz)交替鸣响
NEXT3: MOV R6,#200
DV1: CPL P3.5 ; P1.0产生200个1KHz脉冲,报警高音声
LCALL DELY500
DJNZ R6,DV1
CPL FLAG ; 标志位取反,两种报警声音(500Hz和1KHz)交替鸣响
INC R0
MOV KEY_CNT, R0 ;按键序号KEY_CNT增1

单片机密码锁实习报告

单片机密码锁实习报告

单片机密码锁实习报告一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

本次实习,我选择了单片机密码锁的设计与实现作为课题,旨在掌握单片机的原理与应用,提高自己的动手实践能力。

二、实习目的1. 学习单片机的原理与编程方法,了解单片机在实际应用中的优势。

2. 掌握密码锁的设计原理,学会使用单片机实现密码锁功能。

3. 培养自己的团队协作能力和解决问题的能力。

三、实习内容1. 单片机密码锁的原理与功能介绍2. 单片机密码锁的硬件设计3. 单片机密码锁的软件编程4. 单片机密码锁的系统调试与优化四、实习过程1. 单片机密码锁的原理与功能介绍单片机密码锁是一种利用单片机作为控制核心,通过密码输入来控制电路或芯片工作的安全设备。

它具有安全性高、成本低、功耗低、易操作等优点,广泛应用于各种场合。

本次设计的单片机密码锁采用4x4矩阵键盘输入密码,当密码输入正确时,锁打开,否则锁定按键3秒钟并发出报警。

2. 单片机密码锁的硬件设计硬件设计是实现单片机密码锁功能的基础。

本次设计中,硬件部分主要包括4x4矩阵键盘、LED显示、蜂鸣器报警、电磁锁等。

其中,4x4矩阵键盘用于输入密码,LED显示用于显示输入的密码,蜂鸣器报警用于发出报警声音,电磁锁用于实现锁的开关。

3. 单片机密码锁的软件编程软件编程是实现单片机密码锁功能的关键。

本次设计中,软件部分主要实现以下功能:(1)键盘扫描:检测按键是否按下,并获取按键值。

(2)密码输入:将键盘输入的按键值转换为密码,并在LED显示上显示。

(3)密码判断:判断输入的密码是否正确,正确则开锁,错误则锁定按键3秒钟并发出报警。

(4)密码修改:提供一种方式修改密码,以提高安全性。

4. 单片机密码锁的系统调试与优化在完成硬件设计和软件编程后,进行系统调试与优化。

通过反复测试,发现并解决可能存在的问题,提高系统的稳定性和可靠性。

五、实习收获通过本次实习,我学到了很多关于单片机密码锁的知识,收获如下:1. 掌握了单片机的原理与编程方法,了解了单片机在实际应用中的优势。

单片机综合设计实验 单片机密码锁

单片机综合设计实验 单片机密码锁

单片机综合设计实验单片机密码锁单片机综合设计实验一、实验目的掌握嵌入式系统的设计原理、程序编写与调试的开发过程。

二、实验内容电子密码锁设计(A类):根据设定好的密码,采用8个按键实现密码的输入功能,当密码输入正确之后,锁就打开,显示某个字符;如果输入的三次的密码不正确,就锁定按键3秒钟,同时发出报警声显示另一个字符,直到没有按键按下3秒后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。

在单片机实验板上实现二、实验要求1、根据给定题目设计Proteus仿真原理图;2、根据给定题目设计有关的51汇编语言(或C语言)源程序,并编译成可执行文件;3、在Proteus仿真界面下运行程序实现给定的功能。

三.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“21213232”共8位密码。

(2).密码的输入问题:由于采用按键来完成密码的输入,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕,才能完成密码的输入过程。

进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

Proteus 仿真原理图:开始 初始化 有键按下?调用显示启动定时 识别按键按键数=8? 超时?比较密码 开门 开始自动清除<3次?报警NNYYYYNN主程流程图程序TIM EQU -2000DISP DATA 30H ; 30-34HDIS DATA 35HKEY DATA 36HWRONG DATA 50HCNT DATA 51HCLK BIT P0.0DAT BIT P0.1STR BIT P0.2BEEP BIT P0.7S4 BIT P2.7S3 BIT P2.6S2 BIT P2.5S1 BIT P2.4K1 BIT P2.3K2 BIT P2.2K3 BIT P2.1K4 BIT P2.0ORG 0000HLJMP MAINORG 000BHLJMP TIM0ORG 001BHLJMP DT1MAIN: MOV SP,#60H;MOV IE,#82HSETB EASETB ET0SETB ET1MOV TMOD,#11HMOV TH0,#HIGH(TIM)MOV TL0,#LOW(TIM)MOV TH1,#70H ;定时20msMOV TL1,#00H ;SETB TR0MOV KEY,#0MOV R5,#08HMOV R0,#40HMOV WRONG ,#00HMOV DISP+0,#0FFHMOV DISP+1,#0FFHMOV DISP+2,#0FFHMOV DISP+3,#0FFH ;............................................;大循环;............................................START: MOV R5,#08HMOV R0,#40HLCALL INPUTLCALL COMPARELJMP START ;............................................LOOP: INC WRONGMOV DISP+1,#0EH ;第二个数码管显示"E"表示密码输入错误,锁没有打开MOV KEY,#0SJMP START ;............................................;输入8位密码;............................................INPUT: MOV A,KEYJZ INPUTMOV @R0,AMOV A,@R0;MOV DISP+3,AMOV DISP+3,ALCALL DELAY_S ;消抖INC R0MOV KEY,#0DJNZ R5,INPUTMOV KEY,#0RET ;.............................................;判断输入的密码是否正确;.............................................COMPARE: MOV R1,#00HMOV R5,#08HMOV R0,#40HMOV A,WRONGCJNE A,#2,NEXT ;判断输入错误次数是否等于3,不等于跳转NEXTMOV WRONG,#00H ;等于3调用按键锁定子程序MOV KEY,#0LCALL LOCK ;调用键盘锁定程序SJMP NEXT_1 ;子程序返回NEXT: MOV DPTR,#TAB ;输入的密码与预先设定的密码相比较MOV A,R1MOVC A,@A+DPTR;MOV A,R1MOV B,@R0CJNE A,B, LOOPINC R1INC R0DJNZ R5, NEXT ;判断8位有没有比较完; MOV DISP+3,#0FFH; MOV DISP+2,#0FFHMOV DISP+1,#0AH ;密码正确显示A; MOV DISP+0,#0FFHNEXT_1: RET ;...........................................;锁定按键3秒钟;...........................................LOCK: MOV KEY,#00HMOV DISP+1,#0FH ;第二个数码管显示"F"表示三次密码输入错误,锁定按键锁定三秒过后第二个数码管显示关SETB TR1MOV CNT,#00HLOCK_N:CLR BEEPMOV A,KEYJNZ LOCK ;A=0说明没有按键按下,不需要重新锁定,程序顺序执行,A!=0说明有键按下,重新锁定MOV A,CNTMOV KEY,#0CJNE A,#150,LOCK_N ;判断锁定时间是否到3秒CLR TR1 ;关中断SETB BEEP ; 关蜂鸣器MOV DISP+1,#0ffhMOV CNT,#00H ;计数器清零RET ;中断返回;............................................;中断0的子程序;............................................TIM0: PUSH ACCPUSH PSWMOV TH0,#HIGH(TIM)MOV TL0,#LOW(TIM)MOV A,DISLCALL GETDISMOV A,DISADD A,#DISPMOV R1,AMOV A,@R1LCALL GETSEGKEY0P: JB K1,KEY1PMOV A,DISADD A,#1MOV KEY,AKEY1P: JB K2,KEY2PMOV A,DISADD A,#5MOV KEY,AKEY2P: JB K3,KEY3PMOV A,DISADD A,#9MOV KEY,AKEY3P: JB K4,KEYPMOV A,DISADD A,#13MOV KEY,AKEYP: INC DISMOV A,DISCJNE A,#4,TIMEMOV DIS,#0TIME: POP PSWPOP ACCRETI ;.............................................;中断服务程序2DT1: MOV TH1,#70HMOV TL1,#00HINC CNTRETI ;............................................;延时子程序1 ;............................................DLYTIM: MOV R6,#200 DLYR7: MOV R7,#200DJNZ R7,$DJNZ R6,DLYR7RET ;.............................................;延时子程序2 ;............................................. DELAY_S:MOV R4,#10MOV R6,#200DLYR8: MOV R7,#200DJNZ R7,$DLAY1: DJNZ R6,DLYR8DJNZ R4, DLAY1RET ;........................................... ;........................................... GETSEG: MOV R1,ALCALL DISPLAYRET ;.......................................... ;.......................................... GETDIS: MOV DPTR,#NUMTAB MOVC A,@A+DPTRCPL AMOV P2,ARET ;.........................................;......................................... DISPLAY:MOV A,R1MOV DPTR,#TABLEMOVC A,@A+DPTRCPL AMOV R2,#8CLR CLK ;......................................... ;......................................... DLP: RRC AMOV DAT,CCLR CLKSETB CLKDJNZ R2,DLPSETB STRCLR STRRET ;........................................... ;...........................................;数码管译码;...........................................TABLE: DB 0F5H,05H,0E3H,67H,17H,76H,0F6H,25HDB0F7H,77H,0B7H,0D6H,0F0H,0C7H,0F2H,0B2H ;...........................................;数码管的位选通;............................................NUMTAB: DB 10H,20H,40H,80H ;............................................;初始密码为2,1,2,1,3,2,3,2 ;............................................TAB: DB 02H,01H,02H,01H,03H,02H,03H,02H ;......................................END。

基于单片机的电子密码锁实验报告

基于单片机的电子密码锁实验报告

基于单片机的电子密码锁实验报告题目:基于16F877的电子密码锁班级:班内序号:实验组号:学生姓名:指导教师:基于16F877的电子密码锁实验摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的储存多以加锁的方法来解决。

假设使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必定趋势。

随着科学技术的不断进展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。

目前使用的电子密码锁大部分是基于单片机技术,以单片机为要紧器件,其编码器与解码器的生成为软件方式。

本系统由16F877单片机系统〔要紧是16F877单片机最小系统〕、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改四位用户密码、输入提示音、密码错误报警等功能〔本设计由单片机操纵LCD显示,密码正确显示password ok!密码错误显示wrong,please reset!用户reset后进行重新输入。

由单片机操纵矩阵键盘含有0-9数字键和A-F功能键。

按F键,那么进行密码重置功能〕。

本系统成本低廉,功能有用。

〔宋体五号〕A b s t r a c tIn daily life and work, the department of housing and security, unit documents, financial statements and some personal information to save more in order to lock the ways to solve. If use the traditional mechanical key to open the lock, people often need to carry multiple keys, use very convenient, and the key missing after security is compromised. With anti-theft alarm function such as electronic combination lock instead of password quantity is little, security, poor mechanical combination lock is inevitable trend. With the continuous development of science and technology, people in daily life the demand is higher and higher safety insurance device. To meet the requirements of people on the use of the lock, increase its safety, use the password instead of the key combination lock arises at the historicmoment. Combination lock with high safety, low cost, low power consumption, easy operation, remember password lock, etc.Currently use electronic combination lock is mostly based on single chip microcomputer technology, single chip microcomputer as the main device, the encoder and decoder for software.This system consists of 16 f877 microcontroller system (mainly minimum 16 f877 microcontroller system), 4 * 4 matrix keyboard, LCD1602 display and alarm system, etc, and has set up four, modify user password, password, input prompt error alarm functions (this design by the single chip microcomputer control LCD display, the password correctly display the password ok! Wrong password shows wrong, both please reset! The user to enter again after reset. By single-chip microcomputer control matrix keyboard contains 0-9 number keys and A - F function keys. Press the F key, then carries on the password reset function). This system is low cost, function and practical.WM function to control its turn. And this is so called navigating aptitudinally .关键字单片机——microcontroller 芯片——CMOS chip16F877一、PIC16F877系列单片机简介PIC16F87X ( 含873P874P876P877) 是美国微芯(Microchip) 公司推出的高性能单片机,除具有单片机的通用资源外,该系列单片机还采纳哈佛总线结构、二级指令流水线取指方式、精简指令集(RISC)和内部具有E2 PROM 数据储备器及FLASH 结构的程序储备器、仅35 条单字节单周期指令、在系统串行编程技术和在线调试技术。

密码锁单片机实习报告

密码锁单片机实习报告

一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

密码锁作为一种安全可靠的开锁方式,也逐渐成为了人们生活中不可或缺的一部分。

本报告主要介绍了我在单片机实习期间,基于51单片机设计的电子密码锁的过程和实践。

二、实习目的和意义本次实习的目的是学习和掌握单片机原理及应用,提高自己的动手能力和创新能力。

通过设计电子密码锁,了解并掌握单片机在实际应用中的电路设计、编程和调试技巧。

此外,电子密码锁在生活中的应用广泛,具有较高的实用价值,可以为人们提供便捷、安全的生活环境。

三、实习内容1. 电路设计本次实习的电子密码锁主要由51单片机、4x4矩阵键盘、LCD1602液晶显示屏、AT24C02存储模块、报警系统和继电器等组成。

电路设计过程中,首先对各个模块进行选型,然后绘制原理图,最后搭建实物电路。

2. 编程设计根据电路设计,编写相应的程序代码,实现密码的输入、存储、比较和报警等功能。

程序设计过程中,采用C语言进行编程,通过Keil软件进行编译和调试。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

调试过程中,检查各个模块是否正常工作,并对可能出现的问题进行排查和优化。

四、实习过程1. 电路设计首先,根据实习要求,选用AT89C52型51单片机作为核心控制器。

然后,设计4x4矩阵键盘,用于密码的输入。

接着,选用LCD1602液晶显示屏,显示密码输入界面和开锁状态。

为了实现密码的存储,选用了AT24C02存储模块。

最后,设计报警系统和继电器,实现密码错误报警和开锁功能。

2. 编程设计根据电路设计,编写相应的程序代码。

首先,实现矩阵键盘扫描函数,用于检测按键输入。

然后,编写密码存储和读取函数,将输入的密码存储到AT24C02模块中,并在下次开机时读取。

接下来,实现密码比较函数,判断输入的密码是否正确。

最后,编写报警和开锁函数,当密码错误时发出报警,正确时驱动继电器开锁。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

密码锁实验报告doc

密码锁实验报告doc

密码锁实验报告篇一:电子密码锁实验报告密码锁实验报告一,实验目的1. 学习8051定时器时间计时处理、跑马灯、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实现设置密码,密码锁的功能二,实验要求基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码。

3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。

三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

1在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

单片机密码锁实验报告

单片机密码锁实验报告

单片机系统设计实训报告专业:生产过程自动化姓名:李某班级学号:。

指导教师:。

实训期间:。

目录一.实验目的: (3)二.实验要求: (3)三.实验基本原理: (3)四.实验设计分析: (4)1.设计思想: (4)五.实验要求实现: (5)1. 电路设计: (5)2.主流程图: (7)3.4x4键盘行列式键盘原理电路图: (8)4. 显示模块 (9)五.总电路设计如下 (9)六.程序 (11)七.实验心得 (16)一.实验目的:1.熟悉单片机定时器的编程方法。

2.灵活运用单片机C语言程序中的字符串、数组、指针。

3.熟悉数码显示、LCM1602液晶显示器、YJD12864液晶显示器的编程方法。

4.熟悉掌握4x4矩阵键盘的C语言编程。

二.实验要求:1:用4×4矩阵键盘组成0-f数字键及。

2:可以自行设定或删除8位密码,3:用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示PASS,若密码显示错误时,显示ERR.4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图。

三.实验基本原理:这个密码锁的功能是使用矩阵键盘中的十六个键输入密码0到F还有,输入的同时在八位数码管上显示用户所输入的密码,未输入的位置用横杆填补表述未输入。

当输入的密码超出设置的位数时,数据溢出,清零。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示pass,若密码不正确,则显示err;模拟密码锁,密码固化到ROM 不能通过按键输入更改。

四.实验设计分析:1.设计思想:1. 本系统采用单片机AT89S51作为核心元件的一款具有本机开锁,加锁,修改密码和错误2.报警的电子密码锁。

3. 电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。

单片机电子密码锁开闭窗帘控制实训报告

单片机电子密码锁开闭窗帘控制实训报告

单片机电子密码锁开闭窗帘控制实训报告
本次实训任务为设计实现基于单片机电子密码锁开闭窗帘控制系统。

以下为设计实现的基本流程:
1. 确定硬件平台:使用基于AT89S52单片机的开发板。

2. 确定开发环境:使用Keil μVision5开发环境。

3. 硬件电路设计:通过开发板提供的GPIO接口将电子密码锁和串口通信模块与单片机相连接,同时通过另一组GPIO接口将窗帘控制模块与单片机相连接。

4. 软件程序设计:
- 对于电子密码锁开关控制,通过四个按键进行操作,其中一个按键为开关电子密码锁的开关按键,另外三个按键为输入密码和确认键。

- 对于串口通信模块,通过与电脑相连,可以通过在电脑端输入开关密码,实现对电子密码锁的开关控制。

- 对于窗帘控制模块,通过单片机的GPIO向窗帘电机输出不同的电平,实现对窗帘的开闭控制。

5. 程序调试与实现:设计完成后,进行硬件与软件的联调,最终实现单片机电子密码锁开闭窗帘控制系统。

6. 实验结果:最终得到了一个正常工作的单片机电子密码锁开闭窗帘控制系统,可以通过按键操作、串口通信和窗帘开关接口实现对电子密码锁和窗帘的控制。

总的来说,本次实训任务涉及到了软硬件设计、程序开发、单片机底层控制、串口通信与驱动等多个方面的技术知识,在实践中得到了积极学习和实践。

单片机课程设计-电子密码锁-实验报告-

单片机课程设计-电子密码锁-实验报告-

单片机课程设计电子密码锁实验报告学院:电子信息工程学院班级:自***姓名:***学号:******指导教师:***单片机课程设计电子密码锁实验报告(一)实验目的1、了解电子密码锁工作原理和八段LED数码管显示原理。

2、掌握LED数码管显示器与单片机接口电路设计方法。

3、掌握实现密码锁功能的编程方法。

(二)设计实现功能(1)由程序设定初始密码,密码输入正确时锁打开,指示灯亮,发出“叮咚”的声音;密码输入不正确时,指示灯闪亮四次,发出“嘀嘀嘀滴”报警声。

(2)具有保护密码的功能,输入密码在数码管上显示可改为“88888”的方式,防止别人偷窥密码。

(3)具有修改密码的功能,密码输入错误可按DEL键进行删除。

(4)具有防止多次试探密码的电子密码锁并加报警功能,密码输入错误超过三次,将一直发出“滴滴滴滴。

”报警声。

(5)具有设定新密码的功能,输入密码后按CHG键,密码将被重新设定。

(三)整体电路设计思路核心用单片机AT89S52来实现此实验的要求。

用4*4键盘来输入密码。

每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接V CC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

用8个7段数码管来显示密码。

数码管的显示用扫描的方式,利用动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

单片机电子密码锁报告

单片机电子密码锁报告

单片机电子密码锁报告电子密码锁是以电子技术为基础所设计的一种安全性较高的锁具,它的开锁方式是通过输入正确的密码或刷卡等方式进行的,能够有效地保护物品的安全。

而单片机电子密码锁就是一种基于单片机的电子密码锁系统,通过单片机的控制来实现密码的输入、判断、存储以及驱动电机等操作,这种锁具被广泛应用于门禁与保险箱等安全领域,具有安全性高、易操作等特点。

一、系统结构单片机电子密码锁是由单片机、液晶显示屏、按键、马达、继电器及外部供电等组成的系统,其中单片机充当着决策、控制、运算和存储等多重角色。

单片机的主控单元负责控制输入与输出,而输入主要是通过按键来完成密码输入以及各种命令的控制,外部输入的密码信号由单片机进行解析并进行验证操作,只有在密码正确的情况下才会通过控制继电器来打开锁具,否则发出报警信号以及短时间内禁止输入密码信号,以确保锁具系统的安全。

在系统的显示单元中,采用了液晶显示屏,用于显示电子密码锁的状态信息以及相关的输入结果,方便用户在操作过程中了解系统的运行情况,提高了整个系统的用户友好性。

此外,该系统还配备了一个马达,用于控制锁具的开关,当用户在输入正确的密码时,通过单片机的判断,驱动马达来以机械方式打开锁具,起到了保护物品安全的作用。

二、技术路线系统的设计中,使用了STC89C51单片机作为主控芯片进行控制,该单片机具有16KB的Flash存储器、1KB的RAM内存及32个输入输出线,可满足该系统的各种控制需求。

在系统的密码输入模块中,采用了4×4数字键盘,并借助单片机来进行扫描和管理。

通过按键输入,单片机将密码信号采集、存储和解析,只有密码符合设定要求时,才能使系统进行操作。

在系统的密码存储模块中,采用了24C01的EEPROM芯片,能够方便地保存密码信息,并且具有读写次数高、长期使用不会消失等好处。

在供电单元中,可以使用交流或者直流输入的电源供应,对于多种应用场合提供了很大的便利。

单片机密码锁实习报告

单片机密码锁实习报告

一、实习背景随着科技的不断发展,单片机在各个领域得到了广泛的应用。

为了提高对单片机应用的理解和实践能力,我们小组选择了单片机密码锁作为实习项目。

通过该项目,我们深入了解了单片机的编程和使用,并掌握了密码锁的工作原理。

二、实习目标1. 掌握ATmega16单片机的编程和硬件接口使用;2. 设计并实现一个基于ATmega16单片机的密码锁系统;3. 熟悉Proteus仿真软件的使用,对系统进行仿真验证;4. 分析项目过程中遇到的问题,并提出解决方案。

三、实习内容1. 硬件设计本系统主要由以下几个部分组成:(1)ATmega16单片机:作为系统的核心控制器,负责密码输入、验证、显示及控制蜂鸣器和LED指示灯;(2)矩阵键盘:提供用户输入接口,共16个按键,用于输入密码和控制系统功能;(3)LCD1602显示屏:用于显示当前系统状态、密码输入提示及修改提示等信息;(4)蜂鸣器:在密码输入错误或系统锁定时发出警报声;(5)LED指示灯:在密码正确时点亮,指示系统已解锁。

2. 软件设计(1)初始化模块:初始化LCD显示屏、键盘及相关硬件接口,显示锁定状态;(2)按键扫描:扫描矩阵键盘,获取用户输入的密码;(3)密码处理:验证用户输入的密码是否正确;(4)显示模块:在LCD显示屏上显示当前系统状态、密码输入提示及修改提示等信息;(5)定时器中断处理:实现密码修改功能,以及连续输入错误密码达到设定次数后的锁定状态。

3. Proteus仿真使用Proteus仿真软件对设计的密码锁系统进行仿真验证,确保硬件电路和软件程序的正确性。

四、实习成果1. 成功设计并实现了基于ATmega16单片机的密码锁系统;2. 掌握了ATmega16单片机的编程和硬件接口使用;3. 熟悉了Proteus仿真软件的使用,对系统进行了仿真验证;4. 通过项目实践,提高了对单片机应用的理解和实践能力。

五、实习体会通过本次单片机密码锁实习,我们深刻认识到单片机在各个领域的应用价值。

单片机 模拟密码门锁 设计报告

单片机 模拟密码门锁 设计报告

用单片机模拟密码门锁1.总体设计:1)所实现功能描述:密码门锁工作过程比较简单,用户只有输入了正确的密码,才开锁,当三次输入错误以后,则延时一段时间才允许再次输入。

2)设计方案的描述:(1) 鉴于实际条件的限制,我们只是从试验板上模拟这个过程,可以利用红绿灯的亮灭来模拟门的开关状态,用键盘来输入密码,用定时中断来延时。

(2)可以用某个特定键来进行密码输入完成后的确认,检测到这个键则进行密码比较并改变锁的状态。

2.1)实验设备:8051单片机及其机器设备等。

2)设计方案:这个实验是单片机模拟数字密码锁的功能,程序初试设定一个默认密码1,程序运行后,如果连续输入三次密码错误,那么亮红灯,表示输入有误。

如果输入正确密码,则绿灯亮,表示门开。

这个程序密码默认是一位的,如果应用到实际中,会比较容易被破结,安全上有不足。

初始默认密码可以通过程序中的设置键号来改变。

3. 四、主要技术问题的描述:本题内容比较简单,主要技术点有如下几个:(1)主程序不断检测键盘按键并记录到缓冲区,当确认键被按下后进行密码比较。

(2)用一个存储单元存储错误次数,当到达错误次数以后,则启动定时中断,并设置某个标志位使主程序不记录下面的按键,定时停止以后再纪录。

4.方案的不足:该方案只适合比较简单的密码,一旦超过三位程序将无反应;另一方面,密码轻易被识破。

5.改进方案:将程序的密码设为多位以不易识破。

设置忘了密码后,可以找回的6.YNNYY7,实验程序:org 0000h ;设定初始值start: mov sp,#60h ;设置堆栈指针初值mov dptr,#0ff20hmov a,#03hmovx @dptr,amov 70h,#00hmov r1,#03hkey1: acall ks1 ;调用ks1jnz lk1n1: acall dirajmp key1lk1: acall diracall diracall ks1jnz lk2ajmp key1 ;跳转到key1 lk2: mov r2,#0fehmov r4,#0lk4: mov dptr,#0ff21hmov a,r2movx @dptr,ainc dptr ;数据指针+1inc dptrmovx a,@dptrjb acc.0,lone ;判断acc.0mov a,#0ajmp lkplone: jb acc.1,ltwomov a,#08hajmp lkpltwo: jb acc.2,lthrmov a,#10hajmp lkplthr: jb acc.3,lformov a,#18hsjmp lkplfor: jb acc.4,nextmov 70h,#19hajmp key1lkp: add a,r4mov 70h,apush acc ;压栈保存lk3: acall diracall ks1jnz lk3pop acclcall y1retnext: inc r4mov a, r2jnb acc.7,kndrl a ;左移mov r2,aajmp lk4knd: ajmp key1ks1: mov dptr,#0ff21hmov a,#0movx @dptr,ainc dptrmovx a,@dptrcpl a ;取反anl a,#1fhretdir: mov r0,#70hmov a,@r0anl a,#0fhmov 30h,amov a,@r0swap a ;高低位交换anl a,#0fhmov 31h,amov r0,#30h ;把30h值赋给r0mov r3,#01hdo1: mov a,r3mov dptr,#0ff21hmovx @dptr,ainc dptrmov a,@r0add a,#0dhmovc a,@a+pc ;查表dir1: movx @dptr,aacall dl1mov a,r3rl ajb acc.2,ld1mov r3,ainc r0ajmp do1ld1: retdseh: db 0f8h,99h,80h,92h,90h,82h,88h,83hdb 0f9h,0c0h,0a4h,8eh,0b0h,86h,0c6h,0a1h,0ffh,0c0h dl1: mov r7,#2 ;延时子程序dl: mov r6,#0ffhdl6: djnz r6,dl6djnz r7,dlrety1: cjne a,#8h,set1 ;设置初始密码ljmp next2set1: dec r1cjne r1,#0,y2clr p1.7lcall dlrsetb p1.7ljmp y2retnext2: clr p1.6lcall dlrrety2:ljmp key1dlr: mov r7,#250 ;延时子程序l2:mov r6,#124l1:djnz r6,l1djnz r7,l2retend8自评分:80实验心得:虽说这些程序不完全是自己的,但里面倾注了我白分之八十的心血。

多功能密码锁单片机课程综合实训报告1 精品

多功能密码锁单片机课程综合实训报告1 精品

单片机课程综合实训报告项目名称:多功能密码锁一. 内容要求:1.预期功能(1)在没输入密码时显示万年历,并可调.(2)、通过按键来确定输入密码,实现密码锁功能,正确输入密码后有开锁提示;2.设计方案(1)采用1602液晶LM016L, AT98C51,行列式键盘。

(2)采用1602液晶LM016L。

(3)选用单片机作为系统的核心部件,实现控制与处理的功能。

单片机具有资源丰富、速度快、编程容易等优点。

利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标1,3.硬件部分:3.1电路图:主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

其中矩阵键盘用于输入数字密码,独立按键用于实现可调万年历。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。

各模块功能如下:(1)键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能(2)显示模块:用于完成对系统状态显示及操作提示功能。

(3) 复位电路:完成系统的复位。

(4) 独立键盘:用于完成可调万年历功能.(5)开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。

键盘电路:用P1口组成4*4的矩阵键盘,各键的定义一次为:0、1、2、3、4、5、6、7、8、9、*、#、enetr、del(当密码按错时可以按下该键删除)、unclock(解锁键即三次密码都错了只能按下它进行解锁)调整时间的电路:Tiao是位功能选择,通过选择位来决定万年历的调整,+1、-1是调节功能键。

3.2电路原理说明:开始仿真时,一开始现实年月份时间。

本设计主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。

开锁电路控制着继电器发光二级管的开锁。

单片机实习-密码锁

单片机实习-密码锁

学号:07446519X X 大学单片机硬件实习报告题目:电子密码锁设计学生:XXX学院:XXXXXXXXXXXX 专业班级:XXXXX指导教师:xXXXXX单片机硬件实习任务书一、设计题目电子密码锁设计二、设计内容及目标利用实验系统中的键盘,来输入用户的密码(限定为数字),当输入的密码正确(与程序中预设的值相同)而且是在规定的时间(在12s内输入正确的密码)输入的话,便开锁,当用户不小心三次输入密码都没有正确,键盘被锁定。

具体的开锁和锁定状态用8个LED指示灯来显示:开始状态所有灯灭,当用户在规定的时间内正确的输入了密码,所有灯同时闪烁;若错误则1、3、5和2、4、6相继亮。

当输入错误满3次键盘处于锁定状态时,1、2、3、4和5、6、7、8相继闪烁。

所用实验系统中键盘和LED的状态如下图所示:三、进度安排周次工作内容第十八周星期六、题目安排,图书馆查相关资料周日硬件设计,利用实验系统搭建硬件电路,及软件总体设计第十九周星期一上午星期一下午软件开发,并开始准备实习报告初稿星期二、三星期四整体调试,完成实习任务,星期五上午在实验现场进行结果演示,答辩四、设计时间:2010 年07 月3 日到2010 年07 月9 日通信工程系指导教师:XXX目录1.背景........................................... 错误!未定义书签。

1.1电子密码锁简介.............................................................................. 错误!未定义书签。

1.2电子密码锁发展趋势...................................................................... 错误!未定义书签。

2.课题设计....................................... 错误!未定义书签。

密码锁实习报告

密码锁实习报告

电子信息工程专业课程设计任务书题目:基于51单片机的电子密码锁设计设计内容设计制作和调试一个由8051MCU组成的密码锁系统。

通过这个过程学习熟悉键盘控制使用,掌握51系列单片机控制和测试方法。

设计以AT89C51单片机为核心,以4*4矩阵键盘做为系统的密码输入和调整密码,以发光二级管来代替磁力锁,完成基本要求,可以适当发挥进行扩展设计。

1)数码管显示:六位密码;2)键盘输入密码或密码修改;设计步骤一、总体方案设计其中,采用51系列MCU构成典型电路。

可选用适当的芯片;可选用/不选用LED/键盘驱动芯片;建议扩口用74244、74373扩展。

二、硬件选型工作三、硬件的设计和实现1.选择计算机机型(采用51内核的单片机);2.设计支持计算机工作的外围电路(EPROM、RAM、I/O端口、键盘、显示接口电路等);3.接口电路;4.其它相关电路的设计或方案(电源、通信等)四、软件设计1.分配系统资源,编写系统初始化和主程序模块;2.编写相关子程序;3.其它程序模块(显示与键盘等处理程序)。

五、编写课程设计说明书,绘制完整的系统电路图(A3幅面)。

课程设计说明书要求1.课程设计说明书应采用学院统一印制的课程设计(论文)说明书封面,书写应认真,字迹工整,论文格式参考国家正式出版的书籍和论文编排。

2.论理正确、逻辑性强、文理通顾、层次分明、表达确切,并提出自己的见解和观点。

3.课程设计说明书应有目录、摘要、序言、主干内容(按章节编写)、主要结论和参考书,附录应包括程序清单、系统方框图和电路原理图。

4.课程设计说明书应包括按上述设计步骤进行设计的分析和思考内容和引用的相关知识。

5.要求打印B5纸,排版要求请向指导教师索取。

6.每组单独一个题目,每组上限5人。

时间安排课程设计计划时间4周。

课程设计题目于15周下发。

课程设计完成后于18周四下午下班前送交电子信息办公室(实验楼三楼),届时指导教师安排短暂答辩。

辅导时间和地点答疑请直接与指导教师联系。

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

二○一六~二○一七学年第一学期电子信息工程系电子综合设计II报告书班级:电信(产业)1401班设计时间:2016/12/29学生姓名:曹子龙学号:201404135024指导教师:赵敏二○一六年十二月一、设计要求.题目内容:设计一个基于51单片机的电子密码锁:1.可以使用4*4的矩阵键盘与红外遥控器输入密码。

2.可以通过按特殊组合键重设开锁密码。

3.显示通过1602液晶屏显示电子密码锁界面,输入密码时显示输入个数显示为‘*’,如果密码正确,进入欢迎界面。

4.密码连续输入3次错误报警,LCD显示报警,倒计时十秒后重新进入密码输入界面。

5.可以通过特殊的按键组合跳过输入界面直接进入欢迎界面。

实现方法:1.通过红外接收头,连接单片机的P3.2外部中断INT0口,可以实现单片机接收遥控器的信号输入。

2.通过矩阵键盘扫描函数,可以实现对键盘输入的响应。

3.通过引脚的高低电平变化频率,控制蜂鸣器的输入占空比和频率(低电平时间固定,通过输入给函数值的不同改变高电平时间,固定响300个周期),对不同按键实现不同声音响应。

4.1602显示屏有16*2个单元格,每个单元格由5*8个像素点组成,可以很好的显示数字,符号,英文字符。

功能需求分析:液晶屏显示:根据题意,需要设计并显示输入密码界面、修改密码界面、欢迎界面、错误警告界面密码输入:根据题意,每次输入一个数字,则显示一个‘*’符号代替,只能看出输入的位数,若输入密码位数达到六位,则与正确密码比较,若正确,进入系统。

根据日常的手机使用习惯,默认长度为6位,且第六位输入之后立即判断,正确则进入,错误则清空重输。

组合键实现密码修改:密码修改必须通过不易被他人发现的特殊方法改变,所以设计为,若同时按住矩阵键盘的5,10 或6,9两个键,则进入密码修改函数。

输入密码错误三次则报错:一般的密码系统对密码输入错误次数过多的情况进行了限制,所以在密码锁里设置,若密码输入错误三次,则进入警报界面,显示10s倒计时,必须在倒计时结束后才能再次输入密码。

组合键实现跳过密码:如果系统主人临时忘记了密码,则需要一些补救的备用措施,所以在电子锁里设计了,如果同时按下0,15或3,12键,则跳过密码输入阶段,直接进入欢迎界面。

红外控制:在很多时候,需要通过远程通信输入密码,进入某个远程服务器系统。

所以,通过红外设备模拟远程通信就显得很有必要。

再此系统中,通过把红外接收引脚接到外部中断INT0口,实现接收红外遥控器的数据。

重新输入:如果密码输入的过程中,发现输错了一位数,方便起见,要设置重新输入的功能,即矩阵按键为11,或红外遥控键值为12时,重新输入密码,并且不计入输错次数。

二、 系统总体设计框架系统模块分布图:电子密码锁系统密码输入及显示蜂鸣器模块重设密码跳过密码输入过程警告音1602显示模块按键音管理员模块输入密码界面警告界面重设密码界面欢迎界面详细流程框图:开始若为重置密码指令红外外部中断键盘扫描错误警报进入欢迎界面输入界面是否为特殊组合键输入是否达到6位是否与正确密码相同错误次数达到三次?系统锁定,并倒计时十秒将输入密码暂存在数组用*显示密码位数是否是否是否是否将输入的六位六位密码数组与正确值比较若为跳过密码指令输入密码界面重置密码界面输入是否达到6位将输入密码存入正确密码数组中,完成重置否是三、运行结果密码输入:每次输入一个数字,则显示一个‘*’符号。

密码修改:通过特殊组合按键,进入密码修改函数。

三次报错:若密码输入错误三次,则进入警报界面。

特殊键清除:通过特殊组合按键,进入密码修改函数。

红外控制:通过红外遥控器输入密码。

重新输入:通过红外遥控器的12号按键或矩阵键盘的11号按键可以重新输入密码。

四、实验小结本次实验,用51单片机实现了电子密码锁系统,虽然内容较基础,但是还是新学到了一些新知识,如红外线的数据传输方式,外部中断的合理使用。

同时也遇到了一些问题:用红外遥控器输入密码的时候,总会在短时间内把一个键值发给单片机发送两次,但是原因不是太清楚,可能是红外遥控器的抬起也算一个命令,然后我再判断主函数的红外线标志位判断的地方,加了0.5秒的延迟,解决了问题。

以后有时间再把红外接收器的数据手册详细看看,研究问题出在哪里。

总体来说,这一次的动手设计还是让自身能力提高了不少,但其实我学习的东西还远远不够,在以后的学习里,我会抓紧课外时间多学习知识,才能将自身解决实际问题的能力快速提高。

五、参考文献[1] 谭浩强,C语言程序设计,清华大学出版社,2005[2] 张毅刚,单片机原理及接口技术,人民邮电出版社,2011六、附录:源程序/******************************************************************************* * 电子密码锁系统 Designed By 曹子龙 2016/12/29 * *******************************************************************************/#include<reg51.h>#include"lcd.h" //包含控制1602的初始化程序及写入命令的程序#define GPIO_KEY P1 //矩阵键盘接口sbit IRIN=P3^2; //红外线接口sbit Beep = P2^0; //蜂鸣器接口unsigned char code CDIS0[16]={" Set Code: "}; //用来初始化1602屏幕显示内容的字符串数组unsigned char code CDIS1[16]={" Enter Code: "};unsigned char code CDIS2[16]={" Code: "};unsigned char code CDIS3[16]={" Welcome to "};unsigned char code CDIS4[16]={" My System!"};unsigned char code CDIS5[16]={" Warning: "};unsigned char code CDIS6[16]={" Please Wait s!"};unsigned int RIGHTCODE[6]={9,7,0,2,2,9};//初始正确密码unsigned int Code[6]; //用来存放输入密码unsigned intKeyValue; //用来储存键值unsigned intKey_Flag=0; //有按键按下时置为1unsigned intHongwaiValue; //用来储存键值unsigned intHongwai_Flag=0; //有红外信号时置为1unsigned int Annum=0; //用来储存按键次数unsigned intWrongnum=0; //用来储存错误次数unsigned intCodeFlag=0; //用来标识密码是否输入正确unsigned intCodeDel=0; //特殊组合键可以清除密码unsigned char IrValue[6]; //暂存接收到的红外信号unsigned char Time;unsigned char WrongTime; //用来储存错误等待时间void SetCode(); //重置密码函数void hongwai(); //将红外接收的值变为对应的按键值void IrInit(); //红外初始化void DelayMs(unsigned int );void beep(unsigned int); //可让蜂鸣器实现不同频率声音的函数void KeyScan(); //键盘扫描函数/******************************************************************************* * 函数名 : main* 函数功能 : 主函数*******************************************************************************/void main(){unsigned char i;IrInit();LcdInit();LcdWriteCom(0x80); //初始化LCD1602显示,展示密码输入界面for(i=0;i<16;i++){LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}while(1){KeyScan(); //扫描键盘if(CodeDel==4) //若输入正确的组合按键,可重设密码SetCode();else if(CodeDel==2) //若输入正确的组合按键,则清除密码,直接进入系统{Wrongnum=0; //若输入正确,错误次数清零Annum=0; //密码计数器清零CodeDel=0; //组合键标志位清0Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80); //进入欢迎界面 5sfor(i=0;i<16;i++){LcdWriteData(CDIS3[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS4[i]);}DelayMs(50000);LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}}if(Key_Flag==1){Key_Flag=0;Code[Annum-1]=KeyValue; //将输入值存入密码数组中beep(KeyValue * 30);LcdWriteCom(0xc0+6+Annum);LcdWriteData(42);}if(Hongwai_Flag==1) //若接受到了红外数据{DelayMs(500);if(Hongwai_Flag==1) //不知道因为什么原因,红外接收的中断会开启两次,为了防止数据重复,写了此次延时判断{Annum++; //按键次数加1Hongwai_Flag=0;Code[Annum-1]=HongwaiValue;//将输入值存入密码数组中beep(HongwaiValue * 40);LcdWriteCom(0xc0+6+Annum);LcdWriteData(42);}}if(Annum>=6) //6位密码输入完毕或检测到特殊组合按键{CodeFlag=1; //暂时令标志位为1,若密码有错误,则再置0for(i=0;i<6;i++){if(Code[i]!=RIGHTCODE[i]) //若密码与正确密码不相等CodeFlag=0;}if(CodeFlag==0) //若输入错误,清零重新输入,并将错误输入次数加一{Wrongnum++;if(Wrongnum==3) //若错误次数达到三次{beep(100); //警报LcdWriteCom(0x80); //显示错误信息,等待10sfor(i=0;i<16;i++){LcdWriteData(CDIS5[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS6[i]);}WrongTime='9'; //等待时间while(WrongTime!='0'){LcdWriteCom(0x80+0x40+13);LcdWriteData(WrongTime);DelayMs(10000);WrongTime--;}Wrongnum=0;}Annum=0;Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}}if(CodeFlag==1) //密码输入正确{Wrongnum=0; //若输入正确,错误次数清零Annum=0; //密码计数器清零LcdWriteCom(0x80); //进入欢迎界面 5sfor(i=0;i<16;i++){LcdWriteData(CDIS3[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS4[i]);}DelayMs(50000);LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}/*标志清零需放在后面,因为在密码输入正确后的显示时间内,外部中断或按键都会使标志位为1,进而在再次显示密码时弹出一位密码值*/Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0}}}}/******************************************************************************* * 函数名 : SetCode()* 函数功能: 设置密码*******************************************************************************/ void SetCode(){inti,j=0;Wrongnum=0; //错误次数清零Annum=0; //密码计数器清零CodeDel=0; //组合键标志位清0Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80);for(i=0;i<16;i++) //初始化LCD1602显示,显示设置密码界面{LcdWriteData(CDIS0[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}DelayMs(1000);while(j<6){KeyScan(); //扫描键盘if(Key_Flag==1){Key_Flag=0;RIGHTCODE[j]=KeyValue;beep(KeyValue * 30);LcdWriteCom(0xc0+7+j);LcdWriteData(42);j++;DelayMs(1000);}if(Hongwai_Flag==1) //若接受到了红外数据{DelayMs(500);if(Hongwai_Flag==1) //不知道因为什么原因,红外接收的中断会开启两次,为了防止数据重复,写了此次延时判断{Hongwai_Flag=0;RIGHTCODE[j]=HongwaiValue;beep(HongwaiValue * 40);LcdWriteCom(0xc0+7+j);LcdWriteData(42);j++;DelayMs(1000);}}}LcdWriteCom(0x80);for(i=0;i<16;i++) //初始化LCD1602显示,展示密码输入界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}Wrongnum=0; //错误次数清零Annum=0; //密码计数器清零Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0}/******************************************************************************* * 函数名 : DelayMs()* 函数功能 : 延时*******************************************************************************/void DelayMs(unsigned int x) //0.14ms误差 0us{unsigned char i;while(x--){for (i = 0; i<13; i++){}}}/******************************************************************************* * 函数名 : IrInit()* 函数功能 : 初始化红外线接收*******************************************************************************/void IrInit(){IT0=1;//下降沿触发EX0=1;//打开中断0允许EA=1; //打开总中断IRIN=1;//初始化端口}/******************************************************************************* * 函数名 : ReadIr()* 函数功能 : 读取红外数值的中断函数*******************************************************************************/void ReadIr() interrupt 0{unsigned char j,k;unsigned int err;Time=0;DelayMs(70);if(IRIN==0) //确认是否真的接收到正确的信号{err=1000; //1000*10us=10ms,超过说明接收到错误的信号/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/while((IRIN==0)&&(err>0)) //等待前面9ms的低电平过去{DelayMs(1);err--;}if(IRIN==1) //如果正确等到9ms低电平{Hongwai_Flag=1; //正确收到信号,标志位置1err=500;while((IRIN==1)&&(err>0)) //等待4.5ms的起始高电平过去{DelayMs(1);err--;}for(k=0;k<4;k++) //共有4组数据{for(j=0;j<8;j++) //接收一组数据{err=60;while((IRIN==0)&&(err>0))//等待信号前面的560us低电平过去{DelayMs(1);err--;}err=500;while((IRIN==1)&&(err>0)) //计算高电平的时间长度。

相关文档
最新文档