基于单片机的电子密码锁设计(4)

2019-04-09 08:18

本科毕业设计说明书(论文)

第 12 页 共 41页

图3.3 键盘输入原理图

3.2.2 复位电路

单片机复位可以让整个系统(单片机芯片本身)从一个确定的初始状态开始工作。在单片机刚刚上电时、断电后和执行出错,复位都是必须的操作。RST为高电平并保持一定时间后,单片机进入复位状态,在此期间,P0口呈现高阻态,P1-P3口均呈现高电平,同时PSEN信号无效、ALE为高电平。

本设计在最基础的复位电路基础上,添加了一个按键以实现手动复位功能。在刚接通电源时电容C1两端电势差很小,电阻R1上的电压接近电源电压,这会使得RST为高电平,接着,电容进入充电过程,RST端电势步降低,当RST端的电压表现为低电平时,CPU脱离复位状态,只要电容C3大小适当,就能够保证RST的高电平有效持续时间多于24个振荡周期,此时单片机就能够实现可靠的复位。手动复位按键的加入,使得死机时有了可靠的复位方法。在按下复位键后,电容C3将会经由R6进行放电,此过程结束后,RST端的电位就会由两个电阻的分压情况决定[14]。复位电路的原理如下图所示:

图3.4 复位电路原理图

3.2.3 晶振电路

将晶体振荡器按下图所示方式连接到XTAL1引脚和XTAL2引脚上,就构成了晶振电路。图示是一种电容三点式振荡器,振荡信号的频率取决于晶振频率和两

本科毕业设计说明书(论文)

第 13 页 共 41页

个电容的容量,其中,晶振频率又是主要因素。一般而言,晶振频率的取值范围在0~33MHz之间,两个电容的取值范围在5~30pF之间。根据实际情况,本设计中采用24MHZ做系统的外部晶振。电容取值为22pF[15]。晶振电路原理图如图4.4所示:

C122pFX1CRYSTALC222pF 图3.5 晶振电路原理图

3.2.4 显示电路

为了使密码锁的显示效果使人满意、电路简洁,此处使用了LCD1602作为显示模块的核心,而不是普通的数码管。接通电源后显示器处于等待开锁状态,提示用户输入密码,当用户需要开锁时,可以使用数字键0-9输入密码,每次按键都会把处理结果反馈到屏幕上。当密码输入结束后,按下确认键,系统将会把输入的密码和事先保存的对比,若正确,LCD将显示“Unlock succeed!”,电子密码锁被打开;否则,LCD显示屏会显示“Wrong Password,Unlock Failed!”,电子密码锁保持原状态。

在密码修改的过程中,LCD显示屏会显示更为多样的信息:“Change Password? (Y/N)”、“Old Password:”、“Wrong Password,Match Failed!”、“Enter New PW:”、“The Password must be 6 bits!”、“The Password has changed!”等等,电子锁当前所处的状态一目了然。其显示部分及引脚接口如图4.5所示:

本科毕业设计说明书(论文)

第 14 页 共 41页

图3.6 显示电路原理图

3.2.5 报警、解锁提示电路

本设计报警部分电路由蜂鸣器实现。当输入密码并确认后,单片机的P3.1引脚将输出特定频率的方波,则蜂鸣器被导通而发出声音。当密码错误时,发出的声音为短促的3声“嘟”,音高相同;当密码正确时,发出的声音为一小段乐声。

当解锁成功时,接于P3.0端口的绿色LED灯将会亮起,提示锁已打开。在实际应用的电子密码锁产品中,可以把其替换为电磁继电器的输入,原理仍是不变。报警、解锁提示部分电路原理图如图4.6所示(图中led接P3.0口,air接P3.1口)。

图3.7 报警、解锁提示电路原理图

本科毕业设计说明书(论文)

3.3 系统软件部分设计

第 15 页 共 41页

本设计的软件部分由主程序、按键检测子程序、LCD显示子程序、密码修改子程序、报警声音子程序等组成。 3.3.1 主程序流程图

如图5.1所示为主程序流程图,系统上电后将进行初始化,然后开始进行键盘扫描,此时在键盘上输入密码,若密码正确,则开锁成功,播放成功提示音,密码错误则会提示,包括屏幕画面及声音。

图3.8 主程序流程图

3.3.2 按键检测子程序设计

本设计中的的密码输入使用了4*3矩阵键盘,键盘上除数字键0—9以外还有2个功能键。该矩阵键盘的按键检测采用行扫描法,具体步骤如下:

1令第一行为低电平,其余行和列为高电平,即给P1口赋值0xFE。 ○

本科毕业设计说明书(论文)

2延时5~20ms再次进行检测,实现按键消抖。 ○

第 16 页 共 41页

3读P1口的值,判断当前是否有键被按下。若无键按下,其值仍应为0xFE。○

若第一个按键按下,则第一列会被拉低,即P1口的读取值应为0xEE,即0xEE为第一行第一列按键的键码。同理可得第一行另两个按键的键码为0xDE、0xBE[16]。

用同样的方法,令其它行为低电平,经上述3个步骤也可判断其它按键是否按下。

根据上述过程,该矩阵键盘的按键检测扫描程序设计如下:

uchar code rowScan[]={0xFE,0xFD,0xFB,0xF7}; //行扫描码 uchar code

key12[]={0xEE,0xDE,0xBE,0xED,0xDD,0xBD,0xEB,0xDB,0xBB,0xE7,0xD7,0xB7} // 1 2 3 4 5 6 7 8 9 * 0 # uchar code keyValue[]=\

#define KEY P1

//=====键盘扫描函数========== uchar keyScan(void) //返回值:有键按下时获得的键盘值

(1234567890*#),无键按下时返回字符‘$’

{

uchar k = 0,flag = 0; for(k = 0;k < 4; k++) {

KEY = rowScan[k]; //逐行扫描 delay(10); //按键扫描 if(KEY != rowScan[k]) {

uchar i=0;

for(i = 0; i < 12; i++) {

if(KEY == key12[i]) { //比较键码 flag=1; break; } }

while(KEY != rowScan[k]); //等待按键释放 if(flag)


基于单片机的电子密码锁设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南村小学安全工作考核及奖惩制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: