采用AT89C51的電子密碼鎖的設(shè)計(jì)
數(shù)碼管有靜態(tài)顯示和動態(tài)顯示兩種顯示方式,相比于靜態(tài)顯示方式,動態(tài)顯示在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示畫面,不會有閃爍感,在顯示效果上和靜態(tài)顯示是一致的,但動態(tài)顯示能節(jié)省大量的I/O口,降低硬件電路的復(fù)雜性,而且功耗更低。在本設(shè)計(jì)中采用的是動態(tài)顯示方式。
本文引用地址:http://www.ex-cimer.com/article/170168.htm蜂鳴器報(bào)警模塊
密碼輸入錯(cuò)誤次數(shù)超過3次時(shí)可通過蜂鳴器鳴叫報(bào)警。蜂鳴器報(bào)警電路如圖4所示。本設(shè)計(jì)中采用壓電式蜂鳴器,利用單片機(jī) P1.7端口外接的三極管的電流放大作用驅(qū)動蜂鳴器實(shí)現(xiàn)發(fā)聲提示。
軟件設(shè)計(jì)
單片機(jī)電子密碼鎖軟件設(shè)計(jì)主要包括以下幾個(gè)模塊:主程序模塊,數(shù)碼管顯示模塊,矩陣鍵盤掃描模塊,鍵功能程序模塊,密碼重設(shè)模塊,延時(shí)模塊,蜂鳴器報(bào)警模塊。
主程序流程圖如圖5所示。包括鍵盤掃描和鍵功能程序兩部分。
系統(tǒng)啟動后不斷進(jìn)行鍵盤掃描,判斷是否有鍵按下。若無鍵按下則
繼續(xù)掃描,有鍵按下則轉(zhuǎn)入鍵功能模塊判別按下的是什么功能鍵,然后轉(zhuǎn)入相應(yīng)的功能程序,功能程序執(zhí)行完畢后轉(zhuǎn)到鍵盤掃描程序循環(huán)操作。
矩陣鍵盤掃描模塊
本設(shè)計(jì)中采用行掃描法進(jìn)行按鍵識別。由于采用機(jī)械式的按鍵,在按鍵過程中會產(chǎn)生抖動現(xiàn)象,為避免單片機(jī)誤判為多次輸入同一按鍵,必須進(jìn)行消抖處理。設(shè)計(jì)中采用軟件延時(shí)的方法進(jìn)行消抖。在檢測出有鍵按下后執(zhí)行延時(shí)程序,前沿抖動消失后,再次檢測按鍵狀態(tài)。相關(guān)程序段如下:
LSCAN: MOV P3,#0F0H;掃描行碼
L1: JNB P3.0,L2
LCALL DLY_S
JNB P3.0,L2
MOV LINE,#00H
LJMP RSCAN
L2: JNB P3.1,L3
LCALL DLY_S
JNB P3.1,L3 MOV LINE,#01H
LJMP RSCAN
L3: JNB P3.2,L4 LCALL DLY_S
JNB P3.2,L4
MOV LINE,#02H
LJMP RSCAN
L4: JNB P3.3,A0
LCALL DLY_S
JNB P3.3,A0
MOV LINE,#03H
RSCAN:MOV P3,#0FH;掃描列碼
C1: JNB P3.4,C2
MOV ROW,#00H
LJMP CALCU
C2: JNB P3.5,C3
MOV ROW,#01H
LJMP CALCU
C3: JNB P3.6,C1
MOV ROW,#02H
CALCU: MOV A,LINE ;計(jì)算鍵值
MOV B,#03H
MUL AB
ADD A,ROW
MOV VAL,A ;鍵值存入VAL中
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
蜂鳴器相關(guān)文章:蜂鳴器原理
評論