久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2325|回復: 3
收起左側

單片機指紋密碼鎖設計 LCD12864顯示

[復制鏈接]
ID:190577 發表于 2023-7-27 06:55 | 顯示全部樓層 |閱讀模式
一、系統方案

隨著人們生活水平的提高,如何實現家庭防盜這一問題也變的尤其的突出,傳統的機械鎖由于其構造的簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數高,受到了廣大用戶的喜愛。鎖是置于可啟閉的器物上,用以關住某個確定的空間范圍或某種器具的,必須以鑰匙或暗碼打開的扣件。鎖具發展到現在已有若干年的歷史了,人們對它的結構、機理也研究得很透徹,因此,不用鑰匙就能打開的方法和工具也層出不窮。現代人類文明里,由于各種矛盾沖突十分劇烈,人們的思想道德觀念,價值觀念,文化修養水平等差異,人們中良莠不齊,善良的人們能夠自覺規范自已的行為,“非禮不為”,雖無鑰匙亦不會亂闖。然而,那些毫無道德觀念的盜賊卻想方設法利用高科技手段撬門開鎖,使廣大居民防不勝防。
為什么會出現這種情況呢?因為傳統鎖具都存在致命的弱點:
  第一、 鎖芯采用常見的銅、鋁、鋅等材料,抵抗不了強力破壞;
  第二、 鎖具制作工藝,技術落后,無法阻止技術手段的開啟。
  目前,市場上很多國內外的鎖具,實際上都不具備真正的防盜功能。在慣偷面前,兩根鋼絲或幾件簡單的工具就可以把這些鎖打開,有的慣偷甚至公開揚言:“沒有我打不開的鎖!逼鋵崳皇撬麄兌喔呙,而是一般鎖具技術原理太過簡單。面對這一殘酷的現狀,新時代提出了鎖具必須革命的迫切的要求。
(1).如何通過指紋識別模塊對指紋的采集,識別,存儲。
(2).如何控制LCD12864顯示需要顯示的內容。
(3).如何控制AT24C02進行存儲信息。
(4).設計程序算法正確的讀取矩陣鍵盤,獲取所按下的按鍵位置。
1.png



二、硬件設計
原理圖如下:
2.png


三、單片機軟件設計
1、首先是系統初始化:
  /*********************************************************
函數名稱:void T2_init()
函數作用:定時器2初始化函數
參數說明:
*********************************************************/
void T2_init()
{
        RCAP2H=(65536-50000)/256;
        RCAP2L=(65536-50000)%256;//自動重裝
        TH2=RCAP2H;
        TL2=RCAP2L;              //定時器2賦初值
        EA=1;                    //開總中斷
        ET2=1;                   //定時器T2中斷允許      
        TR2=0;                                     //關閉定時器2
}
2、中斷服務程序
/*********************************************************
函數名稱:void T2_interrupt(void) interrupt 5
函數作用:定時器2中斷處理函數
參數說明:定時50MS中斷一次
*********************************************************/
void T2_interrupt(void) interrupt 5
{
        TF2=0; //清除定時器2溢出標志位

        T2_num++;           //計數變量+1
        if(T2_num==200)//200*50ms=10S定時完成
        {
                T2_num=0;  //清0計數變量
                jdq=1;           //關閉繼電器,電磁鎖關閉
                TR2=0;           //定時器關閉
        }
}
3、按鍵檢測程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

/*****************矩陣鍵盤引腳定義*******************/
#define Key P1

bit key_f;//有按鍵按下標志
/*****************矩陣鍵盤函數聲明*******************/
uchar jiema(unsigned char key);        //解碼函數,輸入按鍵編碼,返回按鍵位置
void  key_delay();                                //延時函數
uchar keycan(void);                                //按鍵查詢函數,返回矩陣鍵盤位置
/********************************************************
函數名稱:uchar jiema(unsigned char key)
函數作用:轉換按鍵碼為1~16的數字
參數說明:返回按下的按鍵位置
*******************************************************/
uchar jiema(uchar key)
{
   uchar n;
   switch(key)
   {
           case 0x11: n= 13; break;
           case 0x21: n= 0; break;
           case 0x41: n= 14; break;
           case 0x81: n= 15; break;
           case 0x12: n= 7; break;
           case 0x22: n= 8; break;
           case 0x42: n= 9; break;
           case 0x82: n= 12; break;
           case 0x14: n= 4; break;
           case 0x24: n= 5; break;
           case 0x44: n= 6; break;
           case 0x84: n= 11; break;
           case 0x18: n= 1; break;
           case 0x28: n= 2; break;
           case 0x48: n= 3; break;
           case 0x88: n= 10; break;
           default: break;
   }
   key_f=1;
   return n;
}

