电子密码论文Word文件下载.docx
《电子密码论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子密码论文Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
12864显示子程序49
附录2.4:
AT2402存储子程序53
第1章系统总体设计
1.1系统结构
图1-1系统结构图
1.2系统组成
如图2-1所示系统主要由AT89C51、1602液晶显示器、LED、4*4矩阵键盘、蜂鸣器电路等组成。
1.3系统可行性分析
系统工作原理分析:
使用AT89C51单片机、4*4矩阵键盘、LED、1602液晶显示器等。
矩阵键盘分别为0、1、2、3、4、5、6、7、8、9、确认键组成。
系统开始显示“WELCOMINPUT”提示输入密码;
输入密码时,LCD显示电路显示为“*”,当密码输入完毕按下确认键时,对输入密码与设定的密码进行比较,若密码正确则LCD显示电路显示为“welcomightopen”提示绿灯亮;
若密码不正确,LCD显示电路显示提示“worry”。
蜂鸣器发声,三次红灯亮,锁定键盘,可以提高系统的安全系数。
第2章硬件电路设计
2.1单片机AT89C51简介
AT89C51为ATMEL所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。
1.AT89S52主要功能列举如下:
(1)拥有灵巧的8位CPU和在系统可编程Flash
(2)晶片内部具时钟振荡器(传统最高工作频率可至12MHz)
(3)内部程序存储器(ROM)为8KB
(4)内部数据存储器(RAM)为256字节
(5)32个可编程I/O口线
(6)8个中断向量源
(7)三个16位定时器/计数器
(8)三级加密程序存储器
(9)全双工UART串行通道
2.MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
MCS-51的引脚说明:
如图2.1.2
图2.1.289C51的引脚结构
2.24*4矩阵键盘
矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。
节省I/O口。
矩阵键盘工作原理:
行线通过上拉电阻接到+5V上。
无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。
列线电平为低,则行线电平为低;
列线电平为高,则行线电平为高。
如图所示,本系统采用4*4矩阵键盘,前11个按键按顺序分别为0、1、2、3、4、5、6、7、8、9、确认键,后面的键未定义。
用户只能通过键盘输入密码。
图3—24*4矩阵键盘原理图
3.51602LCD液晶显示屏
图3-5液晶屏电路原理图
3.5.1概述
LCD是一种利用液晶的扭曲、向列效应制成的新型显示器。
它具有体积小,质量轻,功耗低,抵制干扰能力强等优点,因而在单片机系统中被广泛应用。
LCD本身不发光,是通过借助外界光线照射液晶材料而实现显示的被动显示器件
3.5.2基本特性:
(1)、低电源电压(VDD:
+3.0--+5.5V)
(2)、显示分辨率:
128×
64点
(3)、内置汉字字库,提供8192个16×
16点阵汉字(简繁体可选)
(4)、内置128个16×
8点阵字符
(5)、2MHZ时钟频率
(6)、显示方式:
STN、半透、正显
(7)、驱动方式:
1/32DUTY,1/5BIAS
(8)、视角方向:
6点
(9)、背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
(10)、通讯方式:
串行、并口可选
(11)、内置DC-DC转换电路,无需外加负压
(12)、无需片选信号,简化软件设计
(13)、工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
模块接口说明:
*注释1:
如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:
模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:
如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
3.5.3并行接口
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
使能信号
7
DB0
三态数据线
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
PSB
H:
8位或4位并口方式,L:
串口方式(见注释1)
16
NC
空脚
17
/RESET
复位端,低电平有效(见注释2)
18
VOUT
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)(见注释3)
20
K
背光源负端(见注释3)
如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。
四.模块主要硬件构成说明
3.5.4控制器接口信号说明
1、RS,R/W的配合选择决定控制界面的4种模式
RS
R/W
功能说明
MPU写指令到指令暂存器(IR)
读出忙标志(BF)及地址记数器(AC)的状态
MPU写入数据到数据暂存器(DR)
MPU从数据暂存器(DR)中读出
2、E信号
E状态
执行动作
结果
高——>
低
I/O缓冲——>
DR
配合/W进行写数据或指令
高
DR——>
I/O缓冲
配合R进行读数据或指令
低/低——>
无动作
3、忙标志:
BF
BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态.
4、字型产生ROM(CGROM):
字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYON),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DFF的状态是指令DISPLAYON/OFF和RST信号控制的。
5、显示数据RAM(DDRAM)
模块内部显示数据RAM提供64×
2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;
此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。
6、字型产生RAM(CGRAM)
字型产生RAM提供图象定义(造字)功能,可以提供四组16×
16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。
7、地址计数器AC
地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。
8、光标/闪烁控制电路
此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。
3.6发光二极管LED
图3-6二极管LED
LED是单片机应用系统中常用的输出设备,LED由发光二极管构成,具有结构简单、价格便宜等特点。
在本次设计中用到了两个LED。
它们由引脚控制,当密码正确时相应的引脚变为低电平从而发光,绿灯亮。
错误时红灯亮。
3.8蜂鸣器
图3-8蜂鸣器
由于蜂鸣器使用P1口驱动要加上上拉电阻如图3-8。
当密码输入错误,P1口变为高电平从而使蜂鸣器发声。
3.9电路原理图
电路仿真图
第4章软件程序设计
本系统软件设计由主程序,初始化程序,LCD显示程序,键盘扫描程序组成。
主要程序设计流程图如下所示:
4.1软件设计流程图
图4—1软件设计流程图
4.2具体功能软件实施
4.2.1开始等待流程
系统开始一直显示提示“请输入密码”,并判断有否按键,当有键按下跳出等待。
图4—2开始等待流程
4.2.2密码检查功能
本系统使用数组PASSWORD[6]存储密码,系统初始化对数组负值PASSWORD[6]={1,6,7,9,10,11}相当于键盘上的1,2,3,4,5,6。
输入密码的时候,先将输入的每一位密码分别放置在数组key[6]中,然后再将key[6]与PASSWORD[6]的每一位分别对照。
若每一位都相等,密码检查通过。
图4—3密码检查
4.2.3键盘扫描
如图3-2,本系统使用4×
4矩阵键盘当没有键按下时,行线和列线之间是不相连的,若第N行与第M列的键被按下,那么第N行与第M列的线就被接通。
根据上述原理,本系统的键盘扫描方法是利用P1口的低四位作为行扫描线,P1口的高四位作为列回扫线。
具体实施方法为:
先使P1.0口输出低电平,P1口其他口输出高电平,然后对P1.4、P1.5、P1.6、P1.7四个口分别作判断。
若此四口都为高电平,则没有键按下;
若有键按下,P1.4、P1.5、P1.6、P1.7四个口必定有一个口输入为低电平,再判断P1.4、P1.5、P1.6、P1.7哪个口为低电平则可判断按键在哪列上。
如P1.4、P1.5、P1.6、P1.7没有低电平,再使P1.1为低电平,其他口为高电平,依次扫描下去,找到按键所在的行,再判断P2口的高四位哪一位为低,便可知道键在哪一列上。
键盘扫描子程序key()如下:
/*******************************************************************3×
4矩阵键盘输入函数
***************************************************************/
#ifndef_keypad_h_
#define_keypad_h_
#include<
reg51.h>
absacc.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharidatacom1,com2;
ucharkey_scan()
{
uchartemp;
ucharcom;
P1=0xf8;
delay(5);
if(P1!
=0xf8)
{
com1=P1;
P1=0x0f;
com2=P1;
}
while(P1!
=0xf8);
temp=com1|com2;
while((P1&
0xf0)!
=0xf0)
;
if(temp==0xee)com=0x01;
if(temp==0xed)com=0x02;
if(temp==0xeb)com=0x03;
if(temp==0xde)com=0x04;
if(temp==0xdd)com=0x05;
if(temp==0xdb)com=0x06;
if(temp==0xbe)com=0x07;
if(temp==0xbd)com=0x08;
if(temp==0xbb)com=0x09;
if(temp==0x7e)com=0x0a;
//10为键值,其代码功能为清除
if(temp==0x7d)com=0x00;
if(temp==0x7b)com=0x0b;
//其代码功能为输入密码结束并确认,即开锁
return(com);
}
#endif
4.2.5修改密码
本系统设定的修改密码过程为,在输入正确的密码后,按“确认”键,此时提示输入旧密码“请输入密码”,输入正确的旧密码后,可以输入新密码。
此时键入的六位新密码将保存到数组key[6]中。
然后显示器提示再次输入,输入完毕后,第二次输入的密码将保存在iic[6]中,然后将key[6]中六位分别与iic[6]中的六位比对,若两次密码输入一直,即将新的密码,也就是iic[6]和iic[6]中的六位赋值到PASSWORD[6]中。
此时修改密码工作完成,屏幕显示“密码修改成功”。
系统将跳翻到开始,即提示输入密码“INPUT”。
参考文献
[1]当方.微型计算机控制技术[M].中国水利水电出版社,2001年
[2]胡汉才.单片机原理及其借口技术[M].清华大学出版社,1996年
[3]赵新民.智能仪器设计基础[M].哈尔滨工业大学出版社,1999年
[4]潘新,民王,燕芳.微型计算机控制技术[M].电子工业出版社,2003年
[5]李钟实.实用电子报警器精选百例[M].北京:
科技技术文献出版社,2002年
[6]陈爱弟.Protel99se实用培训教程[M].人民邮电出版社,2000年。
[7]阎石.数字电子技术基础[M].高等教育出版社,1998年
[8]童诗白.模拟电子技术基础[M].高等教育出版涉,1998年
[9]候振鹏.嵌入式C语言程序设计[M].北京:
人民邮电出版社,2006年
[10]徐士良.C语言程序设计教程[M].北京:
人民邮电出版社,2001年
[11]BrianW.Kernighan.TheCProgrammingLanguage.PrenticeHallPTR,1988
[12]JaniceMazidi.8051MicrocontrollerandEmbeddedSystems.PrenticeHall,1999
[13]
[14]
[15]
[16]
致谢
通过这次毕业设计,让我复习了很多学过的旧知识,同时锻炼了自己的动手能力和查阅资料。
尤其是解决在实际中解决排查问题的能力。
1、通过这次的设计,我熟悉了使用Protel的技巧,学会了制作电路板的一些技巧,并且熟悉了如何选购使用电子元器件。
2、在设计中,我学到了如何使用C语言对单片机进行编写程序,熟悉了使用KEILC软件,并且加深了对单片机的编程技巧。
3、在做这个设计的过程中,我遇到了不少的问题。
这锻炼了我筛选、查阅资料,并将理论结合到自己的设计中的能力。
一步一步的排除故障原因,找到故障的原因并解决故障。
4、这次的设计使我对模拟电子、数字电子知识加深了了解,尤其是在对电路进行调试的时候,出现了很多这些方面的问题,通过对以往知识的复习巩固,将问题解决。
通过次毕业设计,将我从所学到的专业知识,基本都应用上去,感谢大学三年来,老师对我的教育,让我对掌握了基本的专业技能。
同时也感谢戴老师对我毕业设计的指导,在此表示衷心的感谢!
这次的设计有很多的不足,和市场上的产品有一定的差距,还请老师同学们提出宝贵意见!
谢谢!
PCB封装电路图
密码锁设计主程序
/***********************************************************************
函数库函数:
设计者:
电信0902黄柏成
时间:
2012年5月13日
***********************************************************************/
12864.h>
keypad.h>
24C01.h>
ucharidatakey[6]={0,0,0,0,0,0};
ucharidataiic[6]={1,1,1,0,0,0};
voidpress(uchar*s)
uchardat;
//**************************************************
write_com(0x98+2);
//保存第一位密码
while(P1==0xf8);
dat=key_scan();
if((dat!
=0x0a)&
&
(dat!
=0x0b))
{*s=dat;
write_date(0x2a);
s++;
//保存第二位密码
}
//保存第三位密码
//保存第四位密码
//保存第五位密码
//保存第六位密码
do{P1=0xf8;
//键入Enter键盘继续执行下面语句,否则等待
}while(dat!
=0x0b);
voidDelay10ms(void)//延时10ms
uinti,j,k;
for(i=10;
i>
0;
i--)
for(j=4;
j>
j--)
for(k=248;
k>
k--);
/************