电子密码锁实验报告

合集下载

数电实验报告电子密码锁设计

数电实验报告电子密码锁设计

数电实验报告电子密码锁设计
实验报告
实验十四电子密码锁设计与实现
3.4.1 实验目的与设计要求
目的:(1)学习4位数值比较器CC14585和74LS85的功能。

(2)掌握电子密码锁的工作原理及综合实验技能。

要求:(1)电路可以由主持人预置16种不同的开锁密码,并能够更换。

(2)当输入和预置开锁密码相同时,发出开锁信号(LED 显示)。

(3)如果连续三次输入错误密码即产生报警信号。

报警信号用声光报警电路指示(蜂鸣器等)。

(4)具备能够取消报警状态的功能。

3.4.2 实验仪器与器件
直流稳压电源一台;数字实验箱一个;计算机一台。

74LS75锁存器、74LS00、74LS10、74LS20、4位数值比较器CC14585或74LS85。

3.4.3 实验原理框图
设计思路:用74LS194四位寄存器作锁存电路,74LS75四位锁密




入锁存电路密码比较电路密码锁存装置计数器确认按钮
报警电路开锁电路确认按钮
密码输入
存器作密码锁存装置,4位数值比较器4585作密码比较电路,74LS160作计数器。

当连续三次输入错误密码即产生报警信号同时锁住,此时再输入正确密码不产生开锁信号。

仿真图如下:。

数电实验—密码锁报告

数电实验—密码锁报告

电子密码锁实验报告姜岳松一、实验目的1.了解电子密码锁的原理,学会用硬件描述语言来建立电子密码锁的模块。

2.利用该软件进行可编程逻辑器件设计,完成电子密码锁的逻辑仿真功能。

3.使用编译器将设计实现,下载到JDEE—10实验箱上进行调试和验证所设计的电子密码锁的功能。

二、实验器材1.Pentium—Ⅲ计算机一台;2.JDEE—10实验箱一只;三、实验要求设计一个电子密码锁,实现以下的功能:用8个拨码开关分别代表预设的密码和输入待验证的密码。

一个微动开关做为触发判断。

判断结果通过点阵和蜂鸣器表示。

正确的话,所有点阵的绿色灯点亮,同时蜂鸣发出“di”声。

否则,点阵显示红色,同时蜂鸣“do”音。

四、实验方案及设计过程1.第一部是实验电子密码锁的基本功能,该程序的主体是一个密码判断程序:首先是将输入的预设的密码和待验证密码用数组储存起来进行比较,比较结果通过IF语句,相同则触动绿色点阵和蜂鸣器的一个频率,不同则触动红色点阵和蜂鸣器的另一个频率2.开始丰富附肢程序:两种不同的响声需要两个计数器来产生不同的频率;要有一个上升沿保证颜色显示程序和密码判断程序以一个高频率运行,需要一个计数器;一个密码验证开关,由微动开关实现,在密码验证开关触动后能够保持一个高电位,这样则需要一个由D触发器构成的锁存器来锁定高电平。

3.点阵的显示:点阵的显示控制,由于显示OK的原代码之前已经练习过,然后设计好NO的字符,可以直接完成拓展之一。

此部分不需要详述。

五、拓展功能设计拓展主要是为了实现八位密码,这样所有的拨码开关都要用上,所以还需要两个微动开关来确定密码设定和输入。

同时,微动开关启动后,能够将拨码开关的密码储存到数组A[7..0]和B[7..0]中,待判断开关启动后调用,所以要用寄存器储存起来,所以声明一个串进串出的寄存器。

同时对主程序的判断器的输入变量进行修改。

六、顶层文件和源程序文本文件顶层文件文本:SUBDESIGN ECLOCK ( a[7..0],b[7..0]:input;key: input;freq1,freq2: input;red: output;green: output;spk: output;)begindefaultsred=gnd; green=gnd;spk=gnd;end defaults;if key thenif a[]==b[] then red=vcc;spk=freq1;else green=vcc;spk=freq2;end if;end if;end;点阵显示文本:subdesign leddiaplay( green,red: input;clk[2..0]: input;row[8..1],colred[16..1],colgreen[16..1]: output; )begindefaultscolred[]=h"ffff";colgreen[]=h"ffff";end defaults;if green thentableclk[2..0]=>row[8..1],colgreen[16..1];H"0" =>H"1", H"DBC3"; %1101 1011 1100 0011% H"1" =>H"2", H"EBDB";H"2" =>H"4", H"EBDB";H"3" =>H"8", H"F3DB";H"4" =>H"10", H"F3DB";H"5" =>H"20", H"EBDB";H"6" =>H"40", H"EBDB";H"7" =>H"80", H"DBC3";end table;end if;if red thentableclk[2..0]=>row[8..1],colred[16..1];h"0" =>h"1", h"C3DB";h"1" =>h"2", h"DBD3";h"2" =>h"4", h"DBD3";h"3" =>h"8", h"DBC3";h"4" =>h"10", h"DBCB";h"5" =>h"20", h"DBCB";h"6" =>h"40", h"DBCB";h"7" =>h"80", h"C3DB";end table;end if;end;寄存器文本:SUBDESIGN register(clk,load,d[7..0] :input;q[7..0] :OUTPUT;)VARIABLEff[7..0] :DFFE;BEGINff[].clk=clk;ff[].ena=load;ff[].d=d[];q[]=ff[].q;end;七、试验中遇到的问题1、设计八位密码的时候,需要将八位的密码输进判断器,起初采取的不是寄存器的手段,而是自己定义了一个使能开关,当微动开关高电平就允许密码通过使能开关到达a[7..0]或者b[7..0],但是实验发现这样密码并不能被储存起来,后来想明白应该是由于并没有变量储存的机制,所以要想将变量储存必须有寄存器才行,根据教材定义寄存器后,该问题得到解决。

