随着科技的发展,安全问题越来越受人们关注,各种安全产品相继问世,如指纹防盗,红外防盗等,虽然这类产品的安全性较高,但其成本也同样较高,携带安装都不方便也同样限制了其发展。本文利用ATMega 16单片机,通过4×3键盘和七段数码管显示,除实现了密码锁的密码验证、重新设置和输入错误报警等基本功能外,还创新性的实现了键盘的重新定义。通过对键盘的重新定义可以有效的防止密码被盗,同时也降低了成本,便于携带安装。
一、设计目的、用途、功能
1.设计目的
随着科技的进步,安全问题越来越受人们重视,市场上也相应的出来很多产品,如指纹防盗,红外防盗等。最然其安全性能很高,但是成本也相对较高,也不方便携带和安装。本设计的目的就是为了保证高安全性的前提下,实现降低成本,方便携带安装。
2. 设计用途
由于本设计成本较低且安全性能稳定优良,可适用于家庭防盗、行李箱、车载行李箱等一些安全性能要求不高且需要便携的产品上,其安全性能远远优于同等成本的安全性。本设计的键盘定义的思想可移植到自动提款机、公共场合的提款装置等,可以防止用户输入密码时被别人偷看、窃取等,增加用户提款时的安全性。
3.实现功能
1)密码设置功能:默认情况下,默认密码为“6666”,键盘默认为
“ 1 2 3
4 5 6
7 8 9
# 0 * ”
当键盘按下时,即为密码输入,每输入一位,七段数码管显示“8”并左移一位。如果输入正确,即显示“PASS”;如果输入错误,即显示“ErOr”,输入错误达到三次,键盘自动锁死,无法再次输入,并且蜂鸣器发出警报。输入过程中按“*”可以删除输入错误的数字,同时显示也右移一位。
2)键盘重新定义功能:当密码输入正确后再按下“#”,即进入选择修改功能,再次输入“#”即进入键盘重新定义功能。依次按下每个按键,即从0开始定义,直到9即定义结束(“*”“#”键无法被重新定义)。输入过程中,每输入一位,蜂鸣器响一声,直到完全将“0~9”重新定义结束。此时数码管显示“PASS”,键盘即为重新定义后的键盘,再次输入密码时必须按照重新定义后的键盘输入。同样,输入过程中,按“*”键可以删除上一位输入的数字。
3)功能复位:当有人输入三次错误触发蜂鸣器时,蜂鸣器会一直响,发出警报,直到其主人按下“reset”键,全部恢复默认。
二、硬件设计
1. 硬件设计思路
1)键盘输入:采用4×3式矩阵键盘输入,三列从左往右依次对应PB0、PB1、PB2,四行从上往下依次对应PB4、PB5、PB6、PB7。
2)显示:显示采用共阳极七段数码管显示,四位数从右往左依次与PD0、PD1、PD2、PD3。七段数码管的a b c d e f g对应端口PA0,PA1,PA2,PA3,PA4.PA5,PA6。
3)报警:当密码输入错误达到三次时,键盘被锁,并且于端口PC0输出高电平,驱动蜂鸣器持续响。
2.电路原理图
三、软件设计
1.程序设计思想
1) 键盘扫描:
AVR课上学习的键盘扫描程序为了消抖,而进行了软件消抖处理, “delay_ms(10); //延时去抖”。由于对CPU调用了“delay函数”,而使CPU在这10ms内无法进行其他工作,因此而浪费了CPU,降低了CPU效率。鉴于以上缺陷,我们对键盘扫描程序做了很大改进,采用定时器中断与比较中断相结合的方式,在读取按键是否按下的两次确认之间的时间里,CPU可以继续进行其他工作,从而提高了CPU的效率。
2) 七段数码管的显示
针对本实验的实际情况:密码通过和重新定义键盘通过时,七段数码管显示“PASS”,错误时显示“ErOr”,因此为了提高程序运行的效率,采用指针变量输出的方式,即将“PASS”和“ErOr”的显示预存在存储器中,当需要时,指针变量指到相应的存储器显示。对每输入一位左移的显示则采用动态扫描的方式。
3)蜂鸣器报警:
对PC7端口输出高电平驱动蜂鸣器发出警报。
关键字:ATMega16 单片机 密码锁
引用地址:
基于ATMega16单片机的密码锁的设计
推荐阅读最新更新时间:2024-05-02 22:57
伺服电机控制用MCU需要具备哪些特性?
对于角旋转位置反馈的伺服电机来说,一般都是通过施加脉冲宽度调制(PWM)信号,以精确控制运动。工程师可以通过改变PWM信号的宽度来改变电动机的旋转角度和方向,因此生成PWM信号的MCU的作用至关重要。 微控制器使用计时器生成PWM信号,然后可以修改配置以控制旋转伺服器手臂,这是一类特殊的电动机,通常用于在工业机器人,CNC机械和自动化制造中创建闭环控制系统。 伺服电动机利用位置反馈来控制其运动和最终位置,这需要相对复杂的微控制器。另一方面,由于使用高速缓存,通用处理器可能会出现问题。高速缓存的运行时间变化很大,这可能会影响伺服电机的控制。 伺服控制微控制器 那么,伺服控制MCU与现有的MCU相比,伺服控制MCU具有什么特点?首
[单片机]
51单片机C编程(五、矩阵键盘扫描加显示)
这是个4x4的矩阵键盘,按下一个按键,在数码管上显示相应的键值。PROTEUS仿真电路图如下: //程序名称:矩阵键盘扫描加显示 //编 程:jumpmysoul #include reg51.h tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e}; void disp(char); // 数码管显示子程序 void delay(int); // 延时子程序 void keyscan(); // 键盘扫描子程序 char keynum; //*********************主函数*
[单片机]
单片机MSP430入门--理论②--时钟模块
上期大概给大家汇总了MSP430的主要作用以及简介,后面我会把单片机常用的模块时钟,定时器,看门狗,D/A,A/D转换,UART理论跟实例都会说一下,最后在串联起来讲一下做的项目 这期给大家整理并认识下什么叫时钟模块,时钟模块对于单片机是很重要的,如果单片机没有时钟模块,相当于人没有了脉搏,时钟模块是通过振荡器的东西生成的, 可以比喻为人的心脏,我们的心脏也是按照一定的节拍在运动,每一次跳动都会促使身体血液循环,同理时钟模块也是根据振荡器产生,时钟脉冲信号按一定的功率节拍,不断对C对代码读取,译码,执行等工作,当然也能使外部设备正常有序工作 具体MSP430的振荡器: 三个振荡器:低频时钟源LFXT1 、高频时钟源XT2
[单片机]
基于单片机的医用灭菌器控制系统设计
灭菌器是保护人类生命健康的重要器材,发达国家无论是家用灭菌器还是商用灭菌器都很普及。 而灭菌器灭菌是否合格大部分取决于控制系统是否可靠,针对某医疗设备厂灭菌器控制系统不稳定、人机界面不友好等实际问题,作者采用80C196KB单片机为该厂设计灭菌控制系统,消除原有系统的缺陷并相应增加一些功能,相比51系列单片机,96系列片上资源更丰富,设计系统相对容易。 1 灭菌器控制分析 该灭菌器主要进行包裹类、器械类、乳胶类、液体类及其它类五项进行灭菌,其工艺大体相同,不同之处可由程序控制。通过其工作原理(图1)可知,根据里外锅的温度和压力是否达到规定值而进行各种动作控制。 模拟输入量共4个:外锅温度TW,外锅压力PW,
[医疗电子]
C51单片机数码管动态显示
数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: C51单片机由于运行速度很慢,在高刷新频率下,单片机的资源耗费很厉害,这样单片机就不可以再进行大量的计算工作,实际上,单片机在刷新时,只需要周期性的改变GPIO口的状态就可以了,剩下的时间其实都是在空转的状态下,我们能不能将这个空转的状态拿来用呢?当然是可以的啦,这里,我们利用单片机的定时器周期地产能中断,在中断内进行数码管的刷新工作,就可以将等待中断的这个CPU时间拿来做别的事情了。 硬件电路: 代码贴过来: 主函数
[单片机]
PIC单片机 定时器初值计算
定时器 初值计算 晶振8M 需定时25us 分频比1:2 初值(EE)=256 - 25/ (4/8*2) + 14/2 = 256- 25 + 7 = 238
[单片机]
STC12C5A32S2单片机之1602渐入显示
基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18); 可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移 程序如下: 可直接运行,已调试OK #include sbit LCD_rs=P1^0; sbit LCD_rw=P1^1; sbit LCD_en=P2^5; unsigned char num; unsigned char code table = I Love ZYN ; unsigned char code table1 = 0123456789 ;
[单片机]
51单片机头文件
intrins.h 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. 内部函数 描述 _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作8051 NOP 指令 _testbit_ 测试并清零位8051 JBC 指令 reg51.h at89x51.h文件中对P1.1的操作是写成P1_1 reg51.h文件中对P1.1的操作是写成P1^1 表示方法不一样而已。 1 //Time:2017-2-11 2 //Project Name:reg51.h
[单片机]