《基于单片机的电子密码锁及程序》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁及程序(17页珍藏版)》请在人人文库网上搜索。

1、基于单片机的电子密码锁设计摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁由于构造简单,被撬事件屡见不鲜。电子密码锁保密性好,使用灵活性高,收到广大用户的青睐。本设计是以单片机AT89C52作为密码锁的主控芯片与数据存储单元,结合外围的矩阵键盘输入、LCD显示、开锁、报警等,用C语言编写程序,并用Keil uVision4软件进行编译设计了一款可以更改密码,具有报警功能的电子密码控制系统。本设计采用矩阵键盘对密码进行输入,具有较高的优势,减少了I/O口的占用数目。密码的显示采用LCD显示屏实现,为确保安全性统一使用“*”显示密码,当重新设置密码时按下“修。

2、改”键,LCD显示屏显示数字。采用蜂鸣器模拟报警系统,增加了密码锁的安全能力。软件使用C语言编程,运用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,设计达到电子密码锁的功能。关键字:密码锁、AT89C52、矩阵键盘、报警一、设计背景随着社会科技的进步,锁已经发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像来控制锁的开启,从而大大提高了锁的安全性。当今安全信息系统应用越来越广泛,特别在机密保护、维护隐私和财产保护方面起到重大作用,而基于电子。

3、密码锁的安全系统是其中的一部分,运用非常广泛,研究它具有重大的现实意义。电子密码锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。大大提高了主人物资的安全性。目前使用的密码锁种类繁多,各具特色。本文从经济实用的角度出发,采用AT89C52单机,研制了一款具有防盗自动报警功能的电子密码锁。该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有一定的推广价值。2、 设计目的1. 了解单片机开发系统的组成及结构;2. 掌握I/O口的操作方法;3. 能够熟练使用protues和keil软件进行连线和编程,并熟练掌握仿真方。

4、法;4. 掌握LCD显示屏的显示原理;5. 掌握C语言编程方法;6. 培养查找错误和改正错误的能力。3、 设计要求本设计采用单片机为主控芯片,结合外围电路组成电子密码控制系统。设计主要功能有:1. 设置6位密码,密码通过键盘输入,若密码正确,则锁打开,LCD显示“Password Right Lock Opened!”。原始密码在首次开锁时为“000000”。2. 重新设置密码时,LCD显示“*”,按下“修改”键显示数值。3. 密码只能输入6位数字,无法输入多余数字。4. 具有自动报警功能:当密码输入错误三次,报警,蜂鸣器响3秒。5. LED数码管显示密码,为确保安全性所有密码均用“*”表示。。

5、4、 设计原理和硬件仿真方案1. 矩阵键盘密码的输入用矩阵键盘实现,包括数字键和功能键。具体功能设计如表一:表一 键盘具体功能设计表按键键名功能09数字键输入密码新建新建键设定新密码确认确认键比较密码修改修改键显示密码进入进入键允许输入密码取消取消键取消输入密码如图一所示,矩阵键盘的每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线即可组成有个按键的键盘。图一 矩阵键盘本次设计需要09十个数字按键、一个新建键、一个确认键、一个修改键、一个进入键和一个取消键共15个按键,所以选用4X4的矩阵按键。在这种行列式矩阵键盘编码的单片。

6、机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段,还要对按键进行消抖处理。当确认有按键按下后,就要识别是哪一个按键被按下。本次设计使用的是线反转法。给行线置为0x0f,给列线置为0xf0,再将行列进行逻辑或结果为0xff,当有按键按下时相应的按键位行列均为0,行列逻辑或不为0xff,由此可利用行列逻辑或后的值是否为0xff来判断是否有按键按下。再根据扫描结果判断按下键的位置。给相应的按键赋值即可实现数字键和功能键。对功能键进行相应的软件编程即可实现按键功能。使用矩阵键盘能减少键盘和单片机接口所占用的I/O线数目,当按键较多的时候通常采用这种方法。2. 开锁电路在本次设计中用发光。

