密码输入键盘.docx
《密码输入键盘.docx》由会员分享,可在线阅读,更多相关《密码输入键盘.docx(25页珍藏版)》请在冰点文库上搜索。
密码输入键盘
密码小键盘软硬件设计
摘要:
本文提出的银行密码输入键盘的软硬件设计方案。
该方案分为按键与单片机AT89C51之间的信息互换和AT89C51与微机之间的串行通信。
其实现的功能主若是通过单片机来识别按键是不是按下,并把现在按下的按键依照必然规定转换为0到9之间的数字,或是“确信”、“取消”按钮,来实现密码输入功能。
按键与AT89C51之间的信息互换其实现方式8255A识别按键按下,并把当前按下的按钮通过ASSIC码方式转换成为数字按钮以便提供微机识别密码是不是正确。
密码输入完整按下确信键后,AT89C51与微机的之间进行串行通信,从而来实现密码小键盘的功能。
该方案软件部份是通过C语言程序编写。
并通过并用proteus软件进行演示仿真。
关键词:
密码小键盘,微机,按钮,串行通信,AT89C52
Abstract:
Inthispaper,thebankpasswordkeyboardhardwareandsoftwaredesignsolutions.TheprogramisdividedintokeyandexchangeofinformationbetweenAT89C51andAT89C51andtheserialcommunicationbetweenthecomputer.Itsmainfunctionistoachievesingle-chiptoidentifythebuttonispressed,andpressedthebuttonatthistimeaccordingtocertainprovisionsintoanumberbetween0and9,or"OK","Cancel"button,toachievethepasswordinputfunction.ButtonsandAT89C51exchangeofinformationbetweenitsimplementationAT89C51identifykeypress,andpressthebuttontothecurrentcodebyASSICconvertedintocomputeridentificationnumberbuttonsinordertoprovidethepasswordiscorrect.CompletepasswordafterpressingtheOKbutton,AT89C51andserialcommunicationsbetweenmicrocomputer.Inordertoachievethepasswordkeypadfunctions.TheprogramispartoftheClanguagesoftwareprogramming.Andthroughdemonstrationandsimulationsoftwarewithproteus!
Keywords:
Passwordkeypad,microcomputer,buttons,serialcommunication,AT89C52
1前言
随着社会的进步,密码已经成为一个普遍的话题,在愈来愈多的领域用到。
密码键盘是金融收银系统必不可少的运算机外部设备之一,普遍应用在通信、政府、交通、政府、工商、税务、超市等效劳行业,配合银行系统、POS机和治理系通中利用,主若是用来输入密码。
随着银行卡利用者的增多和刷卡消费的日趋盛行,密码键盘愈来愈多的取得人们的关注。
密码键盘种类划分依照:
液晶、语音、加密、触摸等来进行分类。
本次设计主若是以数字密码小键盘为主,设计比较简单有效,通过按键输入一组数字,再由单片机完成进行按键的扫描工作,通过转换成ASIC码输入到PC机中。
在金融行业的运算机系统中,密码键盘要紧用来进行口令密码认证,用户口令通过密码键盘输入运算机后与银行数据库内的用户口令比对,通事后才许诺对用户数据库进行存取款的操作。
口令密码的利用极大地爱惜了用户和银行的利益,取得了普遍推行,因此密码键盘[1]的应用也超级普遍。
初期的银行业务中,由于金融电子化程度较低,密码的校验工作是通过顾客将密码写在取款单上,由柜员来进行查对确认。
这种方式第一要求银行网点上的柜员是平安可信的,而其最不平安的地方就在于密码写在了取款单上,容易被他人看到而造成密码的泄漏[5]。
随着金融电子化程度的提高,终端进入了金融行业的业务操作,终端的辅口上能够联接一个串口设备如密码小键盘。
于是,密码小键盘开始用于银行业务中的密码校验。
Unix主机下发命令打开终端的辅口,用户就可在密码小键盘上输入密码到主机上和数据库中的密码进行查对。
这种方式大大提高了密码校验的工作效率,同时具有较好的平安性,密码上传到主机时回显到终端屏幕上的不是密码,而是*号,如此也幸免了柜台人员明白顾客的密码,造成没必要要的麻烦。
2整体方案设计
系统设计方案选择
本次设计要求设计一个简易密码小键盘软硬件系统,能够通过键盘输入一组密码,通过单片机的处置把按键信心转换为数字密码,在将其送入PC机,判定密码正确与否,若是不正确那么将原输入密码清空,可从头输入密码,直至输入正确密码。
并设置“确认”“取消”两个按钮。
通过查阅资料,现预备了两种方案来进行设计:
方案一:
利用可编程并行接口芯片8255A来实现人机信息互换,即按键直接与可编程并行接口8255A连接,按键信息直接转换为物理地址。
此方案硬件电路尽管比较简单,需要的元器件较少,可是需要计算每一个按钮的地址来进行编程操纵,所有此方案的程序比较麻烦,可行难度比较大。
方案二:
利用AT89C52单片机为核心,把按键信息转换为对应数字的的ASSIC码,在通过单片机与PC机之间的串行通信,实现将密码送入PC机,并进密码的校验。
那个方案电路简单,需要元器件较少,且密码校验时密码键盘与PC机通信时编程比较简单。
综上比较两种方案的优缺点,本次设计咱们选择方案二来进行简易密码输入键盘的设计。
键盘连接方式方案比较
方案一:
独立式键盘
本次设计总共有12个键位,假设采纳独立的键盘方式每一个按钮都通过一个单片机的I/O口来驱动,那么其占用单片机的硬件资源较多。
因此独立式键盘只适合按键较少的场合。
键盘是一组按键或开关的集合,键盘接口向运算机提供被按键的代码。
特点:
利用方便、结构复杂、本钱高。
方案二:
矩阵式键盘
咱们采纳4×3矩阵式键盘,键盘的行线X0~X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0~X3均呈高电平。
当键盘上某一键闭合时,该键所对应的行线与列线短路,现在该行线的电平将由被短路的列线电平所决定。
单片机对键盘的扫描能够采取程序操纵的随机方式,CPU空闲时才扫描键盘;也能够采取按时操纵方式,每隔一段时刻,CPU对键盘扫描一次;还能够采纳中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪个键处于闭合状态,并对键输入信息作相应处置。
此方案占用资源少,结构简单,本钱低。
综上两种方案,咱们选择方案二,矩阵式键盘来制作本次设计的键盘。
设计说明
本文设计要求是成立在单片机人机交互接口之“键盘接口”技术电路基础之上的,通过AT89C52单片机连接并操纵矩阵键盘,来扩展一个密码输入小键盘,而且能通过另外接键盘输入数字进行红绿灯校验,整个电路能够实现的功能确实是:
键盘包括数字键“0-9”和功能键“确认、取消”;程序设定初始密码,当输入的密码同初始密码相同时绿灯亮,当输入的密码错误时红灯亮。
设计思路
本文设计的思路也就能够够围绕题目要求和所学关于C51单片机的知识得出解决此题的大体方式,简明介绍如下:
通过C51单片机的P0口七根I/O接口线分成4×3行列形式外接12个键的矩阵式键盘电路,12个键的功能通过相应的程序进行操纵,最终实现有0-9等10个数字键和确认、取消等2个功能键;另外,设定一个四位数字的初始密码,同初始密码进行比较的进程即为:
从扩展的外接键盘输入数字直到按确认键后才使输入完毕输入的数据存入缓冲区、按取消即可清除之前输入的数字还能够从头输入数字直到按确以为止;输入的数据送入单片机,再由单片机通进程序同初始密码确认比较,若是比较正确那么单片机输出使绿灯亮,不然红灯亮。
本设计要完成的任务需要通过软、硬件设计来完成。
软件设计需要实现键盘键值的读取、密码判定程序和LED显示程序;硬件设计那么需要硬件实验平台上相应的硬件电路模块,包括键盘模块、LED发光二极管显示模块。
密码输入键盘原理框图如下图。
红绿灯
校正
4X3矩阵
键盘
AT89C51
单片机
PC机
图密码输入键盘原理框图
3密码输入键盘具体设计方式
核心芯片选择
本次设计咱们采纳51系列单片机中的AT89C52作为密码输入小键盘系统的核心,AT89C52是51系列的一个型号,它是生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采纳ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处置器和Flash,功能壮大的AT89C52单片机可为您提供许多较复杂系统操纵应用处合
AT89C52单片机简介
AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程按时计数器,2个全双工串行通信口,片上Flash许诺程序存储器在系统可编程,亦适于常规编程器,其引脚图如下图。
图AT89C52引脚图
单片机管脚说明:
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口同时为闪烁编程和编程校验接收一些操纵信号。
MAX232芯片简介
MAX232芯片是美信公司专门为电脑的标准串口设计的单电源电平转换芯片,利用+5v单电源供电如图
图引脚图
第一部份是电荷泵电路。
由一、二、3、4、五、6脚和4只电容组成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部份是数据转换通道。
由7、八、九、10、1一、1二、13、14脚组成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部份是供电。
15脚GND、16脚VCC(+5v)。
各单元模块电路设计
本次设计的密码小键盘要紧由单片机操纵模块、键盘输入模块和串行通信模块组成。
下面别离介绍各个单元模块电路的组成和功能结构。
单片机最小操纵系统模块
单片机作为本次设计的操纵器件,是密码输入键盘系统的核心部份,其功能是通过扫描方式读取键盘按键值,并进行暂存,当用户按下输入完整密码并按下确认键,单片机就将输入的密码数据转换成CPU识别码,并送入PC机;当用户按下取消键后,就将输入的密码数据清空,以便用户从头输入密码。
其电路图如下图。
图单片机操纵模块电路图
键盘输入模块电路设计
由于此题设计要求要用户扩展的键盘按键有数字键0-9和功能键等共12个,因此键盘电路采纳独立式键盘将会占用很多的I/O线从而不有效。
故采纳矩阵式键盘电路来扩展带有12个按键的小键盘比较适合,依照此题要求只需3×4方式的矩阵即可,采纳12个按键开关,别离代表0~9十个数字输入键位,一个确认键和一个取消键。
采取矩阵式键位设计,此举为减少对单片机的I/O口的利用,同时也是的咱们键盘的的外形更好看,利用更人性化。
键盘的航线和列现别离接8255A七个端口。
对键盘的识别方式咱们采取行扫描法。
故其原理电路图如以下图所示:
图矩阵式键盘电路图
矩阵式键盘电路其特点是由按键组成一个矩阵,矩阵的行线和列线别离作为两个传输方向相反的I/O接口信号线,如行线作为输入接口信号线,列线作为输出接口信号线,或反之。
与用独立式键盘相较这种电路所需要的I/O线很少,但键盘容量专门大,按题目设计要求,本设计题只需用到单片机P0口的七根输入/输出线,组成4×3式的矩阵即可达到要求组成带有12个按键的小键盘。
键盘扫描法及程序处置的任务
尽管矩阵式键盘对CPU的硬件资源要求不多,但相应的软件相对要复杂,目前扫描键盘识别键号的方式有两种,即扫描法和翻转法。
其实现思想大体简介如下:
扫描法是设定行线输出列线输入,行线逐行输出0,若是某列有按键那么列线输入为0;假设无键按以下线输入全数为1,如此依照行线和列线提供的信息就能够够确信是哪个键被按下。
翻转法实现思想是行、列线互换输入、输出,先输出一组所有为0的行值,读取列值并判定是不是有0的位,后输出所有为0的列值,读取行值并判定是不是有0的位,从而两步进行确信获取键位置信息。
因此,这种方式要比扫描法效率高,本设计中采纳的也是翻转法进行键盘信息的读取。
其中,键盘的扫描同键位的确信有如下图所示的关系,扫描的程序将在附录中给出。
按键
键码
按键
键码
行值
列值
行值
列值
0
1110
1110
6
1101
1011
1
1110
1101
7
1101
0111
2
1110
1011
8
1011
1110
3
1110
0111
9
1011
1101
4
1101
1110
10(确认)
1011
1011
5
1101
1101
11(取消)
1011
0111
图3×4行列式键盘的按键编码表
其中,功能按键只需要通过相应的程序进行挪用说明即可,其按键功能如下表所示:
按键
键名
功能说明
0-9键
数字键
用于输入密码
10键
确认键
当扫描到此键时结束扫描,即输入结束
11键
取消键
当扫描到此键是重新扫描,即重新输入密码
图按键对应的键名及其功能
键盘处置程序的任务要紧包括步骤如下:
键输入、键译码和键处置三步。
其中,键输入是键盘处置程序最要紧的工作,由于键盘的机械结构,当键按下或松开时,键将有一个抖动进程,因此键输入的首要工作确实是检查键盘是不是有键被按下,排除按键抖动。
然后再确信被按的键在矩阵中的位置,获取键号。
排除抖动的方式能够采纳软件延时。
延时程序将在附录中给出。
红绿灯提示电路模块
由于设计的要求,需要通过扩展小键盘来输入数据而且与初始密码进行比较,要求相同时绿灯亮,假设输入的数据同初始密码不同那么红灯亮。
故能够通过单片机端口输入/输出的功能加上相应的程序来进行实现,本设计采纳单片机端口的一个输出端口通过非门的选择来实现红绿灯的选择亮灭,其部份接口电路如以下图图所示:
图红绿灯提示模块电路图
其中,红绿灯显示的原理是:
当密码比较正确时绿灯D1亮,即单片机口输出应该为0;当密码比较错误时红灯D2亮,即C51单片机口输出应该为1。
串行通信电路模块
串行通信接口电路模块如下图。
图串行通信模块电路图
目前PC机普遍采纳的一种串行通信标准也是RS232C标准,它是美国电子工业学会(EIA)在1969年发布数据通信标准。
该标准概念了数据终端设备(DTE)和数据通信设备(DCE)之间的连接信号的含义及其电压信号标准等参数。
PC机上的串行口有两个COM1和COM2,一样都是9针的接头,那个接头且为公接头。
PC机的串行口传输速度一样只能达到115200ms,而有些较高级的串行芯片能够提供到较高的传输速度,例如可达921600ms。
本设计采纳的是DB-9接口和MAX232的电源芯片,实验板在通电后,通过此模块下载程序到STC89C52单片机里面。
下面对DB-9的引脚进行说明,如表所示。
引脚号
作用
方向
1
CD数据载波检测
输入
2
RXD接收数据
输入
3
TXD发送数据
输出
4
DTR数据终端准备就绪
输出
5
SG信号接地
6
DSR数据设备准备就绪
输入
7
RTS请求发送
输出
8
CTS清除发送
输入
9
RI振铃指示
输入
图DB-9引脚说明
4软件设计
编程语言简介
本次设计利用的编程语言是C语言。
C语言是一种运算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的于1972年推出。
1978后,C语言已前后被移植到大、中、小及微型机上。
它能够作为工作系统设计语言,编写系统应用程序,也能够作为应用程序设计语言,编写不依托运算机硬件的应用程序。
它的应用范围普遍,具有很强的数据处置能力,不单单是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。
具体应用比如单片机和嵌入式系统开发。
其特点要紧为1.C是高级语言。
它把高级语言的大体结构和语句与低级语言的有效性结合起来。
C语言能够像汇编语言一样对位、字节和地址进行操作,而这三者是运算机最大体的工作单元。
2.C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部份除必要的信息交流外彼此独立。
这种结构化方式可使程序层次清楚,便于利用、保护和调试。
C语言是以函数形式提供给用户的,这些函数可方便的挪用,并具有多种循环、条件语句操纵程序流向,从而使程序完全结构化。
3.C语言功能齐全。
具有各类各样的数据类型,并引入了指针概念,可使程序效率更高。
而且计算功能、逻辑判定功能也比较壮大,能够实现决策目的的游戏。
软件设计思路
密码输入键盘的要紧功能是实现C51单片机扩展的小键盘,通过输入数据同初始设置的密码比较,假设密码比较的相同那么绿灯亮,不然红灯亮。
其中,初始设置为四位数字的密码,数据的键入通过扩展的小键盘来实现,当输入的数据在0-9之间时,输入正常并把数据暂存起来,当扫描到的数据为10时,那么执行确认功能即退出扫描读数,假设扫描到的数据为11时,那么执行取消功能即从头扫描读取输入的数据。
其中,主程序为键盘的扫描读取从键盘输入的数据,即通过扩展矩阵式键盘翻转扫描法将扫描的键码值转化为相应的键号值,数据键为0-9,功能键有确认取消键,也即当扫描到输入的值为10时,通进程序操纵使其转化为确认的功能,当扫描到的键值为11时即实现取消的功能。
子程序有排除抖动的延时程序和密码比较挪用红绿灯显示输出的程序;排除抖动的延时程序,要紧利用软件延时的方式即通过循环方式的操纵来实现延时以排除按键的抖动。
程序流程图
初始化后,同时还对键盘进行实时扫描,在确认有按键按下后,51单片机读取键值,并将键值存储起来。
当按下确认键后,单片机将会做出反映,尔后若是再有按键按下也可不能有任何反映。
当现在取消键按下,单片机将从头初始化,新一轮的键盘扫描将开始。
由以上分析该设计画出设计流程图如下图。
开始
初始化及对89C52串行口编程
是否
有按键按下
N
Y
软件延时程序
是否
有按键按下
N
Y
扫描按键位置
Y
是按下确定,取消键?
N
查表确定按键键值
由串口向计算
机发送按键值
图主程序流程图
5系统调试
ptoteus简介
Proteus是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
尽管目前国内推行刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上闻名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处置器模型支持805一、HC1一、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2020年即将增加Cortex和DSP系列处置器,并持续增加其他系列处置器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
软件调试
本次设计咱们主若是利用Protel99se进行系统原理图的绘制画出系统原理图,利用KeilC软件进行编译和调试程序代码,然后利用Proteus仿真软件进行仿真电路的绘制和对程序代码的仿真。
在修改程序进程中显现的最大问题是采纳转移指令时,发觉跳转的范围超出了它的位偏移量,跳转的进行有必然条件的限制,在开始编程没有考虑到这一点,当运行程序时显现错误时依照系统的提示信息改变相应的程序就能够够了。
在编程中还要紧的一个问题确实是对输入的密码的确信,在调试中多次显现错误,最后通过闪电单步伐试的方式,别离记下每步运行后的寄放器的值从而找到了输入的密码的数。
6设计总结体会
在进行一个项目的开发时第一要有一个合理的分析进程,刚开始对那个密码键盘的设计能够说是一点也摸不清一个因此然来,后来通过相关资料的学习认识了各个芯片的功能并结合设计要求,很自然地就产生了联系,在进入做设计之前要做一个较充分的预备,要有一个明确的思路,如此在具体做设计时就可不能显得不知从何处下手了。
在本次的课程设计中,整体思路比较明确、设计的步骤也比较顺畅,由于有过课程设计的基础,对说明书的书写格式也方便了许多,没有第一次时的那各类麻烦和困难,同时通过这次的课程设计也让我对微机接口方面的知识有了进一步的了解,而且也加倍熟悉了汇编语言所运行的软件环境,同时