彭世平密码锁课程设计说明书618文档格式.docx
- 文档编号:8134163
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:45
- 大小:381.16KB
彭世平密码锁课程设计说明书618文档格式.docx
《彭世平密码锁课程设计说明书618文档格式.docx》由会员分享,可在线阅读,更多相关《彭世平密码锁课程设计说明书618文档格式.docx(45页珍藏版)》请在冰点文库上搜索。
1设计课题任务、功能要求说明及总体方案介绍
1.1设计课题任务
课题:
任务:
设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示界面,进入准备工作状态,能完成开锁、超次锁定、修改用户密码等基本的密码锁的功能。
1.2功能要求说明
该密码锁上电或按键复位后能自动显示系统提示符“P”,具有不可修改的超级用户密码000000和系统原始普通用户密码888888。
并且可以修改用户密码,修改后的密码在掉电的情况下同样能保存。
密码输入正确时回提示正确的信息,否则就会报错。
1.3设计课题总体方案介绍及工作原理说明
该系统由AT89S52单片机作为核心控制,选用带字库功能的LCD12864作为界面显示,并采用了有掉电保护功能的EEPROM数据存储器来实现断电后密码不消失,当输入错误密码超过三次时,用蜂鸣器产生报警信号。
其系统控制原理框图如图1所示。
图1系统控制原理图
2设计课题硬件系统的设计
2.1设计课题硬件系统各模块功能简要介绍
2.1.1单片机最小系统
能让单片机运行起来的最小硬件连接就是单片机的最小系统电路。
该部分电路包括电源电路、震荡电路和复位电路。
单片机的工作电源接的是+5V的电源,VCC接40引脚,电源地GND接20引脚。
因为单片机内部有程序存储器,所以第31引脚应该接高电平。
震荡电路用于产生时钟信号,在单片机内部有两个引脚,分别是XTAL1和XTAL2。
在这两个引脚上接上12MHz的晶振和两个33pF的电容构成一个自激震荡器。
复位电路的功能是使单片机回到初始化状态,51单片机的复位引脚输入是RST引脚,高电平有效。
复位方式分为按键复位和上电复位两种。
按键复位是人为的给RST输入端一个高电平,只要有10ms的保持时间,就能实现复位。
上电
2.1.2行列式键盘输入模块
此次设计由于用到的按键较多,为了节省口线空间,采用矩阵键盘的设计思路。
共用了16个按键,组成了4行4列的行列式键盘,分别代表数字键“0~9”、取消功能键“C”、确定功能键“P”、改密功能键“*”、开锁功能键“#”。
行列式键盘的扫描方式有三种。
分别是程序控制扫描方式,定时扫描方式和中断扫描方式。
这里采用程序控制扫描的方式。
2.1.312864液晶显示模块
带字库的液晶12864LCD的分辨率是128×
64,包含了8192个常用汉字和128个ASC
字符集。
12864点阵型LCD和单片机的连接有串口连接和并口连接两种。
此次设计中采用的是并口连接方式。
12864LCD主要由1片行列驱动控制器ST7920、3个列驱动器ST7921和12864点阵显示屏构成。
其中ST7920包含中文字型产生CGROM和半宽字型HCGROM、字型产生CGRAM、显示DDRAM、忙标志BF和地址计数器AC。
在使用12864LCD点阵屏时,应该注意:
要先设置显示字符的位置,然后再输入要显示的内容。
当字符是两个字节时,要先写高位字节再写低位字节。
模块在接收指令前,必须要查忙,确定是否在非忙状态。
2.1.424C02掉电保护模块
串行E2PROM是基于I2C-BUS的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。
本设计中使用的24C02存储容量为2K位。
2.2设计课题电路原理图、PCB图、元器件布局图
2.2.1电路原理图
PROTEL原理图(见附录A)、CAD原理图(见附录B)
2.2.2电路PCB图
电路顶层PCB图(见附录C)、电路底层PCB图(见附录D)
2.2.3元器件布局图
元器件布局图(见附录E)
2.3设计课题元器件清单
元器件清单(见附录F)
3设计课题软件系统的设计
3.1设计课题使用单片机资源的情况
AT89S52的片外资源:
P0、P1、P2:
基本输入输出口;
P3.0:
en(12864液晶);
P3.1:
rs(12864液晶);
P3.2:
rw(12864液晶);
P3.3:
BEEP(蜂鸣器);
P3.6:
SDA(24C02存储器);
P3.7:
SCL(24C02存储器);
XTAL1、XTAL2:
晶振输入;
RST:
复位输入;
AT89S52的片内资源:
通用寄存器区;
专用寄存器SFR:
A、PSW、SP、P0、P1、P2、P3等。
3.2设计课题软件系统各模块功能简要介绍
3.2.1主函数模块
主函数用于设置初始化界面,通过调用不同的功能模块,来实现密码锁密锁密码的提示、输入、修改等操作。
3.2.2液晶显示模块
12864LCD液晶模块,其数据输入输出引脚(DB0~DB7)接单片机的P0口,使能端(E)接单片机的P3.0引脚,数据/指令(RS)引脚接单片机P3.1口,读写(R/W)引脚接单片机的P3.2口。
液晶显示是通过在主程序中调用相关的液晶功能函数来实现各部分内容,从而达到设计的要求。
3.2.3掉电保护模块
掉电保护模块的软件实现模块主要是通过主函数调用24C02相关的功能函数来实现掉电的存储。
24C02的串行数据线SDA和串行时钟线SCL分别挂在单片机的P3.6,和P3.7引脚上,来实现数据的双向传送。
数据保存在24C02里面以后,能保证数据10年内不消失。
3.2.4行列式键盘模块
行列式键盘的软件实现是通过在主程序中调用函数keyscan()来达到相应的功能,4×
4的行列式键盘第1到4行分别连接到单片机的P1.0到P1.3口线上,第1到4列分别挂在单片机的P1.4到P1.7口线上。
此次设计的键盘扫描是程序控制的扫描方式,当单片机空闲的时候才调用扫描函数,单片机在处理数据的过程中,CPU不在响应键入要求,知道CPU重新扫描键盘开始。
3.2.5基础函数模块
通过调用surperlogin(void);
userlogin(void);
voidscanf1();
set();
voidbaojing()等函数,实现不同用户身份用户的登录、输入密码、修改密码、报警、开锁等功能。
3.3设计课题软件系统程序流程框图
3.3.1主函数
图2主函数流程框图
3.3.2液晶显示
图3液晶显示函数流程框图
3.3.3掉电保护
图4掉电保护模块流程框图
3.3.4行列式键盘
图5键扫函数流程框图
3.3.5基础函数
图6超级用户开锁函数流程框图
图7普通用户开锁函数流程框图
图8用户修改密码函数流程框图
3.4设计课题软件系统程序清单
程序清单见附录G
4设计结论、运行结果、误差分析及体会
4.1设计课题的设计结论及使用说明
编写程序后,用keil软件编译调试以后没有错误,也没有警告。
下载程序到实验板上操作,密码锁能按照预期的要求正常工作,说明程序已经设计成功。
4.2设计课题的结果
把程序下载到单片机里以后,主要实现的功能通过12864液晶显示屏显示,各个部分的功能实现如图所示:
图9初始化界面图10开机界面
图11超级用户登录界面图12普通用户登录界面
图13超级用户登录密码错误界面图14用户登录密码错误界面
图15超级输入密码正确开锁界面图16用户输入密码正确开锁界面
图17用户设置新密码界面图18设置密码二次确认界面
图19密码修改不成功界面图20密码设置成功界面
4.3设计课题的误差分析
此次密码锁功能的实现有一定的误差。
误差来源主要来自以下几个方面。
行列式键盘中,由于采取的是程序扫描的控制方式,只有当单片机空闲时进行扫描,实时性有所下降。
而且由于单片机在执行延时程序的时候不能做其他的工作,有可能会出现异常情况。
利用中断扫描方式的话可以相对减小误差。
对于12864液晶显示:
此次设计使用12864的液晶,启动的时候时序变化的要求是通过延时的方法实现的,并没有对液晶进行热启动。
在设计中,为了保证单片机发指令时液晶当前为空闲状态,多处用延时的方法等待前一个指令确定执行完成,使得单片机运行效率大打折扣。
如果用液晶判忙可以弥补这一缺陷。
24C02的误差来源主要是首次上电后读不出24C02里面的状态,所以要首先对24C02初始化,然后把程序下载到实验板上。
当初始化完以后,用户去掉初始化语句再下载,进行相关操作。
这样我们就知道24C04里面的内容了,并可以对其进行修改。
缺点主要在于操作麻烦一些。
4.4设计体会
经过几个星期的努力,单片机的课程设计终于完满完成了,回想起来,感触良多。
刚开始学习单片机的时候,王老师就布置了课程设计的任务。
王老师强调:
带着任务学习是最有效的学习方法之一。
那时候不知道课题的难度,打听了一下,知道密码锁比较具有挑战性,于是就选择了这个课题。
当时真的什么都不懂,不知道怎样入手。
直到王老师给我们讲了课程设计的基本思路与框架的时候,才有点感悟,知道了密码锁是由哪些模块组成。
接下来就是怎样学习每个模块了。
但那时候连一些基本的编程都还不会,于是便搁置了一段时间。
接下来的时间大部分是上课以及实验。
在这个过程中,认识了单片机的内部结构,掌握了基本编程的技巧,为以后的课程设计打下了坚实的基础。
于是我开始学习密码锁的各个模块,对于液晶模块,我选择了带中文字库的LCD12864,因为它功能强大,编程简单。
我当初是找了一些LCD12864的一些中文资料,但发现要掌握它也不是特别容易,于是我就找了一些视频来看。
后来接着学习了存储器24c02以及矩阵键盘。
通过这次课程设计我发现,不管是学习什么,尤其对于我们工科生来说,实践特别重要。
通过实践,能更好的掌握所学的知识。
因为在实践的时候能够发现一些平时不会注意到的一些问题,通过解决问题,从而更深的掌握所学的知识。
结束语
此次课程设计基本上是成功了,达到了基本的要求。
但是还有很多值得改进的地方。
比如说修改密码的时候,即使是只修改成三位的,也能成功。
也就是说,并没有六位的限制,保密性有所下降。
但考虑到系统的实现性,还是保留了这样的设计。
本次课程设计中,充分的把单片机所学的知识运用起来了。
但还有很多内容是单片机课程上没有学的。
比如说液晶模块,行列式键盘模块,还有24c02掉电保护模块。
这些内容都要通过自学。
在整个课程设计中,在文档处理方面还遇到了一点小小的阻碍,就是如何把所画CAD原理图清晰的插入到Word文档中,尝试了很多方法都不能如意。
后来才发现可以直接插入CAD模板然后再把图复制到里面,就能得到很清晰的矢量图了。
总之,通过这次课程设计,锻炼了自己的动手能力以及独立思考问题的能力,把所学的知识,真正的学以致用。
致谢
这次课程设计能够顺利完成,我首先要感谢王韧副教授,在学习单片机的过程中,王老师给了我很多启发,他独特的授课方式以及对学生的严格要求,培养了我自主思考问题的能力。
从第一堂课到最后一节课结束,王老师总是充满激情与活力,在这个过程中很大程度的鼓舞了我。
同时也让我对单片机的学习产生了兴趣。
通过王老师的教导,我的这次的课程设计完成的比较顺利。
刚开始做板子的时候,王老师就说,希望我们能遇到问题然后想办法去解决它,这样才能对所学的东西有所掌握。
所以,在这次课程设计的整个过程中,遇到问题时我没有放弃,而是积极的去解决。
在课程设计的过程之中,同时也得到的学校许多的老师和同学热情的指导和帮助。
另外,在实际程序的编写的过程遇到许多困难,周围的同学也给了我细心的解答。
在此,我对在我的设计和制作密码锁过程中给予我帮助的每一个人表示由衷的感谢。
参考文献
[1]李广弟.单片机基础[M],北京:
北京航空航天大学出版社,2007
LiGuangdi.microcontrollerbasedon[M],Beijing:
BeijingAerospaceUniversityPress,2007
[2]张洪润.兰清华,单片机应用技术教程[M],北京:
清华大学出版社,1997.11.
ZhangHongrun,LanQinghua,MCUapplicationtechnologytutorial[M],Beijing:
TsinghuaUniversityPress,1997.11.
[3]曹巧媛.单片机原理及应用[M],北京:
电子工业出版社,1997.7.
CaoQiaoYuan.MicrocontrollerTheoryandApplications[M],Beijing:
ElectronicIndustryPress,1997.7.
[4]康华光.电子技术基础模拟部分(第五版)[M].北京:
高等教育出版社,2006
kanguhguano.Electronictechnologyfoundationsimulationpart(fifthedition)[M].Beijing:
highereducationpress,2006
[5]邱光源.电路(第五版)[M].北京:
QiuGuangYuan.Circuit(fifthedition)[M].Beijing:
[6]阎石.数字电子技术基础(第五版)[M].北京:
YanShi,digitalelectronictechnologyfoundation(fifthedition)[M].Beijing:
附录
附录A:
PROTEL原理图
附录B:
CAD原理图
附录C:
电路顶层PCB图
附录D:
电路底层PCB图
附录E:
元器件布局图
附录F:
元器件清单
表1元器件清单
序号
元器件名称
规格
数量
1
瓷片电容
33pF
2
3
大按键
奥姆龙带方形帽子
17
4
存储芯片
24C02
5
ISP下载口
7
液晶
LCD12864
8
三极管
9012
9
蜂鸣器
10
单片机
AT89S52
11
电阻
1K
12
2K
14
排阻
10K
15
蓝白电位器
50K
六角开关
18
无源晶振
12MHz
19
单排插针
40P
20
单排插槽
21
单排圆孔插母
22
USB下载线
23
8P芯片插座
8P
24
单片机锁紧座
附录G:
程序清单
/*****************************************************************
项目名称:
编程作者:
彭世平
指导老师:
王韧
完成时间:
2014年6月
项目功能:
密码锁上电或按键复位后能显示初始化界面
具有不可修改的超级密码000000
具有系统原始用户密码888888
用户可以设定并存储用户密码
密码输入时处于保密显示状态
密码输入错误累计不到3次时报错
密码输入错误累计达到3次时报警
密码输入正确时显示密码输入正确提示信息
IO说明:
PSB接VCC,EN接P30,RW接P31,RS接P32,P33接蜂鸣器
SDA接P36,SCL接P37,液晶P0,行列式键盘P1
******************************************************************/
/**************************密码锁主函数***************************/
#include<
reg52.h>
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitBEEP=P3^3;
uchartab[6];
ucharbuf[6];
uchari2c[6]={0x38,0x38,0x38,0x38,0x38,0x38};
函数名称:
键扫描函数
*****************************************************************/
ucharkey;
/***************************延时函数*****************************/
voiddelay(uintm)
{
while(--m);
}
/***********************行列式键盘扫描程序***********************/
ucharkeyscan(void)
ucharscan,tmp;
//列号,行号
P1=0xf0;
//发全行0扫描码
if((P1&
0xf0)!
=0xf0)//若有键按下
{
delay(1000);
//延时去抖
if((P1&
=0xf0)//判键是否还按下
{
scan=0xfe;
while((scan&
0x10)!
=0)//逐行扫描
{
P1=scan;
//输出行扫描码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 彭世平 密码锁 课程设计 说明书 618