ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:20.49KB ,
资源ID:7197157      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7197157.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机密码锁设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机密码锁设计.docx

1、单片机密码锁设计1 引言 设计目的随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。 电子密码锁就是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是 为提高锁的安全性。 目前,国内自行研制开发的电子锁,应用还不广泛。国内的不少企业也引进 了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁 在我国也能得到广泛应用。 设计要求 本次课程设计要求使我们能够掌握并且实际运用课本知识。 通过利用所学的 电子技术知识正确分析并设计电路 , 将适当电路运用到实际电路中 , 将课本知识转 化为实际能力。 设计方法(1)系能够从键盘中输入密码,并相应地在显示器上显示,

2、 *;能够判断密码是 否正确,正确则开锁,错误则输出相应信息。 (2)密码由程序直接设定,不可用户自己设定。 (3)具有自动报警功能。密码不正确,相应红灯亮,蜂鸣器发出报警声来提示。 (4)具有手动复位功能。 2 设计方案及原理 系统总体设计根据以上分析,本次电子密码锁设计的主要重点是以下几个部分: 4x3 矩阵 键盘设计、 LCD 信息显示和密码的比较和处理。当然,除了这几个部分外还 有报警等功能模块。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由 用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自 己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平

3、传到 开锁电路或者报警电路是报警。系统整体框图如图 1 所示。 本设计硬件资源分配用于 LCD 液晶显示作用。 、用于蜂鸣器和报警灯的控制。 用于开锁电路的控制。 用于键盘电路的控制。 用于LCD显示模块的控制端口的控制。3 硬件设计 芯片选择本次设计采用 AT89C51 贴片芯片, AT89C51是一个低电压,高性能 CMOS 8 位单片机,通过用 Keil 软件编写程序,然后装到单片机里面去,然后让它对整个 系统进行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程 序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反应到 单片机的各个引脚,来实现按键实现的现象,

4、如:显示是否开启锁,报警等。 AT89C51 提供以下标准功能: 4k 字节 Flash 闪速存储器 128 字节内部 RAM,32 个 I/O 口线两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行 通信口,片内振荡器及时钟电路。同时, AT89C51 可降至 0Hz 的静态逻辑操作, 并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM, 定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容, 但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C51 的引脚图如图 2 所示。 单片机最小系统设计单片机最小

5、系统就是指能使单片机工作的最少的器件构成的系统。因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。(1)单片机工作需要晶振给 CPU提供频率,时钟电路就是给单片机提供晶振频率 的 电 路 。 图 3 是 时 钟 电 路 的 PROTEUS 仿 真 图 。单片机允许的振荡晶体可在 24MHz之间选择,一般为 ,电容C2,C3的取值对振荡频率输出的稳定性、 大小及振荡电路起振速度有一定的影响,可在20100pF之间选择,典型值位 30pF(2)计算机每次开始工作, CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。图 4是单片机

6、复位电路仿真图。单片机 RST引脚是高电平有效。 单片机在上电瞬间 C1充电,RST引脚端出现正脉冲,只要 RST断保持两个机械周期(大约 10ms)以上的高电平,单片机就能复位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。当晶体振荡频率为 12MHz时,RC的典型值为 C=10F,R=。 矩阵键盘设计一组键或者一个键盘,需要通过接口电路和 CPU相连接, CPU可以采用查询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。无论是查询方式还是中断方式都要用到单片机的 I/O口。由于单片机 I/O口较少的原因, 当系统中需要用到较多按键时,为了能够更合理

7、更有效地利用单片机的 I/O口,一般采用矩阵键盘的方式来实现多按键的功能。图 5 是 4x3 矩 阵 键 盘 在 PROTEUS 中 的 电 路 原 理 仿 真 图 。矩阵键盘又叫做行列式键盘。行列式键盘的硬件结构比较简单,由行输出口和列输出口构成行列式键盘,按键设置在行、列交点上。只有当键被按下时相应的行和列才能相连。如此,只要检测行和列是否相连就可以知道是否有键按下。由于按键设置在行、列线交点上,行、列分别连接到按键开关的两端,平时无键按下时,行线处于高电平,假设列线为低电平,当有键按下时,按下的键就会将相应的行和列连通,使得对应的行线被列线拉低,也变为低电平。这就是识别矩阵键盘是否有键被

