色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用AT89C2051設(shè)計的多功能密碼鎖

          用AT89C2051設(shè)計的多功能密碼鎖

          作者: 時間:2011-01-27 來源:網(wǎng)絡(luò) 收藏
          本站介紹一種由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)、電燈、風(fēng)扇等。

          二、功能實現(xiàn)

          鍵盤掃描所用引腳P1.0-P1.6,其中P1.4-P1.6這3條引腳用于輸出掃描信號,P1.0-P1.3這4條引腳用于檢測按鍵的狀態(tài)。P1.0-P1.6的狀態(tài)組成的鍵碼以及對應(yīng)按鍵如表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,當(dāng)輸入的鍵正確時則在P3.0輸出開鎖電平UNLOCK。
          報警電平DANG輸出腳P3.1。在6次誤碼輸入的條件下,進行報警。
          LOCK控制引腳P3.2,90S之后停止輸入。
          有效按鍵提示EFFI引腳P3.3。
          錯誤輸入警告WARN引腳P3.4。
          另外,還有引腳5,4接石英振蕩器的XTAL2,XTAL1端,組成石英振蕩器電路,在圖1中沒有畫出。引腳1用于復(fù)位。

          三、密碼鎖的控制程序

          密碼鎖的控制程序由延時子程序、修改密碼子程序、掃描輸入子程序、時鐘中斷子程序及主程序組成。程序框圖如圖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 ;設(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 ;錯誤輸入警告
          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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