7、二极管代替电磁锁,二极管D1亮表示锁开,二极管灭表示没有开锁。如图二所示,当输入密码与内置密码相配合时将P2.1置0,二极管亮,否则二极管不亮。图二 发光二级管电路3. 报警电路报警电路由单片机和蜂鸣器组成,如图三所示,当P2.0为低电平时蜂鸣器发出声音报警。每次输入的密码与正确密码进行比较,如果相同,锁开灯亮。如果输入错误则用一个变量来记录输入错误的次数,当输入密码错误达到三次时,蜂鸣器工作发出报警声音,本次设计使用的是声音持续3秒蜂鸣器报警,即可听到“嘟”3秒的响声。图三 报警电路4. LCD显示电路密码显示电路由单片机、排阻和LCD显示屏组成。显示电路如图四所示。为保证密码的保密性,本设。

8、计采用“*”显示所有输入密码,如图四所示。当重设密码时,按下“修改”键显示数字,如图五所示。本设计只允许输入数字密码6次,超过6次以后的数字无法输入。图四 LCD显示电路图五 重设密码LCD显示数字5、 软件程序设计本系统软件设计由主程序、初始化程序、键盘扫描程序、密码输入程序、功能键定义程序、重置密码程序、LCD显示程序、中断延时程序、报警程序、延时程序组成。如图六所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,判断密码是否正确,密码正确开锁,密码不正确统计错误密码次数加1。在开锁情况下进行修改密码,点击确认密码修改成功,否则结束返回。若密码修。

9、改成功则再执行之前的操作。开始初始化键盘扫描子程序结束调用密码重置子程序调用报警子程序密码错误次数q+1重设密码?密码正确?输入密码个数N=6?LCD显示子程序输入密码子程序Nq=3?调用延时子程序开锁Y N N Y Y Y N 图六 主程序流程图六、系统调试本次调试采用的是protues和keil软件进行仿真。首先运用keil软件编写电子密码锁的源程序,本设计主要运用C语言编写。源程序编写后运行生成目标文件供protues仿真调试。图七为LED显示六位密码的情况图七 LCD显示密码图当密码正确按下确认键发光二极管亮,锁开。如图八图八 密码正确锁开灯亮当密码输入错误三次蜂鸣器发出声音报警,如图。

10、九所示图九 蜂鸣器报警由图九可以看到蜂鸣器接地端为蓝色,即此时为低电平,所以蜂鸣器正在发出报警声音。Protues仿真电路图如图十所示图十 protues仿真电路图七、设计总结与展望课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。本设计经过多次修改和整理,可以满足基本的要求。密码正确,锁开;密码输入错误三次,报警;输入密码超过6位之后的数无效;LCD。

11、显示屏显示密码为“*”。在设计的过程中遇到了各种各样的问题,譬如说断电密码保护的设计,由于电路和编程都过于复杂,本设计并未加入。在编程的过程中问题也是很多,由于程序较长,当实现了这个功能另外一个功能有不能很好的实现,所以要做到模块与模块之间的衔接。遇到的一些问题也经过努力一一克服。回顾此次单片机课程设计,至今我仍感触颇多。在设计过程中从理论到实践我们可以到很多很多东西,巩固了以前学过的知识,还懂得了如何将理论联系实际。只有理论知识是远远不够的,只有将理论运用到实际中对我们来说才是有意义的,这样才能真正的为社会服务。七、附录源程序清单:#include#include#define uchar 。

12、unsigned charstatic unsigned char table6=0,0,0,0,0,0;/Declare functionsuchar Busy_Check();void Initialize_LCD();void Write_LCD_Data(uchar dat);void Write_LCD_Command(uchar cmd);void Display_String(uchar x,uchar y,uchar *str);void Display_char(uchar hang,uchar lie,char sign);/void write_add(uchar add。

13、ress,uchar date);/向AT24Cxx中的指定地址写入数据uchar read_add(uchar address);/ 从AT24Cxx中的指定地址读取数据void init();uchar h=20; sbit touch=P21;sbit touch1=P22;sbit speaker=P20;void delay(unsigned char ms) / 延时*msunsigned char i;while(ms-)for(i=250;i0;i-)_nop_();_nop_();_nop_();_nop_();unsigned char keyscan() / 扫描键盘un。

