0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >智能家居 > 基于AT89S51单片机的便携防盗密码输入器设计方案

基于AT89S51单片机的便携防盗密码输入器设计方案

2018-05-25
类别:智能家居
eye 415
文章创建人 拍明


在信息化的今天,很多情况下都需要输入密码。由于输入方式和装置采用按键的限制,密码输入方式变为开放式,对密码的安全性构成威胁。此领域的专利虽然很多,但多是遮挡式和隐蔽式的,输入完整的密码依然会存在安全隐患。

基于AT89S51单片机的便携防盗密码输入器设计方案.png

一、背景/选题动机

在信息化时代的今天,很多情况下都要有密码的确认,即要输入密码,然后才能进入特定的“空间”,或执行某种“动作”。如学校、金融、零售、网络等需要输入密码的场所和行业。目前,采用密码的输入方式和装置,都是以键盘式(包括普通键盘、特殊键盘、小键盘等)为主,此种输入装置及其输入方法的缺陷是:由于是键盘按键式,其输入密码方式为开放式,也就是说,在使用者输入密码时,旁观者可通过其操作方式偷窥或推算到其密码,也可通过使用者所按按键的位置获悉其密码,从而在安全上构成威胁。即使旁观者无意想知道使用者的密码,比如:上下级、师生、同事、同学等,采用此种方法双方都会感到尴尬。此领域的专利有很多,但多数是遮挡式的或隐藏式的,但不管怎样都要在现场输入完整的密码,这样就存在安全隐患。

本设计是解决开放式密码输入装置在输入密码时容易被周围的人偷窥到所输入的密码信息而存在安全隐患的问题,提出一种新的密码输入系统。该系统即便在没有任何防护的情况下,人或摄像设备也无法得知所输入的密码,从而从根本上杜绝了密码被他人因窥视而被盗。

二、需求分析

2.1 功能要求

设计目的是解决开放式密码输入装置存在安全隐患的问题,提供一种密码输入方式与密码输入装置。使该装置即便在没有任何防护的情况下从根本上杜绝了密码被他人因窥视而被盗。

用户掌握开机密码才可开启PC机及进入用户工作页面,并可以自己通过该密码编辑软件修改密码,用数字键代表的字符串来取代固定的数字。可以将原来的简单数字密码,变为比较复杂的由大写字符、小写字符、数字、下划线等字符组成的密码,从而使密码的破解更为困难,这样可以一举两得。

2.2 性能要求

本设计的密码输入器在设计时还特别添加了保护措施,单片机上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,本密码输入器设有开机密码,只有输入正确的开机密码才能进行密码操作,而开机密码可以设定输入次数,一旦错误开机密码次数达到某一规定数值,密码输入器将自锁。

三、方案设计

3.1 系统功能实现原理

单片机通过USB接口与PC机相接,单片机上安装有应用软件,PC机上有密码编辑软件。PC机开机时要求输入开机密码,只有当开机密码输入正确时,才能开启PC机进入系统。当单片机与PC机连接后,PC机显示屏上出现页面:要求在密码输入装置中输入开机密码。若开机密码不正确,程序将提示继续输入开机密码,当开机密码达到限定的输入次数时,程序自锁。

若开机密码正确,则打开用户工作页面。这时,用户可以通过该密码编辑软件修改密码,自己编辑用数字键代表的字符串来取代固定的数字。该密码输入装置与常规键盘的本质区别在于:常规键盘的按键对应于唯一的固定键码,而该输入装置的按键所对应的是该装置中存储器的一个固定地址。而这一按键的映射地址中存储的数据是该按键所关联的作为密码的字符串。这个字符串由键码组成,因而当一个按键按下等同于连续按下多个按键,因而能用一个按键实现一串密码的输入。该装置按键与密码关联的实质是在存储器中按键对应的地址写入密码数据。该装置输入密码过程的实质是从存储器中按键对应地址读取密码数据,然后通过提供的接口将密码发送至需要密码输入的设备。

密码编辑保存后就可以直接存入系统。系统可以对该密码保留记忆,下次使用该系统时就可以直接按某一个或两个键来输入一串密码。

本设计的密码输入器在设计时还特别添加了保护措施,中央处理器上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,这就保证了密码的安全性,因此在现场输入的并非真正的密码,所以即便在有很多人围观的情况下也无法获取用户的真正密码,真正的实现了密码的安全保护作用。而且系统的本身也提供了一个开机密码,只有正确输入开机密码后才能进入系统,因此即使不小心丢失该产品,他人也无法轻易使用。

选用的开发板符合USB协议可以直接与PC机相连,在PC机上对单片机进行编程,设计可以在PC机上安装应用的密码编辑软件。数字键盘按键和确认按键可利用PC机的键盘输入,显示装置即为PC机的屏幕。只需要用单片机编程出相应的安装应用软件,即可达到预期目标。

此处以EEPROM作为存储器、USB接口作为通信的媒介的密码输入装置为例。当该密码输入装置插入需要密码输入的设备(此处以普通PC为例)时,该装置表现为一个标准HID键盘。该密码输入装置完全可以像普通键盘一样直接向PC发送键码数据,同时也可以使用与之配套的PC软件,通过USB接口向该装置发送新的密码数据并命令其修改EEPROM中按键对应地址的数据。

该密码输入装置所需要的两个主要步骤的详细说明如下:

1. 按键与密码的关联

PC软件先通过图形界面从用户处获悉该用户希望某个按键对应的密码,之后软件会将其转换成HID协议中键盘的字符编码,然后通过USB接口将编码后的密码以及该密码在EEPROM中的存储位置一同发送给密码输入装置,并通知其修改EEPROM的数据。该密码输入装置得到修改的命令以及相关数据后,就会在EEPROM的指定位置储存该密码,完成按键与密码的关联。

