第一范文网 - 专业文章范例文档资料分享平台

基于51单片机电子密码锁设计

来源:用户分享 时间:2025/7/17 2:41:14 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

号。

一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。

单片机复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期(即24个振荡周期)的高电平。 3.3.3 显示系统

图4 显示电路

3.3.4 矩阵按键模块

图5 矩阵按键模块

8

4 软件设计与分析

4.1 软件设计的组成

该系统由延时子函数、LCD12864液晶测忙子函数、LCD12864液晶写数据子函数、LCD12864液晶初始化子函数、矩阵键盘扫描子函数、密码子函数、密码修改子函数、主函数和数据定义这几部分组成。

4.2 各子程序设计

4.2.1 键盘扫描子程序

键盘扫描流程图如图6:

开 始 设置处值 送入行扫描处值 调消除抖动 子 程 序 Y C=0? N N R5=0? A=0? 读P1值 设C=1左移测列 Y 设C=1右移扫描列 调用显示子程序 N C=0? Y 结束 图6 键盘扫描流程图

键盘扫描子程序如下:

void keyscan() {

uchar temp1,temp2;

P1=0xfe;//令第一列为低电平,检测第1列 temp1=P1;

if(temp1!=0xfe) {

delay(5); //去抖 temp2=P1;

if(temp1==temp2) {

switch(temp2) {

case 0xf6: if(num<4){key=1;keycmp[num]=key;num++;display();} else alarm();

break;

4.2.2 LED显示子程序

LED显示流程图如图7: 开 始

载入按键值

按键值+74LS138的扫描值

送P0口输出

图7 LED显示流程图

LED显示子程序如下: void display()

{ uchar i,j,cs=0x7f; for(i=num;i>0;i--) {

P0=table[0]; cs=_crol_(cs,1); P2=cs;

10

delay(10); }

for(j=4-num;j>0;j--) {

P0=table[1]; cs=_crol_(cs,1); P2=cs; delay(10); } }

4.2.3 密码比较和程序报警

密码比较和报警流程图如图8:

开 始 比较第一位 Y 比较下一位 Y N 清除显示 N 记录错误次数 N 6位比较完? 3次则报警 Y 正确开锁

清 零 图8 密码比较和报警流程

密码比较和报警程序: if((sk[11]==1)&(cp[0]==0))

{ GotoXY(0,0); print(\提示输入旧密码 count7=1;count2=1;count6=0;sk[11]==0;}

搜索更多关于: 基于51单片机电子密码锁设计 的文档
基于51单片机电子密码锁设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9zj4v5v8dz9acj29pw7i_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top