电子密码锁实习报告

电子密码锁实习报告

实习报告:电子密码锁设计与实现一、实习背景及目的随着科技的不断发展,电子密码锁作为一种新型的安全防护设备,逐渐应用于日常生活和工作中。

本次实习旨在通过设计和实现一个基于单片机的电子密码锁,掌握电子密码锁的工作原理,提升自己的实际动手能力和创新能力。

二、实习内容1. 电子密码锁的总体设计本次实习设计的电子密码锁主要包括以下几个部分:4x4矩阵键盘、单片机、LCD显示模块、掉电存储模块、报警机构和开锁机构。

其中,4x4矩阵键盘用于输入密码,单片机负责密码的存储、比较和处理,LCD显示模块用于显示密码输入状态和锁的开关状态,掉电存储模块用于保存密码信息,报警机构在密码输入错误时发出报警,开锁机构在密码输入正确时解锁。

2. 硬件设计(1)4x4矩阵键盘:采用行列矩阵式布局,减小了键盘占用的空间,提高了可靠性。

(2)单片机:选用51系列单片机,具备较强的逻辑处理能力和稳定性。

(3)LCD显示模块:采用液晶显示屏,清晰显示密码输入状态和锁的开关状态。

(4)掉电存储模块:采用EEPROM芯片,用于保存密码信息,确保数据不丢失。

(5)报警机构:采用蜂鸣器,声音响亮,提醒用户密码输入错误。

(6)开锁机构:采用继电器,实现电控锁的开关。

3. 软件设计(1)密码输入:用户通过4x4矩阵键盘输入6位密码,密码输入过程中,LCD显示模块实时显示输入的密码。

(2)密码比较:单片机对输入的密码进行处理,与预设的密码进行比较。

(3)密码存储:将正确的密码存储到EEPROM芯片中,确保断电后密码信息不丢失。

(4)报警功能:当密码输入错误达到一定次数时,触发报警。

(5)开锁功能:当输入的密码正确时,通过继电器控制开锁机构解锁。

三、实习心得通过本次实习,我深入了解了电子密码锁的工作原理和设计方法,掌握了单片机、矩阵键盘、LCD显示模块等硬件组件的使用,以及C语言编程技巧。

在实习过程中,我学会了如何根据需求进行合理的模块划分,如何通过程序实现密码的存储、比较和处理,以及如何调试硬件电路。

电子密码锁设计报告

电子密码锁设计报告

电子密码锁实验报告一,实验目的1. 学习按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上8个LED数码管,led发光二级管,蜂鸣器设计一电子密码锁。

二,实验要求1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码,能够掉电保存。

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

4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图。

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

输错的密码可以用退格键删除,当输入的密码超出设置的位数时,数据溢出,清零。

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

当输入正确的密码,按enter键(每一次密码匹配都要按),本程序时间P1口全部打开,在实际中可以将P1口或是其他IO口接一个电位器,然后打开锁。

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

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

电子密码锁实训报告心得

电子密码锁实训报告心得

一、前言随着科技的发展,人们对安全的重视程度日益提高,电子密码锁作为一种高科技产品,广泛应用于家庭、企业、银行等领域。

为了提高自己的实践能力,我参加了电子密码锁实训课程,通过本次实训,我对电子密码锁的设计与实现有了更深入的了解,以下是我对本次实训的心得体会。

二、实训内容与过程1. 实训内容本次实训主要包括以下几个方面:(1)电子密码锁原理及设计方法;(2)电子密码锁硬件电路设计;(3)电子密码锁软件编程;(4)电子密码锁仿真与调试。

2. 实训过程(1)理论学习:通过查阅相关资料,了解电子密码锁的基本原理、设计方法以及常见硬件电路。

(2)硬件电路设计:根据实训要求,设计电子密码锁的硬件电路,包括键盘输入、密码存储、显示、报警等模块。

(3)软件编程:根据硬件电路设计,编写电子密码锁的软件程序,实现密码输入、密码存储、密码比较、报警等功能。

(4)仿真与调试:利用Proteus软件对电子密码锁进行仿真,观察电路运行状态,根据仿真结果调整电路参数,直至满足设计要求。

三、实训心得体会1. 基本原理与设计方法通过本次实训,我对电子密码锁的基本原理有了更深入的了解。

