日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
電子密碼鎖源程序
電子密碼鎖源程序
 更新時間:2008-7-26 19:52:00  點擊數:3
【字體: 字體顏色

摘要:本系統(tǒng)由單片機系統(tǒng)、矩陣鍵盤、LED顯示和報警系統(tǒng)組成。系統(tǒng)能完成開鎖、超時報警、超次鎖定、管理員解密、修改用戶密碼基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還具有調電存儲、聲光提示等功能,依據實際的情況還可以添加遙控功能。本系統(tǒng)成本低廉,功能實用

關鍵詞:AT89S51;AT24C02;電子密碼鎖;矩陣鍵盤

        ;********************************************
        ;*********        電子密碼鎖        *********
        ;********************************************
        ;*********        2005/12/24        *********
        ;********************************************
        ;顯示緩沖區(qū)
        ;LED1    EQU    6FH
        BUFF    EQU    6EH
        TIMERS1 EQU    6DH     ;輸入回車的次數
        TIMERS2 EQU    6CH     ;報警的次數
        TIMERS  EQU    6BH     ;輸入數字的位數
        ;LED6  EQU    6AH
        ;密碼緩沖區(qū)
        PS1   EQU    69H
        PS2   EQU    68H
        PS3   EQU    67H
        PS4   EQU    66H
        PS5   EQU    65H
        PS6   EQU    64H
        ;AT24C02讀取緩沖區(qū)
        AT1   EQU    63H
        AT2   EQU    62H
        AT3   EQU    61H
        AT4   EQU    60H
        AT5   EQU    5FH
        AT6   EQU    5EH
        ;按鍵標志位
        F_1   BIT   20H
        F_2   BIT   21H
        F_3   BIT   22H
        F_4   BIT   23H
        BUF_FULL BIT 24H    ;密碼已經夠六位的標志位,為1表示滿
        CH_STATE BIT 25H    ;系統(tǒng)更改的狀態(tài)標志位,為1表示busy
        FLAG1 BIT    26H    ;功能鍵標志位,為1表示功能按鍵。
        F_F1  BIT    27H
        F_F2  BIT    28H
        PSW_F BIT    29H    ;密碼是否正確的標志位
        ;口資源定義
        SPK   BIT    P2.1
        JDQ   BIT    P2.3
        SDA   BIT    P2.4   ;定義串口數據端
        SCL   BIT    P2.5
        ;發(fā)光二極管燈
        L1    BIT    P1.0
        L2    BIT    P1.1
        L3    BIT    P1.2
        ;
        ORG   0000H
        AJMP  MAIN
        ORG   000BH
        ;AJMP  TIMER0
        ORG   001BH
        ;AJMP  TIMER1
        ORG   0030H
   MAIN:MOV   SP,    #70H
        MOV   TMOD,  #11H
        MOV   TH0,   #3CH
        MOV   TL0,   #0B0H
        MOV   TH1,   #3CH
        MOV   TL1,   #0B0H
        CLR   F_1             ;清除標志位
        CLR   F_2
        CLR   F_3
        CLR   F_4
        CLR   BUF_FULL
        CLR   CH_STATE
        CLR   FLAG1
        CLR   F_F1
        CLR   F_F2
        CLR   PSW_F
        MOV   BUFF,#00H        ;調用
        LCALL INITPS           ;初始化環(huán)境
        LCALL INITAT
        LCALL  XSA            ;調用默認顯示
        MOV    TIMERS1,#00H
        NOP
        MOV   PS1,  #11H     ;初始化密碼830620
        MOV   PS2,  #0AH
        MOV   PS3,  #02H
        MOV   PS4,  #13H
        MOV   PS5,  #0BH
        MOV   PS6,  #02H
  START:NOP                  ;程序開始
        LCALL CH_KEY         ;檢查鍵盤
        AJMP  START          ;返回

 CH_KEY:LCALL KS             ;檢查有沒有按鍵按下
        JNZ   LK1
        AJMP  CH_KEY
    LK1:
        LCALL T12MS
        ACALL KS
        JNZ   LK2
        RET

    LK2:
        NOP
        LCALL SBIE            ;按鍵識別子程序
        MOV   BUFF,  A        ;送緩沖區(qū)以識別是數字鍵還是功能鍵?
        LCALL CH_KF           ;判斷按鍵功能。
        JB    FLAG1  ,KEY_FUN ;標志為1,則為功能鍵