8、按下的关键。当确定有键被按下时,通过逐行扫描,读出 I/O口的值可以知道哪一行的值被改变了,被改变了的行即是被按下的按键所在行。同时,由于每个键都有它的行值和列值,行值和列值得组合就是这个按键的编码,当算法一定时,每个按键的编码是固定的,且各个按键的编码互不相同,所有通过读 I/O的值还能具体知道是哪一个键被按下,这样就实现了键盘的识别。 LCD显示模块设计LCD1602是一种字符型液晶显示器,是一种专门用于显示字母、数字、符号等的点阵式液晶显示器。 LCD1602的显示容量为 16x2个字符(可以显示 2行,每行显示16个字符),芯片工作电压为 ,工作电流为 (),模块最佳工作电压是 。LC

9、D1602具有 16个引脚。在 LCD1602的有关设计中,主要是通过编写程序控制LCD1602的4、5、6引脚来实现数据或者指令的写入和执行,再通过数据或者指令的写入和执行来进一步实现 LCD1602的显示功能。 查资料了解在仿真库中用lm016l代替LCD602图6是PROTEUS中显示模块的仿真图。由于 LCD要正常工作必须提供足够的电流,因此在实际应用为了保证显示器能够正常工作,应在数据端口接一上拉电阻,不过此次仿真就没有另外加上拉电阻。报警模块、开锁模块以及表示模块开锁模块用继电器带一个 LED管代替电磁锁。电路如图 7所示;报警模块用蜂鸣器表示,电路如图 8所示;表示模块用发光二极

10、管表示开锁与否。 硬件连接图根据电路原理,在 PROTEUS中画出各功能模块的仿真图,各个功能 模块验证正确后,将所有模块集合到一个电路设计图中,画出具有所有功能的总 体硬件仿真图。在设计过程中,采用单片机 AT89C51作为主控芯片,结合键盘输入、显示电路、 报警电路、开锁电路、时钟电路、晶振电路,利用合理的连线接成硬件连接图, 在Proteus软件平台上选中合适的 AT89C51芯片, LCD显示器,键盘,以及其它电 子元件,接成电路。 设计原理系统工作时,用户通过按键输入 6 位密码,单片机将输入密码与设定密码进 行比较,若密码正确,则相应绿灯闪烁,同时发出开锁信号,将门打开,系统不 报

11、警;若密码不正确,则相应的红灯亮闪烁,同时蜂鸣器发出报警声音。 4 软件设计 程序设计C 语言编程,源程序清单如附录 1 所示。 程序流程图流程图如图 4。5 系统仿真及实际调试 仿真图仿真结果密码正确, LCD 显示器显示 “open”,绿灯亮。仿真图如附录 2 所示。 问题分析电源、晶振电路和复位电路都无异常, LCD 显示时出现问题: (1)刚开始蜂鸣器声音太小几乎听不清楚,后来加了一个三极管放大后声音变大。(2)接通电源开门灯和报警电路就会工作,分析原因是单片机刚开始各个管脚 输出低电平。 (3)开锁电路完成后继电器不吸起,后来经过调试加三极管等等方法后实现 了继电器吸起 LED 灯亮

12、。6 总结本次设计,采用单片机 AT89C51 作为主控芯片, 结合外围的键盘输入、 显示、 报警、开锁等电路,用 C 语言编写主控芯片的控制程序,设计了一款具有报警功 能的电子密码锁。 对于本次单片机课程设计,我觉得十分有意义且很有必要。课堂上,我们大 多数接触的仅仅是专业课的理论知识,如何去锻炼我们的实践能力如何把我们 所学的专业基础课理论知识运用到实践中去呢像此次课程设计就为我们提供了 良好的实践平台。过程中我发现了很多问题,看似很简单的电路,要动手把它给 设计出来,是很难的一件事,主要原因是我没有经常动手设计过电路,还有资料 的查找也是一大难题,这就要求我在以后的学习中,应该注意到这一

