找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1853|回复: 12
打印 上一主题 下一主题
收起左侧

求方法 制作一个指纹锁,如何通过按压指纹时长进行,一个指纹解两个锁或者一个锁

[复制链接]
跳转到指定楼层
楼主
ID:790783 发表于 2022-5-9 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一个指纹锁,如何通过按压指纹时长进行,一个指纹解两个锁或者一个锁,比如按1秒解一个锁,2秒解锁两锁,我该如何检测按压时长?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2022-5-9 17:20 | 只看该作者
每做一种,就设立一个计数器,用于计时这个时间,当时间满足时,你就达成目的了。顺便做个标记,标记是否达成目的。
回复

使用道具 举报

板凳
ID:790783 发表于 2022-5-9 17:38 | 只看该作者
yzwzfyz 发表于 2022-5-9 17:20
每做一种,就设立一个计数器,用于计时这个时间,当时间满足时,你就达成目的了。顺便做个标记,标记是否达 ...

可以不用计数器这种吗,来个简单点的,比如说根据它高电平时间来设置?
回复

使用道具 举报

地板
ID:883698 发表于 2022-5-9 17:56 | 只看该作者
采用计数器计时判断长短很麻烦吗
回复

使用道具 举报

5#
ID:790783 发表于 2022-5-9 23:29 | 只看该作者
小猫电子 发表于 2022-5-9 17:56
采用计数器计时判断长短很麻烦吗

主要是咱不会啊,有啥相关案例可以参考的吗?

回复

使用道具 举报

6#
ID:624769 发表于 2022-5-9 23:39 | 只看该作者
以及他, 发表于 2022-5-9 17:38
可以不用计数器这种吗,来个简单点的,比如说根据它高电平时间来设置?

你觉得,"高电平时间" 是不用 "计数" 就能得到的么?
回复

使用道具 举报

7#
ID:47286 发表于 2022-5-10 00:18 | 只看该作者
188610329 发表于 2022-5-9 23:39
你觉得,"高电平时间" 是不用 "计数" 就能得到的么?

我觉得能 用一个特大的变量 int不行就flot 一个不够就两个 高电平时循环一圈加一次 满了就进位 然后低了再判断

不许急眼啊 咱说的是能不能 不是好不好啊
回复

使用道具 举报

8#
ID:824490 发表于 2022-5-10 09:08 | 只看该作者
不如用不同手指来的快:大母指解1个,食指解2个,中指解3个。。。左右手再分开,可以解10个。。
回复

使用道具 举报

9#
ID:790783 发表于 2022-5-10 18:24 | 只看该作者
188610329 发表于 2022-5-9 23:39
你觉得,"高电平时间" 是不用 "计数" 就能得到的么?

对不起啊,主要是咱太白了
回复

使用道具 举报

10#
ID:790783 发表于 2022-5-10 18:26 | 只看该作者
名字不是重点 发表于 2022-5-10 09:08
不如用不同手指来的快:大母指解1个,食指解2个,中指解3个。。。左右手再分开,可以解10个。。

我也知道这个,主要是不给这么做啊
回复

使用道具 举报

11#
ID:474386 发表于 2022-5-11 11:00 | 只看该作者
软件你搞不定那就只能考虑硬件啊。比如,你按压2次,3次。。。。。。。。
回复

使用道具 举报

12#
ID:624769 发表于 2022-5-11 11:46 | 只看该作者
以及他, 发表于 2022-5-10 18:24
对不起啊,主要是咱太白了

白不白的都不是重点,  你牵扯到时间的长短,就逃不开 计数,   "我数三个数" 这就是最基本的一个时间概念。除非你不要判断时间,否则“计数” 你就躲不开,不管是硬件上,还是软件上,总之,躲不开“计数”。
回复

使用道具 举报

13#
ID:161164 发表于 2022-5-12 15:21 | 只看该作者
以及他, 发表于 2022-5-9 23:29
主要是咱不会啊,有啥相关案例可以参考的吗?

用例程改一下就可以了
  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ---------------------------------------------*/
  3. /* --- STC89-90xx Series 16-bit Timer Demo -------------------------*/
  4. /* If you want to use the program or the program referenced in the  */
  5. /* article, please specify in which data and procedures from STC    */
  6. /*------------------------------------------------------------------*/

  7. #include "reg51.h"

  8. typedef unsigned char BYTE;
  9. typedef unsigned int WORD;

  10. //-----------------------------------------------

  11. /* define constants */
  12. #define FOSC 11059200L

  13. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  14. /* define SFR */
  15. sbit TEST_LED = P1^0;               //work LED, flash once per second

  16. /* define variables */
  17. WORD count = 0;                         //1000 times counter
  18. BYTE PushCnt = 0;
  19. /* define IO */
  20. sbit Fingerprint = P1^0;//自己改
  21. //-----------------------------------------------

  22. /* Timer0 interrupt routine */
  23. void tm0_isr() interrupt 1
  24. {
  25.     TL0 = T1MS;                     //reload timer0 low byte
  26.     TH0 = T1MS >> 8;                //reload timer0 high byte
  27.         if(!Fingerprint)
  28.         {
  29.                 if (count++ >= 1000)               //1ms * 1000 -> 1s
  30.                 {
  31.                         count = 0;               //reset counter
  32.                         PushCnt++;
  33.                         if(PushCnt==1)Unlock1();
  34.                         if(PushCnt==2)Unlock2();
  35.                         if(PushCnt==3)Unlock3();
  36.                         if(PushCnt==4)Unlock4();
  37.                 }
  38.         }else{
  39.                 count = 0;
  40.                 PushCnt = 0;
  41.         }
  42. }

  43. //-----------------------------------------------

  44. /* main program */
  45. void main()
  46. {
  47.     TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  48.     TL0 = T1MS;                     //initial timer0 low byte
  49.     TH0 = T1MS >> 8;                //initial timer0 high byte
  50.     TR0 = 1;                        //timer0 start running
  51.     ET0 = 1;                        //enable timer0 interrupt
  52.     EA = 1;                         //open global interrupt switch
  53.     count = 0;                      //initial counter
  54.         Fingerprint = 1;
  55.     while (1);                      //loop
  56. }

复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表