找回密码
 立即注册

QQ登录

只需一步,快速开始

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

通过单片机矩阵键盘按键怎么写一个密码程序?

[复制链接]
跳转到指定楼层
楼主
ID:277444 发表于 2018-1-26 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4黑币
u8 KeyMat_Scan(void)
{
        u8 KeyVal;         
        u8 KeyVall;
        int i;
        int b[6];
        RCC->APB2ENR|=1<<6;      
    GPIOE->CRL&=0X00000000;   
    GPIOE->ODR&=0X00000000;   
    GPIOE->CRL|=0X33338888;   
    GPIOE->ODR|=0XF0<<0;        
        if((GPIOE->IDR&0XFF)!=0XF0)
    {
                delay_ms(10);         
        
        if((GPIOE->IDR&0XFF)!=0XF0)  
                {
                        switch(GPIOE->IDR&0XFF)   
                    {
                                        case(0XF8):        {KeyVal=1; KeyVall='*';} break;   
                                        case(0XF4):        {KeyVal=2; KeyVall=0;} break;  
                                        case(0XF2): {KeyVal=3; KeyVall='#';} break;   

                    }
                  
                        
                         GPIOE->CRL&=0X00000000;   
                 GPIOE->ODR&=0X00000000;   
                 GPIOE->CRL|=0X88883333;   
                 GPIOE->ODR|=0X0F<<0;      
                     delay_us(500);            
                                                   
                     switch(GPIOE->IDR&0XFF)
                                {                                       
                                        case(0X3F): KeyVal=KeyVal;break;//////////1
                                         case(0X2F):        KeyVal=KeyVal+3;break;///////////2
                                       case(0X6F): KeyVal=KeyVal+6;break;///////////3
                                        case(0XAF):        KeyVal=KeyVall;break;//////////////4

                                }
                }           
        }
               
        #if 0               
                while ((GPIOE->IDR&0XFF)!=0X0F);

        #endif
        return KeyVal;

}

这是我的矩阵按键程序,利用他怎么实现按键之后的密码比较呢?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2018-1-27 09:02 | 只看该作者
不宜在按键扫描程序里处理任务,此程序只要输出键值即可,另写一个按键服务程序,把获取的键值作相应处理,设置的密码要保存在EEPROM中后执行闭锁。当输入的密码与保存在EEPROM中的数据吻合,执行开锁。
回复

使用道具 举报

板凳
ID:123289 发表于 2018-1-28 15:28 | 只看该作者
需要加一个计数器,记录按键的次序。
例如密码是10位,记数就0-9,
每次按键后就与密码区(与计数器对应的)的密码做比较,对了计数器+1,不对计数器清0.
当计数器=10时,密码就输入正确了。
回复

使用道具 举报

地板
ID:280422 发表于 2018-1-28 15:49 | 只看该作者
这问题问得技术含量不高啊?
回复

使用道具 举报

5#
ID:280422 发表于 2018-1-28 16:06 | 只看该作者
按键按下之后被按键扫描程序检测到键值并经转码到可见ascii码之后缓存,当按下确认键(或者字符串长度达到设定值,这跟你的密码程序的需求有关)后将该字符串与已存储的密码字符串进行密码比对,给出比对结果,并清空缓存进入下一个扫描循环。

另外,当按键间隔时间超过设置的时间之后,也需要对缓存清空。
回复

使用道具 举报

6#
ID:383987 发表于 2019-4-24 11:13 | 只看该作者
那这样的程序应该怎么写勒,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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