14、signed char temp,y,j;unsigned char anjian=0xfe,0xfd,0xfb,0xf7; for(y=0;y4;y+)P1 = anjiany;temp = 0x10;for(j=0;j4;j+)if(!(P1&temp)return(j+y*4);temp = _crol_(temp,1);void judge()P1 = 0xf0;if(P1!=0xf0) / 判断是否有按键delay(50);delay(50); / 消抖if(P1!=0xf0)h=keyscan();void main() unsigned char a=1,i=0,k=0,l=1,。

15、m=1,n,f=0,s=0;int q;Initialize_LCD();init();Display_String(1,1,Welcome To Use );Display_String(2,1, );touch1=0;/第一个while循环 while(1) judge();if(h10)if(h=tablei)k+;Display_String(2,a,*);a+;i+;if(a=7)a=1;if(i=6)i=0;h=16;if(h=14) Display_String(1,1,Input Password);Display_String(2,1, );h=16;touch=1;touc。

16、h1=0;k=0;l=1;q=0;if(h=12)if(k=6)Display_String(1,1,Password Right);Display_String(2,1,Lock Opened!);touch=touch;else Display_String(1,1,Password Error);Display_String(2,1, );l=0;q+;while(q=3)speaker=0;delay(200);delay(200);delay(200);speaker=1 ;q=0;h=14;delay(255);k=0;h=16;while(l)judge();if(h=11) D。

17、isplay_String(1,1,New Code);Display_String(2,1, );while(m=1) judge();touch1=touch1; if(h10)tablen=h;write_add(s,h);s+;Display_String(2,a,*);a+;n+;h=16;if(n=6) n=0;s=0; if(h=15)if(n=0)n=6;s=6;a-;s-;Display_String(2,a, );n-;h=16;if(h=13)m=0;if(h=13)h=13;f=1;if(h=14) l=0; if(h=13) Display_String(2,1, )。

18、; for(n=0;n6;n+)Display_char(2,n+1,(uchar)(tablen+48) );h=13;l=0;f=1; k=0;if(h=15)a-;Display_String(2,a, );k-;i-;h=16;if(h=13) if(f=1) for(n=0;n6;n+)Display_char(2,n+1,(uchar)(tablen+48) );f=0; elseDisplay_String(2,1, * );delay(255);delay(255);Display_String(1,1, Welcome To Use );Display_String(2,1, );l=1;a=1;k=0;n=0;m=1;h=16;for(s=0;s6;s+) tables=read_add(s);delay(50);。

基于单片机的密码锁c语言设计程序,基于单片机的电子密码锁及程序相关推荐

  1. 如何用c语言对51单片机进行编程,C语言在51单片机编程中的应用技巧

    随着单片机硬件性能的提高,编写应用程序更着重于程序本身的效率. Franklin或KEII.C51交叉编译器是专为51系列单片机设计的一种高效的C语言编译器,用其开发的应用程序易于维护,可移植性好,是 ...

  2. 单片机技术与c语言编程教学大纲,单片机应用技术(C语言)教学大纲.doc

    单片机应用技术(C语言)教学大纲 一.说明 1.课程的性质和内容 本课程是高级技校应用电子专业的专业课.主要内容包括:认识单片机,点亮彩灯,简易数字钟,简易计算器,键控彩灯,简易频率计,单片机双机通信 ...

  3. 怎么用C语言写程序控制单片机,如何用用C语言编写的单片机来控制流水灯

    描述 用C语言编写的单片机流水灯程序的软件和硬件,可以让八个LED轮流点亮,每个灯点亮和熄灭时间均为1秒.是利用单片机I/O口控制外部设备的简单例子.当然,在你掌握了本程序后,完全可以充分发挥你的想象 ...

  4. 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc

    完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...

  5. 51单片机数控电源c语言设计,基于51单片机的数控电源

    <基于51单片机的数控电源>由会员分享,可在线阅读,更多相关<基于51单片机的数控电源(8页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的数控电源摘要:学习如何以单片机 ...

  6. 单片机篮球计数器c语言代码,基于单片机的篮球计数器.doc

    基于单片机的篮球计数器 本科学生毕业论文 论文题目:基于单片机的篮球计数器学 院:(黑体三号字)年 级:(黑体三号字)专 业:(黑体三号字)姓 名:(黑体三号字)学 号:(黑体三号字)指导教师:(黑体 ...

  7. 单片机人机接口编程c语言,16位单片机C语言编程:基于PIC24

    第一部分 飞行入门 第1章 首飞 1.1 飞行计划 1.2 飞前备忘录 1.3 飞行 1.3.1 编译和连接 1.3.2 构建第一个项目 1.3.3 端口初始化 1.3.4 重测PORTA 1.3.5 ...

  8. 51单片机 驱动步进电机 C语言 lcd,基于51单片机的步进电机驱动程序

    一.步进电机分类 1.按构造分类 ①反应式: 由定子和转子构成,定子上有绕组,转子由软磁材料制成. ②永磁式: 转子由永磁体制成,转子极数与定子极数相等. ③混合式 定子有多相绕组,转子由永磁体构成, ...

  9. 51单片机风扇转动c语言代码,基于51单片机的c语言程序 电机转速测量与PWM控制...

    [实例简介] 部分源程序如下: //=================测速计数处理=================================== void timer1()interrupt ...

最新文章

  1. 2020年最火本科生专业来了!180所高校新增人工智能专业
  2. 使用AWS Lambda在Go中构建RESTful API
  3. html如何创建关键帧动画旋转,[教程] 用 CSS3 Animations(动画) 和 Keyframes(关键帧) 创建简单的网页动画 – CSS3 实现弹跳球动画...
  4. 安装torch_sparse失败解决方法
  5. Cocos2d-x建工程时避免copy文件夹和库
  6. [转载] python set()集合快速比较两个列表内的元素是否一致
  7. 如何在计算机中找到桌面这个项,怎样找到“计算机管理”这项菜单?
  8. Leetcode 233.数字1的个数
  9. 【手势识别】基于matlab GUI SIFT+SVM算法手势识别【含Matlab源码 1789期】
  10. 计算LED分压电阻时?需要注意哪些事情?
  11. 计算机文件夹无法排序,文件夹下文件不能手动调整顺序?-开启Windows 7文件/文件夹手动排序功能...
  12. (Scrapy框架)爬虫获取新冠疫情数据升级版 | 爬虫案例
  13. uni-app入门教程
  14. 数据库之MySQL日志管理、备份与恢复
  15. Artfinity基金会理事 肖书阳:资产上链促进区块链真正落地,让实物更有价值
  16. 避免计算机更新,macOS更新关闭技巧,避免Mac电脑会一直跳出更新提示
  17. Matlab计算波形的总谐波失真--THD(附完整代码)
  18. 如何在linux上使用QQ(在终端上使用qq) mojo-qq
  19. 机器学习----维数灾难
  20. 征战星辰大海,从这里开始

热门文章

  1. 面试让简单说一下CAS,CAS的优缺点
  2. 拍摄的视频数据丢失怎么办,如何恢复摄像机误删的视频
  3. 妹子UI之自定义分页控件
  4. Maven项目中引用PageOffice
  5. WebStorm开发微信小程序配置
  6. Github每日精选(第58期):自建手机照片和视频备份immich
  7. 刷机-把机顶盒当服务器使用
  8. JProfile 分析OOM hprof文件
  9. linux 起网口up_linux网卡操作命令 ,查看Linux下网卡连接状态(up还是down)?
  10. 大型企业云平台构建-从大集中化再到分布式单元网格