电子密码锁主要由以下几个部分组成:(1)密码输入模块:用于输入密码,一般采用键盘输入方式;(2)密码存储模块:用于存储密码,一般采用EEPROM或Flash存储器;(3)密码比较模块:用于比较输入密码与存储密码是否一致;(4)显示模块:用于显示密码输入情况、锁状态等信息;(5)报警模块:用于在密码输入错误时发出报警信号。

在设计电子密码锁时,需要考虑以下几个因素:(1)安全性:密码存储方式要保密,防止他人非法获取;(2)可靠性:电路设计要稳定,防止因电路故障导致密码丢失或误操作;(3)易用性:操作简单,便于用户使用;(4)成本:尽量降低成本,提高产品竞争力。

2. 硬件电路设计在硬件电路设计过程中,我学习了如何选择合适的元器件,如何设计电路板,以及如何布线。

电子密码锁【精选文档】

电子密码锁【精选文档】

电子密码锁实验报告一、实验目的。

1.了解电子密码锁的工作方式,制定设计方案。

2.利用ISE软件进行可编程逻辑器件设计,完成逻辑仿真功能。

3.使用编译器将设计实现,下载到BASYS2实验板上进行调试和验证所设计的四位二进制数的运算.二、实验器材.1.Pentium—Ⅲ计算机一台;2.BASYS2 实验板一只;三、实验方案。

1.基本功能。

利用开关进行密码输入,并利用一个微动开关作为触发判断,密码正确则显示RRRR,错误则显示FFFF。

2.清零功能。

利用一个微动开关,当微动开关按下则预设密码和验证密码都为0,可以重新设定密码。

3.利用开关进行十进制密码输入。

本密码锁使用sw[3:0]进行密码输入,利用开关表示出十进制数的二进制形式,利用两个微动开关分别作为预设密码与验证密码的确认键,按下确认键则密码输入。

4。

数码管显示本密码锁可以动态显示输入的密码,并且当每一位密码输入时,原密码自动左移一位,未输入密码时数码管显示零。

四、实验原理图。

五、实验模块说明及部分代码。

