版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 主程序流程圖:開始初始化調用顯示有鍵按下?識別按鍵功能鍵?Y N輸入新密碼確認鍵?修改密碼子程序Y刪除鍵?N清除屏幕所輸數(shù)字原始密碼確認鍵?開門鍵?屏幕顯示:“PASS NEW WORD”Y開門N開始修改密碼子程序流程圖:輸入原始密碼按下鍵比較密?碼?重新輸入屏幕顯示:“:”輸入新密碼存入緩沖再輸入一次比較密碼?重新輸入存入存儲芯片NY電子鎖源程序:RSBIT P3.5 ;RSBIT 接口3第5位 RWBIT P3.6 ;RWBIT 接口3第6位 EBIT P3.7 ;EBIT 接口3第7位SCL BIT P3.2 ;串行時鐘SCL BIT,P3.2 SDA BIT P3.3 ;串行數(shù)據(jù)SD
2、A BIT,P3.3 FLAG BIT 00H CHN BIT 62H GAI BIT 60H ORG 00H ;定義當前位置為 00HLJMPMAIN ORG 0BH ;定義當前位置為 0BH JMP TIM0 ;間接轉移到 TIM0MAIN: MOVSP,#70H ;設置堆棧 MOVR1,#20H ;把密碼存放到at24c02的20H MOVR6,#06 ;6個密碼 MOVR0,#30H ;存入RAM 30H-35H S1: LCALL START1 ;長調用 START1MOV A, #0A0H ;送器件地址及寫標志 傳送 寄存器A,立即數(shù)0A0H LCALL WBYTE ;長調用 WB
3、YTEMOV A, R1 ;送單元地址 傳送 寄存器A,R1 LCALL WBYTE ;長調用 WBYTELCALL START1 ;長調用 START1MOV A,#0A1H ;送器件地址及讀標志 傳送 寄存器A,立即數(shù)0A1H LCALL WBYTE ;長調用 WBYTELCALL RBYTE ;長調用 RBYTEMOVR0,A ;MOVR0,A LCALL STOP ;長調用 STOPINC R1 ; 加1 通用寄存器1,INC R0 ; 加1 通用寄存器0,DJNZ R6, S1; 減一不為0轉移 通用寄存器6,S1 MOVP2,#01H ;清除LCD屏幕 CALLENABLE MOV
4、P2,#38H ;LCD功能設定,DL=1(8位),N=1(2行顯示) CALLENABLE MOVP2,#0FH ;顯示屏幕ON/OFF,D=1(顯示ON) CALLENABLE ;C=1(光標ON),B=1(閃爍ON) MOVP2,#06H ;LCD模態(tài)設定,I/D=1(技術地址加1) CALLENABLE MOVP2,#80H ;LCD第1行地址 CALLENABLE MOVDPTR,#TABLE1 ;到TABLE取碼顯示“PASS WORD:000000” CALLWRITE1 MOVP2,#8AH ;光標所在位置(第1個數(shù)字地址) CALLENABLE MOV R7,#03H ;傳送
5、 通用寄存器7,立即數(shù)03H CLRGAI START: MOVR4,#06 ;清除按鍵存放RAM的內容 MOVR0,#40H CLEAR:MOVR0,#00H INCR0 DJNZR4,CLEAR MOVR0,#40H ; 按鍵值的RAM 40H-45H L1:MOVR3,#0F7H ;鍵盤行掃描初值 MOVR1,#00H ;TABLE2(鍵盤內碼)的取碼指針L2:MOVA,R3 MOVP0,A ;行掃描輸出MOVA,P0 ;讀入鍵盤值存入R4 MOVR4,A SETBC ;C=0表示有按MOVR5,#04H L3:RLCA JNCKEYIN INCR1 DJNZR5,L3 ;4個列掃描完畢
6、否? MOVA,R3 ;掃描下1行 SETBC RRCA MOVR3,A JCL2 ;4個行掃描完畢否? JMPL1 ;*按鍵掃描部分 KEYIN:MOVR2,#10 ;消除抖動10毫秒 D2:MOVR6,#248 DJNZR6,$ DJNZR2,D2 D3:MOVA,P0 ;讀入鍵盤值與前值(R4)比較是否相等? XRLA,R4 :相等表示按鍵尚未放開? JZD3 MOVA,R1 ;至TABLE2取鍵盤碼 MOVDPTR,#TABLE2 MOVCA,A+DPTR MOVR2,A ;先存入R2,以免數(shù)據(jù)被破壞XRLA,#41H ;是否按“*”,設定密碼 JZSET0 MOVA,R2 XRLA,
7、#42H ;是否按“#”,清除屏幕 JZ WU ;寄存器為0轉移 WUMOVA,R2 XRLA,#43H ;是否按“A”,顯示密碼 JZSHE;L1MOVA,R2 XRLA,#44H ;是否按“B”,比較密碼,相同則開門 JZKKK;MOVA,R2 XRLA,#45H ;“C”鍵無作用 JZSU MOVA,R2 XRLA,#46H ;“D”鍵無作用 JZL1 MOVA,R2 ;數(shù)字碼顯示至LCDPUSHAcc MOVA,#2AH CALLWRITE2 POPAcc SUBBA,#30H ;鍵盤碼為ASCII碼,減30H變?yōu)槭M制碼 MOVR0,A ;存入40-45H INCR0 JMPKKL
8、 KKK:JMPCOMP KKL:CALLCHECK ;檢查LCD是否顯示完第6個數(shù)字 JMPL1 SHE:LJMP YZ YI:LJMP MAIN WU:LJMP CLEAR1 ;*密碼修改鍵 SET0: JNB CHN,CLEAR1 JB GAI,C0 SE: SETBGAI MOVR6,#06H ;密碼設定 MOVR0,#40H ;鍵盤顯示器存放RAM40-45H MOVR1,#30H ;密碼存放RAM 30H-35H SET2:MOVA,R0 XCHA,R1 INCR0 INCR1 DJNZR6,SET2 JMP CLEAR1 ;清除LCD6個數(shù)字為“000000” C0: MOVR1
9、,#40H MOVR0,#30H ;30H為“0”的ASCII碼 MOVR2,#06H CO2:MOVA,R0 XRLA,R1 JNZYI INCR0 INCR1 DJNZ R2,CO2 ;減一不為0轉移 通用寄存器2,CO2 LCALL SE2 ;長調用 SE2 JMPCLEAR1 SE2:MOVR6,#06H MOVR0,#40H MOVR2,#20H MOVR1,#30H SET1:LCALL START1; 長調用 START1MOV A, #0A0H ;送器件地址及讀寫標志 傳送 寄存器A,立即數(shù)0A0H LCALL WBYTE ;長調用 WBYTEMOV A, R2 ;送單元地址
10、傳送 寄存器A,R2 LCALL WBYTE ;長調用 WBYTEMOV A,R0;寫入數(shù)據(jù) 傳送 寄存器A,通用寄存器0指向的單元的內容LCALL WBYTE ;長調用 WBYTELCALL STOP ; 長調用 STOP, LCALL DELAY2 ;等待 長調用 DELAY2,INC R0; 加1 通用寄存器0 INC R1 ;加1 通用寄存器1INCR2 ;INCR2 DJNZ R6,SET1 ; 減一不為0轉移 通用寄存器6,SET1 CLRGAI CLR CHN ;清0 CHNJMPCLEAR2 SU: JMP CH ;間接轉移到 CH;*清除功能鍵CLEAR1:MOVP2,#8A
11、H CALLENABLE MOVR1,#06 A4:MOVA,#30H CALLWRITE2 DJNZR1,A4 MOVP2,#8AH CALLENABLE JMPSTART CLEAR2:MOVP2,#8AH CALLENABLE MOVR1,#06 A2:MOVA,#30H CALLWRITE2 DJNZR1,A2 MOVP2,#8AH CALLENABLE JMPMAIN YZ: MOVR1,#40H MOVR0,#30H ;密碼存放RAM 30H-35H MOVR2,#06H ;6個數(shù) YZ1:MOVA,R0 XRLA,R1 JNZERROR INCR0 INCR1 DJNZ R2,Y
12、Z1 CALLNEW LJMP CLEAR1 ;長轉移到 CLEAR1;*開鎖功能鍵COMP: MOVR1,#40H MOVR0,#30H MOVR2,#06H COMP1: MOVA,R0 XRLA,R1 JNZERROR ;比較是否相等? INCR0 INCR1 DJNZ R2,COMP1 ;減一不為0轉移 通用寄存器2,COMP1CALLRIGHT ;6個碼都相等則LCD顯示“RIGHT!”CLRP3.1 ;電鎖動作CALLDELAY1 CALLSPACE ;LCD清除“RIGHT!” CALLDELAY1 JMPCLEAR1 CH:SETBP3.1 ;令電鎖不動作ERROR:MOVP2
13、,#0C0H ;LCD第2行地址CALLENABLE MOVDPTR,#TABLE4 ;至TABLE4取出“ERROR! ” CALLWRITE1 ;輸出至LCD顯示CALLDELAY1 CALLSPACE ;LCD清除“ERROR!”為空白 DJNZ R7,S0 ;減一不為0轉移 通用寄存器7,S0 LCALL MUSIC ;長調用 MUSIC S0: JMPCLEAR1 ;LCD清除為“000000” S2: JMP CLEAR2 ;間接轉移到 CLEAR2RIGHT:MOVP2,#0C0H ;LCD第2行地址 CALLENABLE MOVDPTR,#TABLE5 ;至TABLE6取“”
14、CALLWRITE1 ;輸出至LCD顯示6個空白 LCALLBAOJING1 LCALL BAOJING2 ;長調用 BAOJING2RET ;子程序返回 ;*原密碼確認鍵NEW:MOVP2,#0C0H CALLENABLE MOVDPTR,#TABLE3 CALLWRITE1 LCALLBAOJING1 LCALL BAOJING2 ;長調用 BAOJING2 SETB CHN ;位-置1 CHNRET ;子程序返回 ;500hz報警信號程序; BAOJING1: MOV R2,#200 ;傳送 通用寄存器2,立即數(shù)200DV: CPL P3.0 ;取反 接口3第0位LCALL DELAY5
15、00 ;長調用 DELAY500LCALL DELAY500 ;長調用 DELAY500DJNZ R2,DV ;減一不為0轉移 通用寄存器2,DVRET ;子程序返回 ;1khz報警信號程序; BAOJING2: MOV R2,#200 ;傳送 通用寄存器2,立即數(shù)200DV1: CPL P3.0 ;取反 接口3第0位LCALL DELAY500 ;長調用 DELAY500DJNZ R2,DV1 ;減一不為0轉移 通用寄存器2,DV1RET ;子程序返回 ;500us延時程序; DELAY500: MOV R3,#249 ;傳送 通用寄存器3,立即數(shù)249LOOP: DJNZ R3,LOOP
16、;減一不為0轉移 通用寄存器3,LOOPRET ;子程序返回 ;*2002年的第一場雪* MUSIC: MOV TMOD,#01H ;傳送 TMOD,立即數(shù)01H MOV IE,#82H ;傳送 IE,立即數(shù)82HSTART2: MOV 10H,#00H ;傳送 10H,立即數(shù)00HNEXT: MOV A,10H ;傳送 寄存器A,10H MOV DPTR,#TABL ;傳送 DPTR,立即數(shù)TABL MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV R2,A ;傳送 通用寄存器2,寄存器A JZ END0 ;寄存器為0轉移 END0 ANL A,#
17、0FH ;邏輯-與 寄存器A,立即數(shù)0FH MOV R5,A ;傳送 通用寄存器5,寄存器A MOV A,R2 ;傳送 寄存器A,通用寄存器2 SWAP A ;A高低半字節(jié)交換 寄存器A ANL A,#0FH ;邏輯-與 寄存器A,立即數(shù)0FH JNZ SING ;寄存器不為0轉移 SING CLR TR0 ;清0 TR0 JMP M1 ;間接轉移到 M1SING: DEC A ;減1 寄存器A MOV 22H,A ;傳送 22H,寄存器A RL A ;循環(huán)左移 寄存器A MOV DPTR,#TABL1 ;傳送 DPTR,立即數(shù)TABL1 MOVC A,A+DPTR ;程序存儲器-讀 寄存器A
18、,A+DPTR指向的單元的內容 MOV TH0,A ;傳送 TH0,寄存器A MOV 21H,A ;傳送 21H,寄存器A MOV A,22H ;傳送 寄存器A,22H RL A ;循環(huán)左移 寄存器A INC A ;加1 寄存器A MOVC A,A+DPTR ;程序存儲器-讀 寄存器A,A+DPTR指向的單元的內容 MOV TL0,A ;傳送 TL0,寄存器A MOV 20H,A ;傳送 20H,寄存器A SETB TR0 ;位-置1 TR0M1: CALL DELAY0 ;調用 DELAY0 INC 10H ;加1 10H JMP NEXT ;間接轉移到 NEXTEND0: CLR TR0
19、;清0 TR0 LJMP S2; JMP START2 長轉移到 S2TIM0: PUSH ACC ;入棧 ACC PUSH PSW ;入棧 PSW MOV TL0,20H ;傳送 TL0,20H MOV TH0,21H ;傳送 TH0,21H CPL P3.0 ;取反 接口3第0位POP PSW ;出棧 PSW POP ACC ;出棧 ACC RETI ;中斷返回 DELAY0: MOV R2,#01 ;傳送 通用寄存器2,立即數(shù)01M2: MOV R4,#187 ;傳送 通用寄存器4,立即數(shù)187M3: MOV R3,#248 ;傳送 通用寄存器3,立即數(shù)248 DJNZ R3,$ ;減一
20、不為0轉移 通用寄存器3,到本行 DJNZ R4,M3 ;減一不為0轉移 通用寄存器4,M3 DJNZ R2,M2 ;減一不為0轉移 通用寄存器2,M2 DJNZ R5,DELAY0 ;減一不為0轉移 通用寄存器5,DELAY0 RET ;子程序返回 TABL1: ; DW 64021,64103,64260,64400 ;DW 64021,64103,DW 64524,64580,64684,64777 ;DW 64524,64580,DW 64820,64898,64968,65030 ;DW 64820,64898,DW 65058,65110,65157,65178 ;DW 65058
21、,65110,TABL: ; ;1 DB 04H,0A2H,0A2H,0A2H,0A2H,0A2H,0A2H,0B4H,0A2H,92H,72H,72H,72H,72H,92H DB 92H,92H,92H,92H,92H,92H,62H,72H,72H,72H,04H DB 02H,0A2H,0A2H,0A2H,0A4H,0A2H,0A2H,0B4H,0A2H,92H,92H,0A2H,0A4H DB 02H,62H,62H,62H,62H,62H,52H,0A2H,94H,92H,92H,92H,72H,74H DB 04H,0A2H,0A2H,0A2H,0A2H,0A2H,0A2H,0B
22、4H,0A2H,92H,72H,72H,72H,72H,92H DB 92H,92H,92H,92H,92H,92H,62H,72H,72H,72H,04H DB 02H,0A2H,0A2H,0A2H,0A4H,0A2H,0A2H,0B4H,0A2H,92H,92H,0A2H,0A4H DB 02H,62H,62H,62H,62H,62H,52H,0A2H,94H,92H,92H,92H,72H,74H ;3 DB 02H,0A2H,0A2H,0A2H,0A2H,0A2H,0A2H,0B4H,0A2H,0B2H,92H,72H,74H DB 02H,62H,62H,62H,64H,62H,52
23、H,74H,62H,72H,52H,32H,34H DB 02H,0A2H,0A2H,0A2H,0A2H,0A2H,0A2H,0A2H,0B4H,0A2H,0B2H,92H,72H,74H DB 02H,62H,62H,62H,62H,62H,52H,32H,94H,92H,92H,62H,72H,74H DB 02H,0A2H,0A2H,0A2H,0A4H,0A2H,0A2H,0B4H,0A2H,92H,72H,72H,74H DB 02H,62H,62H,62H,62H,62H,62H,52H,74H,62H,72H,52H,32H,34H ;4 DB 02H,62H,62H,62H,62
24、H,62H,52H,32H,52H,52H,52H,32H,32H,22H,12H DB 02H,62H,62H,62H,62H,62H,52H,32H,62H,72H,72H,72H,72H DB 02H,62H,62H,62H,62H,62H,52H,32H,92H,0A2H,0A2H,0A2H,0A2H RET ;子程序返回 ;* SPACE:MOVP2,#0C0H CALLENABLE MOVDPTR,#TABLE6 CALLWRITE1 RET ;子程序返回 CHECK:MOVP2,#0FFH CLRRS SETBRW CLRE NOP ;空操作 SETBE JBP2.7,CHECK
25、 MOVA,P2 ANLA,#7FH CJNEA,#10H,A3 MOVP2,#8AH CALLENABLE MOVR0,#40H A3:RET ;子程序返回 ENABLE:CLRRS CLRRW CLRE CALLDELAY ;CALLDELAY ;CALLDELAY SETBE RET ;子程序返回 WRITE1:MOVR1,#00H A1:MOVA,R1 MOVCA,A+DPTR CALLWRITE2 INCR1 CJNEA,#0FEH,A1 RET ;子程序返回 WRITE2:MOVP2,A SETBRS CLRRW CLRE CALLDELAY ;CALLDELAY ;CALLDEL
26、AY SETBE RET ;子程序返回 WBYTE: NOP ;寫字節(jié) 從這開始 空操作 MOV R3, #08H ;傳送 通用寄存器3,立即數(shù)08HWBY0: CLR SCL ;清0 SCLRLC A ;帶進位循環(huán)左移 寄存器AMOV SDA, C ;傳送 SDA,進位標志/累加位SETB SCL ;位-置1 SCLDJNZ R3, WBY0 ;減一不為0轉移 通用寄存器3,WBY0CLR SCL ;清0 SCLNOP ;空操作 SETB SCL ;位-置1 SCLNOP ;空操作 JB SDA, $ ;等待數(shù)據(jù)線上的應答信號 位-為1轉移到 SDA,$ CLR SCL ;清0 SCLNOP ;空操作 RET ;子程序返回 ;* RBYTE:NOP ;讀字節(jié) 空操作 MOV R3,#08H ; 傳送 通用寄存器3,立即數(shù)08H RBY0: CLR SCL ; 清0 SCL,NOP ;空操作 SETB SCL ; 位-置1 SCL,NOP ;空操作 MOV C, SDA ; 傳送 進位標志/累加位,SDA RLC A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版特種爆破作業(yè)安全責任合同3篇
- 2025年度建筑模板材料供應與施工合同4篇
- 二零二五年度瓷磚行業(yè)供應鏈金融合作協(xié)議12篇
- 2025年度店鋪門面使用權轉租與轉借合同范本2篇
- 2025年度裝配式房屋承建與配套服務全面合作協(xié)議4篇
- 二零二五年度高端嬰兒配方奶粉區(qū)域代理銷售合同3篇
- 2025年場監(jiān)督管理局行政處罰決定書(違規(guī)行為認定)4篇
- 2025年度車輛租賃與物流配送服務合同27篇
- 二零二五年度沙地生態(tài)農業(yè)示范區(qū)建設承包協(xié)議4篇
- 2025年度城市核心區(qū)存量房產銷售代理合同4篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 部編版二年級下冊《道德與法治》教案及反思(更新)
- 充電樁項目運營方案
- 退休人員出國探親申請書
- 傷殘撫恤管理辦法實施細則
- 高中物理競賽真題分類匯編 4 光學 (學生版+解析版50題)
- 西方經濟學-高鴻業(yè)-筆記
- 幼兒園美術教育研究策略國內外
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
評論
0/150
提交評論