单片机密码锁设计Word格式.docx
- 文档编号:17689776
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:9
- 大小:20.41KB
单片机密码锁设计Word格式.docx
《单片机密码锁设计Word格式.docx》由会员分享,可在线阅读,更多相关《单片机密码锁设计Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
P2.0~P2.7用于键盘电路的控制。
P1.0~P1.2用于LCD显示模块的控制端口的控制。
3硬件设计
3.1.1芯片选择
本次设计采用AT89C51贴片芯片,AT89C51是一个低电压,高性能CMOS8位单片机,通过用Keil软件编写程序,然后装到单片机里面去,然后让它对整个系统进展信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反响到单片机的各个引脚,来实现按键实现的现象,如:
显示是否开启锁,报警等。
AT89C51提供以下标准功能:
4k字节Flash闪速存储器128字节部RAM,32个I/O口线两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片振荡器与时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口与中断系统继续工作。
掉电方式保存RAM中的容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AT89C51的引脚图如图2所示。
3.1.2单片机最小系统设计
单片机最小系统就是指能使单片机工作的最少的器件构成的系统。
因
为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路
和复位电路就可以构成单片机最小系统。
(1)单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频
率的电路。
图3是时钟电路的PROTEUS仿真图。
单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz,电容
C2,C3的取值对振荡频率输出的稳定性、大小与振荡电路起振速度有一定的影响,
可在20~100pF之间选择,典型值位30pF
〔2〕计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定
的初值,即复位状态。
图4是单片机复位电路仿真图。
单片机RST引脚是高电平有效。
单片机在上电瞬间C1充电,RST引脚端出现正
脉冲,只要RST断保持两个机械周期〔大约10ms〕以上的高电平,单片机就能复
位。
在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成
复位状态。
当晶体振荡频率为12MHz时,RC的典型值为C=10μF,R=8.2KΩ。
3.1.3矩阵键盘设计
一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查
询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。
无论是查
询方式还是中断方式都要用到单片机的I/O口。
由于单片机I/O口较少的原因,当系
统中需要用到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采
用矩阵键盘的方式来实现多按键的功能。
图5是4x3矩阵键盘在PROTEUS中的电路原理仿真图。
矩阵键盘又叫做行列式键盘。
行列式键盘的硬件结构比拟简单,由行输出口
和列输出口构成行列式键盘,按键设置在行、列交点上。
只有当键被按下时相应
的行和列才能相连。
如此,只要检测行和列是否相连就可以知道是否有键按下。
由于按键设置在行、列线交点上,行、列分别连接到按键开关的两端,平时
无键按下时,行线处于高电平,假设列线为低电平,当有键按下时,按下的键就
会将相应的行和列连通,使得对应的行线被列线拉低,也变为低电平。
这就是识
别矩阵键盘是否有键被按下的关键。
当确定有键被按下时,通过逐行扫描,读出I/O口的值可以知道哪一行的值被
改变了,被改变了的行即是被按下的按键所在行。
同时,由于每个键都有它的行
值和列值,行值和列值得组合就是这个按键的编码,当算法一定时,每个按键的
编码是固定的,且各个按键的编码互不一样,所有通过读I/O的值还能具体知道是
哪一个键被按下,这样就实现了键盘的识别。
3.1.4LCD显示模块设计
LCD1602是一种字符型液晶显示器,是一种专门用于显示字母、数字、符号等的
点阵式液晶显示器。
LCD1602的显示容量为16x2个字符〔可以显示2行,每行显示
16个字符〕,芯片工作电压为4.5~5.5V,工作电流为2.0mA〔5.0V〕,模块最优
工作电压是5.0V。
LCD1602具有16个引脚。
在LCD1602的有关设计中,主要是通过编写程序控制
LCD1602的4、5、6引脚来实现数据或者指令的写入和执行,再通过数据或者指令
的写入和执行来进一步实现LCD1602的显示功能。
查资料了解在仿真库中用
lm016l代替LCD602图6是PROTEUS中显示模块的仿真图。
由于LCD要正常工作必须提供足够的电流,因此在实际应用为了保证显示器能够
正常工作,应在数据端口接一上拉电阻,不过此次仿真就没有另外加上拉电阻。
3.1.5报警模块、开锁模块以与表示模块
开锁模块用继电器带一个LED管代替电磁锁。
电路如图7所示;
报警模块用蜂鸣器表示,电路如图8所示;
表示模块用发光二极管表示开锁与否。
3.2硬件连接图
根据电路原理,在PROTEUS中画出各功能模块的仿真图,各个功能模块验证正确后,将所有模块集合到一个电路设计图中,画出具有所有功能的总体硬件仿真图。
在设计过程中,采用单片机AT89C51作为主控芯片,结合键盘输入、显示电路、报警电路、开锁电路、时钟电路、晶振电路,利用合理的连线接成硬件连接图,在Proteus软件平台上选中适宜的AT89C51芯片,LCD显示器,键盘,以与其它电子元件,接成电路。
3.3设计原理
系统工作时,用户通过按键输入6位密码,单片机将输入密码与设定密码进行比拟,假如密码正确,如此相应绿灯闪烁,同时发出开锁信号,将门打开,系统不报警;
假如密码不正确,如此相应的红灯亮闪烁,同时蜂鸣器发出报警声音。
4软件设计
4.1程序设计
C语言编程,源程序清单如附录1所示。
4.2程序流程图
流程图如图4。
5系统仿真与实际调试
5.1Proteus仿真图
仿真结果密码正确,LCD显示器显示“open〞,绿灯亮。
仿真图如附录2所示。
5.2问题分析
电源、晶振电路和复位电路都无异常,LCD显示时出现问题:
(1)刚开始蜂鸣器声音太小几乎听不清楚,后来加了一个三极管放大后声音变
大。
(2)接通电源开门灯和报警电路就会工作,分析原因是单片机刚开始各个管脚输出低电平。
〔3〕开锁电路完成后继电器不吸起,后来经过调试加三极管等等方法后实现了继电器吸起LED灯亮。
6总结
本次设计,采用单片机AT89C51作为主控芯片,结合外围的键盘输入、显示、报警、开锁等电路,用C语言编写主控芯片的控制程序,设计了一款具有报警功能的电子密码锁。
对于本次单片机课程设计,我觉得十分有意义且很有必要。
课堂上,我们大多数接触的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业根底课理论知识运用到实践中去呢?
像此次课程设计就为我们提供了良好的实践平台。
过程中我发现了很多问题,看似很简单的电路,要动手把它给设计出来,是很难的一件事,主要原因是我没有经常动手设计过电路,还有资料的查找也是一大难题,这就要求我在以后的学习中,应该注意到这一点,更重要的是我要学会把从书本中学到的知识和实际的电路联系起来,这不论是对我以后就业还是学习,都会起到很大的促进和帮助,我相信,通过这次的毕业设计,在以后的学习中我会更加努力,力争把这门课学好,学精。
同时,通过本次毕业设计,巩固了我学习过的专业知识,也使我们把理论与实践从真正意义。
另外,通过这两周对电子密码锁的研究和学习,我认为本次设计中使用的这种键盘输入密码的方式可以进展改革。
在越来越高科技化的今天,遥控控制显的愈发重要,今后的电子密码锁应该具有以红外技术或无线电技术为辅助的密码按键输入远程交互技术,这样就能远程输入密码完成操作。
也可以放弃传统的按键输入密码模式,借助传感器技术运用声控来实现密码输入,又或者使用人脸识别技术,或者用户指纹识别技术代替传统的按键输入,这些都可以使开锁的时间更短更方便,同时使锁更安全。
最后也感谢指导教师这两周对我课设中存在的问题进展详细的解答与帮助。
参考文献
[1]谢自美.电子线路设计实验测试[M].:
华中理工大学,1992.
[2]湘涛.江世明.单片机原理与应用[M].:
电子工业,2006.
[3]光才.单片机课程设计实例指导[M].:
航空航天大学,2004.
[4]王思明等编著.单片机原理与应用系统设计.:
科学,2012.
附录1源程序
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
sbitrs=P1^0;
//存放器选择位将rs定义为p1.0的引脚
sbitrw=P1^1;
//读写选择位将rw定义为p1.1的引脚
sbiten=P1^2;
//使能信号位将en定义为p1.2的引脚
sbitledg=P2^0;
sbitledr=P2^1;
sbitrelay=P1^4;
sbitbuzz=P1^5;
chartable0[]="
error"
;
chartable1[]="
open"
chartable2[]="
password:
"
//
inttemp,ch,m0,m1,p,n0,n1,n2,n3,n4,n5;
voiddelay(intz)
{
intx,c;
for(x=z;
x>
0;
x--)
for(c=100;
c>
c--);
}
keyscan()
temp=P1&
0xf0;
P1=0xfe;
delay
(1);
while(temp!
=0xf0)
{switch(temp)
case0xe0:
ch='
7'
break;
case0xd0:
8'
case0xb0:
9'
default:
ch=p;
temp=P1;
temp=temp&
P1=0xfd;
switch(temp)
4'
5'
6'
{temp=P1;
P1=0xfb;
1'
2'
3'
P1=0xf7;
A'
0'
B'
temp=temp&
returnch;
voidw(uchar)
{rs=0;
P0=;
//写命令延时可以为1
en=1;
en=0;
voidwdat(uchardat)
rs=1;
P0=dat;
//此处写数据延时可以为1
delay(4);
//此处写数据延时至少为4
voidinit()
w(0x38);
w(0x0c);
w(0x06);
w(0x01);
voiderror()
charm2;
w(0xc6);
for(m2=0;
m2<
5;
m2++)
wdat(table0[m2]);
voidopen()
4;
wdat(table1[m2]);
voidpass()
w(0x80);
9;
wdat(table2[m2]);
change(intm)
delay(500);
w(m);
wdat('
*'
);
main()
rw=0;
ledg=0;
ledr=0;
relay=0;
buzz=0;
init();
delay(5);
pass();
w(0x89);
while(keyscan()==p)
delay(3);
keyscan();
wdat(keyscan());
n0=keyscan();
change(0x89);
delay(10);
n1=keyscan();
change(0x8a);
n2=keyscan();
change(0x8b);
n3=keyscan();
change(0x8c);
n4=keyscan();
change(0x8d);
n5=keyscan();
change(0x8e);
if(n0=='
&
n1=='
n2=='
n3=='
n4=='
n5=='
)
intm3=1;
open();
relay=1;
delay(3000);
while(m3)
intm4,m5;
for(m4=200;
m4>
m4--)
if(keyscan()=='
m4=0;
m3=0;
}ledg=1;
if(m3!
=0)
for(m5=200;
m5>
m5--)
{
else
ledr=1;
error();
buzz=1;
delay(5000);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 密码锁 设计