版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 1 設(shè)計課題任務(wù)、功能要求說明及總體方案介紹</p><p> 1.1 設(shè)計課題任務(wù)</p><p> 設(shè)計一個具有特定功能的密碼鎖。該密碼鎖上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進入準(zhǔn)備工作狀態(tài)。該密碼鎖具有系統(tǒng)原始密碼888888,用戶可以設(shè)定并存儲用戶密碼,密碼輸入時應(yīng)處于保密顯示狀態(tài),密碼輸入正確時應(yīng)顯示密碼輸入正確提示信息,否則,顯示密碼輸入
2、錯誤提示信息。</p><p> 1.2 總體方案介紹及工作原理說明</p><p> ?。?) 原始密碼的設(shè)定,此密碼是固定在程序存儲器ROM中,假設(shè)預(yù)設(shè)的密碼為“888888”共6位密碼。</p><p> ?。?)密碼的輸入: 采用按鍵來完成密碼的輸入,輸入時密碼處于顯示保密狀態(tài),輸入六位密碼后,自動結(jié)束輸入,并判斷其正確性 </p><
3、;p> (3)密碼若輸入錯誤,顯示輸入錯誤提示信息,密碼輸入正確后,可以用鍵盤任意輸入數(shù)字,若按下第八個按鍵,則進入修改密碼</p><p> ?。?)密碼修改:可以任意輸入“1-7”中的六位數(shù)字作為密碼,密碼輸入時處于保密顯示狀態(tài),六位密碼輸入結(jié)束確認(rèn)后顯示P.。</p><p><b> 圖1 設(shè)計總框圖</b></p><p>
4、 2 密碼鎖硬件系統(tǒng)的設(shè)計</p><p> 2.1 密碼鎖硬件系統(tǒng)各模塊功能簡要介紹</p><p> 此次課程設(shè)計是基于單片機控制的電子密碼鎖,結(jié)合主要設(shè)計條件,本設(shè)計由單片機系統(tǒng)、獨立式鍵盤、LED顯示和報警系統(tǒng)組成,系統(tǒng)能完成開鎖、錯誤報警、密碼修改功能等功能,設(shè)計硬件系統(tǒng)如下: (1)單片機系統(tǒng):</p><p> 此次課題采用一種是用以AT8
5、9S52為核心的單片機控制方案。利用單片機靈活的編程設(shè)計和豐富的IO端口,及其控制的準(zhǔn)確性,進行電子密碼鎖的設(shè)計。此次課題用單片機P1口與鍵盤相連,做輸入口,P0口與顯示器段控相連,輸入段控碼,P2口輸入位控碼。</p><p> (2)獨立式鍵盤接口電路:</p><p> 此次課程設(shè)計采用獨立式鍵盤,與P1口相連,鍵按下則會使該端口變成低電平,單片機讀P1口,通過對P1口數(shù)據(jù)的判斷
6、來確定哪一個鍵按下。</p><p> (3)數(shù)碼管顯示模塊:</p><p> 此次課程設(shè)計采用的是共陰數(shù)碼管,P0口段控,P2口送位控,八個數(shù)碼管共用八根段控,由位控決定在哪一位顯示。本次采用的是數(shù)碼管動態(tài)顯示法,先給數(shù)碼管送位控,再送位控,延時1ms左右讓顯示穩(wěn)定,利用人眼的視覺反應(yīng)時間,八位的滾動顯示,人眼看來是靜態(tài)的,從而實現(xiàn)了動態(tài)顯示的功能。</p><
7、p><b> (4)報警系統(tǒng):</b></p><p> 此次課程設(shè)計,當(dāng)輸入密碼錯誤后,系統(tǒng)報警,報警裝置由一揚聲器實現(xiàn),給P3.1口規(guī)律性的賦低電平,使揚聲器鳴報警、二極管發(fā)光。</p><p><b> (5)電源電路:</b></p><p> 該密碼鎖設(shè)計了一個電源電路用一個發(fā)光二級管顯示電源電路的
8、通/斷情況。另外,系統(tǒng)也可通過下載口接通電源,且都與單片機EA引腳連接給整個硬件系統(tǒng)供電。</p><p> (6)復(fù)位及振蕩電路:</p><p> 時鐘電路工作后,在REST管腳上加兩個機器周期的高電平,芯片內(nèi)部開始進行初始復(fù)位。本設(shè)計晶振選擇頻率為12MHZ,電容選擇33pF。經(jīng)計算得單片機工作的機器周期為:</p><p> 12×(1
9、47;12M)=1us。</p><p><b> ?。?)下載口:</b></p><p> 該密碼鎖系統(tǒng)設(shè)計了一個下載口用于單片機系統(tǒng)的程序?qū)耄綆Э梢宰鳛檠a充電源只用,即用一個引腳接電源VCC,因此可以實現(xiàn)程序輸入和供電。</p><p> 2.2 密碼鎖電路原理圖、PCB圖、元器件布局分布圖</p><p>
10、;<b> 電路原理圖見附錄A</b></p><p> PCB 頂層圖見附錄B</p><p> PCB 底層圖見附錄B</p><p> 元器件布局圖見附錄C</p><p> 2.3 密碼鎖元器件清單</p><p><b> 元器件清單見附錄D</b>&l
11、t;/p><p> 3 密碼鎖軟件系統(tǒng)的設(shè)計</p><p> 3.1 密碼鎖設(shè)計使用單片機資源的情況</p><p> 原始密碼存放在內(nèi)部程序存儲器中,78H-7FH單元做字形代碼緩沖區(qū),70H-77H單元做數(shù)據(jù)比較緩沖區(qū),61H-66H作為新密碼存放區(qū),88H-8DH做密碼緩沖區(qū)。</p><p> 3.2 密碼鎖設(shè)計軟件系統(tǒng)各模塊
12、功能簡介及流程圖</p><p> 密碼鎖軟件的設(shè)計主要包括:鍵盤掃描、密碼顯示、密碼比較、密碼修改、錯誤報警。</p><p> 程序設(shè)計總流程圖如圖2所示:</p><p> 圖2 程序設(shè)計總流程圖</p><p> 3.2.1 鍵盤掃描程序:</p><p> 本設(shè)計采用獨立式鍵盤,共八個按鍵,程序開始
13、時,先給P1口送高電平,有按鍵按下后,相應(yīng)的P1口線會變?yōu)榈碗娖剑瑢1口的電平取反,再送到20H中,20H為可位尋址區(qū),通過查詢20H的八位,即可得到是哪個按鍵按下,就可以轉(zhuǎn)向每個按鍵所要執(zhí)行的程序。</p><p> 鍵盤掃描程序流程框圖如圖3所示:</p><p> 圖3 鍵盤掃描程序流程圖</p><p> 3.2.2 顯示程序:</p>
14、<p> 本設(shè)計采用數(shù)碼管共陽極顯示,位控由P0口輸出,段控由P2口輸出,程序開始后,先對程序初始化,選好寄存器以及查表顯示的表地址,先將低位位控碼送到P2口,然后通過查表得到段控碼,并送到該位,這樣依次查完八位,使八位數(shù)碼管顯示,以此循環(huán)。</p><p> 顯示程序流程圖如圖4所示:</p><p> 圖4 顯示程序流程圖</p><p>
15、3.2.3 密碼判斷程序:</p><p> 原密碼存放在內(nèi)部程序存儲器中,程序開始后,上電后通過鍵盤輸入六位密碼來解鎖,六位密碼輸入完后,會自動判斷是否與原始密碼相同,相同的話可以解鎖,解鎖后可以更改用戶密碼,若與原始密碼不同,則出錯報警,然后按復(fù)位鍵可以重新輸入。修改完用戶密碼后若再解鎖,步驟與上述相同。</p><p> 密碼判斷程序流程圖如圖5所示:</p>&l
16、t;p> 圖5 密碼判斷程序流程圖</p><p> 3.2.4 錯誤報警程序</p><p> 密碼輸入錯誤后,會進入自動錯誤報警,報警時數(shù)碼管上會顯示“ERROR”字樣,蜂鳴器會響,與蜂鳴器連在一起的LED燈也會亮,從而實現(xiàn)錯誤報警。</p><p> 錯誤報警程序流程圖如圖6所示:</p><p> 圖6 密碼修改程序流
17、程圖</p><p> 3.3 密碼鎖設(shè)計程序清單</p><p><b> 程序清單見附錄E</b></p><p> 4 設(shè)計結(jié)論、缺陷分析、仿真結(jié)果、心得體會、教學(xué)建議</p><p> 4.1 密碼鎖設(shè)計結(jié)論及使用說明</p><p> 該密碼鎖基本實現(xiàn)了開鎖,修改用戶密碼,錯
18、誤報警等功能,具有一定的應(yīng)用推廣價值。</p><p> 密碼鎖上電后,屏幕上會顯示“P.”,通過鍵盤可以輸入六位密碼,保密顯示“口”形;密碼輸完后,密碼正確則自動開鎖,出現(xiàn)上“口”形,并可以任意輸入1-7在數(shù)碼管顯示,若錯誤數(shù)碼管會出現(xiàn)“ERROR”和蜂鳴器與LED燈間歇性鳴叫、閃爍報警,按復(fù)位鍵返回重輸。密碼正確后按下第八個鍵出現(xiàn)六“_”,“口”形顯示保密輸入六位新密碼,完成后按第八個鍵確認(rèn)后又可回到輸密碼
19、狀態(tài)“P.”;在修改密碼后,如果出現(xiàn)密碼輸入錯誤,也會出現(xiàn)“ERROR”字樣和蜂鳴器與LED的報警,但可按任意鍵返回到輸密碼狀態(tài)重新輸入密碼狀態(tài);現(xiàn)在可以擺脫復(fù)位鍵,可重復(fù)修改密碼。</p><p> 4.2 密碼鎖設(shè)計的缺陷分析</p><p> 本設(shè)計的密碼鎖不能進行掉電保護,即用戶修改密碼后不能進行密碼保存,掉電后密碼就變?yōu)樵济艽a,在實際應(yīng)用中還須進行改進,例如在硬件電路中加入
20、存儲芯片24C02。由于硬件電路的限制,按鍵過少,使有些功能缺失或復(fù)雜,在實際應(yīng)用中可采用行列式鍵盤。</p><p> 4.3 密碼鎖的仿真結(jié)果 </p><p> 為了能讓本次課程設(shè)計的準(zhǔn)確性特用Protues仿真軟件做了仿真如圖7:</p><p> 圖7 仿真圖P點的顯示</p><p><b> 4.4 心得體會
21、</b></p><p> 本次單片機課程設(shè)計安排在臨近期末。由于期末復(fù)習(xí)緊張,要在短時間內(nèi)完成程序設(shè)計到硬件調(diào)試,我遇到很大的困難。首先在程序設(shè)計上,基于強大的網(wǎng)絡(luò)資源和圖書資源我很快的確定了設(shè)計方案和總體設(shè)計思路——構(gòu)建一個由數(shù)碼管和獨立按鍵以單片機為核心的電子密碼鎖。但是,從軟件設(shè)計完成到實現(xiàn)仿真卻并不簡單。好在,前期在做單片機實驗上積累了一定的程序設(shè)計和分析功底,經(jīng)過反復(fù)調(diào)試和修改,到底還是
22、實現(xiàn)了當(dāng)初預(yù)定的功能。 </p><p> 通過這次實踐課程,我不光學(xué)到了很多關(guān)于單片機應(yīng)用的知識,同時也增長見識、開擴了專業(yè)方面的視野。另外,我感覺課程設(shè)計與實驗課這樣的實踐課程對理論知識的鞏固,動手能力的增強,綜合素質(zhì)的提高有著理論課堂學(xué)習(xí)無法比擬的效果,是大學(xué),尤其是應(yīng)用型工科學(xué)院必不可少的學(xué)習(xí)單元。</p><p><b> 4.5 教學(xué)建議</b><
23、;/p><p> 經(jīng)過為期半年的單片機學(xué)習(xí),我們在王老師的指導(dǎo)下對單片機有了較系統(tǒng)的認(rèn)識,有了一定了程序設(shè)計能力,掌握各個應(yīng)用軟件的使用。但是,我也有個人的感受:王老師在理論課上教學(xué)認(rèn)真細(xì)致,實踐課時習(xí)慣讓同學(xué)們自我摸索,也許希望這樣鍛煉同學(xué)們獨立解決問題的能力。但是,我們更希望在實踐課時有更多機會得到老師的點撥和指導(dǎo),這樣會令我們的學(xué)習(xí)效率更高,積極性更高。那樣,我相信我們的學(xué)習(xí)成績將會更進一步,老師的教學(xué)效果將
24、更突出。</p><p><b> 結(jié)束語</b></p><p> 作為本學(xué)期的單片機課程設(shè)計,由單片機為控制核心的密碼鎖從設(shè)計方案確定到原理圖設(shè)計,到程序設(shè)計及軟硬件結(jié)合調(diào)試,整個過程有苦有甜,但我收獲了頗多,學(xué)到了許多課本上沒有的東西,增強了自己的動手能力,還培養(yǎng)了自己查閱資料,自學(xué)的技能,總之,是獲益匪淺的。尤其在資料查閱和程序設(shè)計和調(diào)試上能力提高效果明顯
25、。</p><p> 此次設(shè)計的密碼鎖雖然實現(xiàn)了其基本功能,但還有很多要改進的地方,比如掉電保護的實現(xiàn),必須在原有的電路上增加模塊(比如24C52芯片),但由于時間緊湊,資源有限未能完成。在以后的學(xué)習(xí)中,我還應(yīng)該繼續(xù)努力去完善。</p><p> 此次課程設(shè)計雖然接近尾聲,但我對單片機的學(xué)習(xí)和研究將永遠(yuǎn)不會停止,我必將努力自我探索,不斷自主學(xué)習(xí),孜孜以求。</p><
26、;p><b> 致謝</b></p><p> 期末考試結(jié)束了,我的單片機課程設(shè)計也要完成了。能夠順利完成密碼鎖的設(shè)計,當(dāng)然要感謝**老師悉心教授單片機的理論知識以及在實驗課程上的嚴(yán)格要求。*老師在課程設(shè)計前期的單片機技術(shù)課的教授上認(rèn)真細(xì)致,使我們夯實了理論知識基礎(chǔ);在單片機實驗課上,王老師嚴(yán)格要求,使我們強化了實踐動手能力、能夠熟練的運用各種應(yīng)用軟件。并且,在我們遇到技術(shù)難題和設(shè)
27、計瓶頸的時候適當(dāng)?shù)膯l(fā)了我們。另外,在程序設(shè)計和硬件調(diào)試上,我很大程度上獲得了班上同學(xué)的幫助,尤其是上期暑假參加過單片機培訓(xùn)的三位同學(xué)使我順利完成了程序的后期完善。在設(shè)計結(jié)束之際,祝老師新年快樂,工作順利,桃李滿天下,祝同學(xué)們期末考試順利,學(xué)有所成。</p><p><b> 參考文獻</b></p><p> [1] 李廣第,朱月秀,冷祖祁.單片機基礎(chǔ)[M].北
28、京:北京航空航天大學(xué)出版社,2007.6</p><p> LiGuang first, ZhuYueXiu, LengZuQi. Single chip microcomputer based [M]. Beijing: Beijing university of aeronautics &astronautics press, 2007.6</p><p> [2] 康華光
29、.電子技術(shù)基礎(chǔ) 模擬部分(第五版) [M].北京:高等教育出版社,2006</p><p> kang uh guano. Electronic technology foundation simulation part (fifth edition) [M]. Beijing: higher education press, 2006</p><p> [3] 閻石,數(shù)字電子技術(shù)基礎(chǔ)
30、(第五版) [M].北京:高等教育出版社,2006</p><p> YanShi, digital electronic technology foundation (fifth edition) [M]. Beijing: higher education press, 2006</p><p> [4] 邱光源.電路(第五版) [M].北京:高等教育出版社,2006</p&
31、gt;<p> QiuGuangYuan. Circuit (fifth edition) [M]. Beijing: higher education press, 2006</p><p><b> 附 錄</b></p><p><b> 附錄A:電路原理圖</b></p><p> 圖A 密
32、碼鎖電路原理圖</p><p><b> 附錄B: PCB圖</b></p><p> 圖B1 電子密碼鎖PCB圖頂層</p><p> 圖B2 電子密碼鎖PCB圖底層</p><p> 附錄C: 元器件分布圖</p><p> 圖C 電子密碼鎖元器件分布3D效果圖</p>
33、;<p> 附錄D: 元器件清單</p><p> 表D 電子密碼鎖元器件清單</p><p><b> 附錄E: 程序清單</b></p><p><b> 項目名稱:密碼鎖</b></p><p> 項目功能:初始自動顯示系統(tǒng)提示符“P.”, 進入準(zhǔn)備工作狀態(tài)。具有系統(tǒng)原
34、始密碼888888,用戶可以設(shè)定并存儲用戶密碼,密碼輸入時應(yīng)處于保密顯示狀態(tài),密碼輸入正確時應(yīng)顯示密碼輸入正確提示信息,否則,顯示密碼輸入錯誤提示信息并報警。</p><p> 電路描述:采用芯片AT89S52單片機,利用P1口與鍵盤相連,做輸入口,P0口與顯示器段控相連,輸入段控碼,P2口輸入位控碼,將P3.1口與蜂鳴器和二極管電路相連,產(chǎn)生錯誤報警。</p><p><b>
35、; 編程作者:喻鵬</b></p><p> 完成時間:2013年1月3日</p><p> 備注: 78H~7FH單元做字形代碼緩沖區(qū),70H~77H單元做數(shù)據(jù)比較緩沖單元,MAIN為原始密碼存放區(qū),61H~66H作為新密碼的存放區(qū),88H~8DH為密碼緩沖區(qū)。</p><p><b> 密碼鎖程序清單:</b>&l
36、t;/p><p> ORG 0000H</p><p> LJMP START</p><p> ORG 0100H</p><p> START : MOV SP, #30H</p><p> MOV R0, #70H </p><p> MOV
37、 6FH, #00H</p><p> MOV R1, #78H </p><p> MOV 20H, #00H </p><p> CLR 21H.1</p><p> MOV A, #00H</p><p> MOV DPTR, #MAIN
38、</p><p> MOV 78H, #0CH </p><p> MOV 79H, #0FFH </p><p> MOV 7AH, #0FFH </p><p> MOV 7BH, #0FFH </p><p> MOV 7CH, #0FFH
39、 </p><p> MOV 7DH, #0FFH </p><p> MOV 7EH, #0FFH </p><p> MOV 7FH, #0FFH </p><p> LOOP: LCALL DISP</p><p> LCALL KEYCL</
40、p><p> JB 20H.0, KEY11</p><p> JB 20H.1, KEY12</p><p> JB 20H.2, KEY13</p><p> JB 20H.3, KEY14</p><p> JB 20H.4, KEY15</p>
41、<p> JB 20H.5, KEY16</p><p> JB 20H.6, KEY17</p><p> JB 20H.7, KEY18</p><p><b> CLR CY</b></p><p><b> DEC R0</b>
42、;</p><p> MOV R4,A </p><p> MOVC A, @A+DPTR;</p><p> SUBB A, @R0;密碼值與輸入值的比較</p><p><b> INC R0</b></p><p> JZ HER
43、E;相等則轉(zhuǎn)移過去繼續(xù)判斷按鍵</p><p> SETB 21H.1;不等則將21H.1置1</p><p> HERE: MOV A, R4;</p><p> CJNE R1, #7EH,LOOP;</p><p> LJMP BIJIAO</p><p>
44、//**判斷是哪個按鍵,然后進行相應(yīng)操作**//</p><p> KEY11: MOV @R0, #01H</p><p><b> SJMP ZZZ</b></p><p> KEY12: MOV @R0, #02H</p><p><b> SJMP ZZZ</b&g
45、t;</p><p> KEY13: MOV @R0, #03H</p><p><b> SJMP ZZZ</b></p><p> KEY14: MOV @R0, #04H</p><p><b> SJMP ZZZ</b></p><p>
46、; KEY15: MOV @R0, #05H</p><p><b> SJMP ZZZ</b></p><p> KEY16: MOV @R0, #06H</p><p><b> SJMP ZZZ</b></p><p> KEY17: MOV @R0,
47、 #07H</p><p><b> SJMP ZZZ</b></p><p> KEY18: MOV @R0, #08H</p><p> ZZZ: MOV @R1, #0A3H; 送顯示字形,保密輸出顯示“口”形</p><p> INC R0;將R0、R1、A加1<
48、/p><p><b> INC R1</b></p><p><b> INC A</b></p><p> MOV 20H, #00H</p><p> LJMP LOOP;返回再繼續(xù)判斷按鍵</p><p> //*********比較后
49、對標(biāo)志位進行判斷***//</p><p> BIJIAO: JB 21H.1, ERROR ;標(biāo)志位等于1則進入錯誤提醒設(shè)置</p><p> MOV R1, #7FH ;密碼正確后顯示緩沖段</p><p> MOV 78H, #9DH ;上半'口'</p><p> MOV
50、 79H, #0FFH ;'滅'</p><p> MOV 7AH, #0FFH ;'滅'</p><p> MOV 7BH, #0FFH ;'滅'</p><p> MOV 7CH, #0FFH ;'滅'</p><p&g
51、t; MOV 7DH, #0FFH ;'滅'</p><p> MOV 7EH, #0FFH ;'滅'</p><p> MOV 7FH, #0FFH ;‘滅’</p><p> BOOP1: MOV 20H, #00H</p><p> LCA
52、LL DISP</p><p> LCALL KEYCL</p><p> JB 20H.0, KEY21</p><p> JB 20H.1, KEY22</p><p> JB 20H.2, KEY23</p><p> JB 20H.3, KEY24</p>
53、<p> JB 20H.4, KEY25</p><p> JB 20H.5, KEY26</p><p> JB 20H.6, KEY27</p><p> JB 20H.7, KEY28 ;第八個鍵按下,直接進入密碼修改</p><p> CJNE R1, #77H,BOO
54、P1</p><p> MOV R1, #7FH</p><p> SJMP BOOP1 </p><p> //錯誤提示則出現(xiàn)‘ERROR’字樣,并伴有蜂鳴聲和LED燈閃爍//</p><p> ERROR: MOV 79H, #88H ;‘R’</p><p> MOV
55、7AH, #0C0H ;'O'</p><p> MOV 7BH, #88H ;'R'</p><p> MOV 7CH, #88H ;'R'</p><p> MOV 7DH, #86H ;'E'</p><p> MOV
56、 7EH, #0FFH ;'滅'</p><p> MOV 7FH, #0FFH ;‘滅’</p><p> MOV 78H, #0FFH ;‘滅’</p><p> LOOP2: MOV R5,#32H ;顯示函數(shù)的循環(huán)次數(shù)</p><p> CLR P3.1
57、 ;蜂鳴器和P3.1對應(yīng)的燈隔0.5響滅</p><p> LOOP1: LCALL DISP</p><p> DJNZ R5,LOOP1 ;顯示循環(huán)50次,約為0.4s</p><p> SETB P3.1 ;取反P3.1口</p><p> LCALL DELAY400MS ;調(diào)延時0.4s<
58、;/p><p> SJMP LOOP2 ;按復(fù)位鍵返回重新輸入</p><p> ;//***密碼輸入正確后,可以任意輸入1~7中的數(shù)字**//</p><p> KEY21: MOV @R1, #0F9H</p><p> DEC R1</p><p> LJMP BOOP1
59、</p><p> KEY22: MOV @R1, #0A4H</p><p> DEC R1</p><p> LJMP BOOP1 </p><p> KEY23: MOV @R1, #0B0H</p><p> DEC R1</p><p&
60、gt; LJMP BOOP1 </p><p> KEY24: MOV @R1, #99H</p><p> DEC R1</p><p> LJMP BOOP1 </p><p> KEY25: MOV @R1, #92H</p><p> DEC
61、 R1</p><p> LJMP BOOP1 </p><p> KEY26: MOV @R1, #82H</p><p> DEC R1</p><p> LJMP BOOP1 </p><p> KEY27: MOV @R1, #0F8H</p
62、><p> DEC R1</p><p> LJMP BOOP1 </p><p> //*****密碼修改*******************//</p><p> KEY28: MOV 78H, #0F7H ;‘_’</p><p> MOV 79H, #0
63、F7H ;'_'</p><p> MOV 7AH, #0F7H ;'_'</p><p> MOV 7BH, #0F7H ;'_'</p><p> MOV 7CH, #0F7H ;'_'</p><p> M
64、OV 7DH, #0F7H ;'_'</p><p> MOV 7EH, #0FFH ;'滅'</p><p> MOV 7FH, #0FFH ;‘滅’</p><p> MOV R0, #61H ;新密碼存放區(qū)</p><p> MOV
65、 R1, #7DH ;顯示代碼緩沖區(qū)</p><p> KOOP1: LCALL DISP</p><p> MOV 20H, #00H</p><p> LCALL KEYCL</p><p> JB 20H.0, KEY31</p><p> JB
66、20H.1, KEY32</p><p> JB 20H.2, KEY33</p><p> JB 20H.3, KEY34</p><p> JB 20H.4, KEY35</p><p> JB 20H.5, KEY36</p><p> JB
67、20H.6, KEY37</p><p> JB 20H.7, KEY38</p><p> CJNE R1, #7EH,KOOP1</p><p> MOV R1, #78H</p><p> SJMP KOOP1</p><p> KEY31: MOV
68、 @R0, #01H</p><p> MOV @R1, #0A3H</p><p> SJMP PANDUAN </p><p> KEY32: MOV @R0, #02H</p><p> MOV @R1, #0A3H</p><p> SJMP
69、 PANDUAN </p><p> KEY33: MOV @R0, #03H</p><p> MOV @R1, #0A3H</p><p> SJMP PANDUAN </p><p> KEY34: MOV @R0, #04H</p><p> MOV
70、 @R1, #0A3H</p><p> SJMP PANDUAN </p><p> KEY35: MOV @R0, #05H</p><p> MOV @R1, #0A3H</p><p> SJMP PANDUAN </p><p> KEY36: M
71、OV @R0, #06H</p><p> MOV @R1, #0A3H</p><p> SJMP PANDUAN </p><p> KEY37: MOV @R0, #06H</p><p> MOV @R1, #0A3H</p><p> PANDU
72、AN:CJNE R1, #77H,THE1</p><p> SJMP KOOP1</p><p> THE1: INC R0</p><p><b> DEC R1</b></p><p> SJMP KOOP1 </p><p> KEY38: CJNE
73、 R1, #77H,THE ;確認(rèn)密碼修改成功(并判斷是否滿足密碼要求) </p><p> SJMP THE2</p><p> THE: LJMP KEY28</p><p> ;//*********新密碼執(zhí)行*************//</p><p> THE2: MOV R0,#6
74、1H ;數(shù)據(jù)比較緩沖段</p><p> MOV R1,#78H ;顯示緩沖段</p><p> MOV 20H,#00H</p><p> CLR 21H.1</p><p> MOV DPTR,#0061H ;利用DPTR做間址尋址寄存器</p><p>
75、MOV 78H,#0CH ;‘P’</p><p> MOV 79H,#0FFH ;'滅'</p><p> MOV 7AH,#0FFH ;'滅'</p><p> MOV 7BH,#0FFH ;'滅'</p><p> MOV
76、 7CH,#0FFH ;'滅'</p><p> MOV 7DH,#0FFH ;'滅'</p><p> MOV 7EH,#0FFH ;'滅'</p><p> MOV 7FH,#0FFH ;‘滅’</p><p> TOOP: LCA
77、LL DISP</p><p> LCALL KEYCL</p><p> CLR CY</p><p> JB 20H.0,KEY41</p><p> JB 20H.1,KEY42</p><p> JB 20H.2,KEY43</p>
78、<p> JB 20H.3,KEY44</p><p> JB 20H.4,KEY45</p><p> JB 20H.5,KEY46</p><p> JB 20H.6,KEY47</p><p> JB 20H.7, KEY48</p><p>
79、; CJNE R1, #7EH,TOOP;</p><p> LJMP BIJIAO1</p><p> //*改密碼后的密碼輸入時判斷是哪個按鍵,然后進行相應(yīng)操作*//</p><p> KEY41:MOV A, #01H</p><p> SUBB A, @R0</p><p&
80、gt;<b> SJMP KKK</b></p><p> KEY42:MOV A, #02H</p><p> SUBB A, @R0</p><p> SJMP KKK</p><p> KEY43:MOV A, #03H</p><p> SUBB
81、A, @R0</p><p> SJMP KKK</p><p> KEY44:MOV A, #04H</p><p> SUBB A, @R0</p><p><b> SJMP KKK</b></p><p> KEY45:MOV A, #05H<
82、;/p><p> SUBB A, @R0</p><p><b> SJMP KKK</b></p><p> KEY46:MOV A, #06H</p><p> SUBB A, @R0</p><p><b> SJMP KKK</b><
83、/p><p> KEY47:MOV A, #07H</p><p> SUBB A, @R0</p><p> KKK: JZ EY6</p><p> SETB 21H.1</p><p> EY6: MOV @R1, #0A3H;送顯示字形,保密輸出顯示“口”形</p>
84、<p><b> INC R0</b></p><p><b> INC R1</b></p><p> MOV 20H, #00H</p><p> LJMP TOOP;返回再繼續(xù)判斷按鍵</p><p> KEY48:MOV 20
85、H, #00H</p><p> LJMP TOOP;返回再繼續(xù)判斷按鍵</p><p> ;*********新密碼的比較*******************</p><p> BIJIAO1: JB 21H.1,ERROR1 ;標(biāo)志位等于1則進入錯誤提醒設(shè)置</p><p> LJMP BIJIAO<
86、/p><p> ;錯誤提示表現(xiàn)為出現(xiàn)‘ERROR’字樣,并伴有蜂鳴聲和LED燈閃爍</p><p> ERROR1:MOV 79H,#88H ;‘R’</p><p> MOV 7AH,#0C0H ;'O'</p><p> MOV 7BH,#88H ;'R'</p>
87、;<p> MOV 7CH,#88H ;'R'</p><p> MOV 7DH,#86H ;'E'</p><p> MOV 7EH,#0FFH ;'滅'</p><p> MOV 7FH,#0FFH ;‘滅’</p><p>
88、 MOV 78H,#0FFH ;‘滅’</p><p> LOOP3: MOV R5,#32H ;顯示函數(shù)的循環(huán)次數(shù)</p><p> CLR P3.1 ;蜂鳴器和P3.1對應(yīng)的燈隔0.5響滅</p><p> LOOP4: LCALL DISP</p><p> LCALL KEYCL<
89、;/p><p> MOV R7,20H</p><p> CJNE R7,#00H,XXX ;修改密碼后,進入密碼報錯后按任意鍵可以重新輸入</p><p> DJNZ R5,LOOP4 ;顯示循環(huán)50次,約為0.4s</p><p> SETB P3.1 ;取反P3.1口</p><p
90、> LCALL DELAY400MS ;調(diào)延時0.4s</p><p> LCALL KEYCL</p><p> SJMP LOOP3 ;按復(fù)位鍵返回重新輸入</p><p> XXX: SETB P3.1 ;關(guān)報警器</p><p> LJMP THE2 ;跳過去重新輸入&l
91、t;/p><p> ;//***********顯示程序***************//</p><p> DISP: PUSH PSW ; 保護寄存器里面的數(shù)據(jù)</p><p> PUSH ACC</p><p> PUSH DPH</p><p> PUSH DPL</p
92、><p> MOV PSW,#08H</p><p> MOV A,#00H ; 設(shè)置查表顯示為首個數(shù)據(jù)</p><p> MOV R1,#78H ; 表首地址</p><p> MOV R3,#0FEH; 位控,首先控制最低位為低電平</p><p> MOV R2,
93、#08H; 循環(huán)顯示的次數(shù)</p><p> DOOP1:MOV P2,R3;先送位控到P2口</p><p> MOV A,@R1 ;查表去字形代碼</p><p> MOV P0,A ;送段控到P0口</p><p> LCALL DELAY1MS ;調(diào)1MS的延時程序</p><
94、;p> MOV A,R3</p><p><b> RL A</b></p><p> MOV R3,A ;位控位左移一位</p><p> INC R1 ;將A,即查表向后推移一位</p><p> DJNZ R2,DOOP1 ;判斷是否查詢了八個緩沖字節(jié)<
95、;/p><p> POP DPL ;出棧</p><p> POP DPH</p><p> POP ACC</p><p> POP PSW</p><p> RET ;子程序返回</p><p> ;//***********獨立式按鍵處理*****
96、*******************//</p><p> KEYCL:PUSH PSW </p><p> PUSH ACC</p><p> LCALL KEYSM;調(diào)鍵掃,返回A的值</p><p> JZ FH;判斷A是否為0,為0則跳FH處返回</p><p> LCAL
97、L DISP;A不等于0,調(diào)去抖顯示(代替延時程序8MS)程序</p><p> LCALL DISP</p><p> LCALL KEYSM;再調(diào)鍵掃</p><p> JZ FH;再次判斷A</p><p> MOV B,A;A不為0,則確實有鍵按下</p><p>
98、; KEYSF:LCALL KEYSM;判斷鍵是否釋放,調(diào)鍵掃</p><p> JZ KEY1;A=0則為釋放了,跳KEY1保存鍵值到可位尋址單元</p><p> LCALL DISP;調(diào)延時</p><p> SJMP KEYSF;跳回判斷鍵釋放</p><p> KEY1: MOV
99、20H,B;保存鍵值</p><p> FH: POP ACC</p><p> POP PSW</p><p><b> RET</b></p><p> ;//***************獨立式按鍵掃描***********************//</p><
100、p> KEYSM: MOV P1, #0FFH ;給P1口都送高電平</p><p><b> NOP</b></p><p> MOV A, P1 ;再把P1口的電平值送給A</p><p> CPL A ;將A取反</p><p><b>
101、; RET</b></p><p> ;//**************1ms延時子程序************************//</p><p> DELAY1MS:PUSH PSW</p><p> MOV PSW, #08H</p><p> MOV R7, #01H</p>&
102、lt;p> DL2: MOV R6, #8EH</p><p> DL3: MOV R5, #02H</p><p> DJNZ R5, $</p><p> DJNZ R6, DL3</p><p> DJNZ R7, DL2</p><p><b> POP PSW
103、</b></p><p><b> RET</b></p><p> ;//****************0.4s延時程序*******************//</p><p> DELAY400MS: ;誤差 0us</p><p><b> PUSH PSW</b>
104、;</p><p> MOV PSW,#08H</p><p> MOV R7,#1DH</p><p> DL1: MOV R6,#46H</p><p> DL0: MOV R5,#61H</p><p><b> DJNZ R5,$</b></p>&
105、lt;p> DJNZ R6,DL0</p><p> DJNZ R7,DL1</p><p><b> POP PSW</b></p><p><b> RET</b></p><p> MAIN:DB 00H,08H,08H,08H,08H,08H,08H</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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計--密碼鎖
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計---密碼鎖
- 密碼鎖單片機課程設(shè)計
- 單片機課程設(shè)計-密碼鎖
- 單片機課程設(shè)計--電子密碼鎖
- 單片機課程設(shè)計---數(shù)字密碼鎖
- 單片機課程設(shè)計--電子密碼鎖
- 單片機課程設(shè)計---數(shù)字密碼鎖
- 單片機課程設(shè)計-數(shù)字密碼鎖
- 單片機課程設(shè)計電子密碼鎖
- 51單片機課程設(shè)計---密碼鎖
- 單片機課程設(shè)計報告--電子密碼鎖
- 單片機課程設(shè)計--電子密碼鎖報告
- 單片機課程設(shè)計---電子密碼鎖報告
- 課程設(shè)計報告---單片機實現(xiàn)密碼鎖
- 單片機課程設(shè)計---多功能密碼鎖
- 單片機課程設(shè)計--門禁電子密碼鎖
- 單片機課程設(shè)計----電子密碼鎖報告
評論
0/150
提交評論