c语言编写单片机密码锁程序,51单片机密码锁制作的程序和流程图(很详细)

一、基本组成:

单片机小系统+4*4矩阵键盘+1602显示+DC电机

基本电路:

61614023_1.jpg

键盘和和显示

键盘接P1口,液晶的电源的开、关通过P2.7口控制

61614023_2.jpg

电机(控制口P2.4)

小系统就不贴上来了吧。。。

二、基本功能描述:

1.验证密码、修改密码

a)锁的初始密码是123456(密码最长为10位,最短为1位)。

2.恢复初始密码

a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态

a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。

b)同时将LCD背光灯关闭

4.DC电机模拟开锁动作。

a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。

三、密码锁特点说明:

1.0 输入将被以字符形式输入,最长为10位。

超过10位时系统将自动截取前10位、但不作密码长度溢出提示。

2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。

3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。

4.0 若2分钟内无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。

5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。

6.0 修改密码键和恢复初始密码键最好置于室内。

这是Proteus仿真结果:

输入密码123456:

61614023_3.jpg

显示结果:

61614023_4.jpg

密码正确时电机启动、电机将持续5秒:

61614023_5.jpg

这是键盘:

61614023_6.jpg

开锁键是接INT0引脚接的一个独立按键,用于唤醒CPU工作、进而开启整个系统

密码正确时可以修改密码:

61614023_7.jpg

再次输入新密码,两次输入相同时、更改有效

61614023_8.jpg

当然你可以随时放弃修改密码

61614023_9.jpg

改进:

1.0 密码锁的秘密没有存储,因而在掉电时最新的密码将丢失,重新上电后密码将恢复成为初始密码。这使得每次换电池或停电后密码都得恢复一次,给使用带来不便,但是为了要存储一个最多只有十几字节的密码就增加一个存储器、似乎不是很值,最好是所选的单片机自带这样的存储器(容量很小、如32B)。当然如果电源来自市电的话,就不会经常掉电了。

2.0 系统的最好再增加电源监测的设计,在电池电力不够时发出提示。这时还可以增加备用电池,这样就可以保证系统不会掉电。但是这些都要依赖于成本。

3.0 液晶的显示最好采用中文。通过对1602的CGRAM的操作可以实现中文显示,使得用户界面更好。

主函数:

61614023_10.jpg

确认键操作:

61614023_11.jpg

确认函数_ confirm()操作:

0_将 '\0' 置于输入table_input[]结尾

(table_input[]的长度返回值在length里面)

根据操作标识选择任务:

1_确认密码:判定输入密码正确与否

2_修改密码:确认第一次输入并保存

要求第二次输入

比较两次输入是否相同

根据比较结果选择任务:

修改失败,进入输入密码态

修改成功,将输入复制到table_password[]

确认函数_confirm()相关标识位目录:

flag_display;//根据其值可以确定显示信息

flag_confirm;//确认键根据此标识判定任务,默认为0_即为确定密码状态

flag_allow;//允许修改密码标识,在密码比较正确时置1

flag_amend;//第一/二次输入新密码标识

flag_M;//允许电机开锁标识

相关变量

sbit M=P3^6;

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值