基于单片机的电子密码锁Word文档格式.docx
- 文档编号:19802992
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:15
- 大小:297.81KB
基于单片机的电子密码锁Word文档格式.docx
《基于单片机的电子密码锁Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能。
这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。
一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!
但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!
单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码最低级的语言了,既然这么低级为什么还要用呢?
很多高级的语言已经达到了可视化编程的水平为什么不用呢?
原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。
单片机在硬件资源方面的利用率必须很高才行。
本文涉及的是市场占有率很高的MCS—51系列,很多IC生产厂家都生产51兼容的芯片。
到目前为止,WCS-51单片机已有数百个品种。
还不断推出功能更强的产品。
本设计是基于单片机的密码锁设计方案,根据要求,给出单片XX码锁的硬件电路和软件程序,同时给出单片机型号的选择,硬件设计,软件流程图等内容。
关键词:
单片机8051LED数码管
第一章系统总体方案设计
系统总体设计方案如下图
图2-1
该设计可利用单片机中一个用于构成内部振荡器的高增益反相放大器,这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,最好电容使用30pF±
10pF,而如使用陶瓷谐振器建议选择40pF±
10F。
用户也可以采用外部时钟,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
本方案采用一种是以8051为核心的单片机控制方案。
利用石英晶体谐振器和单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现其基本密码锁功能。
初步设计如下,
1输入密码用矩形键盘,包括数字键和功能键。
2用发光二极管代替发光电路,发光表示开锁。
3输入密码错误次数超过三次系统报警。
4打开电源后显示器显示“0000”,设原始密码“1234”输入密码便可开锁,
5重设密码,先输入“*”。
第三章硬件电路设计
3.1键盘电路设计
键盘是单片机系统中最常见的一种人机联系的一种输入设备,由若干个按键组成,用户通过键盘向CPU输入数据或命令以实现简单的人机通信。
对键盘的识别可分为两类:
一类由专用的硬件电路来识别,它使用起来方便,但需要价格昂贵的专用芯片,在单片机系统中一般不采用,另一类靠软件来识别,称为非编码键盘,它的结构简单,价格便宜,应用灵活。
但需要编制相应的键盘管理程序。
单片机普遍采用这种方式。
按键工作处于两种状态:
按下与释放。
一般按下为接通,释放为断开,这两种状态要被CPU识别,通常将两种状态转换为与之对应的低电平或高电平。
CPU通过按键信号电平的高低来判断按键的状态。
使用矩阵键盘,所以本设计采用行列式键盘,可减少键盘与单片机接口是所占用的I/O线的数目,按键比较多时,通常采用这种方法。
其原理图如下
图3-1
每一条行线和列线交叉处通过一个按键来连接,利用这种行列式矩阵结构只需要N条行线和M条列线就可组成N*M个按键。
在这种行列式矩阵键盘非键盘编码的单片机中,键盘处理程序先执行等待按键并确认有无键盘按下的程序段。
确认有键盘按下后,下一步执行识别哪一个键按下。
对照4*4键盘,首先识别键盘中有无键盘按下,由单片机I/O口向键盘送全扫描字00H,把全部的列线置为低电平,然后把列线的电平状态读入累加器A中,如有键按下,总会有一根线电平为低使行线不全为1。
判断键盘中哪一个键被按下,使通过将列线逐列置低电平后,检查行输入状态来实现的。
方法是:
依次给列线送低电平,然后检查行输入状态来实现。
如果全为1,则所按下键不在此列,如果不全为1则按下的键必在此列。
而且是与零电平线相交的交点上的键。
按键列表如下:
表3-1
按键
键名
功能说明
1~9键
数字键
输入密码
*键
重设密码
设定新密码
#键
清除键
显示器清零
理想的按键信号是一个标准脉冲,但键的按下和释放都需要一个过程来实现,在这一过程中是处于高低电平之间一种不稳定状态,称为抖动。
抖动时间的长短,频率的高低与按键机械特征有关,一般在5到10ms之间。
这就有可能造成CPU对一次按键过程进行多次处理。
为了避免这种情况应采取措施消除抖动。
消抖常见有两种方法,硬件消抖:
如用滤波器,双稳态电路等。
另一种用软件来实现,即当发现有键按下时,间隔10ms以上时间,才能进行下一次查询,这样就让过了抖动过程,键的释放进行同样处理。
本设计为减少电路复杂程度,减少成本。
采用软件消抖的方法。
3.2LED显示电路
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按能显示多少个“8”可分为1位、2位、4位等等数码管;
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极()的数码管。
共阳数码管在应用时应将公共极接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极()的数码管。
共阴数码管在应用时应将公共极接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划的同名端“a,b,c,d,e,f,g,“连在一起,另外为每个数码管的公共极增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
本设计的显示电路是为了给使用者以提示而设计的。
本系统采用串行显示的方式,只使用单片机的一个串行口,74LS247驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能,显示电路原理图如下所示。
图3-2
3.3开锁电路
本设计中,基于节省材料的原则,用发光二极管代替电磁锁,二极管发光表示开锁,电路图如图所示。
当P2.0输出低电平时,二极管发光,表示开锁
3.4报警电路
报警电路由蜂鸣器和单片机组成。
选择一只压电式蜂鸣器,压电式蜂鸣器工作时需要约100mA的驱动电流。
蜂鸣器电路如图所示。
当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音。
89c51输出为高电平时,蜂鸣器不发音。
3.5密码存储电路设计
本设计中,智能密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。
锁定状态时,输出锁定信号,实现上锁功能;
正常状态时,锁定信号消失实现开锁功能。
本设计采用AT24C01存储密码。
AT24C01是美国ATMEL公司的低功耗CMOS串行EEPROM,它内含128×
8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。
具有PDIP、MSOP/TSSOP及SOIC等三种封装形式,以适应不同产品的需求。
将密码存入AT24C01中,开锁时,将从面板上的微键盘输入的数字序与AT24C01中存储的密码相比较,如果位数及每一位上的数都相吻合,则进行开锁
程序复位后,先将AT24C01中保存的密码取出,放入RAM缓冲区1中暂存,将定时器、堆栈等进行初始化,为报警系统作好准备,将RAM缓冲区2中的密码初值设置为和RAM缓冲区1中的密码不同,保证程序复位后比较密码不会相同,这时,进入RAM缓冲区1和RAM缓冲区2的密码比较程序,只有当两者位数相同而且每一位数字都相同时,执行开锁动作、输出开锁信号、进入正常状态,否则执行上锁动作、输出上锁信号、进入锁定状态。
在正常状态时,可以进行重新设置密码、上锁等操作,重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至AT24C01中,同时更新RAM缓冲区1。
在锁定状态时,系统启动报警功能,同时等待用户开锁,如发现用户按下“开锁”键,则读入从微键盘输入的数字序列,用其更新RAM缓冲区2,转入密码比较程序,如密码相同则开锁,否则继续等待用户开锁,为防止非法用户恶意多次试探密码,可在程序中设置当连续三次输入错误密码后自动报警,直至开锁后解除。
图3-5
3.6复位电路
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,电路图如图所示
图3-6
图中由按键以及电解电容、电阻构成按键及上电复位电路。
由于单片机是高电平复位,所以当按键按下的时候,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。
当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H开始执行。
第四章软件设计
4.1软件设计思路
电子密码锁工作的主要过程是通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,做出开锁或报警处理。
当输入密码连续三次错误时,系统报警。
密码的的设定在此程序中密码是固定40H~45H中,假设预定密码为“123456”六位。
在正常状态时,可以进行重新设置密码、上锁等操作。
重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至AT24C01中。
按键按其功能分为两种,其中一种为功能键另一种为数字键。
输入密码后,直到所有密码输入完毕按下确认功能键之后,才完成密码输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
4.2键盘扫描子程序设计
键盘扫描流程如图
键盘扫描子程序如下:
intkey()
{
UINT8temp;
P3=0X7f;
temp=P3&
0x0f;
if(temp!
=0x0f)
{
delay(5);
if(temp!
{
temp=P3;
switch(temp)
caseS10:
num=10;
break;
caseS0:
num=0;
caseS11:
num=11;
}
do
{
temp=P3;
temp=temp&
}
while(temp!
=0x0f);
//等待按键抬起
flag=1;
yin();
}
}
P3=0Xbf;
do{
flag=1;
yin();
}
return(num);
}
4.3LED显示子程序
LED显示子程序流程图如下
图4-3
显示函数程序如下:
voidDisplay(UINT8g)
{
staticUINT8n=0;
P2=0xff;
switch(n)
case0:
P0=tab[g];
break;
case1:
case2:
case3:
P2=SELECT[n];
n++;
n%=4;
voidwritedata(UINT8num)//传送一个字节
4.4密码修改比较和报警程序
密码比较流程图如下
图4-4
密码修改与比较程序
if(flag==1&
&
num==15)
{flag=0;
yhsh=0;
shw=1;
num=0;
for(i=0;
i<
16;
i++)//从24c02里读出16个密码
{PSWD1_1[i]=i2cRead24LC16B(i);
delay_10ms();
for(i=0;
i++)
{if(PSWD1_1[i]!
=PSWD0_0[i])
BJCB=1;
break;
else
BJCB=0;
if(BJCB!
=0)
BJC++;
if(BJC!
=3)
BJCB=0;
//第一次和第二次报警
delay(500);
mg=0;
//密码个数清零
for(i=0;
3;
i++)//声光报警电路
L3=0;
display_3();
bjyin(1000);
L3=1;
delay(1000);
gotoloop;
第五章系统调试
(1)静态调试
第一步为目测,单片机应用系统中大部分电路安装在印制电路板上,因此对每一块加工好的印制电路板要进行仔细的检查。
第二步为示波器测试,目测检查后,可进行示波器测试。
第三步为加电检查,第四步实际联机检查。
但注意示波器必须接在入口而不能接在电压大的端口上。
(2)动态调试
一般方法是由近及远、由分到合。
首先按逻辑功能将用户系统硬件电路分为若干份,先分块调试,当调试某块电路时,与该电路无关的器件全部从用户系统中去掉,这样,可将故障X围限定在某个局部电路上。
当各块电路调试无故障后,将各块电路加入系统中,再对个块电路功能及电路间可能存在的相互联系进行试验。
经历这样一个调试过程后,大部分硬件故障基本可以排除。
软件调试一般步骤:
先独立后联机:
一个子程序一个子程序的进行调试,最后单片机连起来总调。
先分块后组合:
逐个芯片逐步调试再和整体芯片一起进行总调。
先单步后连续:
先执行一条指令,在每步后,又返回监控调试状态在从程序任意一条地址处启动,最后全速运行。
第六章总结
设计是培养学生综合运用所学知识,发现提出和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体考察。
随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在,因此作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。
本次设计经过一个月的查资料、整理材料、做实验,今天终于可以顺利的完成论文了,自己想想求学期间的点滴历历涌上心头,时光匆匆飞逝,三年多的努力与付出,随着论文的完成,终于让我在大学的生活,得以划下了完美的句点。
论文得以完成,要感谢的人实在太多了,首先要感谢我的指导老师,和同学。
本论文从选题到完成因为论文是在他们的悉心指导和帮助下完成的,倾注了他们大量的心血。
老师指引我的论文的写作的方向和架构,并对本论文初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向。
常玲等同学帮我查阅的大量的质料,并提出很多宝贵的意见。
在此,谨向他们师表示崇高的敬意和衷心的感谢!
论文的顺利完成,也离不开其它各位老师、同学和朋友的关心和帮助。
在此感谢辅导我实验的各位老师及同学,在整个的论文写作中,各位老师、同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,论文得以不断的完善,最终帮助我完整的写完了整个论文。
另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。
谢谢你们!
第八章附录
8.1系统电路总图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 密码锁