51单片机实现密码锁

2019-07-18 12:40发布

这基于51单片机实现密码锁的仿真,但是不知道为什么点击按键时屏幕总是闪烁,数码管也没反应。原先用74HC07驱动数码管也是如此。其他电路部分经过测试应该都是能正常工作的。请大神们帮忙看看。
51密码锁.zip 下载积分: 积分 -1 分
152.03 KB, 下载次数: 61, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
武力戡乱
2019-07-19 18:08
先生下山啦 发表于 2014-8-18 11:25
我不明白为什么要加while(1);为什么不是一次性识别按键呢?难道不应该是按一次0-9的任意一个按键,然后执 ...

                        switch(Key)
                        {
                                case 0:
                                case 1:
                                case 2:
                                case 3:
                                case 4:
                                case 5:
                                case 6:
                                case 7:
                                case 8:
                                case 9:
                                //        DispBuf[PassPosi] =  LINECHAR;//显示’-‘
                                        Disp_Led_Sin(Key,PassPosi);
这个switch是什么意思,选择吧!
当按键为9的时候,执行case 9:一直到到下一个case之前,是不?
那么假设你按键1的时候,是不不应该显示呢?
其实你没懂我的按键等待释放。你已经上传了程序
unsigned char Key_Scan(void)
{
        unsigned char key_code_temp;
        if(Key_Hit()==1)
        {
                Delay_Init(10,10);
                if(Key_Hit()==1)
                {       
                        key_code_temp=Key_Code();
                        while(Key_Hit()==1);
                        return(key_code_temp);
                }
                else return(0xff);
        }
        else return(0xff);
}
其中while(Key_Hit()==1);就是判断按键是否释放。
如果按键没有释放,他就不会执行下一次扫描,这个是一个层。我把每个任务分成了层。
而你的程序有个明显的现象,就是按键一直按着的时候一直在响,这说明程序在整个系统中运行。我到没细看,为什么现象对。
先不说这个,我们打个赌,在不大改动思路的情况下,你看看你后续的功能能否实现,或者轻松就实现(我指的是多个数码管显示不同的值)。首先你要面对是数码管扫描(记得做在定时器中)和键盘扫描的问题。

一周热门 更多>