《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 用AT89C2051設計的多功能密碼鎖
用AT89C2051設計的多功能密碼鎖
互聯(lián)網(wǎng)
摘要: 介紹一種由AT89C2051編程實現(xiàn)的控制電路,具有按鍵有效指示、輸入錯誤、解碼有效指示、控制開鎖、定時中斷、錯誤報警、密碼修改等功能;8位10進制密碼,保密好使用范圍廣,特適用家庭、賓館等場所
Abstract:
Key words :
介紹一種由AT89C2051編程實現(xiàn)的控制電路,具有按鍵有效指示、輸入錯誤、解碼有效指示、控制開鎖、定時中斷、錯誤報警、密碼修改等功能;8位10進制密碼,保密好使用范圍廣,特適用家庭、賓館等場所。

一、硬件電路:
  
  
   AT89C2051是與MCS-51系列兼容的一種高性能單片機,具有2KB片內(nèi)ROM、256字節(jié)片內(nèi)RAM,可以不需擴展外程序、數(shù)據(jù)存儲器,可滿足一般的程序需求,從硬件組成可以看出該密碼鎖有一個3X4陣列的鍵盤,只需7條I/O引腳就可以了余下的I/O引腳可以開發(fā)其他控制功能,如:控制空調(diào)、電燈、風扇等。

二、功能實現(xiàn)

   鍵盤掃描所用引腳P1.0-P1.6,其中P1.4-P1.6這3條引腳用于輸出掃描信號,P1.0-P1.3這4條引腳用于檢測按鍵的狀態(tài)。P1.0-P1.6的狀態(tài)組成的鍵碼以及對應按鍵如表1所列。
 


   在程序執(zhí)行中,是先從P1.6送出“0”,再判別P1.3-P1.0的輸入。所以,實質(zhì)是在P1.6-P1.4送出“011”,接收P1.3-P1.0的輸入狀態(tài),這時判別8,9,A這4個鍵。接著,在P1.6-P1.4送出“101”,接收P1.3-P1.0的輸入,這時判別4,5,6,7這4個鍵。再而,在P1.6-P1.4送出“110”,接收P1.3-P1.0的輸入,這時判別0,1,2,3這4個鍵的狀態(tài)。
   開鎖電平UNLOCK的輸出腳P3.0,當輸入的鍵正確時則在P3.0輸出開鎖電平UNLOCK。
   報警電平DANG輸出腳P3.1。在6次誤碼輸入的條件下,進行報警。
   LOCK控制引腳P3.2,90S之后停止輸入。
   有效按鍵提示EFFI引腳P3.3。
   錯誤輸入警告WARN引腳P3.4。
   另外,還有引腳5,4接石英振蕩器的XTAL2,XTAL1端,組成石英振蕩器電路,在圖1中沒有畫出。引腳1用于復位。

三、密碼鎖的控制程序

   密碼鎖的控制程序由延時子程序、修改密碼子程序、掃描輸入子程序、時鐘中斷子程序及主程序組成。程序框圖如圖2所示。它對輸入的8位十進制密碼進行判別,如果輸入密碼正確,則可以直接開鎖或修改密碼之后開鎖。如果不正確,并且6次以上輸入不正確,則報警并封鎖輸入口。
 
  1.主程序:
           ORG   0H
           SJMP  START
           ORG   0BH
           SJMP  INT
           START            ;初始化
           MOV   SP.#70H
           SETB  P3.0
           SETB  P3.1
           SETB  P3.2
           SETB  P3.3
           MOV   TMOD,#01H
           MOV   TL0,#00H
           MOV   TH0,#00H
           SETB  TR0
           SETB  ET0
           SETB  EA
           MOV   R2,#0FFH
           MOV   3AH,#03H
           MOV   R3,#06H
   
  PASSWORD:MOV   R4,#08H        ;設置初始密碼
           MOV   R0,#40H
           MOV   A,#07H
           MOV   @R0,A
           INC   R0
           INC   A
           DJNZ  R4,PASSWORD

  DETPW:   MOV   R4,#08H         ;輸入密碼
           MOV   R0,#30H
 
  AGAIN:   ACALL INPUT
           MOV   A,R7
           CJ    R7,#08H,IN
           ACALL CHPSW           ;修改密碼子程序
           JMP   GETPW

  IN:      MOV   @R0,A
           CLR   P3.3            ;按鍵有效顯示
           ACALL DELAY
           SETB  P3.3
 
  COMP:    MOV   R4,#08H         ;比較密碼
           MOV   R0,#30H
 
  AGAI:    MOV   50H,@R0
           ADD   R0,#010H
           MOV   A,@R0
           SUB   R0,#010H
           CJNE  A,50H,ONCEMORE
           INC   R0
           DJNZ  R4,AGA1
           CLR   P3.0
 
  HERE:    AJMP  HERE
 
  ONCEMORE:CLR   P3.4             ;錯誤輸入警告
           ACALL DELAY
           SETB  P3.4
           DJNZ  R3,GETPW
           CLR   P3.1             ;6次錯誤輸入報警
  THERE:   AJMP  THERE

 2.延時子程序
  DELAY:   MOV   R5,#30H
 
  DELAY1:  MOV   A,#0FFH
 
  LOOOP:   DEC   A
           JNZ   LOOP
           DJNZ  R5,DELAY1
           RET
 
 3.修改密碼子程序
  CHPSW:   MOV   R0,#40H
 
  ANOTHER: ACALL INPUT
           MOV   A,R7
           MOV   @R0,A
           INC   R0
           CLR   P3.3              ;按鍵有效提示
           ACALL DELAY
           SETB  P3.3
           DJNZ  R4,ANOTHER
           RET
 
 4.掃描鍵盤輸入子程序
  INPUT:   MOV   R6,#02H
           MOV   R1,#40H
 
  LOP:     ACALL DELAY
           MOV   P1,#0FFH           ;掃描碼
           CLR   P1.6
           MOV   A,P1
           ANL   A,#0FH             ;檢驗有否按鍵
           CJNE  A,#0FH,INKEY
           MOV   P1,#0FFH
           CLR   P1.5
           MOV   A,P1
           ANL   A,#0FH
           CJNE  AA,#0FH,INKEY
           MOV   P1,#0FFH
           CLR   P1,4
           MOV   A,P1
           ANL   A,#0FH
           CJNE  A,#0FH,INKEY
           SJMP  LOP
 
  INKEY:   MOV   @R1,P1
           INC   R1
           DJNZ  R6,LOP
           DEC   R1
           MOV   A,@R1
           DEC   R1
           CJNE  A,40H,INPUT
           RET

 5.時鐘中斷子程序
  INT:     PUSH  ACC
           MOV   TMOD,#01H
           MOV   TL0,#00H
           MOV   TH0,#00H
           SETB  TR0
           SETB  ET0
           SETB  EA
           DJNZ  R2,CONT
           CONTINUE
           DJNA  3AH,CONT
           CLR   P3.2         ;時鐘中斷控制
 
  STOP:    AJMP  STOP
 
  CONT:    POP   ACC
           RET1

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。