当前位置:文档之家› 改装密码锁实验报告

改装密码锁实验报告

(2)心得体会
一分耕耘一分收获,这次实验,把这句话展现的淋漓尽致。我想在实验成功的那一刹那,就是对我们这历时一周的忙碌最好的报答。
这次实验还算顺利,在规定日期前就完成了任务。时间呢,可能大部分花费在解决一些不可预知的问题上了,无论是连电路,还是写代码,虽然也会出现问题,整体来说还算顺利。
有时候一整天都待在实验室,虽然说累,但是很值得。怀揣着一份新奇,不断尝试,感觉那样的日子很充实,很快乐。
2.设计用途
由于本设计成本较低且安全性能稳定,可适用于家庭防盗、行李箱、车载行李箱等一些安全性能要求不高且需要便携的产品上,其安全性能远远优于同等成本的安全性。其中输入密码错误无限报警和自动锁死的功能能提高用户的警觉性,降低失窃率。更重要的是本设计的键盘重新定义的思想可移植到自动提款机、公共场合的提款装置等,可以防止用户输入密码时被别人偷看、窃取等,增加用户提款时的安全性。LCD具有良好的人机友好界面,在未开锁之前显示“welcome”,并且只有知道如何开锁才能使用密码锁,进一步提高了安全性能。
3.设计功能
(1)系统功能:
1、密码键盘的输入:包括0-9数字输入、A-F为功能键。
键盘默认如下:
1 2 34
5678
90AB
CDEF
其中A代表reset(复位),B代表*,C代表关锁,D代表clear(删除),E代表change(修改),F代表#。
2、液晶显示:主要用于液晶显示屏将具体输入数字用*号代替,便于用户看到自己是否输入六位。最开始显示“Welcome”字样,然后显示操作指南“A=reset,B=*,C=close,D=del,E=change,F=#,”密码输入正确显示“right”绿灯亮并有音乐播放,密码输入错误显示“wrong”红灯亮蜂鸣器响提示输入错误。
***:实现键盘模块功能,编写了键盘的扫描函数和键盘相应状态控制函数,完成了其它一些小函数的编写。在最后实验调试中起到了重要的作用。
八、实验总结和心得体会
(1)实验总结
①概括这次实验
本项目是做一个基于ATMega 16单片机的电子密码锁,通过4×4键盘和LCD液晶显示,实现了密码锁的基本功能,并在此基础上进行音乐改装。
(3)扩展功能:
倒计时功能:密码三次输入错误后需间隔半分钟(或更久)后才能再次输入,LCD液晶显示倒计时时间。
密码重置时密码可以任意长度。
液晶显示变幻:可实现闪烁,无限滚动等效果(利用C语言编程实现)。
三.硬件设计
1.系统硬件设计思路
系统以Atmega16单片机为控制核心,4*4键盘作为输入模块,1602液晶显示屏作为显示模块实现密码锁的各项功能。
关键字:ATMega16 AVR单片机 、密码锁、 键盘、 LCD 、开锁、倒计时、喇叭
一.先前准备(流水灯数码管)
在实现大型程序之前我们进行了简单的流水灯数码管试手。该程序实现了每一秒流水灯循环移位以及数码管计时的功能, 并实现了数码管计时的外部中断,在按下按键时数码管计时停止不动,但是流水灯照常工作,取消按键时数码管继续从原来的地方开始计数。
我们的出发点是设计出既安全又成本低的密码锁。 我们的密码锁有如下功能:密码验证、修改密码、输入错误后鸣笛,输入正确后播放音乐,复位后启动倒计时功能、显示操作指南等功能。
我们收获了很多基础知识,比如说:对键盘进行扫描时,可以采用查询扫描的方法,即先对一行进行扫描,再对列进行扫描,直至将每行每列都扫描一次,通过单片机端口电平的变化,判断哪个按键被按下。当然,我们也掌握了液晶显示屏的各个管脚的左右,也掌握了ATmega16的各个管脚的作用。
(2)处理技术:
1、密码正误信息输出:“确认”输入后,扫描键盘,与EEPROM中的内置密码相比较,若相同,进入“密码重置”功能;否则,在三次提示输入错误后蜂鸣器鸣响报警。
2、密码重置:密码正确后,提示是否修改密码,修改按“g”,并且可以修改任意长度密码。两次输入一致后修改内置密码并液晶屏文字提示如果两次输入不一致则重新进入密码重置。
sei (); //使能总中断
while(1)
{if(dq==0)
{temp = PORTA;
PORTA = PORTA <<1;
dq=1;
if ( temp & 0b10000000)
{
PORTA = PORTA | 0b00000001;
五、实验器材
实验器材
4*4键盘
1个
1602液晶显示
1个
蜂鸣器
1个
发光二极管
2个
喇叭
1个
导线
若干
六、ቤተ መጻሕፍቲ ባይዱ验结果及截图
(1)欢迎界面 (2)操作指南无限循环
(3)当任意按一个键,进入键盘解锁界面 (4)进入输入密码界面
(5)输入六位密码 (6)判断正误(左边正确,右边错误)
(7)修改密码界面
七、分工情况
***:在实验中负责电路搭建与优化,协调输出端口的分配,负责LED显示屏和4*4矩阵键盘代码的编写和原理研究,提出密码锁关于音乐的改装思路。
(3)LED电路:用指示灯模拟继电器。密码输入正确绿灯亮,单片机的PD0端口便会输出高电平;密码输入错误红灯亮,单片机的PD2端口便会输出高电平,此时锁未打开。
(4)喇叭电路:密码输入正确喇叭播放一段音乐,喇叭接PD5。
(5)蜂鸣器电路:蜂鸣器电路用于报警。当密码输入错误时,单片机的PD1端口便会输出高电平,蜂鸣器即发出报警声。
二.设计目的、用途、功能
1.设计目的
随着科技的发展,安全问题越来越受到人们重视,不仅居家安全受到重视,出门在外行李物品的安全问题也受到了很多关注,在此基础上各种安全产品相继问世,密码锁一直都是人们财产安全乃至生命安全的一种重要保障。伴随着人类历史的发展和人们对自身财产安全和人生安全的重视,各种各样的多功能的锁具也相继出现,人们使用的锁具也由传统的机械式锁逐渐发展为安全性能更好,功能更多的电子密码锁。在现代社会,电子密码锁已是一个被大家所熟识的名词。本次试验中将要介绍的电子密码锁是一种通过判断密码输入是否正确来控制电路或是芯片的工作状态。本次试验中,我们在密码锁基础上实现解锁、更改任意长度密码、输入三次错误进入倒计时锁定功能,输入密码成功播放音乐等功能,使得密码锁功能更加丰富,交互界面更加友好。
3.电路原理图
四、软件设计
1.程序设计思想
(1)键盘扫描:键盘扫描程序的流程图如下图所示。对键盘进行查询扫描,确定有键按下后,读取键值,进行延时去抖,再次读取键值,若两次键值相等则返回键值。
一般情况下,我们运用软件进行延时去抖,通常用delay_ms(10),在此期间CPU不能进行其它工作。
(2)LCD显示程序:根据1602的数据手册,我们可以针对其各引脚的定义和内部结构,定义显示字符函数、显示字符串函数、清屏函数和初始化函数,在后续程序中调用即可。
(3)音乐程序:此程序根据ATMEGA16的PD4,PD5端口的第二功能通过定义音乐字符的音调和持续时间来进行音乐的输出。
(3)整体流程:此程序通过设置多个全局变量把各部分的程序统一成为整体。其中input_sign用于标记是否有键按下,当其为1时代表有键按下;state用于标记功能,state=0代表输入密码,state=1代表密码输入成功,state=2代表改密码,state=3代表修改键盘,state=4代表功能选择;数组password[]用于存储密码;数组key[][]用于存储键值。运用if语句即可实现各种功能。
3.紧接着就是显示屏的代码问题,会遇到一些字符显示太快,或者是没有达到预期的结果,但是都通过不断地修改断码来解决问题。距离说一下,就是我要实现的功能是按了*键之后,显示”press #”,但是每次都显示“press *”,后来发现是函数里有一个case少了一个break。
4.最后呢是显示倒计时, 刚开始显示乱码。最后写了这样一个函数LCD_show(m,n); 利用for循环,把数组里的0,1,2等换成‘0’,‘1’,‘2’才解决了问题。
(1)系统硬件方框图如下:
(2)系统工作的流程图如下
2.电路连接原理
(1)键盘电路:4*4键盘采用行列式键盘,使用单片机的8个I/O端口就可以控制16个按键。键盘的8个引脚分别接在PORTB的8个端口。对键盘进行扫描时,可以采用查询扫描的方法:先对一行进行扫描,再对列进行扫描,直至将每行每列都扫描一次,通过单片机端口电平的变化,判断哪个按键被按下。
自然,我们不仅收获了上面所说的知识,也锻炼了自己的动手能力和解决问题的能力。最重要的是也培养了我们团结协作的能力。
②实验中遇到的问题以及解决方案
1.之前在搭建电路时使用了PC2-PC5管脚,发现下载时出错,最后才知道PC2-PC5管脚是下载端,改了电路端口后错误消失。
2.在测试键盘功能时,不能控制键盘,而且按键的时候发现实际功能和预设功能不同,当时觉得很奇怪。后来经过不断地探索,发现是判断按键的那段代码的值错了,在修改之后发现好了了。
{0b10111111,//0
0b00001110,//1
0b11011011,//2
0b11001111,//3
0b01101110,//4
0b11101101,//5
0b11111101,//6
0b00001111,//7
0b11111111,//8
0b11101111//9
};
volatile int temp0 = 0;
int i , j;
char temp;
DDRA = 0xff;
DDRB = 0xff;
DDRD = 0xf7;
PORTD = 0b10111111;
PORTB = 0b10110111;
PORTA = 0b00000001;
MCUCR = (1<<ISC11) ;//INT1设置边沿触发
GICR|=(1 << INT1);//使能INT1中断
相关主题