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

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

二,、功能實(shí)現(xiàn)

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


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

三,、密碼鎖的控制程序

   密碼鎖的控制程序由延時(shí)子程序,、修改密碼子程序、掃描輸入子程序,、時(shí)鐘中斷子程序及主程序組成,。程序框圖如圖2所示。它對(duì)輸入的8位十進(jìn)制密碼進(jìn)行判別,,如果輸入密碼正確,,則可以直接開(kāi)鎖或修改密碼之后開(kāi)鎖。如果不正確,,并且6次以上輸入不正確,則報(bào)警并封鎖輸入口,。
 
  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        ;設(shè)置初始密碼
           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             ;錯(cuò)誤輸入警告
           ACALL DELAY
           SETB  P3.4
           DJNZ  R3,GETPW
           CLR   P3.1             ;6次錯(cuò)誤輸入報(bào)警
  THERE:   AJMP  THERE

 2.延時(shí)子程序
  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             ;檢驗(yàn)有否按鍵
           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.時(shí)鐘中斷子程序
  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         ;時(shí)鐘中斷控制
 
  STOP:    AJMP  STOP
 
  CONT:    POP   ACC
           RET1

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