单片机电子密码锁加密模块的研究与设计

2012-07-26 04:57潘雪峰李腊元杨威棣
自动化仪表 2012年5期
关键词:键值密码锁中断

潘雪峰 李腊元,2 杨威棣

(武汉生物工程学院计算机与信息工程系1,湖北 武汉 430415;武汉理工大学计算机科学与技术学院2,湖北 武汉 430063)

0 引言

安全问题是现代社会各界普遍关注的焦点之一。目前,常见的安全产品有指纹识别系统、IC卡辨识系统以及红外防盗系统等。这些系统一般用于保密要求较高或供个人使用的保险箱(或保险柜)。虽然产品的安全性高,但由于其生产成本高,携带、安装及使用不方便等缺点,在一定程度上限制了这类产品的普及和推广[1-2]。针对这些缺点,基于单片机的电子密码锁使用8051单片机来实现多功能密码模块。这种电路设计具有加密更快速、可靠性更高、成本更低的特点,特别适用于家庭、办公室、学生宿舍及宾馆等场所,具有很强的社会推广价值。

传统电子密码锁的基本功能要求有:①一定的密码位数与取值范围,密码位数决定锁体健壮程度;②用户自行设定和修改密码;③按键时有相应提示,若输入的开锁密码不正确,则需另行处理;④开锁密码错误次数超过限制则报警;⑤键入正确开锁密码后开锁;⑥硬件成本低廉,软件简洁可靠,易于批量生产。

智能电子锁的功能扩展要求有:①功能多样化;②计算机及网络通信扩展智能电子锁的功能;③与智能现场仪器和中央监控系统连接;④模块高度集成,结构简单可靠,操作方便;⑤人机界面智能化、友善化;⑥智能识别系统,扩展信号提取技术[3-5]。

本设计基于单片机实现传统电子密码锁基本功能,并引入嵌入式技术,减少了电子密码锁外围元器件,硬件电路简单;以C语言进行程序设计,简化了源程序结构及代码,降低了ROM空间的占用。

1 方案分析与设计

1.1 芯片的选择

中央处理单元采用Intel 8051,其具有4个8位准双向I/O口,只需1个晶振和2个电容即可工作。其结构简单、运行可靠[6-8]。Intel 8051内置4 kB的程序ROM以及128 B的数据RAM[9-10]。为了降低成本,没有外接存储器,而是直接使用片内的存储空间。由于键盘输入密码采用的是中断方式,因而采用74LS21四输入与非门作为单片机的中断源。

1.2 功能设计

用户通过矩阵式键盘中断输入密码,中断后系统调用密码验证函数。如果密码输入正确,单片机输出开锁信号开锁。同时,实现键盘的中断控制还要为键盘的扩展功能留出CPU时间。当用户发现输入错误时,可以清除重新输入。此外,当密码输入后,可通过验证程序进行判断。如果密码错误,则启动出错提示。当密码错误次数达到一定次数,系统将锁定键盘,一段时间内禁止输入。

1.3 结构设计

1.3.1 单片机引脚的分配

在进行数据交换时,基于单片机的电子密码锁采用的是 Intel 8051 的4 个8 位 I/O 口,其中 P2.0~ P2.4作为扫描的输入输出口使用,而P3.2则作为输出口使用。

1.3.2 存储分配

用户通过键盘进行输入,需要为键盘分配一个用来存储键入数据的缓冲区。由于密码位数一般在10位以内,因此,分配10 B给该缓冲区。

在进行密码验证过程中,需要使用密码表来存放密码,因此,分配一个256 B的密码表并存放在code区,同时,code区用来存代码。

1.3.3 电路设计

Intel 8051通过8根数据线直接与键盘连接,其中4根作为行扫描线,扫描输入高电平;另外4根与8051直接连接的是列扫描线,列扫描输出线置低电平。当键盘按下时,将在中断输入产生一个上升沿的跳变,触发中断进入中断处理程序。该信号通过四输入与门发送给8051。8051电子密码锁原理如图1所示。

图1 8051电子密码锁原理图Fig.1 Principle schematic of 8051 electronic cryptogram lock

2 系统程序模块设计

目前,国内使用较多的是Hi-Tech的Hi-Tech PICC编译器,且目前的单片机仿真器也支持Hi-Tech PICC编译格式。因此,本文采用Hi-Tech C编译器的格式编写程序模块。

程序模块包括键盘接收模块、加密模块和验证密码模块这3部分。在功能模块之前,还要加上密码格式定义的内容。该内容用于对密码的长度和格式类型进行定义。密码长度定义为10,类型定义为unsigned char。

2.1 键盘接收模块

键盘接收模块由两个程序组成,分别是中断例程和读取键盘键值程序。中断例程是一个中断服务程序。该程序可记录下按键次数;读取键盘程序则是将输入的键值记录下来。

2.1.1 中断例程

