版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 題目: 基于51單片機的四位密碼鎖設(shè)計 </p><p><b> 目錄</b></p><p> 第1章緒論-------------------------------3</p><p> 第2章 課程設(shè)計分析------------------3</p><p> 第3章 硬件
2、電路設(shè)計----------------------4</p><p> 3.1 單片機最小系統(tǒng)------------------------------------------4</p><p> 3.2 LED顯示電路設(shè)計---------------------------------------5</p><p> 3.3 鍵盤電路設(shè)計------
3、-------------------------------------6</p><p> 第4章 系統(tǒng)軟件設(shè)計---------------------------7</p><p> 4.1 軟件總體設(shè)計思路-------------------------------------------7</p><p> 4.2 各子程序的設(shè)計-------
4、----------------------------------7</p><p> 第5章 參考文獻----------------------------------15</p><p> 第6章 心得體會---------------------------11</p><p> 附錄---------------------------------
5、----12</p><p> 附錄A源程序清單--------------------------------------------17</p><p> 附錄B硬件原理圖--------------------------------------------23</p><p><b> 一、緒論</b></p>&l
6、t;p> 電子密碼鎖是一種通過單片機來控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。</p><p> 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上
7、還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。</p><p><b> 二、課程設(shè)計分析</b></p><p><b> 1、任務(wù)要求:</b></p&
8、gt;<p> 1、密碼鎖由4X4鍵盤和4位數(shù)碼管組成。 </p><p> 2、當(dāng)輸入密碼時,只顯示“8.”,當(dāng)密碼位數(shù)輸入完畢按下確認(rèn)鍵時,對輸入的密碼與設(shè)定的密碼進行比較,若密碼正確,則門開,此處用LED發(fā)光二極管亮一秒鐘做為提示。若密碼不正確,則可以從新輸入密碼。如連續(xù)三次輸入錯誤,則禁止輸入。</p><p> 2、總體開發(fā)計劃如下:</p>&
9、lt;p> 通過討論,本課程設(shè)計可劃分為硬件部分與軟件部分,硬件部分主要分為以下幾個模塊:系統(tǒng)主控制模塊(最小系統(tǒng)板),顯示模塊以及按鍵模塊,這些模塊都是通過單片機來控制的。硬件電路通過PROTEUS繪制,軟件部分主要是用KEIL編寫程序,實現(xiàn)各個模塊的功能,最后將KEIL編寫的程序通過PROTEUS仿真。</p><p> 3、系統(tǒng)總原理框圖如下:</p><p><b&
10、gt; 單片機控制方案</b></p><p> 4、設(shè)計要實現(xiàn)以下的功能:</p><p> ?、俅蜷_電源后,顯示器顯示初始狀態(tài);</p><p> ?、谠O(shè)置一個初始密碼,通電時只要輸入此密碼便可開鎖;</p><p> ?、圯斎朊艽a用矩形鍵盤,包括數(shù)字鍵和功能鍵:</p><p> ?、茉O(shè)置“輸入”
11、鍵,在每次要輸入密碼要先按“輸入”鍵,否則無法輸入密碼,若密碼與設(shè)定密碼相同,提示正確信息,否則提示錯誤信息,連續(xù)三次輸入密碼錯誤后,鎖住鍵盤一小時后才可以再次輸入密碼;</p><p> ?、菰O(shè)置“確定”鍵,用于輸完密碼鎖時識別密碼,再次按下確認(rèn)鍵二極管閃一秒用來表示開鎖;</p><p> ?、拊O(shè)置“取消”鍵,按下時返回最初的狀態(tài)即點輸入按鍵前的狀態(tài);</p><p
12、> ⑥設(shè)置“重填”鍵,按下時,可以重新輸入密碼;</p><p> ⑦LED數(shù)碼管顯示是否輸入密碼及已輸入的密碼的位數(shù);</p><p><b> 三、系統(tǒng)硬件電路圖</b></p><p><b> 單片機最小系統(tǒng)</b></p><p> 主控芯片以及晶振電路,采用12MHZ晶振
13、,一個機器周期為1us</p><p><b> 復(fù)位電路</b></p><p> 本設(shè)計中,采用P0口作為LED數(shù)據(jù)輸入端,P2口作為掃描端,P1外接4x4鍵盤。</p><p><b> 數(shù)碼管顯示電路</b></p><p> 本設(shè)計中采用動態(tài)顯示,數(shù)碼管顯示電路采用了1片74LS2
14、45芯片和0.1k限流電阻接P0口作為數(shù)據(jù)輸入端,PNP三極管加限流電阻接P2作為掃描端。</p><p> 74LS245引腳圖以及功能表:</p><p> LED數(shù)碼管選用7SEG-MPX4-CA-BLUE的共陽極四位數(shù)碼管,引腳圖如下:</p><p> 3、4x4鍵盤的設(shè)計</p><p> 采用4x4矩陣式鍵盤,矩陣式鍵盤
15、又稱為行列式鍵盤,是將I/O口線的一部分作為行線,另一部分作為列線,按鍵設(shè)置在行線和列線的交叉點上,這種設(shè)計減少鍵盤與單片機I/O口接線的數(shù)目。只需要N個行線和M個列線就可以實現(xiàn)N*M個鍵的操作。與P1口相連接。外接5v電源和5.1k的上拉電阻,保證鍵盤穩(wěn)定運行。軟件上采用100ms延時去抖。</p><p><b> 系統(tǒng)的軟件設(shè)計</b></p><p><
16、;b> 1、軟件設(shè)計思路</b></p><p> 電子密碼鎖工作的主要過程是LED數(shù)碼管提示開始輸入密碼,通過鍵盤輸入密碼,同時LED顯示密碼輸入情況,按下確認(rèn)鍵后識別密碼的對與錯,并做出相應(yīng)的處理。</p><p> 密碼的設(shè)定,原始密碼的存放地址為31H—34H,修改后的密碼存放地址為41H—43H。</p><p> 通電時,讓數(shù)碼
17、管顯示4個“—”,每次要輸入密碼要先進入輸入狀態(tài),初始的輸入狀態(tài)無顯示,否則無法輸入密碼。還未輸完4位密碼時點確定、輸入鍵沒反應(yīng),如果按下取消鍵跳回初始狀態(tài),按下重填鍵返回輸入初始狀態(tài),輸滿4位,點確定,立即識別密碼。密碼正確顯示4個“P”,再次按下確認(rèn)鍵,外界的發(fā)光二極管導(dǎo)通閃爍1s表示開箱,然后跳回初始狀態(tài)。密碼不正確時,顯示4個“E”,后跳回初始狀態(tài),連續(xù)三次輸入密碼錯誤后,系統(tǒng)鎖定,等待1h后才可在此輸入密碼,提高了系統(tǒng)的安全可
18、靠性。</p><p> 2、初始密碼以及功能按鍵的定義:</p><p> MM1 DATA 31H</p><p> MM2 DATA 32H</p><p> MM3 DATA 33H</p><p> MM4 DATA 34H</p><p><b> X EQU
19、00H</b></p><p><b> Y EQU 00H</b></p><p><b> W EQU 00H</b></p><p><b> Z EQU 00H</b></p><p> MOV MM1,#X</p><p>
20、 MOV MM2,#Y</p><p> MOV MM3,#W</p><p> MOV MM4,#Z;設(shè)定初始密碼為“0000”</p><p> MOV R7,#03H;設(shè)定允許連續(xù)輸入錯誤的次數(shù)</p><p> MOV 35H,#0AH;輸入鍵</p><p> MOV 36H,#0BH;確認(rèn)鍵&l
21、t;/p><p> MOV 37H,#0CH;取消鍵</p><p> MOV 38H,#0DH;返回鍵</p><p> MOV 39H,#0EH;無效鍵</p><p> MOV 3AH,#0FH;無效鍵</p><p><b> 矩陣鍵盤的掃描</b></p><p
22、> 陣式鍵盤又稱為行列式鍵盤,是將I/O口線的一部分作為行線,另一部分作為列線,按鍵設(shè)置在行線和列線的交叉點上,如圖所示。這種設(shè)計減少鍵盤與單片機I/O口接線的數(shù)目。只需要N個行線和M個列線就可以實現(xiàn)N*M個鍵的操作。</p><p><b> 行掃描法識別的原理</b></p><p> 先使輸出口輸出FEH(首列掃描字),即使第0列為0,然后讀入行狀態(tài)
23、判斷行線是否有低電平;如果沒有低電平,再使輸出口輸出FDH(第二列掃描字)。以此類推,當(dāng)行線中有狀態(tài)為低電平時,則找到閉合鍵。根據(jù)此時0電平所在的行號和列號得出閉合鍵的鍵號值,期計算公式為:</p><p> 閉合鍵的鍵號值=行首鍵號+列號</p><p> 2)判斷閉合鍵是否釋放</p><p> 鍵閉合一次僅進行一次的鍵功能操作。等待按鍵釋放后去除抖動,再
24、將鍵值送入累加器A中,然后執(zhí)行鍵功能操作</p><p><b> 具體程序如下:</b></p><p> LINEDATA 47H;按鍵行號</p><p> ROWDATA 48H;按鍵列號</p><p> ;以下為鍵盤掃描程序,計算鍵值并存入A</p><p&
25、gt; KEY: MOV P1,#0F0H;掃描行碼</p><p><b> LIN1:</b></p><p> JNB P1.0,LIN2 ;該行無鍵按下,掃描下一行</p><p> LCALL DELAY100ms</p><p> JNB P1.0,LIN2</p>
26、<p> MOV LINE,#00H ;存行號</p><p> LJMP RSCAN ;掃描列, 求列值</p><p><b> LIN2:</b></p><p> JNB P1.1,LIN3</p><p> LCALL DELAY100ms</p
27、><p> JNB P1.1,LIN3</p><p> MOV LINE,#01H ;存行號</p><p> LJMP RSCAN</p><p><b> LIN3:</b></p><p> JNB P1.2,LIN4</p><p>
28、 LCALL DELAY100ms</p><p> JNB P1.2,LIN4 </p><p> MOV LINE,#02H ;存行號</p><p> LJMP RSCAN</p><p><b> LIN4:</b></p><p> JNB P1.3,
29、LIN1</p><p> LCALL DELAY100ms</p><p> JNB P1.3,LIN1</p><p> MOV LINE,#03H ;存行號</p><p> RSCAN:MOV P1,#0FH ;掃描列碼</p><p><b> C1:</b&
30、gt;</p><p> JNB P1.4,C2</p><p> MOV ROW,#00H ;存列號</p><p> LJMP CALCU</p><p><b> C2:</b></p><p> JNBP1.5,C3</p><p> M
31、OVROW,#01H ;存列號 </p><p> LJMPCALCU</p><p><b> C3:</b></p><p> JNBP1.6,C4</p><p> MOVROW,#02H ;存列號</p><p> LJMPCALCU&
32、lt;/p><p><b> C4:</b></p><p> JNB P1.7,C1</p><p> MOV ROW,#03H</p><p><b> NOP</b></p><p><b> NOP</b></p><
33、;p> CALCU: ;計算鍵值</p><p> MOV A,LINE</p><p> MOVB,#04H ;行值乘4+列值=鍵值</p><p><b> MULAB</b></p><p><b> ADDA,R
34、OW</b></p><p> CALLDELAY100MS</p><p><b> RET</b></p><p><b> LED數(shù)碼管顯示</b></p><p> 設(shè)計的是4位的密碼鎖,所以數(shù)碼管選用7SEG-MPX4-CA-BLUE(共陽)。</p>
35、<p> ⑴設(shè)置密碼鎖初的始狀態(tài)為“————”如下圖</p><p> ?、圃诿看我斎朊艽a要先按“輸入”鍵,否則無法輸入密碼,按下“輸入”鍵時,不顯示,則可以輸入密碼,如下圖</p><p><b> 通過以下程序?qū)崿F(xiàn):</b></p><p><b> START:</b></p><
36、;p> MOVP0,#0BFH;沒有輸入時顯示"-"</p><p> MOVP2,#0F0H;4個非門都導(dǎo)通</p><p> CALLDELAY100MS</p><p> CALLKEY;判斷是否按下輸入密碼鍵,沒有按下返回主程序</p><p> CJNE A,35H,START
37、</p><p><b> MAIN:</b></p><p> MOVP0,#0FFH;沒有輸入時沒有顯示</p><p> MOVP2,#0F0H ;4個非門都導(dǎo)通</p><p> CALLDELAY100MS</p><p><b> JMP FIR
38、ST</b></p><p> ?、禽斎朊艽a時,如果輸入的是功能鍵,沒反應(yīng),若輸入的是數(shù)字鍵時,輸入1位、2位、3位、4位密碼時(不管正確與否)分別顯示如下圖:</p><p><b> 通過以下程序?qū)崿F(xiàn):</b></p><p> ;***********數(shù)據(jù)錄入階段*********</p><p>
39、 FIRST:CALLKEY</p><p> CJNEA,35H,Q11;判斷是否按下輸入,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> Q11:CJNEA,36H,Q12;判斷是否按下確定,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</
40、p><p> Q12:CJNEA,37H,Q13;判斷是否按下取消,按下返回START</p><p> JMPSTART</p><p> Q13:CJNEA,38H,Q14;判斷是否按下重填,按下返回MAIN,重新輸入密碼</p><p> JMP MAIN</p><p> Q14:
41、CJNEA,39H,Q15;判斷是否按下無效鍵,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> Q15:CJNEA,3AH,FIRST1;判斷是否按無效鍵,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> FIRST1:MOV41H,A
42、;輸入的第一位密碼存41H</p><p> MOVP0,#00H;輸入一位時,顯示"8."</p><p> MOVP2,#0FEH</p><p> CALLDELAY100MS</p><p> SECOND:CALLKEY</p><p> CJNEA,35H,
43、Q21</p><p> JMPSECOND</p><p> Q21:CJNEA,36H,Q22</p><p> JMPSECOND</p><p> Q22:CJNEA,37H,Q23</p><p> JMPSTART</p><p> Q23:CJNE
44、A,38H,Q24</p><p><b> JMPMAIN</b></p><p> Q24:CJNEA,39H,Q25</p><p> JMPSECOND</p><p> Q25:CJNEA,3AH,SECOND1</p><p> JMPSECOND<
45、;/p><p> SECOND1:MOV42H,A;第二位密碼存于42H</p><p> MOVP0,#00H</p><p> MOVP2,#0FCH;顯示2個"8."</p><p> CALLDELAY100MS</p><p> THIRD:CALL
46、KEY</p><p> CJNEA,35H,Q31</p><p> JMPTHIRD</p><p> Q31:CJNEA,36H,Q32</p><p> JMPTHIRD</p><p> Q32:CJNEA,37H,Q33</p><p> JMPST
47、ART</p><p> Q33:CJNEA,38H,Q34</p><p><b> JMPMAIN</b></p><p> Q34:CJNEA,39H,Q35</p><p> JMPTHIRD</p><p> Q35:CJNEA,3AH,THIRD1<
48、/p><p> JMPTHIRD</p><p> THIRD1:MOV43H,A;第三位密碼存于43H</p><p> MOVP0,#00H</p><p> MOVP2,#0F8H;顯示3個"8."</p><p> CALLDELAY100MS<
49、;/p><p> FOURTH:CALLKEY</p><p> CJNEA,35H,Q41</p><p> JMPFOURTH</p><p> Q41:CJNEA,36H,Q42</p><p> JMPFOURTH</p><p> Q42:CJNEA,37H
50、,Q43</p><p> JMPSTART</p><p> Q43:CJNEA,38H,Q44</p><p><b> JMPMAIN</b></p><p> Q44:CJNEA,39H,Q45</p><p> JMPFOURTH</p>&l
51、t;p> Q45:CJNEA,3AH,FOURTH1</p><p> JMPFOURTH</p><p> FOURTH1:MOV44H,A;第四位密碼存于44H</p><p> MOVP0,#00H</p><p> MOVP2,#0F0H;顯示4個"8."</p&
52、gt;<p> CALLDELAY100MS</p><p> ?。?*******以上為輸入四位密碼,然后繼續(xù)掃描按鍵********</p><p><b> FIFTH:</b></p><p><b> CALLKEY</b></p><p> Q51:CJNE
53、A,35H,Q52;判斷是否按下輸入,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIFTH</p><p> Q52:CJNEA,37H,Q53;判斷是否按下取消</p><p> JMPSTART</p><p> Q53:CJNEA,38H,Q54 ;判斷是否按下重填</p&g
54、t;<p><b> JMPMAIN</b></p><p> Q54: CJNE A,39H,Q55 ;判斷是否按下無效鍵</p><p> JMP FIFTH</p><p> Q55:CJNEA,3AH,Q56;判斷是否按下無效鍵</p><p>
55、JMPFIFTH</p><p> Q56:CJNEA,36H,FIFTH ;判斷是否按下確定</p><p><b> JMPPR</b></p><p> ?、让艽a驗證階段以及顯示</p><p><b> PR:</b></p><p><b&
56、gt; MOV A,41H</b></p><p> CJNE A,MM1,ERR</p><p><b> MOV A,42H</b></p><p> CJNE A,MM2,ERR</p><p><b> MOV A,43H</b></p><p>
57、; CJNE A,MM3,ERR</p><p><b> MOV A,44H</b></p><p> CJNE A,MM4,ERR</p><p> JMP PASS;判斷密碼正確性</p><p><b> ERR:</b></p><p> MOV P0,
58、#86H</p><p> MOV P2,#0F0H ;顯示4個"E"</p><p> CALL DELAY1s</p><p> CALL DELAY1s</p><p> DJNZ R7,ERR1</p><p> MOV R7,#03H</p>
59、<p> CALL DELAY1h ;鎖定系統(tǒng)1h才可繼續(xù)輸入密碼</p><p><b> JMP START</b></p><p> ERR1:JMP START ;輸入錯誤次數(shù)小于三次時跳回初始狀態(tài) </p><p><b&g
60、t; 錯誤時顯示如下</b></p><p><b> PASS:</b></p><p> MOV P0,#8CH</p><p> MOV P2,#0F0H ;顯示4個"P"</p><p> MOV R7,#03H</p><p&
61、gt;<b> CALL KEY</b></p><p> CJNE A,36H,PASS</p><p> CLR P2.6 ;燈亮一秒</p><p> CALL DELAY1s</p><p><b> SETB P2.6</b></p>
62、<p><b> JMP START</b></p><p><b> 正確時顯示如下:</b></p><p> 再次按下確認(rèn)鍵,發(fā)光二極管亮1s,再次跳回初始狀態(tài)。</p><p><b> 整個系統(tǒng)的電路圖</b></p><p><b>
63、 六、參考文獻</b></p><p> 王義軍,《單片機原理及應(yīng)用習(xí)題與實驗指導(dǎo)書》, 中國電力出版社;</p><p> 高偉,《AT89單片機原理及應(yīng)用》,國防工業(yè)出版社;</p><p> 蘭吉昌,《51單片機設(shè)計應(yīng)用百例》,機械工業(yè)出版社</p><p> 張桂蘭,《單片機原理與應(yīng)用》,機械工業(yè)出版社</
64、p><p> 李海濤,《PIC單片機應(yīng)用開發(fā)典型模塊》,國防工業(yè)出版社</p><p><b> 七、心得體會</b></p><p> 回顧起此次單片機課程設(shè)計,讓我感慨很多,從選題到定稿,從理論到實踐,在整整兩個星期的日子里,可以說是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多書本上所沒有學(xué)到過
65、的知識。</p><p> 兩周以來,整日埋頭于電路程序的設(shè)計,分析,組裝,繪制,仿真,總結(jié)以及打印材料等工作,。其實一開始真不知道該從何入手,短短幾天內(nèi),在各位老師的耐心知道和同學(xué)的幫助之下,開始在腦海里有了大致的模塊,就這樣整天埋在圖書館,面對電腦搜索資料,一塊一塊的電路慢慢拼成,于是又開始查找相關(guān)的資料,分析電路,根據(jù)自己的目的有效地編制程序,對比之下有進一步的完善,在形成電路大致模塊下又進一步盡可能的減
66、小成本,知道最終電路以自己最理想的形式出現(xiàn)。</p><p> 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,單片機課程設(shè)計的重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺得寫好一個程序不是一件簡單的事情。</p><p> 通過這次實習(xí),我真正學(xué)到了不少東西,真正體會到了理論聯(lián)系實際的重要性。課堂教學(xué)考慮到大多數(shù)同學(xué)的需求,主要強調(diào)基本知識,基本理論,基本方法
67、,基本技能。而這次設(shè)計正是為我們提供了一個深入學(xué)習(xí)、探索的機會,成為課堂教學(xué)的有益補充。</p><p> 附錄(源程序清單):</p><p> MM1 DATA 31H</p><p> MM2 DATA 32H</p><p> MM3 DATA 33H</p><p> MM4 DATA 34H<
68、;/p><p> LINEDATA 47H;按鍵行號</p><p> ROWDATA 48H;按鍵列號</p><p><b> X EQU 00H</b></p><p><b> Y EQU 00H</b></p><p><b>
69、 W EQU 00H</b></p><p><b> Z EQU 00H</b></p><p> MOV MM1,#X</p><p> MOV MM2,#Y</p><p> MOV MM3,#W</p><p> MOV MM4,#Z</p><
70、p> MOV R7,#03H</p><p> MOV 35H,#0AH</p><p> MOV 36H,#0BH</p><p> MOV 37H,#0CH</p><p> MOV 38H,#0DH</p><p> MOV 39H,#0EH</p><p> MOV
71、3AH,#0FH</p><p> ;***************主程序***************</p><p><b> START:</b></p><p> MOVP0,#0BFH;沒有輸入時顯示"-"</p><p> MOVP2,#0F0H;4個非門都導(dǎo)通<
72、/p><p> CALLDELAY100MS</p><p> CALLKEY;判斷是否按下輸入密碼鍵,沒有按下返回主程序</p><p> CJNE A,35H,START</p><p><b> MAIN:</b></p><p> MOVP0,#0FFH;沒有輸入時沒
73、有顯示</p><p> MOVP2,#0F0H ;4個非門都導(dǎo)通</p><p> CALLDELAY100MS</p><p><b> JMP FIRST</b></p><p> ;*******************以下為鍵盤掃描程序,計算鍵值并存入A*****************&l
74、t;/p><p> KEY: MOV P1,#0F0H;掃描行碼</p><p><b> LIN1:</b></p><p> JNB P1.0,LIN2 ;該行無鍵按下,掃描下一行</p><p> LCALL DELAY100ms</p><p> JNB P1.
75、0,LIN2</p><p> MOV LINE,#00H ;存行號</p><p> LJMP RSCAN ;掃描列, 求列值</p><p><b> LIN2:</b></p><p> JNB P1.1,LIN3</p><p> LCALL
76、DELAY100ms</p><p> JNB P1.1,LIN3</p><p> MOV LINE,#01H ;存行號</p><p> LJMP RSCAN</p><p><b> LIN3:</b></p><p> JNB P1.2,LIN4</p
77、><p> LCALL DELAY100ms</p><p> JNB P1.2,LIN4 </p><p> MOV LINE,#02H ;存行號</p><p> LJMP RSCAN</p><p><b> LIN4:</b></p><p&
78、gt; JNB P1.3,LIN1</p><p> LCALL DELAY100ms</p><p> JNB P1.3,LIN1</p><p> MOV LINE,#03H ;存行號</p><p> RSCAN: MOV P1,#0FH ;掃描列碼</p><p><b
79、> C1:</b></p><p> JNB P1.4,C2</p><p> MOV ROW,#00H ;存列號</p><p> LJMP CALCU</p><p><b> C2:</b></p><p> JNBP1.5,C3</p&
80、gt;<p> MOVROW,#01H ;存列號 </p><p> LJMPCALCU</p><p><b> C3:</b></p><p> JNBP1.6,C4</p><p> MOVROW,#02H ;存列號</p><p
81、> LJMPCALCU</p><p><b> C4:</b></p><p> JNB P1.7,C1</p><p> MOV ROW,#03H</p><p><b> NOP</b></p><p><b> NOP</b&g
82、t;</p><p> CALCU: ;計算鍵值</p><p> MOV A,LINE</p><p> MOVB,#04H ;行值乘4+列值=鍵值</p><p><b> MULAB</b></p><p>&
83、lt;b> ADDA,ROW</b></p><p> CALLDELAY100MS</p><p><b> RET</b></p><p> ;***********數(shù)據(jù)錄入階段*********</p><p> FIRST:CALLKEY</p><p&g
84、t; CJNEA,35H,Q11;判斷是否按下輸入,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> Q11:CJNEA,36H,Q12;判斷是否按下確定,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> Q12:CJNEA,37H,Q13
85、;判斷是否按下取消,按下返回START</p><p> JMPSTART</p><p> Q13:CJNEA,38H,Q14;判斷是否按下重填,按下返回MAIN,重新輸入密碼</p><p> JMP MAIN</p><p> Q14:CJNEA,39H,Q15;判斷是否按下無效鍵,按下沒反應(yīng)(繼續(xù)掃描這
86、位密碼)</p><p> JMPFIRST</p><p> Q15:CJNEA,3AH,FIRST1;判斷是否按無效鍵,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIRST</p><p> FIRST1:MOV41H,A;輸入的第一位密碼存41H</p><p> M
87、OVP0,#00H;輸入一位時,顯示"8."</p><p> MOVP2,#0FEH</p><p> CALLDELAY100MS</p><p> SECOND:CALLKEY</p><p> CJNEA,35H,Q21</p><p> JMPSECOND
88、</p><p> Q21:CJNEA,36H,Q22</p><p> JMPSECOND</p><p> Q22:CJNEA,37H,Q23</p><p> JMPSTART</p><p> Q23:CJNEA,38H,Q24</p><p><b&
89、gt; JMPMAIN</b></p><p> Q24:CJNEA,39H,Q25</p><p> JMPSECOND</p><p> Q25:CJNEA,3AH,SECOND1</p><p> JMPSECOND</p><p> SECOND1:MOV42H,A
90、;第二位密碼存于42H</p><p> MOVP0,#00H</p><p> MOVP2,#0FCH;顯示2個"8."</p><p> CALLDELAY100MS</p><p> THIRD:CALLKEY</p><p> CJNEA,35H,
91、Q31</p><p> JMPTHIRD</p><p> Q31:CJNEA,36H,Q32</p><p> JMPTHIRD</p><p> Q32:CJNEA,37H,Q33</p><p> JMPSTART</p><p> Q33:CJNEA
92、,38H,Q34</p><p><b> JMPMAIN</b></p><p> Q34:CJNEA,39H,Q35</p><p> JMPTHIRD</p><p> Q35:CJNEA,3AH,THIRD1</p><p> JMPTHIRD</p&g
93、t;<p> THIRD1:MOV43H,A;第三位密碼存于43H</p><p> MOVP0,#00H</p><p> MOVP2,#0F8H;顯示3個"8."</p><p> CALLDELAY100MS</p><p> FOURTH:CALLKEY&l
94、t;/p><p> CJNEA,35H,Q41</p><p> JMPFOURTH</p><p> Q41:CJNEA,36H,Q42</p><p> JMPFOURTH</p><p> Q42:CJNEA,37H,Q43</p><p> JMPSTART
95、</p><p> Q43:CJNEA,38H,Q44</p><p><b> JMPMAIN</b></p><p> Q44:CJNEA,39H,Q45</p><p> JMPFOURTH</p><p> Q45:CJNEA,3AH,FOURTH1</
96、p><p> JMPFOURTH</p><p> FOURTH1:MOV44H,A;第四位密碼存于44H</p><p> MOVP0,#00H</p><p> MOVP2,#0F0H;顯示4個"8."</p><p> CALLDELAY100MS</p
97、><p><b> FIFTH:</b></p><p><b> CALLKEY</b></p><p> Q51:CJNEA,35H,Q52;判斷是否按下輸入,按下沒反應(yīng)(繼續(xù)掃描這位密碼)</p><p> JMPFIFTH</p><p> Q5
98、2:CJNEA,37H,Q53;判斷是否按下取消</p><p> JMPSTART</p><p> Q53:CJNEA,38H,Q54 ;判斷是否按下重填</p><p><b> JMPMAIN</b></p><p> Q54: CJNE A,39H,Q55 ;判
99、斷是否按下無效鍵</p><p> JMP FIFTH</p><p> Q55:CJNEA,3AH,Q56;判斷是否按下無效鍵</p><p> JMPFIFTH</p><p> Q56:CJNEA,36H,FIFTH ;判斷是否按下確定</p><p><b>
100、JMPPR</b></p><p><b> PR:</b></p><p><b> MOV A,41H</b></p><p> CJNE A,MM1,ERR</p><p><b> MOV A,42H</b></p><p&g
101、t; CJNE A,MM2,ERR</p><p><b> MOV A,43H</b></p><p> CJNE A,MM3,ERR</p><p><b> MOV A,44H</b></p><p> CJNE A,MM4,ERR</p><p><b
102、> JMP PASS</b></p><p><b> ERR:</b></p><p> MOV P0,#86H</p><p> MOV P2,#0F0H ;顯示4個"E"</p><p> CALL DELAY1s</p><
103、;p> CALL DELAY1s</p><p> DJNZ R7,ERR1</p><p> MOV R7,#03H</p><p> CALL DELAY1h</p><p><b> JMP START</b></p><p> ERR1:JMP START</p&g
104、t;<p><b> PASS:</b></p><p> MOV P0,#8CH</p><p> MOV P2,#0F0H ;顯示4個"P"</p><p> MOV R7,#03H</p><p><b> CALL KEY</b&
105、gt;</p><p> CJNE A,36H,PASS</p><p> CLR P2.6 ;燈亮一秒</p><p> CALL DELAY1s</p><p><b> SETB P2.6</b></p><p><b> JMP START
106、</b></p><p> ;*********100ms延時子程序**********</p><p> DELAY100MS:</p><p><b> MOV R2,#5</b></p><p> D3: MOV R3,#40</p><p> D4: MOV R4,#
107、248 </p><p><b> DJNZ R4,$</b></p><p> DJNZ R3,D4</p><p> DJNZ R2,D3</p><p><b> RET </b></p><p> ;*********1s延時子程序**********<
108、;/p><p><b> DELAY1s:</b></p><p> MOV R2,#50</p><p> D5: MOV R3,#40</p><p> D6: MOV R4,#248 </p><p><b> DJNZ R4,$</b></p>&
109、lt;p> DJNZ R3,D6</p><p> DJNZ R2,D5</p><p><b> RET</b></p><p> ;*********1min延時子程序**********</p><p> DELAY1min:</p><p> MOV R5,#60<
110、/p><p> LOOP: CALL DELAY1s</p><p> DJNZ R5,LOOP </p><p><b> RET</b></p><p> ;*********1h延時子程序**********</p><p><b> DELAY1h:</b&g
111、t;</p><p> MOV R6,#60</p><p> LOOP1: CALL DELAY1min</p><p> DJNZ R6,LOOP1 </p><p><b> RET</b></p><p><b> END</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 51單片機課程設(shè)計---密碼鎖
- 基于單片機的電子密碼鎖設(shè)計 單片機課程設(shè)計
- 單片機課程設(shè)計---基于單片機的電子密碼鎖設(shè)計
- 單片機課程設(shè)計---基于單片機的數(shù)字密碼鎖設(shè)計
- 單片機課程設(shè)計---基于單片機的電子密碼鎖設(shè)計
- 單片機-密碼鎖課程設(shè)計
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計--密碼鎖
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計--基于單片機8051的密碼鎖控制
- 單片機課程設(shè)計報告--基于單片機的電子密碼鎖
- 單片機課程設(shè)計--基于單片機控制的電子密碼鎖
- 單片機課程設(shè)計---密碼鎖
- 密碼鎖單片機課程設(shè)計
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計--基于單片機控制的電子密碼鎖
- 單片機課程設(shè)計--基于單片機控制的電子密碼鎖
- 基于單片機的電子密碼鎖設(shè)計 單片機課程設(shè)計報告
- 基于51單片機簡易密碼鎖設(shè)計
- 單片機課程設(shè)計--電子密碼鎖
評論
0/150
提交評論