毕业设计做网站好的想法,开发网站代码量,手机微信网站,软件开发报价明细目录
一#xff0c;设置密码按键
1.设置密码区域
2.设置输入的数字左移
3.设置记录按键的次数
二#xff0c;设置确认键
1.密码正确时显示OK
2.密码错误时显示ERR
3.密码错误恢复初始状态重输
三#xff0c;设置取消键 学了这么久#xff0c;迫不及待想要做一个密…目录
一设置密码按键
1.设置密码区域
2.设置输入的数字左移
3.设置记录按键的次数
二设置确认键
1.密码正确时显示OK
2.密码错误时显示ERR
3.密码错误恢复初始状态重输
三设置取消键 学了这么久迫不及待想要做一个密码锁玩一玩那直接进入正题
这节我们可以直接创建一个跟上一节一模一样的工程文件。
可以直接复制粘贴上一节的工程文件把名字改成矩阵键盘密码锁就可以了。 然后点击打开这个文件就得到一个一模一样的工程了。 然后把上一节课的这一句代码改成Password 然后编译测试一下 没有错可以继续了 一设置密码按键 我们想要把S1-S9定义为数字1-9然后S10定义为0为什么没有S0呢
是因为0这个数字被占用了作为一种没有按键按下的返回。
所以我们就把S10定义为0S11作为确认键S12作为取消键S13-S16键不用。
开始写代码
1.设置密码区域
需要再加一个if判断限制密码区 然后定义一个密码变量类型是unsigned int为什么是unsigned int是因为它的取值范围是0-65535为什么我们这个程序不用6位密码因为六位的话已经超出unsigned int的取值范围了。
如果定义一个5位数的密码是99999的话就存不了当然也可以改成unsigned long long类型但是这样还受限于我们的LCD1602.c中的定义的LCD_ShowNum只支持0-65535所以6位密码不好显示。 当然如果你想的话也可以显示比如可以定义一个数组然后一位一位分开存然后一位一位地显示。
但是为了简单本节只显示4位密码这样Unsigned int完全可以存的下了。
代码这样写 这里还需要改成Password 编译测试一下
按下9松开就显示09 按下10松开就显示0 证明这段代码没有问题继续
2.设置输入的数字左移
我们需要把输入的上一个数字挪到左边去代码这样写 为什么这样写呢
比如密码刚开始等于0000然后输入一位密码1按下1后就变成0001
如果再按下20001*10就变成 0010再加上2就是0012
如果再输入3就是0012*10变成0120再加上3就是0123
搞明白了后把先显示密码长度改成4 编译测试一下 一次按下1 2 3 4后屏幕上显示1234效果正确
如果再继续按5的话最高位的1就不见了 如果按6的话就显示错误是因为超出了取值范围就显示别的了。 3.设置记录按键的次数
所以我们接下来要写一段程序判断按下的次数
当输入超过4位就不让用户继续输入了。
再定义一个变量Count用来计数 测试一下 当按第五次的时候就不再有反应了是我们想要实现的效果
我们可以把这段代码挪上来 二设置确认键 1.密码正确时显示OK
然后再加一个if判断如果按下的密码正确则显示OK 测试一下 正确
2.密码错误时显示ERR
如果输入的密码不正确就显示err错误 测试一下 不等于正确密码显示err
3.密码错误恢复初始状态重输
提示错误后还得让人家继续输入所以要恢复初始状态
正确与否都应该清零才能让人重新输入。 测试一下
按下1234后显示错误 但是显示没有清零但其实变量已经清零
所以我们还需要更新一下显示 再测试一下 输入1234错误后提示ERR并清零 重新输入2345按下确认 显示OKR并清零 为什么是显示OKR不是OK
因为我们前面输错密码显示了ERR现在显示OK才占两个字符可以在OK后面加个空格占一个字符覆盖R 再测试一下 这样就没有多出来一个R了 三设置取消键 接下来还需要设置一个取消键如果人家输到一半密码发现输错了按取消重新输。 测试一下
输入2345点取消 什么都没有显示直接清零 输1234点击确认显示ERR 输2345点击确认显示OK OK和ERR都会清零
以上就是本节想要实现的效果。
这节的代码比较多如果出错可以最好是边写边测试。
本节所有的程序源码评论区自取。
如果有问题可以私信我评论区留言谢谢