基于51单片机的多功能电子密码锁故障分析及仿真测试报告_精品.doc
文本预览下载声明
基于51单片机的多功能电子密码锁故障分析及仿真测试报告
2013.11.15
目 录
目 录 1
项目基本信息 2
第一章 引言 3
1.1 目的 3
1.2 背景 3
1.3 测试对象 3
1.4 测试工具 3
第二章 前期测试 4
一、电路原理图及PCB图绘制 4
1. 仿真调试阶段 4
1)所遇故障 4
2)故障分析及解决方案 4
2. 绘制PCB阶段 7
3. 心得体会 11
第三章 后期测试 13
一、测试情况及结果 13
二、 功能测评 13
1. 测试方法 13
2. 测试结论 13
1 功能性 13
2 易用性 14
第四章 测试总结 15
项目基本信息
项目名称 基于51单片机的多功能电子密码锁
开发软件 Keil 、Protuse
所用语言 C语言
项目测试时间 8周
测试参与人员分工 程序编写
编译仿真文档编写第一章 引言
目的
总结测试阶段所遇到的故障与解决方法,验证系统是否符合需求功能目标。
背景
信息安全的泄露,引发了人们对安全保险的重视。密码锁的出现满足了人们对信息安全的要求。电子密码锁代替机械式密码锁,安全且美观,并弥补机械锁只有一个密码且密码不可改的缺陷。
伴随着科学技术的发展,大规模集成电路技术越来越成熟,单片机的问世,为带微处理器的智能密码锁的实现提供了可能,并在电子密码锁的基本功能上引入智能化管理、专家分析系统等功能,从而增加了密码锁的安全性、可靠性,使其应用日益广泛。
1.3 测试对象
基于51单片机的多功能电子密码锁
1.4 测试工具
Keil 编译软件和proteus 仿真软件
第二章 前期测试
一、电路原理图及PCB图绘制
1. 仿真调试阶段
1)所遇故障(1)矩阵键盘初期,数字显示逐渐右移与习惯不符。
(2)ds1302程序在实物中可以使用在仿真时却不出效果。
(3)如何处理时间跟密码输入的切换。
(4)按键不灵敏。
(5)输入数字时显示数字,并不显示‘*’,存在一定的密码泄露风险。
(6)密码锁与时间切换,再次切换回来出错。
2)故障分析及解决方案(1)按键按下,保存按下数字并显示。
初步思想:定义六位数组table[6],每次按键按下,都将按键值付给数组第一位,造成显示往右移,与习惯不符和。例如按下0、1、2、3、4……如图
解决方法:定义变量i,每次检测到按键按下,将键值赋给table[i++],i自加1。当i大于5时,将i置零。且在重新输入中将i置零。
(2)ds1302程序在实物中可以使用在仿真时却不出效果。
解决方法:通过上网查资料,得出此由时序问题导致,通过仔细查阅DS1302的时序图,修改时序。
(3)如何处理时间跟密码输入的切换。
单独模块结果出来之后如何让时间显示模块与键盘输入模块切换。
初步思想:将两个while1部分写入一个程序,使用break,跳出一个循环然后进入另一个死循环,结果按键不灵敏。
解决方法:上网搜索两个死循环之间的切换问题,找到定义变量flag0,让后再每个循环前加上if(flag00/1)判断进入那个循环。
(4)按键不灵敏。
初步想法是:程序里包含了太多的延时。
解决方法:减少延时时间尽量不用,将延时函数延时时间减短,将标志数增加。
输入数字时显示数字,并不显示‘*’,存在一定的密码泄露风险。
问题显示:
解决方法:查阅1602资料,知道‘*’在1602里是0x2a,这样就可以在显示的时候输入数据位“0x2a”。
密码锁与时间切换,再次切换回来出错。
错误显示:切换前 切换后
解决方法,回到源程序,手写流程图,根据流程图解决切换后时序问题。修改将DS1302的初设值放在主函数最开始,不放入while1循环中。。修改后:
再次切换试验。
2. 绘制PCB阶段
由于本组成员均为接触过PCB版图的绘制,此次设计中我们采用了proteus中自带的一键生成PCB版图的功能。在绘制过程中,由于初次接触该功能,发现仿真图中所用的元件并未完全导入ARES,如下图所示:
按键均未导入ARES中。这说明按键并不在网表中,于是返回仿真图中查看发现按键没有网络标号。添加网络标号后成功导入。如下图所示:
在元件导入的过程中,软件提示需要对未封装的元件进行封装,如下图所示:
由于在默认的库里面没有对按键的封装,需要我们自己画一个按键的封装。
1. 首先需要放置焊盘,如图所示:
在编辑界面中点击左侧工具栏中的或图标用于放置焊盘,这时对象选择器中列出了所有焊盘的外径和内径的尺寸,如图所示:
将第一个焊盘放在原点处,如下图:
单击工具栏中的图标,切换为光标操作模式,选中刚才放置的焊盘,然后选择“Edit/编辑”中的“
显示全部