/********************************************************
函數名稱:void key_delay()
函數作用:延時函數
參數說明:
********************************************************/
void key_delay()                   //延時子程序
{
        uchar n, m;
        for (n = 100; n > 0; n--)
                for (m = 300; m > 0; m--);   
}

/********************************************************
函數名稱:uchar keycan(void)
函數作用:進行按鍵掃描
參數說明:返回按鍵值,=0時表示沒有按鍵按下
********************************************************/
uchar keycan(void)
{
        uchar rcode, ccode;
        Key = 0xF0;      // 發全0行掃描碼,列線輸入
        if((Key&0xF0) != 0xF0) // 若有鍵按下
        {
                key_delay();// 延時去抖動
                if((Key&0xF0) != 0xF0)
                {  
                        rcode = 0xFE;         // 逐行掃描初值
                    while((rcode&0x10) != 0)
                    {
                        Key = rcode;         // 輸出行掃描碼
                            if((Key&0xF0) != 0xF0) // 本行有鍵按下
                            {
                                       ccode = (Key&0xF0)|0x0F;
                                       do{;}
                                           while((Key&0xF0) != 0xF0); //等待鍵釋放
                                       return jiema((~rcode) + (~ccode)); // 返回鍵編碼
                            }
                            else
                                    rcode = (rcode<<1)|0x01; // 行掃描碼左移一位
                        }
                }
        }  
        return 0; // 無鍵按下,返回值為0
}
4、核心算法程序
while(1)
        {
                i++;
                a=keycan();                   //矩陣鍵盤檢測
                chuli();                   //矩陣鍵盤處理

                if(mode==1)
                        display_guanli();                  //顯示管理界面
                else
                        if(mode==2)                                  //錄入指紋
                        {
                                if(zhiwen_f==1)
                                        cunchu();                  //錄入指紋
                        }
                        else
                                if(mode==3)                          //注銷指紋
                                {
                                        if(zhiwen_f==1)
                                                shanchu();          //注銷指紋               
                                }
                                else                                
                                        if(mode==0&&in_f==0)//正常解鎖界面
                                        {
                                                if(i>=150)
                                                {
                                                        i=0;
                                                        xunzhiwen();//指紋解鎖
                                                }
                                        }
        }
四、proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。
3.png


回復

使用道具 舉報

ID:316613 發表于 2024-4-26 16:43 | 顯示全部樓層
屏幕不顯示
回復

使用道具 舉報

ID:1130355 發表于 2024-8-9 14:06 | 顯示全部樓層

對啊,我也是 怎么解決
回復

使用道具 舉報

ID:967662 發表于 2024-8-13 09:01 | 顯示全部樓層
1dan 發表于 2024-8-9 14:06
對啊,我也是 怎么解決

肯定不顯示啊,帖主都沒有給出display_guanli()具體代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久天堂 | 国产精品精品久久久 | 国产精品久久久久久久久久免费看 | 亚洲国产18 | 日韩在线观看一区 | 成人福利网 | 91久久国产综合久久91精品网站 | 成人h片在线观看 | 国产成人精品免费视频 | 午夜精品久久久久久久久久久久 | 中文天堂在线一区 | 亚洲精品一二区 | 亚洲综合大片69999 | 婷婷综合 | 亚洲精品电影网在线观看 | 成人亚洲一区 | 91精品国产综合久久国产大片 | 亚洲成人免费 | 国产亚洲一区二区三区在线观看 | 超碰日本| 国产成人精品在线播放 | 在线成人www免费观看视频 | 高清久久久 | 久久久久久久久久一区二区 | 青青草一区二区三区 | 精品欧美乱码久久久久久1区2区 | 国产无套一区二区三区久久 | 99久热 | 亚洲美女视频 | 一区二区三区精品视频 | 亚洲视频一区在线观看 | 日本aaaa| 国产成人一区二区三区电影 | 台湾a级理论片在线观看 | 久久精品国产a三级三级三级 | 在线只有精品 | 中文字幕欧美日韩 | 国产精品一区一区三区 | 亚洲伦理自拍 | 精品国产精品国产偷麻豆 | 日日操av|