13、点,更重要 的是我要学会把从书本中学到的知识和实际的电路联系起来,这不论是对我以后 就业还是学习,都会起到很大的促进和帮助,我相信,通过这次的毕业设计,在 以后的学习中我会更加努力,力争把这门课学好,学精。同时,通过本次毕业设 计,巩固了我学习过的专业知识,也使我们把理论与实践从真正意义。另外,通 过这两周对电子密码锁的研究和学习,我认为本次设计中使用的这种键盘输入密 码的方式可以进行改革。在越来越高科技化的今天,遥控控制显的愈发重要,今 后的电子密码锁应该具有以红外技术或无线电技术为辅助的密码按键输入远程交 互技术,这样就能远程输入密码完成操作。也可以放弃传统的按键输入密码模式, 借助传感器

14、技术运用声控来实现密码输入,又或者使用人脸识别技术,或者用户 指纹识别技术代替传统的按键输入,这些都可以使开锁的时间更短更方便,同时 使锁更安全。 最后也感谢指导老师这两周对我课设中存在的问题进行详细的解答 与帮助。参考文献1 谢自美 .电子线路设计实验测试 M. 武汉 :华中理工大学出版社 ,1992.2 刘湘涛 .江世明 .单片机原理与应用 M. 北京 :电子工业出版社 ,2006.3 李光才 .单片机课程设计实例指导 M. 北京:北京航空航天大学出版社 ,2004.4 王思明等编著 .单片机原理及应用系统设计 .北京:科学出版社, 2012.附录 1 源程序#include#includ

15、e#define uchar unsigned charsbit rs=P10; /寄存器选择位 将 rs 定义为 的引脚sbit rw=P11; /读写选择位将 rw 定义为 的引脚sbit en=P12; /使能信号位将 en定义为 的引脚sbit ledg=P20;sbit ledr=P21;sbit relay=P14;sbit buzz=P15;char table0=error;char table1=open;char table2=password:; /int temp,ch,m0,m1,p,n0,n1,n2,n3,n4,n5;void delay(int z)int x,c

16、;for(x=z;x0;x-)for(c=100;c0;c-);keyscan()temp=P1&0xf0;P1=0xfe;delay(1);temp=P1&0xf0;while(temp!=0xf0) switch(temp)case 0xe0:ch=7;break;case 0xd0:ch=8;break;case 0xb0:ch=9;break;default:ch=p;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfd;delay(1);temp=P1&0xf0;while(temp!=0xf0)switch(temp)case

17、0xe0:ch=4;break;case 0xd0:ch=5;break;case 0xb0:ch=6;break;default:ch=p;break;while(temp!=0xf0) temp=P1;temp=temp&0xf0;P1=0xfb;delay(1);temp=P1&0xf0;while(temp!=0xf0)switch(temp)case 0xe0:ch=1;break;case 0xd0:ch=2;break;case 0xb0:ch=3;break;default:ch=p;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P

18、1=0xf7;delay(1);temp=P1&0xf0;while(temp!=0xf0)switch(temp)case 0xe0:ch=A;break;case 0xd0:ch=0;break;case 0xb0:ch=B;break;default:ch=p;break;while(temp!=0xf0)temp=P1; temp=temp&0xf0;return ch;void wcom(uchar com) rs=0;P0=com;delay(1); /写命令延时可以为 1en=1;delay(1); /写命令延时可以为 1en=0;void wdat(uchar dat)rs=1

19、;P0=dat;delay(1); /此处写数据延时可以为 1en=1; delay(4); /此处写数据延时至少为 4en=0;void init()en=0;wcom(0x38);wcom(0x0c);wcom(0x06);wcom(0x01);void error()char m2;wcom(0xc6);for(m2=0;m25;m2+)wdat(table0m2);void open()char m2;wcom(0xc6);for(m2=0;m24;m2+)wdat(table1m2);void pass()char m2;wcom(0x80);for(m2=0;m20;m4-)keyscan();if(keyscan()=A)m4=0;m3=0; ledg=1;if(m3!=0)for(m5=200;m50;m5-)keyscan();if(keyscan()=A)m3=0;elseledr=1;error();buzz=1;delay(5000); 精心搜集整理,只为你的需要

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1