;***********數字按鍵輸入并且存放到緩沖區(qū)內等待比較***********
KEY_DIG:NOP                   ;設一標志,辨別輸入是否滿
        ;SETB  TR0
        INC   TIMERS          ;輸入數字的位數
        MOV   A,    TIMERS
        CLR   C
        SUBB  A,    #01H
        JNZ   PS_2
        MOV   PS1,  BUFF         ;依照順序存放密碼
        AJMP  NEXT
   PS_2:MOV   A,   TIMERS
        SUBB  A,    #02H
        CLR   C
        JNZ   PS_3
        MOV   PS2,   BUFF
        AJMP  NEXT
   PS_3:MOV   A,   TIMERS
        CLR   C
        SUBB  A,    #03H
        JNZ   PS_4
        MOV   PS3,   BUFF
        AJMP  NEXT
   PS_4:MOV   A,    TIMERS
        CLR   C
        SUBB  A,    #04
        JNZ   PS_5
        MOV   PS4,  BUFF
        AJMP  NEXT
   PS_5:MOV   A,    TIMERS
        CLR   C
        SUBB  A,    #05
        JNZ   PS_6
        MOV   PS5,  BUFF
        AJMP  NEXT
   PS_6:MOV   A,    TIMERS
        CLR   C
        SUBB  A,    #06H
        JNZ   CH_KEY
        MOV   PS6,  BUFF
   NEXT:LCALL XSC
        MOV   R7,   TIMERS    ;比較輸入的次數。
        CJNE  R7,   #06H  ,FULL
   FULL:JC    NEXT9
        SETB  BUF_FULL
        MOV   TIMERS,#06H
        CLR   L3
        NOP
        CLR   P2.1
        LCALL T100MSD
        SETB  P2.1
        NOP
        AJMP  CH_KEY
  NEXT9:CLR   P2.1            ;密碼輸入一位,鳴叫一聲。
        CLR   L3
        LCALL T100MSD         ;延時100ms
        SETB  L3
        SETB  P2.1
        AJMP  CH_KEY
;*****************功能按鍵比較并且跳轉*************
KEY_FUN:
        CLR   FLAG1
        CLR   C
        MOV   A,   BUFF
        SUBB  A,   #03H     ;按鍵CL跳轉
        JNZ   EN_C
        AJMP  CL
   EN_C:CLR   C
        MOV   A,   BUFF     ;按鍵EN跳轉
        SUBB  A,   #00H
        JNZ   F1_C
        AJMP  EN
   F1_C:CLR   C
        MOV   A,   BUFF
        SUBB  A,   #1BH
        JNZ   F2_C
        AJMP  FU1
   F2_C:CLR   C
        MOV   A,   BUFF
        SUBB  A,   #1AH
        JNZ   F3_C
        AJMP  FU2
   F3_C:CLR   C
        MOV   A,   BUFF
        SUBB  A,   #19H
        JNZ   F4_C
        AJMP  FU3
   F4_C:CLR   C
        MOV   A,   BUFF
        SUBB  A,   #18H
        JZ    FU4
  EXIT8:NOP
        LJMP  CH_KEY
;***************開門子程序 ********************************
     CL:NOP
        SETB  L3
        MOV   BUFF, #00H             ;消密碼緩沖
        MOV   TIMERS,#00H
        LCALL INITPS              ;消除AT緩沖,加調電存儲后一定要加上
        LCALL XSC
        LCALL BP
        LCALL BP
        LCALL T100MSD
        LCALL BP
        CLR   FLAG1
        AJMP  CH_KEY

    FU4:NOP
        LCALL BP
        LCALL T100MSD
        LCALL BP
        LCALL T100MSD
        LCALL BP
        LCALL T100MSD
        LCALL BP
        LCALL T100MSD
        LCALL BP
        CLR   FLAG1
        AJMP  CH_KEY

    FU3:NOP
        LCALL BP
        LCALL T100MSD
        LCALL BP
        LCALL KILLXS ;關閉顯示
        CLR   FLAG1
        AJMP  CH_KEY

    FU1:NOP
        LCALL XSC
        JB    F_F1,   NEXT_F1
        CLR   L1
        LCALL BP
        SETB  F_F1
        AJMP  CH_KEY
