电子密码锁故障分析及仿真测试报告 联系客服

发布时间 : 星期五 文章电子密码锁故障分析及仿真测试报告更新完毕开始阅读383bb4f9a1c7aa00b52acb7e

第二章 前期测试

一、电路原理图及PCB图绘制 1. 仿真调试阶段 1)所遇故障

(1)矩阵键盘初期,数字显示逐渐右移与习惯不符。

(2)ds1302程序在实物中可以使用在仿真时却不出效果。 (3)如何处理时间跟密码输入的切换。 (4)按键不灵敏。

(5)输入数字时显示数字,并不显示‘*’,存在一定的密码泄露风险。 (6)密码锁与时间切换,再次切换回来出错。

2)故障分析及解决方案

(1)按键按下,保存按下数字并显示。

初步思想:定义六位数组table[6],每次按键按下,都将按键值付给数组第一位,造成显示往右移,与习惯不符和。例如按下0、1、2、3、4……如图

4

0001020304050607 解决方法:定义变量i,每次检测到按键按下,将键值赋给table[i++],i自加1。当i大于5时,将i置零。且在重新输入中将i置零。 LCD1LM016LVSSVDDVEERSRWED0D1D2D3D4D5D6D72122232425262728rs4rw5e6 123 (2)ds1302程序在实物中可以使用在仿真时却不出效果。 LCD2LM016LVSSVDDVEERSRWE456VSSVDDVEE123 解决方法:通过上网查资料,得出此由时序问题导致,通过仔细查阅DS1302的时序图,修改时序。

LCD1 LM016LRSRWErs4rw5e61237891011121314D0D1D2D3D4D5D6D77891011121314D0D1D2D3D4D5D6D700010203040506077891011121314 (3)如何处理时间跟密码输入的切换。 单独模块结果出来之后如何让时间显示模块与键盘输入模块切换。

初步思想:将两个while(1){}部分写入一个程序,使用break,跳出一个循环然后进入另一个死循环,结果按键不灵敏。

解决方法:上网搜索两个死循环之间的切换问题,找到定义变量flag0,让后再每个循环前加上if(flag0==0/1)判断进入那个循环。 (4)按键不灵敏。

初步想法是:程序里包含了太多的延时。

5

0001020304050607

LM016L 切换前

LM016LLM016LLCD1123VSSVDDVEErs4rw5e6(6)密码锁与时间切换,再次切换回来出错。 错误显示: LCD1123VSSVDDVEERSRWED0D1D2D3D4D5D6D7rs4rw5e600010203040506077891011121314123VSSVDDVEERSRWED0D1D2D3D4D5D6D7RSRWE解决方法:减少延时时间尽量不用,将延时函数延时时间减短,将标志数增加。

(5)输入数字时显示数字,并不显示‘*’,存在一定的密码泄露风险。 问题显示:

LCD1

解决方法:查阅1602资料,知道‘*’在1602里是0x2a,这样就可以在显示的时候输入数据位“0x2a”。

6

0001020304050607789101112131400010203040506077891011121314D0D1D2D3D4D5D6D7rs4rw5e6 LCD1LM016LVSSVDDVEERSRWErs4rw5e612300010203040506077891011121314D0D1D2D3D4D5D6D7 切换后 解决方法,回到源程序,手写流程图,根据流程图解决切换后时序问题。修改将DS1302的初设值放在主函数最开始,不放入while(1)循环中。。修改后: LCD1LM016LVSSVDDVEERSRWErs4rw5e612300010203040506077891011121314D0D1D2D3D4D5D6D7 再次切换试验。

2. 绘制PCB阶段

由于本组成员均为接触过PCB版图的绘制,此次设计中我们采用了proteus中自带的一键生成PCB版图的功能。在绘制过程中,由于初次接触该功能,发现仿真图中所用的元件并未完全导入ARES,如下图所示:

按键均未导入ARES中。这说明按键并不在网表中,于是返回仿真图中查看发现按键没有网络标号。添加网络标号后成功导入。如下图所示:

7