APP下载

基于Proteus软件的简易密码锁仿真系统设计

2019-10-09张成法庄小叶

电子技术与软件工程 2019年17期
关键词:密码锁数码管按键

文/张成法 庄小叶

密码锁在人们的日常生活中应用的越来越广泛,人们无需随身携带钥匙,只需输入几个数字或字符就能开门,给人们的生活带来很大的便利。本文在Proteus软件中利用单片机设计了简易密码锁,用独立按键来代表密码锁的数字,用LED灯的亮灭来表示密码锁的打开和关闭,用共阳极数码管来显示密码锁的相关信息。

1 整体设计

简易密码锁仿真系统上电后,数码管上显示“—”,绿色LED指示灯处于熄灭状态,表示密码锁处于锁定状;输入密码后,如果输入密码错误,在数码管上显示输入的密码,然后紧接着显示字符“F”,大约两秒以后,数码管上又显示“—”,继续处于等待密码输入状态;如果输入的密码正确,在数码管上显示正确的密码,然后紧接着显示字符“U”,同时绿色LED指示灯处于绿色点亮状态,表示密码锁已经被打开。

2 硬件设计

本系统主要是由AT89C52单片机、电源电路、晶振电路、一位共阳极数码管M1、四个独立按键S0-S3和一位绿色的LED组成。共阳极数码管M1经由电阻R1-R7连接到单片机的P3.0-P3.6引脚,四个独立按键S0-S3经由四个上拉电阻R8-R11连接到单片机的P0.0-P0.3引脚。一位绿色的LED灯D1连接到单片机的P1.0引脚。用绿色的LED灯的亮灭来模拟密码锁的打开和锁定。当LED灯D1点亮变成绿色的时候,表示密码锁处于打开状态。当LED灯D1没有被点亮处于熄灭状态的时候,表示密码锁处于锁定状态。

按键S0、S1、S2 、S3依次表示数字0、1、2、3,当按键S0被按下去的时候,表示输入的密码为0,其余类推。该密码锁的密码被预先设定为2,当按下S2键的时候,才能将密码锁打开。数码管平常显示“—”,表示处于等待密码输入状态。当密码输入错误的时候,数码管上显示"F"约2s,然后再显示“—”继续处于锁定状态。当密码输入正确的时候,数码管上显示"U"约2s,并通过P1.0口将密码锁的锁打开,此时绿色的LED灯D1点亮变成绿色,表示密码锁的锁已打开。系统硬件电路图如图1所示。

3 软件设计

图1

在程序设计中定义无符号字符型数组baio[]用来存放共阳极数码管上要显示的字符0、1、2、3,- 、F、U所对应的码值。在main主程序中,主要采用while()死循环语句和switch case语句实现程序编程。定义无符号字符型变量anjian来保存按键信息,语句P0=0xff实现将P0口的引脚状态全都置为1,语句P3=baio[4]和P1_0=1; 实现将密码锁系统上数码管的初始状态设置为"-" 和密码锁系统上表示密码锁打开和关闭的绿色LED指示灯D1设置为熄灭状态,表示密码锁处于关闭状态。利用anjian=P0; yanshi(1200); anjian=P0;这三条语句可以实现利用软件来延时去抖,因P0口上连接有四个按键S0-S3,首先读取P0口的数值,将其数值赋给变量anjian,然后利用语句yanshi(1200)延时一段时间,紧接着再次读取P0口的数值,并将其数值再次赋给变量anjian。因只使用了P0口的低四位,未使用高四位,语句anjian&=0x0f; 可以实现将P0口的高四位置0,只留下P0口的低四位的数值,并且把P0口的低四位的数值赋给变量anjian。利用switch (anjian) case{……}语句来判断是S0-S3中的哪一个按键被按下去了,假如变量anjian中的数值为0x0e,表示S0键被按下去了,语句P3=baio[0];yanshi(10000);P3=baio[5]; yanshi(50000);break;会让数码管上显示数字0,然后保持一小会儿时间,然后数码管上紧接着显示字符F,表示输入密码错误,同样数码管上要显示字符F一段时间,然后退出case语句,又从头开始执行while()死循环语句,这时数码管上又显示字符"-",表示密码锁又处于锁定状态。假如变量anjian中的数值为0x0d或0x07,表示S1键或S3键被按下去,数码管的显示跟S0键按下去的显示一样。假如变量anjian中的数值为0x0b,表示S2键被按下去了,语句P3=baio[2];yanshi(10000);P 3=baio[6];P1_0=0; yanshi(62000);break;会让数码管上显示数字2,然后保持一小会儿时间,然后数码管上紧接着显示字符U,表示输入密码正确,同时绿色LED指示灯D1点亮,变成绿色,表示密码锁打开。同样数码管上要显示字符U一段时间,然后退出case语句,又从头开始执行while()死循环语句,这时数码管上又显示字符"-",表示密码锁又处于锁定状态,等待按键S0-S3中的某个键被按下。程序代码如下:

4 结束语

本文详细阐述了简易密码锁系统的硬件和软件设计,设计了硬件电路,编写了软件程序代码,并在Proteus软件中进行了仿真,达到了预期效果。该系统设计简单,效果明显,可应用于实训教学。

猜你喜欢

密码锁数码管按键
基于有限状态机的按键检测程序设计
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
开启密码锁
数字密码锁的逻辑实现
一种多方向导光按键结构设计
按键的多种状态检测及消抖处理方法
解析某型号手机按键检测程序的缺陷