中断例程的主要功能是当按下键盘任意一按键时产生中断,此时执行中断程序aa(void)。该程序首先将外部中断位清0,然后调用读取键值的程序readbyte(),记录下按键次数,并判断相应位数是否为10,最后将外部中断位置1。程序代码如下。

2.1.2 读取键盘键值程序

读取键盘键值程序的主要功能是根据单片机P2口相应引脚电平的变化情况,返回一个相应的键值。其程序代码如下。

2.2 加密模块代码

加密模块首先获取系统时间,然后借助系统时间产生随机数,通过循环初始化生成一个密码矩阵。接着,程序会打开一个文件,如果文件成功打开,则将矩阵写入该文件中;如果文件无法打开,则返回。在将矩阵写入文件时,先写入数组头;然后格式化数组串,将矩阵分行写入文件,每行尾部加上换行,写入最后一个文件并加上数组结尾;加密模块最后给出关闭文件句柄,并将写好的文件关闭。其程序代码如下。

2.3 验证密码模块

在进行密码验证的过程中,主要是核对输入的信息和存储的信息是否一致,在此使用scanf_s()函数进行验证。如果信息一致,即给出密码验证成功的提示;如果不一致,则给出相应编号。其程序代码如下。

3 仿真测试

常用的电路仿真软件有Multisim、Protel、Proteus、Pspice这4种。由于Mulstisim在模拟器件和一些分离器件的仿真方面功能较强,因此,在电路仿真测试中选用的是 Multisim 11.0。

使用Multisim 11.0时,可以借助特殊功能寄存器窗口对寄存器进行监控,同时还可以借助IRAM窗口对变量进行跟踪。通过仿真测试,可观测到flag变量地址为20H,值为0H。由于密码长度被定义为10,因此用户键盘的缓冲区的地址范围为10 B,地址是从21H到2AH。在未按下任何按键时,该缓冲区的值均为0。

在键盘上按下预定的10位密码后,中断程序即进行响应,并执行读键程序和判断程序;验证正确后,在开锁控制端给出高电平。为了使试验更直观,在开锁控制端接一个灯泡,根据灯泡是否发光来判断试验是否成功。

在仿真测试的过程中,当按键符合预设时,灯泡变亮,同时缓存区的数据显示为11H,并将缓存区指针复位,测试结果与设计相符。

在完成系统功能测试的同时,在密码输入过程中对密码验证模块进行了测试,使用6组不同的十六进制值来测试相应单元,测试值分别为 12h、34h、01h、bfh、21h和1dh。这6组不同的值,在仿真测试中均可以生成密码,并能够将验证密码模块中的提示“密码验证成功!”逐个显示。这就说明模块完成了编译运行工作[11-15]。

4 结束语

为降低密码锁的成本,设计了基于8051单片机的密码锁加密模块。由于该模块具有8位操作数,故能够十分方便地移植到8位的8051上并高速、正确运行。同时,该系统模块中的程序简短,不需额外的存储器来存放程序,为整个系统节省了成本。

[1]郑诗程,朱虹,武卫华.FPGA与AVR单片机的通讯与智能监控系统研究[J].自动化与仪表,2009,44(11):13-17.

[2]周功明.基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计[J].绵阳师范学院学报,2007(5):112-115.

[3]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,28(13):95-97.

[4]魏学海.基于MULTISIM10的单片机系统仿真研究[J].计算机仿真,2010,27(1):246-248.

[5]曹建国,王威,王丹.基于VHDL语言的电子密码锁的设计与实现[J].沈阳大学学报,2006,18(4):77-79.

[6]潘永雄.单片机控制程序加密策略探索与应用[J].计算机工程与设计,2010,31(11):2466-3469.

[7]刘振海.一种基于单片机和串行E2PROM的智能密码锁[J].微计算机信息,2007,23(35):133-134.

[8]杨亭.单片机C51程序功能设计教程与实验[M].北京:北京航空航天大学出版社,2004:99-109.

[9]王幸之,王雷,钟爱琴,等.单片机应用系统电磁干扰与抗干扰技术[M].北京:北京航空航天大学出版社,2006:88-99.

[10]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,1992:42-47.

[11]沈建华,杨艳琴.MSP430系列16位超低功耗单片机实践与系统设计[M].北京:清华大学出版社,2005:2-10.

[12]胡大可.MSP430系列单片机C语言程序设计与开发[M].北京:北京航空航天大学出版社,2003:2-5.

[13]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006:20-27.

[14]吴振宇,常玉保,冯林.基于FPGA和USB2.0的高速数据采集系统[J].仪器仪表学报,2006,27(z1):1-3.

[15]谢运祥,欧阳森.电力电子单片机控制技术[M].北京:机械工业出版社,2007.

猜你喜欢
键值密码锁中断
非请勿进 为注册表的重要键值上把“锁”
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Linux中断线程化分析及中断延时测试
跟踪导练(二)(5)
开启密码锁
一键直达 Windows 10注册表编辑高招
数字密码锁的逻辑实现
注册表值被删除导致文件夹选项成空白
“扫除”技巧之清除恶意程序