新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機控制的密碼鎖設計(含電路圖及源程序)

        基于單片機控制的密碼鎖設計(含電路圖及源程序)

        作者: 時間:2012-09-14 來源:網絡 收藏

        //初始化51的寄存器
        TMOD=0x20; //用T1計時 8位自動裝載定時模式
        TH1=0x19; //500微秒溢出一次; 250=(256-x)*12/11.0592 -> x=19
        TL1=0x19;
        EA=1; //開中斷
        ET1=1;
        TR1=0; //開定時器T1
        while(1)
        { key_val=scan_key(); //按鍵輸入,有鍵按下key_val為0-7,無鍵按下key_val為255。
        if (key_val!=key_val_old)
        { key_val_old=key_val;
        if (key_val!=255 cnt_state!=2)
        { audio_out=0;
        delay(100); //延時去抖動
        audio_out=1;
        switch (key_val)
        { case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        if(key_index6) //密碼為6位,超過6位視為輸入無效
        { show_val[key_index]=key_val;
        key_index++; }
        break;
        case 6: //確認鍵
        if(check_input_pw())
        {//密碼正確
        error_num=0; //密碼輸入錯誤次數清零
        //---------
        pw_error=1; //密碼錯誤指示燈滅
        relay_open=0; //開鎖驅動信號燈亮
        open_lock=0; //已開鎖信號燈亮
        //---------
        delay(50000); //兩聲短“滴”聲
        audio_out=0;
        delay(50000);
        audio_out=1;
        delay(50000);
        audio_out=0;
        delay(50000);
        audio_out=1;
        //---------
        cnt_state=1; //下一狀態處于4秒計時的狀態
        TR0=1; //啟動定時
        }
        else
        { if (error_num2)
        {error_num++; //輸入錯誤次數小于3次時,沒錯一次error_num增一
        pw_error=0; //密碼錯誤指示燈亮
        //-----------
        delay(20000);//一聲長“滴”聲,提示錯誤
        audio_out=0;
        delay(60000);
        audio_out=1;
        //-----------
        init_variant();//清除所有輸入,等待下一次輸入
        }
        else //輸入錯誤次數超過3次
        { alarm_out=0; //報警燈亮
        pw_error=0; //密碼錯誤指示燈亮
        error_num=0; //密碼輸入錯誤次數清零
        //----------
        audio_out=0; //長鳴聲報警
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        delay(60000);
        audio_out=1;
        //-------------
        TR1=1; //打開定時器計時
        cnt_state=2; //下一狀態處于15秒計時的狀態
        }
        }
        break;
        case 7://取消鍵
        init_variant();
        break;
        }
        }
        }
        led_show();
        }
        }
        //-----程序結束-----------------

        本文引用地址:http://www.104case.com/article/170863.htm

        電路圖文章專題:電路圖符號大全


        電路圖符號相關文章:電路圖符號大全



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 恩施市| 玉树县| 龙岩市| 二连浩特市| 柳江县| 莱阳市| 黑龙江省| 陇川县| 颍上县| 郓城县| 铜川市| 乡宁县| 翼城县| 萝北县| 弋阳县| 长乐市| 德州市| 寻乌县| 利辛县| 宿松县| 家居| 石景山区| 深泽县| 理塘县| 邵阳县| 德化县| 固原市| 宜阳县| 吕梁市| 大竹县| 浙江省| 芮城县| 大英县| 白城市| 嵩明县| 青河县| 海宁市| 尤溪县| 绥宁县| 青神县| 都兰县|