module checker(s1,c1,c2,c3,an,a_to_go,clk,clr);input [3:0]s1;input c1,c2,c3;output reg[3:0]an;output [6:0]a_to_go;input clr;input clk;reg [16:0] clk_cnt;reg [3:0]num_ge1;reg [3:0]num_shi1;reg [3:0]num_bai1;reg [3:0]num_qian1;reg [3:0]num_ge2;reg [3:0]num_shi2;reg [3:0]num_bai2;reg [3:0]num_qian2;reg [3:0]flag;reg [3:0]choose=0;(* KEEP =”TRUE" *)reg [1:0]panduan;always @(posedge clk)begin //分频clk_cnt=clk_cnt+1;if(clk_cnt[16])clk_cnt=0;endalways @(*)begin //数码管是能循环case(clk_cnt[14:13])2'b00:begin an[3]=1;an[2]=1;an[1]=1;an[0]=0;end2'b01:begin an[3]=1;an[2]=1;an[1]=0;an[0]=1;end2’b10:begin an[3]=1;an[2]=0;an[1]=1;an[0]=1;end2’b11:begin an[3]=0;an[2]=1;an[1]=1;an[0]=1;end default:begin an[3]=1;an[2]=1;an[1]=1;an[0]=1;end endcaseendalways @(posedge c2 or posedge clr)begin //输入设定密码if(clr)beginnum_ge1=0;num_shi1=0;num_bai1=0;num_qian1=0;endelsebeginnum_qian1=num_bai1;num_bai1=num_shi1;num_shi1=num_ge1;num_ge1=s1[3]*8+s1[2]*4+s1[1]*2+s1[0];endendalways @(posedge c3 or posedge clr)begin //输入测试密码if(clr)beginnum_ge2=0;num_shi2=0;num_bai2=0;num_qian2=0;endelsebeginnum_qian2=num_bai2;num_bai2=num_shi2;num_shi2=num_ge2;num_ge2=s1[3]*8+s1[2]*4+s1[1]*2+s1[0];endendalways @(posedge c2 or posedge c3 or posedge c1)begin //显示密码还是原码if(c2)beginchoose=0;endelseif(c3)beginchoose=1;endelsebeginchoose=2;endendalways @(*)begin //显示case(choose)0:case(clk_cnt[14:13])2’b00:begin flag=num_ge1;end2'b01:begin flag=num_shi1;end2’b10:begin flag=num_bai1;end2’b11:begin flag=num_qian1;enddefault begin flag=0;endendcase1:case(clk_cnt[14:13])2'b00:begin flag=num_ge2;end2’b01:begin flag=num_shi2;end2’b10:begin flag=num_bai2;end2’b11:begin flag=num_qian2;enddefault begin flag=0;endendcase2:if(panduan==1)begin flag=4'ha;endelseif(panduan==0)begin flag=4’hf;endelsebegin flag=0;endendcaseendalways @(posedge c1 or posedge clr)begin //判断if(clr)beginpanduan=2;endelseif(num_ge1==num_ge2)if(num_shi1==num_shi2)if(num_bai1==num_bai2)if(num_qian1==num_qian2)beginpanduan=1;endelse begin panduan=0;endelse begin panduan=0;endelse begin panduan=0;endelse begin panduan=0;endendset a1(.flag(flag),。

密码报警锁实验报告(3篇)

密码报警锁实验报告(3篇)

第1篇一、实验目的1. 了解密码报警锁的基本原理和设计方法。

2. 掌握密码报警锁的硬件电路设计和软件编程。

3. 通过实验,验证密码报警锁的功能和性能。

二、实验原理密码报警锁是一种结合了密码识别和报警功能的电子锁。

其基本原理如下:1. 用户输入密码:当用户需要开锁时,通过键盘输入预设的密码。

2. 密码识别:系统对输入的密码进行识别,判断是否与预设密码一致。

3. 开锁:若密码正确,则通过继电器控制锁具开启;若密码错误,则系统发出报警信号。

4. 报警:当密码连续输入错误达到预设次数时,系统发出声光报警信号。

三、实验器材1. 实验箱:包含AT89C51单片机、键盘、继电器、蜂鸣器、LED灯、电源等。

2. 仿真软件:Proteus。

四、实验步骤1. 硬件电路设计(1)根据实验要求,设计密码报警锁的硬件电路图。

(2)使用Proteus软件进行电路仿真,验证电路的正确性。

2. 软件编程(1)编写密码报警锁的软件程序,实现密码识别、开锁、报警等功能。

(2)使用Proteus软件进行程序仿真,验证程序的正确性。

3. 硬件调试(1)将设计好的电路焊接成实体电路。

(2)将编写好的程序烧录到单片机中。

(3)进行硬件调试,验证密码报警锁的功能和性能。

4. 功能测试(1)输入正确密码,验证开锁功能。

(2)输入错误密码,验证报警功能。

五、实验结果与分析1. 硬件电路设计经过Proteus仿真,电路设计符合预期,能够实现密码报警锁的基本功能。

2. 软件编程经过Proteus仿真,软件程序运行正常,能够实现密码识别、开锁、报警等功能。

3. 硬件调试经过硬件调试,密码报警锁能够实现预设功能,性能稳定。

4. 功能测试(1)输入正确密码,锁具开启,验证开锁功能。

(2)输入错误密码,系统发出报警信号,验证报警功能。

六、实验总结本次实验成功设计并实现了密码报警锁。

通过实验,掌握了密码报警锁的基本原理、硬件电路设计和软件编程方法。

实验过程中,提高了动手能力和问题解决能力。

密码锁实验报告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在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

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

智能电子密码锁实训报告

智能电子密码锁实训报告

一、引言随着科技的发展,人们对生活品质和安全性的要求越来越高。

电子密码锁作为一种新型锁具,以其安全性高、操作方便、易于管理等特点,在家庭、企事业单位等领域得到了广泛应用。

本实训报告旨在通过设计和实现一款智能电子密码锁,提高学生的实际动手能力,培养学生的创新思维和团队合作精神。

二、实训目标1. 掌握电子密码锁的基本原理和设计方法。

2. 学会使用单片机、密码学、传感器等相关技术。

3. 提高学生的动手能力和团队协作能力。

4. 培养学生的创新思维和实际应用能力。

三、实训内容1. 硬件设计(1)主控芯片:选用AT89S51单片机作为主控芯片,负责控制整个系统的工作。

(2)密码存储:使用E2PROM AT24C02作为数据存储器,存储密码信息。

(3)输入设备:设计一个4×4键盘,用户通过键盘输入密码。

(4)输出设备:使用蜂鸣器作为报警提示,同时使用LED灯显示开锁状态。

(5)传感器:选用红外传感器作为防夹手功能,检测用户是否夹手。

2. 软件设计(1)密码输入与验证:设计密码输入和验证模块,当用户输入正确密码时,LED 灯亮起,蜂鸣器不响;当用户输入错误密码时,蜂鸣器响,提示用户密码错误。

(2)密码修改:设计密码修改模块,允许用户修改密码。

(3)报警提示:当用户连续3次输入错误密码时,系统自动进入报警状态,蜂鸣器持续响,提示用户。

(4)防夹手功能:当用户夹手时,红外传感器检测到障碍物,蜂鸣器响,提示用户松手。

3. 仿真与测试(1)使用Altium Designer19绘制原理图,完成电路设计。

(2)使用KEIL5软件编写控制程序,实现密码输入、验证、修改、报警提示等功能。

(3)使用protues8.7软件进行仿真,验证电路和程序的正确性。

(4)搭建实物电路,进行实际测试,确保系统稳定可靠。

四、实训成果1. 设计并实现了一款基于单片机的智能电子密码锁。

2. 系统具有密码输入、验证、修改、报警提示、防夹手等功能。

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

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

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

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

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

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

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

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

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

”报警声。

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

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

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

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

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

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

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

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

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

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

密码锁实验报告

密码锁实验报告

密码锁实验报告密码锁实验报告引言:密码锁是一种常见的安全设备,它通过输入正确的密码才能打开,保护了我们的财产和隐私。

为了深入了解密码锁的原理和安全性,我们进行了一项实验,以探索密码锁的工作原理、破解方法以及可能存在的安全隐患。

实验目的:1.了解密码锁的工作原理;2.探索密码锁的安全性;3.尝试破解密码锁,分析其安全隐患。

实验材料和方法:1.密码锁:我们选择了市场上一种常见的电子密码锁作为实验对象;2.密码锁说明书:用于了解密码锁的操作方法和技术参数;3.计算机:用于记录实验过程和分析数据;4.密码破解工具:用于尝试破解密码锁。

实验过程:1.了解密码锁的工作原理:通过阅读密码锁说明书,我们了解到密码锁是通过输入正确的密码来解锁的。

密码锁内部有一个密码验证模块,当输入的密码与设定的密码一致时,密码锁会打开。

密码验证模块一般采用加密算法,确保密码的安全性。

2.探索密码锁的安全性:为了测试密码锁的安全性,我们分别设置了几组不同的密码,并尝试通过不同的方法破解密码锁。

首先,我们尝试了常见的暴力破解方法,即通过不断尝试所有可能的密码组合来解锁密码锁。

然而,由于密码锁的密码长度和复杂度限制,我们发现暴力破解几乎不可能成功。

接着,我们尝试了一些密码破解工具,如字典攻击和蛮力破解,但同样没有取得成功。

3.分析密码锁的安全隐患:尽管我们没有成功破解密码锁,但我们发现一些可能存在的安全隐患。

首先,密码锁的密码验证模块可能存在漏洞,如密码验证算法的不安全性或密码存储的不安全性。

其次,密码锁的物理结构可能存在弱点,如易受到撬锁或钥匙复制的攻击。

这些安全隐患可能导致密码锁的被破解或绕过,从而威胁到我们的财产和隐私安全。

结论:通过本次实验,我们对密码锁的工作原理和安全性有了更深入的了解。

密码锁作为一种常见的安全设备,虽然在一定程度上保护了我们的财产和隐私,但仍然存在一些安全隐患。

为了提高密码锁的安全性,我们建议密码锁制造商加强密码验证算法的安全性、改进密码存储方式,并加强物理结构的防护措施。

数电实验—密码锁报告

数电实验—密码锁报告

电子密码锁实验报告姜岳松一、实验目的1.了解电子密码锁的原理,学会用硬件描述语言来建立电子密码锁的模块。

2.利用该软件进行可编程逻辑器件设计,完成电子密码锁的逻辑仿真功能。

3.使用编译器将设计实现,下载到JDEE—10实验箱上进行调试和验证所设计的电子密码锁的功能。

二、实验器材1.Pentium—Ⅲ计算机一台;2.JDEE—10实验箱一只;三、实验要求设计一个电子密码锁,实现以下的功能:用8个拨码开关分别代表预设的密码和输入待验证的密码。

一个微动开关做为触发判断。

判断结果通过点阵和蜂鸣器表示。

正确的话,所有点阵的绿色灯点亮,同时蜂鸣发出“di”声。

否则,点阵显示红色,同时蜂鸣“do”音。

四、实验方案及设计过程1.第一部是实验电子密码锁的基本功能,该程序的主体是一个密码判断程序:首先是将输入的预设的密码和待验证密码用数组储存起来进行比较,比较结果通过IF语句,相同则触动绿色点阵和蜂鸣器的一个频率,不同则触动红色点阵和蜂鸣器的另一个频率2.开始丰富附肢程序:两种不同的响声需要两个计数器来产生不同的频率;要有一个上升沿保证颜色显示程序和密码判断程序以一个高频率运行,需要一个计数器;一个密码验证开关,由微动开关实现,在密码验证开关触动后能够保持一个高电位,这样则需要一个由D触发器构成的锁存器来锁定高电平。

3.点阵的显示:点阵的显示控制,由于显示OK的原代码之前已经练习过,然后设计好NO的字符,可以直接完成拓展之一。

此部分不需要详述。

五、拓展功能设计拓展主要是为了实现八位密码,这样所有的拨码开关都要用上,所以还需要两个微动开关来确定密码设定和输入。

同时,微动开关启动后,能够将拨码开关的密码储存到数组A[7..0]和B[7..0]中,待判断开关启动后调用,所以要用寄存器储存起来,所以声明一个串进串出的寄存器。

同时对主程序的判断器的输入变量进行修改。

六、顶层文件和源程序文本文件顶层文件文本:SUBDESIGN ECLOCK ( a[7..0],b[7..0]:input;key: input;freq1,freq2: input;red: output;green: output;spk: output;)begindefaultsred=gnd; green=gnd;spk=gnd;end defaults;if key thenif a[]==b[] then red=vcc;spk=freq1;else green=vcc;spk=freq2;end if;end if;end;点阵显示文本:subdesign leddiaplay( green,red: input;clk[2..0]: input;row[8..1],colred[16..1],colgreen[16..1]: output; )begindefaultscolred[]=h"ffff";colgreen[]=h"ffff";end defaults;if green thentableclk[2..0]=>row[8..1],colgreen[16..1];H"0" =>H"1", H"DBC3"; %1101 1011 1100 0011% H"1" =>H"2", H"EBDB";H"2" =>H"4", H"EBDB";H"3" =>H"8", H"F3DB";H"4" =>H"10", H"F3DB";H"5" =>H"20", H"EBDB";H"6" =>H"40", H"EBDB";H"7" =>H"80", H"DBC3";end table;end if;if red thentableclk[2..0]=>row[8..1],colred[16..1];h"0" =>h"1", h"C3DB";h"1" =>h"2", h"DBD3";h"2" =>h"4", h"DBD3";h"3" =>h"8", h"DBC3";h"4" =>h"10", h"DBCB";h"5" =>h"20", h"DBCB";h"6" =>h"40", h"DBCB";h"7" =>h"80", h"C3DB";end table;end if;end;寄存器文本:SUBDESIGN register(clk,load,d[7..0] :input;q[7..0] :OUTPUT;)VARIABLEff[7..0] :DFFE;BEGINff[].clk=clk;ff[].ena=load;ff[].d=d[];q[]=ff[].q;end;七、试验中遇到的问题1、设计八位密码的时候,需要将八位的密码输进判断器,起初采取的不是寄存器的手段,而是自己定义了一个使能开关,当微动开关高电平就允许密码通过使能开关到达a[7..0]或者b[7..0],但是实验发现这样密码并不能被储存起来,后来想明白应该是由于并没有变量储存的机制,所以要想将变量储存必须有寄存器才行,根据教材定义寄存器后,该问题得到解决。

数字密码锁的实训报告

数字密码锁的实训报告

一、项目背景随着科技的不断发展,人们对安全性的要求越来越高。

传统的机械锁由于其构造简单,容易被撬,安全性较差。

为了提高锁的安全性,电子密码锁应运而生。

电子密码锁通过数字密码技术,实现了高安全性的锁具,广泛应用于家庭、企事业单位、银行等场所。

本实训项目旨在通过设计、制作和调试数字密码锁,了解电子密码锁的工作原理,提高学生的实践能力和创新能力。

二、实训目的1. 熟悉电子密码锁的工作原理和设计方法;2. 掌握数字电路、单片机等电子技术的基本知识和应用;3. 培养学生的实践能力和创新能力;4. 提高学生对电子产品的安全性和可靠性的认识。

三、实训内容1. 硬件设计(1)密码键盘设计:设计一个4x4的键盘矩阵,实现10个有效密码按键和一个确定键;(2)单片机设计:选择STC51单片机作为主控芯片,实现密码的存储、比较和输出控制;(3)显示模块设计:选用LCD液晶显示屏,显示密码输入状态、解锁成功或失败等信息;(4)驱动电路设计:设计驱动电路,实现对LCD显示屏、蜂鸣器等外围设备的控制。

2. 软件设计(1)密码输入程序:实现用户输入密码,并对输入的密码进行校验;(2)密码存储程序:将用户设置的密码存储在单片机的EEPROM中;(3)解锁控制程序:当输入密码正确时,控制继电器动作,打开锁具;当输入密码错误时,蜂鸣器发出报警声;(4)LCD显示程序:显示密码输入状态、解锁成功或失败等信息。

3. 调试与测试(1)硬件调试:连接电路,检查电路连接是否正确,排除硬件故障;(2)软件调试:编写程序,进行编译、下载,观察程序运行状态,调试程序错误;(3)整体调试:将硬件和软件结合起来,进行整体调试,确保数字密码锁功能正常。

四、实训结果与分析1. 硬件设计结果(1)密码键盘设计:完成4x4键盘矩阵,实现10个有效密码按键和一个确定键;(2)单片机设计:完成STC51单片机的编程,实现密码的存储、比较和输出控制;(3)显示模块设计:完成LCD液晶显示屏的编程,显示密码输入状态、解锁成功或失败等信息;(4)驱动电路设计:完成驱动电路的连接,实现对LCD显示屏、蜂鸣器等外围设备的控制。

电子实验三 密码锁实验

电子实验三 密码锁实验

实验三 密码锁实验一.实验任务设计一个保险箱的数字代码锁,该锁有规定的4位代码A,B,C,D 的输入端和一个开箱钥匙孔信号E 的输入端,密码自编(如1011)。

当用钥匙开箱时(E=1),如果输入代码符合该锁规定代码,则打开(X=1);如不符,电路将发出报警信号(Y=1)。

要求用最少的与非门实现电路。

(用7400,7420各一片)。

二.实验思路开锁条件 钥匙插入 E=1密码正确 CD B A →X=1 密码错误 CD B A →Y=1如果钥匙未插入,即E=0→ABCD 无论什么状态都亮灯→Y=1三.逻辑状态表四.逻辑表达式及其化简X⋅⋅⋅=A=EBCDABECDEY=YX五.逻辑图六.实验所用芯片图七.电路连接图八.实验总结1、实验主要涉及我们所学的20章《门电路与组合逻辑电路》方面的内容,应用20.3 TTL与非门电路,两种芯片分别是74LS20(4输入2门)和74LS00(2输入4门)。

2、A、B、C、D四个输入端,应该是用7420芯片4输入2门,这里的密码设为了1011,所以A端与7420 1端相连,B端要先经过7400 1、2端并短接,从3端输入与7420 2端相连,C端与7420 4端相连,D端与7420 5端相连,最后,从7420 6端输出,经过7400 4、5端并短接,9、10端分别接8端和E,从8端输出,如果线路到这里结束,就表示密码输入错误,X=0,Y=1, 2灯亮,发出警报。

经过7400 12、13端并短接,从11端输出,则表示密码输入正确,X=1,Y=0,1灯亮,保险箱正确打开。

3.对于这个电路,设计的时候只用到了TTL与非门电路,以涉及得更广一些,对于保险箱,如果在密码错误时,能连上一个报警器,发出声响,也许会使实验更加有实际意义。

实验报告四位数电子密码锁

实验报告四位数电子密码锁

四位数电子密码锁一,实验目的1.学习查找相关资料,并对小型项目开发有一定的认识;2.掌握能进行模块化设计的能力;3.学会对各部分电路,进行讨论、说明与仿真验证,最后在整合起来。

二,硬件要求1、拨位开关。

2、FPGA主芯片:EP1K30QC208。

3、LED显示模块。

4、4*4键盘。

5、七段数码管三,实验原理通过对4×4键盘进行扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配。

两功能键:在开锁状态时,一个用于清除数字,一个用于激活电锁。

在上锁状态,一个用于清除,一个用于解除电锁。

四、实验内容及步骤1、编写4*4数字密码锁的VHDL代码。

2、用MaxPlusII对其进行编译仿真。

3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。

4、给芯片进行管脚绑定,在此进行编译。

5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。

6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。

五、程序代码及说明LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;LIBRARY altera; ----这是利用库编译成的去拌电路。

电子密码锁实习报告

电子密码锁实习报告

一、实习背景随着社会的发展,人们对安全性的要求越来越高。

传统的机械锁因其构造简单、易被撬开等问题,已无法满足现代生活的需求。

电子密码锁作为一种新型锁具,具有安全性高、操作方便等优点,逐渐成为人们生活中的重要组成部分。

为了提高自己的实际操作能力,我参加了电子密码锁的实习项目。

二、实习目的1. 了解电子密码锁的工作原理和设计方法。

2. 掌握电子密码锁的硬件电路和软件编程。

3. 提高自己的动手能力和团队协作能力。

三、实习内容1. 电子密码锁的硬件电路设计(1)选择合适的微控制器:本实习项目采用STM32微控制器作为核心处理单元,因其具有高性能、低功耗等特点。

(2)设计键盘输入电路:本电路采用4x4矩阵键盘,通过扫描键盘矩阵,实现密码输入。

(3)设计密码存储电路:采用EEPROM存储密码,具有断电保护功能。

(4)设计报警电路:当密码输入错误时,通过蜂鸣器发出报警信号。

(5)设计显示电路:采用LCD液晶显示屏,显示密码输入状态和错误次数。

2. 电子密码锁的软件编程(1)编写键盘扫描程序:通过扫描键盘矩阵,获取按键信息。

(2)编写密码存储程序:将输入的密码存储到EEPROM中。

(3)编写密码比对程序:将输入的密码与存储的密码进行比对,判断是否正确。

(4)编写显示程序:根据密码输入状态和错误次数,在LCD上显示相关信息。

(5)编写报警程序:当密码输入错误时,通过蜂鸣器发出报警信号。

3. 实验验证(1)搭建实验平台:将设计的硬件电路和软件程序进行集成,搭建实验平台。

(2)测试功能:对电子密码锁的各项功能进行测试,包括密码输入、密码存储、密码比对、报警、显示等。

(3)分析测试结果:根据测试结果,对电子密码锁的性能进行评估。

四、实习心得1. 通过本次实习,我对电子密码锁的工作原理和设计方法有了更深入的了解。

2. 在硬件电路设计过程中,我学会了如何选择合适的元器件,如何进行电路布局和布线。

3. 在软件编程过程中,我掌握了C语言编程技巧,提高了自己的编程能力。

电子密码锁实验报告

电子密码锁实验报告

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

2、设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实现设置密码,密码锁的功能二,实验要求基本要求:1:用44矩阵键盘组成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 设计条件
1.3.1 电源条件:稳压电源提供+5V 电压。
1.3.2 可供选择的元器件如表 1-1 所示
型号
名称及功能
数量
74374
八 D 触发器
1片
7474
双 D 触发器
2片
28C64B
EEPROM 存贮器
1片
7485
4 位比较器
1片
74161
4 位二进制计数器
2片
74164
8 位移位寄存器
3.6 整机电路图··························································· 12
3.7 元件清单····························································· 13
1
第四章、电路测试
12
从图中看出,在 D 触发输出后,毛刺被有效去除了。
3.6 整机电路图
图 3-5-1 消抖效果图
13
3.7 元件清单 本设计除了老师建议的一些芯片,我还使用了少量其他数字芯片,完成了要求外的一些
指标,使用的芯片如下: 表 3-7 所用元件清单
型号
名称及功能
数量
74374
八 D 触发器
1
2
第一章、系统结构与技术指标
1.1 系统功能结构 密码锁:用数字键方式输入开锁密码,输入密码时开锁;如果输入密码有误或者输入时
间过长,则发出警报。 密码锁的系统结构框图如下图 1-1 所示,其中数字键盘用于输入密码,密码锁用于判
断密码的正误,也可用于修改密码。开锁绿亮表示输入密码正确并开锁,报警红亮表示密码
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子密码锁实验报告一,实验目的1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。

2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。

3.学会自己独立分析问题、解决问题。

4学习定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

5.根据设计任务及要求利用实验平台上单片机及其外围元器件,设计符合功能的电子密码锁。

二,实验要求设计要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码,能够掉电保存。

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

三,实验基本原理1.键盘接口必须具有去抖动、按键识别基本功能。

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。

抖动的持续时间与键的质量相关,一般为5—20mm。

所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。

去抖问题可通过软件延时或硬件电路解决。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。

常用的方法有行扫描法和线反转法两种。

行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。

线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

2.利用键盘扫描原理分别设4×4矩阵键盘组成0-9数字键及确认键和删除键,通过0—9数字键设定8位密码和删除键删除密码,利用存储器的永久存储特性将设定的密码存于存储器中,再次重启程序时,能从存储器中读取出来,从而实现掉电保存。

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

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

Led发光二级管低电平发亮,高电平熄灭的特性实现led提示功能。

利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,从而实现led亮1秒或3秒。

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

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

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

程序可分为按键程序、数码管显示程序、发光二级管程序,存储器程序,密码设定程序、密码删除程序、定时器程序,延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

这是前期准备工作。

第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。

第三部分是软件部分:先学习理解C语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。

第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。

第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。

第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。

最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!五,实验要求实现A.电路设计1. 整体设计此次设计主要是应用单片机来设计电子密码锁,硬件部分主要分以下电路模块:显示电路用5个共阴数码管显示8和发光二级管的发亮提示,存储器的存储模块,单片机采用AT89S52系列,这种单片机应用简单,适合电子钟设计。

电路的总体设计框架如下:2. 分块设计模块电路主要分为:输入部分、输出部分、复位和晶振电路。

输入模块:键盘输入键盘接入单片机P3接口,输出模块:数码管输出AT89S52复位模块AT89S52晶振模块各模块拼接,总的模块图如下:B.程序设计B.1 程序总体设计本实验用C 程序完成.流程图如下:输入密码 密码识别 错误红灯亮 绿灯亮1秒 正确 禁止3秒图1总设计框图B.2 程序主要模块主程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned char//uchar code a[]={0x00,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,};uchar code a[]={0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x3 9,0x5e,0x79,0x71};uchar code b[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code c[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x07,0x07};uinttemp,num,x,y,z,aa,bb=0,i=0,j=0,k=0,n=0,m=0,cc=0,dd=12345,t,kk;void delay(uint z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;//P0=0x00;while(1){if(kk==0){P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break; }if(num==1){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==2){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==3){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==4){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}while(temp!=0xf0) { temp=P3;temp=temp&0xf0;}}}P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break; }if(num==5){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==6){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==7){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==8){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}}}P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=0;break;}if(num==9){bb++;cc++;if(bb==1)i=num;else if(bb==2) j=num;else if(bb==3) k=num;else if(bb==4) n=num;else if(bb==5) m=num;}if(num==10){if(aa==dd){P1=0xbf;t=0;}else if(aa!=dd){ P1=0xfe;kk=1;t=0;}}if(num==11){i=j=k=n=m=0;cc=0;}if(num==0){bb++;cc++;if(bb==1)i=num;else if(bb==2) j=num-12;else if(bb==3) k=num;else if(bb==4) n=num;else if(bb==5)m=num;}while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}P0=a[num-1];}}/*P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break; }if(num==13){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==14){bb++;cc++;if(bb==1)i=num;else if(bb==2)j=num;else if(bb==3)k=num;else if(bb==4)n=num;else if(bb==5)m=num;}if(num==15){if(aa==dd){P1=0xbf;t=0;}else if(aa!=dd){P1=0xfe;kk=1;t=0;}while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}}}}*/}aa=i*10000+j*1000+k*100+n*10+m; if(cc>=5)cc=5;P2=c[cc];P0=0x7f;/*P0=0x00;P2=0xef;P0=a[aa%10];delay(5);P0=0x00;P2=0xf7;P0=a[aa%10000%1000%100/10]; delay(5);P0=0x00;P2=0xfb;P0=a[aa%10000%1000/100]; delay(5);P0=0x00;P2=0xfd;P0=a[aa%10000/1000];delay(5);P0=0x00;P2=0xfe;P0=a[aa/10000];delay(5);*/}}void exter0() interrupt 1 {TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(kk==1){P3=0xf0;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;t=0;}while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}}}if(P1==0xbf){if(t==20)P1=0xff;}else if(kk==1){if(t==60){t=0;P1=0xff;kk=0;}}}C. 程序调试及仿真本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEX文件。

相关文档
最新文档