NEXT_F1:SETB  L1
        LCALL BP
        CLR   F_F1
        ;LCALL CH_STATE            ;查看現在的狀態(tài)以防誤按
        ;SETB  TR1                ;報警限制暫時不開
        ;INC   F_F1
        CLR    FLAG1
        AJMP  CH_KEY

    FU2:NOP
        JB    F_F2,   NEXT_F2
        CLR   L2
        LCALL BP
        SETB  F_F2
        AJMP  CH_KEY
NEXT_F2:SETB  L2
        LCALL BP
        CLR   F_F2
        CLR   FLAG1
        AJMP  CH_KEY
;***************按鍵的功能描述*************************
     EN:NOP
        JB    BUF_FULL,   GOON
        AJMP  EXIT
   GOON:CLR   BUF_FULL
        JB    F_F2, AT_WRON             ;F2按鍵標志,若為1,則調用修改密碼子程序。
        LCALL AT_RADE
        LCALL C_PSW                  ;比較密碼子程序
        JB    PSW_F,OPEN             ;密碼比較正確,則調用開鎖子程序
        LCALL XSD
        INC   TIMERS2
        MOV   R7,TIMERS2            ;密碼錯誤,調入輸入密碼輸入次數,準備鎖定鍵盤
        CJNE  R7,#03H,D0
     D0:JC    NEXT1                 ;錯誤次數小3次
        LCALL XSE               ;鎖定5分鐘
        LCALL WARN2S
        LCALL LOCK_1M
  NEXT1:LCALL WARN2S            ;報警2分鐘
        LCALL XSA
   EXIT:LCALL INITPS
        MOV   BUFF,   #00H
        CLR   FLAG1
        MOV   TIMERS, #00H
        AJMP  CH_KEY                 ;跳出
       
AT_WRON:LCALL AT_WR
        LCALL XSF
        LCALL BP
        LCALL T100MSD
        LCALL BP
        LCALL T500MSD
        LCALL KILLXS
        LCALL T500MSD
        LCALL XSF
        LCALL T500MSD
        LCALL KILLXS
        LCALL T500MSD
        LCALL XSF
        LCALL T500MSD
        NOP
        NOP
        LCALL XSA
        AJMP  EXIT

     OPEN:MOV  A,     TIMERS1
         CJNE A,     #09H,CLT1
    CLT1:JC   GOON1
         MOV  TIMERS1,#00H
   GOON1:INC  TIMERS1                ;輸入回車的次數
         MOV  TIMERS2,#00H
         SETB  L3
         CLR   PSW_F
         LCALL XSB
         CLR  JDQ             ;開門
         LCALL BP
         LCALL BP
         LCALL BP
         LCALL BP
         LCALL SEC
         LCALL SEC
         LCALL SEC
         LCALL SEC
         LCALL SEC
         LCALL SEC
         LCALL SEC
         LCALL SEC
         SETB  JDQ
         LCALL XSA
         NOP
         AJMP  EXIT


;**************各類子程序********************************
;****  注意清楚緩沖區(qū)時AT1...AT6不應在初始化中執(zhí)行,以 ***
;****  防兩緩沖區(qū)都為0,相同開鎖                       ***
;********************************************************

CLR_BUF:MOV   R7,   #06H
        MOV   R0,  #6FH
  LOOP1:MOV   A,   #00H
        MOV   @R0, A
        DEC   R0
        DJNZ  R7,LOOP1
        RET
;*************初始化顯示緩沖區(qū)以及其他緩沖區(qū)**************
 INITPS:PUSH  ACC
        PUSH  PSW
        MOV   R7,  #06H
        MOV   R1,  #PS1
        MOV   A,   #00H