例如,用户希望为按键“2”设置密码“123456”。“123456”对应的键盘编码是“1d 1e 1f 20 21 22”,按键“2” 的存储地址被设置为“06”。PC软件会将这些数据以及写EEPROM的命令通过USB接口发送给该密码输入装置。该装置接收到数据后就立即会将“1d 1e 1f 20 21 22”写入EEPROM的地址“06”中,完成按键“2”与密码“123456”的关联。

2. 使用关联密码的按键输入过程

当用户通过按键输入密码时,密码输入装置会从EEPROM存储器中该按键对应地址读取与之关联的密码数据串,然后通过USB接口将该串数据逐次发送给PC。此时密码输入装置对PC表现为标准HID设备(即可看成是一个标准键盘),从USB接口发送来的密码会被系统自动填充至需要输入密码的位置,从而完成密码的输入。

本发明提供的密码输入器上的一个按键或两个键的组合表示一串密码,按下不同的按键或组合键,即可输出不同的密码,最后将密码通过输出接口传给密码接收方。比如通过USB口传给PC机、或带有USB口的自动存取款机、或带有USB口的超市收款机以及带有USB口的任何需要密码的系统。密码的编辑可通过密码编辑系统,在PC机上任意编辑自己所需要的密码(密码可以由大写字符、小写字符、数字和下划线等组成),然后通过USB口将编辑好的密码存储到密码输入器上,也可在密码输入器上编辑简单的数字密码。

3.2 硬件平台选用及资源配置

硬件选用AMTEL AVR大赛提供的EVK1100,EVK1100是一个基于AVR32 AT32UC3A单片机控制器的评估套件和开发系统。它配备一系列丰富的外设、内存。图2所示为开发板与PC机连接的示意图。

--支持AT32UC3A

--JTAG连接器、Nexus、USART、USB2.0接口、TWI接口、SPI

AVR32 AT32UC3A

高性能低功耗AVR32UC,32字节微控制器

——单循环RISC指令,包含DSP指令系统

——读改写指令和独立位控制

——运行速度1.49DMIPS/MHz

——存储保护系统

多层次数据总线

——高性能的数据传输,总线分离提高性能

——有15条存储器直接存取通道,改善外围设备交流速度

内部高速SRAM——64K字节

派生的外置存储器接口——SDRAM/SRAM兼容存储总线

中断控制器——自动运行低延迟中断服务和程序优化

系统功能

——时钟管理包括内部的阻容时钟和一个32KHz振荡器

——两个多功能振荡器和两个锁相环路允许CPU和USB频率分离

——监视时钟,实时时钟

USB

——USB2.0,符合OTG协议

——DMA(存储器直接存取通道)

——片上收发器包含上拉电阻

一个三通道16比特定时器/计数器

四个通用同步异步收发器

——支持SPI,红外,ISO 7816接口

——支持硬件信号交换,RS485接口和调试解调器

两个主从串行接口(SPI)

ATMEL的开发板满足USB的传输协议,而且满足串口的各种协议,可以直接将单片机和CPU进行通信和信息的传递,保障了设计的进行。

3.3系统软件架构

PC机开机时要求输入开机密码,只有当开机密码正确时,才可以打开PC机。PC机开机后,单片机与PC机相接时也需要输入开机密码才能在PC机上安装设计的应用软件。若开机密码不正确,程序将提示继续输入开机密码,当开机密码达到限定的输入次数时,程序自锁。当开机密码全部输入正确时,PC机上出现使用界面,用户可以通过该应用程序修改密码,自己编辑用数字键代表的字符串来取代固定的数字。密码编辑保存后就可以直接存入系统。系统可以对该密码保留记忆,下次使用该系统时就可以直接按某一个或两个键来输入一串密码。

本设计的密码输入器在设计时还特别添加了保护措施,中央处理器上的程序是加密而不可读的,存储模块内存储的密码是经过加密处理的,不是原始密码,这就保证了密码的安全性。

密码编辑软件即为设计中的应用软件,使其能在PC机上运行。选用的开发板符合USB协议,可以直接与PC机相连,在PC机上进行对单片机进行编程,达到设计软件的目的。数字键盘按键和确认按键可利用PC机的键盘输入,显示装置即为PC机的屏幕。只需要用单片机编程出应用软件,即可达到预期目标。

3.4 系统预计实现结果

设计一个通过USB口传给PC机、或带有USB口的自动存取款机、或带有USB口的超市收款机以及带有USB口的任何需要密码的系统。密码的编辑可通过密码编辑系统,在PC机上任意编辑自己所需要的密码(密码可以由大写字符、小写字符、数字和下划线等组成),然后通过USB口将编辑好的密码存储到密码输入器上,也可在密码输入器上编辑简单的数字密码。

1、从根本上解决传统密码输入所存在的安全隐患问题,保护密码,避免因为密码被盗而带来的巨大经济损失。

2、采用USB接口,与其他设备的连接很简单,可以很方便的进行扩展,可以自动扩展自ATM机,超市收款机,银行柜台等。

3、将原来的简单数字密码变为由大小写字符,下划线,数字等组成的密码,从而使密码的破解更为困难。

4、密码输入方式新颖,实现难度不大可以运用于任何带USB接口同时又需要密码输入的装置,具有很好的实用价值。

【AT89S51】

AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

主要特性

AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

8031CPU与MCS-51兼容

4K字节可编程FLASH存储器(寿命:1000写/擦循环)

全静态工作:0Hz-24KHz

三级程序存储器保密锁定

128*8位内部RAM

32条可编程I/O线

两个16位定时器/计数器

6个中断源

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

管脚说明编辑

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。





责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: AT89S51 单片机 RS485

相关资讯