INIT_PS:MOV   @R1, A
        DEC   R1
        DJNZ  R7,  INIT_PS
        POP   PSW
        POP   ACC
        NOP
        RET

 INITAT:PUSH  ACC
        PUSH  PSW
        MOV   R7,#06H
        MOV   R1,#AT1
        MOV   A, #00H
INIT_AT:MOV   @R1, A
        DEC   R1
        DJNZ  R7,  INIT_AT
        MOV   TIMERS,#00H     ;密碼輸入的次數清零。
        POP   PSW
        POP   ACC
        RET

;*************  按鍵識別子程序  ***************************
   SBIE:MOV   R2,   #0EFH      ;識別按鍵子程序,數據送A保存,課本P146頁。
        MOV   R4,   #00H
    LK4:MOV   A,    R2
        MOV   P0,   A
        NOP
        MOV   A,    P0
        JB    ACC.0,LONE
        MOV   A,    #00H
        AJMP  LKP
   LONE:JB    ACC.1,LTWO
        MOV   A,    #08H
        AJMP  LKP
   LTWO:JB    ACC.2,LTHR
        MOV   A,   #10H
        AJMP  LKP
   LTHR:JB    ACC.3,NEXTT     ;判斷下一列
        MOV   A,   #18H
    LKP:ADD   A,   R4
        PUSH  ACC
    LK3:ACALL KS
        JNZ   LK3
        POP   ACC
        RET
  NEXTT:INC   R4
        MOV   A,   R2
        JNB   ACC.7,KND
        RL    A
        MOV   R2,  A
        AJMP  LK4
    KND:AJMP  CH_KEY

     KS:MOV   P0,    #0FH
        NOP
        MOV   A,     P0
        CPL   A
        ANL   A,     #0FH
        NOP
        RET

  CH_KF:CLR   C
        MOV   A,   BUFF       ;判斷是數字按鍵還是功能按鍵,為1表示功能鍵
        CJNE  A,   #17H,  KY
     KY:JC    SET_CH         ;假若是數字按鍵則標志置為0
        SETB  FLAG1          ;假若是功能按鍵則標志置為1
        AJMP  CHKE_END
 SET_CH:CLR   C
        MOV   A,   BUFF
        SUBB  A,   #00H
        JNZ   EN_CH
        SETB  FLAG1
        AJMP  CH_END
  EN_CH:MOV   A,   BUFF
        SUBB  A,   #03H
        JNZ   DIG
        SETB  FLAG1
        AJMP  CH_END
    DIG:CLR   FLAG1
 CH_END:NOP
CHKE_END:RET

   T12MS:MOV     R7,   #18H
     TM1:MOV     R6,   #0FFH
    TM66:DJNZ    R6,   TM66
         DJNZ    R7,   TM1
         RET

;****************檢驗密碼正誤******************************
   C_PSW:PUSH  PSW
         PUSH  ACC
         MOV  R2,#06H
         MOV  R0,#PS1
         MOV  R1,#AT1
     C_P:CLR  C
         MOV  A,@R0
         SUBB A,@R1
         JNZ  RETURN
         DEC  R0
         DEC  R1
         DJNZ R2,C_P
         NOP
         SETB PSW_F
         AJMP EXIT7
  RETURN:CLR  PSW_F
   EXIT7:NOP
         POP  ACC
         POP  PSW
         RET
;×××××××××××××××××鎖定,鳴笛子程序××××××××××××
 LOCK_1M:MOV  R4,#3CH                   ;鎖定1分鐘
 M1_LOOP:LCALL SEC
         DJNZ  R4,M1_LOOP
         NOP
         RET

    WARN2S:PUSH  PSW
          PUSH  ACC
          MOV   R5, #14H      ;調用20次BP,報警2s
     WARN:LCALL BP
          DJNZ  R5,WARN
          NOP
          POP   ACC
          POP   PSW
          NOP
          RET
      BP:CLR   SPK            ;鳴笛子程序
         LCALL T100MSD
         SETB  SPK
         NOP
         RET

  • 上一篇: MCS51 三字節(jié)無符號除法程序(ASM)
  • 下一篇: 用51 單片機實現公歷與農歷星期的轉換
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1