版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)原理及應(yīng)用</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課 題:電子密碼鎖</p><p><b> 班 級:</b></p><p><b> 學(xué) 號:</b>&
2、lt;/p><p><b> 姓 名:</b></p><p><b> 指導(dǎo)老師:</b></p><p><b> 設(shè)計(jì)時(shí)間: </b></p><p><b> 概 述</b></p><p> 本實(shí)驗(yàn)利用單片機(jī)
3、的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合DVCC實(shí)驗(yàn)箱上的集成電路芯片AT89C51、LED數(shù)碼管以及實(shí)驗(yàn)箱上的按鍵來設(shè)計(jì)密碼鎖。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地開啟密碼鎖和更改密碼,數(shù)碼管能夠正確地顯示輸入密碼。本實(shí)驗(yàn)設(shè)計(jì)了16個開關(guān)按鍵,每次按下鍵需要檢驗(yàn)是否確實(shí)按下,若是則輸入密碼;否則,反之。</p><p> 關(guān)鍵字:AT89C51、M24C01、7段LED數(shù)碼管、74LS240、與非門、4
4、*4矩陣鍵盤等</p><p><b> 目 錄</b></p><p> 概述………………………………………………………………….2</p><p> 設(shè)計(jì)要求………………………………………………...4</p><p> 設(shè)計(jì)方案………………………………………………...5</p>
5、<p> 設(shè)計(jì)程序………………………………………………...10</p><p> Proteus仿真…………………………………………….18</p><p> 硬件制作………………………………………………...19</p><p> 收獲與體會 ……………………………………………………….20</p><p> 附錄
6、 .……………………………………………………….20</p><p> 參考文獻(xiàn) ……………………………………………………….20</p><p><b> 設(shè)計(jì)要求</b></p><p><b> 題目:電子密碼鎖</b></p><p> 選題后先在proteus上進(jìn)行
7、軟件仿真設(shè)計(jì),在仿真實(shí)現(xiàn)的基礎(chǔ)上,要求完成部分硬件模塊的制作和系統(tǒng)聯(lián)調(diào),具體要求見選題。</p><p> 設(shè)計(jì)流程:查閱有關(guān)文獻(xiàn)資料→擬定電路原型→依據(jù)題目功能要求,進(jìn)行電路元件選擇→畫出原理電路→軟件仿真分析驗(yàn)證設(shè)計(jì)方案→實(shí)際部分硬件制作、系統(tǒng)聯(lián)調(diào)→寫出設(shè)計(jì)報(bào)告。</p><p> 時(shí)間安排:選題結(jié)束后,自己安排時(shí)間進(jìn)行課題資料查閱、原理方案設(shè)計(jì),然后進(jìn)行軟件仿真(可以利用自己的P
8、C機(jī)或利用實(shí)驗(yàn)室開放時(shí)間段預(yù)約后到實(shí)驗(yàn)室進(jìn)行仿真實(shí)驗(yàn)),完成上述工作后預(yù)約第一階段檢查驗(yàn)收,驗(yàn)收合格后,憑指導(dǎo)教師驗(yàn)收簽字單到實(shí)驗(yàn)中心領(lǐng)取器材進(jìn)行硬件制作部分,完成調(diào)試后,經(jīng)指導(dǎo)教師驗(yàn)收簽字,最后,撰寫課程設(shè)計(jì)總結(jié)報(bào)告并提交到實(shí)驗(yàn)中心。</p><p> 密碼鎖具體設(shè)計(jì)要求:</p><p> 利用單片機(jī)設(shè)計(jì)一個密碼鎖,要求可設(shè)定從1位到8位的密碼,從鍵盤鍵入正確密碼才可更改密碼或開鎖
9、;輸入三次錯誤密碼電路就不斷報(bào)警;開鎖信號輸出口用發(fā)光二極管表示。同時(shí)輸入密碼后要按確認(rèn)鍵才有效。</p><p> 1.可設(shè)置密碼,掉電密碼能保存;</p><p> 2.按鍵確實(shí)被按下時(shí)發(fā)出一下提示音;</p><p> 3.設(shè)置新密碼前需校驗(yàn)舊密碼;</p><p><b> 發(fā)揮部分:</b></p
10、><p> 密碼用密文保存在存儲器中(加密方法可采用DES算法)</p><p><b> 可選器件:</b></p><p> 51系列單片機(jī)、24C01、7段LED數(shù)碼管、74LS244或74LS240、與非門等</p><p><b> 設(shè)計(jì)方案</b></p><p&
11、gt; 采用一種是用以AT89S51為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的IO端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加調(diào)電存儲、聲光提示甚至添加遙控控制功能。其原理如圖1-2所示。</p><p> 圖2-1單片機(jī)控制方案</p><p> 各個功能單元設(shè)計(jì)如下:</p><p> 1 . 鍵盤功能及工作原理</p
12、><p> PC鍵盤功能主要有按鍵識別、去抖、重鍵處理、發(fā)送掃描碼、自動重發(fā)、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設(shè)計(jì)簡單,但硬件電路復(fù)雜,價(jià)格較高;非編碼鍵盤用軟件來實(shí)現(xiàn)識別鍵、編碼轉(zhuǎn)換、去抖等功能,硬件電路簡單,價(jià)格便宜?,F(xiàn)代微機(jī)系統(tǒng)中廣泛采用非編碼鍵盤。PC鍵盤多采用18行×8列的二維矩陣行列結(jié)構(gòu)。采用行掃描法識別按下的按鍵。</p><p>
13、 本設(shè)計(jì)就采用行列式鍵盤,同時(shí)也能減少鍵盤與單片機(jī)接口時(shí)所占用的I/O線的數(shù)目,在按鍵比較多的時(shí)候,通常采用這樣方法。其原理如圖2-2所示。</p><p> 圖2-2 行列式鍵盤原理電路圖</p><p> 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。</p&
14、gt;<p> 在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。</p><p> 當(dāng)確認(rèn)有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。</p><p> 對照圖2-3所示的44鍵盤,說明線反轉(zhuǎn)個工作原理。</p><
15、p> 首先辨別鍵盤中有無鍵按下,有單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會有一根行線電平被拉至低電平從而使行線不全為1。</p><p> 判斷鍵盤中哪一個鍵被按下使通過將列線逐列置低電平后,檢查行輸入狀態(tài)來實(shí)現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則
16、所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個鍵。</p><p> 按鍵的操作面板如圖圖2-3所示。共計(jì)數(shù)字鍵10個,功能鍵6個。鍵盤上還有3個指示燈和一個蜂鳴器。</p><p> 圖2-3 按鍵操作面板示意圖</p><p> 按鍵包括有數(shù)字鍵和功能鍵。數(shù)字鍵包括0-9鍵,用于密碼的輸入。功能鍵有密碼修改鍵
17、和確認(rèn)鍵。具體的功能定義如下表。</p><p><b> 硬件設(shè)計(jì)</b></p><p> 由實(shí)驗(yàn)要求采用4行×4列的矩陣行列結(jié)構(gòu)。89c51單片機(jī)有4個8位I/O端口,采用P1口低四位作為行掃描線,高四位作為列掃描線。</p><p><b> 軟件設(shè)計(jì)</b></p><p>
18、; ① 消抖及重鍵處理:通過軟件上延時(shí)程序來消除抖動;采用后按鍵優(yōu)先處理,即多鍵同時(shí)按下時(shí),只重復(fù)發(fā)送最后按下鍵的掃描碼。</p><p> ② 程序包括鍵盤掃描子程序、發(fā)送鍵碼子程序、發(fā)送數(shù)據(jù)子程序、接收命令子程序、、主程序等。鍵盤掃描子程序用于掃描鍵狀態(tài),將被按鍵的位置號存入緩沖器中;發(fā)送鍵碼子程序用于將緩沖區(qū)鍵的接通碼或斷開碼發(fā)送給計(jì)算機(jī)鍵盤接口或者存在鍵盤密碼緩沖區(qū)中;發(fā)送數(shù)據(jù)子程序用于將數(shù)據(jù)發(fā)給
19、計(jì)算機(jī)鍵盤接口;接收命令子程序用于接收計(jì)算機(jī)鍵盤接口發(fā)來的鍵盤命令;主程序用于系統(tǒng)初始化,子程序調(diào)度,鎖定狀態(tài)的顯示等。</p><p><b> 2.顯示電路設(shè)計(jì)</b></p><p> 考慮到實(shí)驗(yàn)室只能提供四位一體的陰極LED顯示管,所以設(shè)計(jì)時(shí)只設(shè)計(jì)了四位的密碼。LED顯示管電路連接圖如下圖所示,圖中1234為位選碼,低電平有效,在其每一位前加了一個反相器
20、做驅(qū)動,再接到單片機(jī)的P2口的低四位。其段選碼接了兩個74LS240做驅(qū)動,74LS240也有反相作用,因此在編程時(shí)特別做了處理,段選碼的8位接到單片機(jī)的P1口。</p><p> 圖2-4 顯示器面板接線圖</p><p> 3.開鎖及密碼修改單元</p><p> 通過單片機(jī)送給開鎖執(zhí)行機(jī)構(gòu),電路驅(qū)動電磁鎖吸合,從而達(dá)到開鎖的目的。其原理如圖2-5所
21、示。</p><p> 圖2-5密碼鎖開鎖機(jī)構(gòu)示意圖</p><p> 當(dāng)用戶輸入的密碼正確而且是在規(guī)定的時(shí)間(普通用戶要求在12s內(nèi)輸入正確的密碼,管理員要求在5s輸入正確的密碼)輸入的話,單片機(jī)便輸出開門信號,送到開鎖驅(qū)動電路,然后驅(qū)動電磁鎖,達(dá)到開門的目的。其實(shí)際電路如圖2-5所示。</p><p> 在本次設(shè)計(jì)中,基于節(jié)省材料的原則,暫時(shí)用發(fā)光二極管代
22、替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。</p><p> 在按下密碼修改鍵后,系統(tǒng)會要求輸入原始密碼,正確后再輸入新密碼,密碼修改成功則單片機(jī)P3.1所接的發(fā)光二極管會亮3秒。</p><p> 4.AT24C02掉電存儲單元的設(shè)計(jì)</p><p> 掉電存儲單元的作用是在電源斷開的時(shí)候,存儲當(dāng)前設(shè)定的單價(jià)信息。AT24C02是ATMEL公司的2K
23、B字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。其電路如圖2-6所示。</p><p> 圖2-6 掉電存儲電路原理圖</p><p> 圖中R8、R10是上拉電阻,其作用是減少AT24C02的靜態(tài)功耗,由于AT24C02的
24、數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。</p><p> 每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就自動調(diào)用存儲程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時(shí)候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價(jià)等信息,讀到緩存單元中,供主程序使用。由于實(shí)驗(yàn)室沒有這類器件,因此在實(shí)際制作過程中這項(xiàng)功能省略。</p><p><b
25、> 5.系統(tǒng)原理框圖</b></p><p> 圖2-7 系統(tǒng)原理框圖</p><p> 7. 設(shè)計(jì)總體電路圖</p><p> 圖2-8 設(shè)計(jì)總體電路圖</p><p><b> 第三章 設(shè)計(jì)程序</b></p><p><b> 1.模塊介紹
26、</b></p><p> 該計(jì)程計(jì)價(jià)系統(tǒng)的軟件設(shè)計(jì)分為以下幾個模塊:</p><p><b> (1)主程序模塊</b></p><p> 主程序主要完成初始化、設(shè)置中斷向量、檢查有無按鍵按下、以及調(diào)用顯示等等。主程序的流程圖如下所示。</p><p> (2)鍵盤掃描及識別子程序</p>
27、;<p> 鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。</p><p> (3)調(diào)電存儲服務(wù)程序</p><p> 當(dāng)比較密碼的時(shí)候,需要讀AT24C02程序,將存儲在芯片內(nèi)的數(shù)據(jù)讀到RAM中,然后和輸入的密碼相比較。當(dāng)修改密碼的時(shí)候,需要把輸入的密碼保存到AT24C02中。<
28、/p><p><b> (4)顯示子程序</b></p><p><b> ?。?)延時(shí)模塊</b></p><p><b> 2.程序流程圖</b></p><p> (1)主程序流程圖及密碼修改程序流程圖如圖3-1、3—2所示。</p><p>&
29、lt;b> 3.程序</b></p><p><b> 使用匯編編程如下:</b></p><p> ;*******************************************************</p><p> ; NLW 電子密碼鎖程序</p><p
30、> ;*******************************************************</p><p> ;以下8個字節(jié)顯示存儲區(qū)</p><p> LED_BIT_1 EQU 30H</p><p> LED_BIT_2 EQU 31H</p><p> LED_BIT_3
31、EQU 32H</p><p> LED_BIT_4 EQU 33H</p><p> ;以下8個字節(jié)存放初始密碼</p><p> WORD_1 EQU 34H</p><p> WORD_2 EQU 35H</p><p> WORD_3 EQU
32、 36H</p><p> WORD_4 EQU 37H</p><p> ;以下8個字節(jié)存放鍵盤輸入的8位密碼</p><p> KEY_1 EQU 38H</p><p> KEY_2 EQU 39H</p><p> KEY_3 EQU
33、 3AH</p><p> KEY_4 EQU 3BH</p><p> VAL EQU 3EH ;鍵值</p><p> COUNT_1 EQU 3FH ;密碼輸入次數(shù)</p><p> ;*******************************
34、*********************</p><p> ;以下為初始化程序,包括數(shù)據(jù)存儲空間初始化,設(shè)置初始密碼</p><p> ORG 0000H</p><p> AJMP START</p><p> ORG 0100H</p><p><b> START
35、: </b></p><p> MOV VAL,#00H</p><p> MOV R0,#00H</p><p> MOV R1,#00H</p><p> MOV R2,#00H</p><p> MOV R3,#00H</p>
36、<p> MOV R4,#00H</p><p> MOV R5,#00H</p><p> MOV R7,#00H</p><p> MOV R6,#00H</p><p> MOV A,#00H</p><p> MOV B,#00H
37、</p><p> MOV KEY_1,#00H ;輸入密碼存儲區(qū)清0</p><p> MOV KEY_2,#00H</p><p> MOV KEY_3,#00H</p><p> MOV KEY_4,#00H</p><p> MOV WORD
38、_1,#00H ;設(shè)置初始密碼為"1234"</p><p> MOV WORD_2,#01H</p><p> MOV WORD_3,#02H</p><p> MOV WORD_4,#03H </p><p> MOV P3,#00H</p>&
39、lt;p> ;***********************************************************</p><p> ; 主程序開始</p><p> A0: MOV LED_BIT_1,#0F9H ;顯示存儲區(qū) 開始顯示1234</p><p> MOV
40、LED_BIT_2,#0A4H</p><p> MOV LED_BIT_3,#0B0H</p><p> MOV LED_BIT_4,#99H</p><p> MOV COUNT_1,#03H ;密碼錯誤次數(shù)置三</p><p> LCALL DISP ;調(diào)用數(shù)碼顯
41、示子程序1234 等待按鍵</p><p> LCALL LSCAN ;調(diào)用按鍵程序 </p><p> CJNE R3,#0AH,A4 ;是否為"ENT"鍵(#號)不相等則跳轉(zhuǎn)*號重設(shè)密碼鍵</p><p> LCALL LE0 ;檢測到“ENT”
42、不顯示 等待密碼輸入</p><p> LCALL DISP</p><p> A00: LCALL INPUT1 ;轉(zhuǎn)入密碼輸入程序 INPUT1</p><p> A1: LCALL LSCAN ;密碼輸入完畢 檢測“ENT”</p><p> LCAL
43、L DISP</p><p> CJNE R3,#0AH,A1 ;檢測到“ENT” 則比較</p><p> LCALL DISP ;顯示 -</p><p> LCALL LE0 ;顯示區(qū)清空</p><p> LCALL COMPA
44、 ;轉(zhuǎn)入密碼比較程序COMPA</p><p> CJNE R6,#01H,A2 ;返回值R6為1正確開鎖否則調(diào)至A2檢查密碼錯誤次數(shù)</p><p> LCALL OPE ;密碼正確 調(diào)用開鎖程序</p><p> LJMP A0 ;開鎖
45、后返回A0</p><p> A2: DJNZ COUNT_1,A3 ;三次錯誤則報(bào)警</p><p> LJMP ALARM </p><p> A3: LCALL LE_NO ;錯誤未達(dá)三次則顯示NO 返回密碼輸入程序</p><p> LCALL
46、 DISP</p><p> LCALL LE0 ;密碼輸入錯誤顯示NO后可繼續(xù)輸入密碼 </p><p> LJMP A00 ;未滿三次繼續(xù)調(diào)用密碼輸入程序</p><p> A4: CJNE R3,#0BH,A0 ;是否為“CHAN”修改密碼鍵 *鍵
47、</p><p> LCALL LE0</p><p> LCALL DISP </p><p> A5: LCALL INPUT1</p><p> A6: LCALL LSCAN </p><p> CJNE R3,#0AH,A6 ;舊密碼輸入完畢按
48、確認(rèn)再進(jìn)行比較</p><p> LCALL COMPA</p><p> CJNE R6,#01H,A8 ; 返回值R6 為1則正確 錯誤則跳至A8檢測錯誤次數(shù)</p><p> A7: LCALL LE8</p><p> LCALL DISP ;舊密碼正確顯
49、示8</p><p> LCALL LE6 ;顯示6后要按確認(rèn)鍵再輸入新密碼</p><p> LCALL DISP</p><p> LCALL LSCAN</p><p> CJNE R3,#0AH,A7 ;檢測確認(rèn)鍵</p><p> LCALL LE0&
50、lt;/p><p> LCALL DISP</p><p> LCALL CHAN ;新密碼輸入</p><p> OK1: LCALL LSCAN ;新密碼輸入完畢按確認(rèn)鍵</p><p> CJNE R3,#0AH,OK1</p><p> LCALL
51、 LE_OK ;顯示“OK”20次</p><p> SETB P3.1</p><p> MOV 40H,#20</p><p> OK1_1: LCALL DISP</p><p> DJNZ 40H,OK1_1</p><p> CLR P3
52、.1 ;綠燈亮3秒</p><p> AJMP A0 ;密碼修改成功 返回A0</p><p> A8: LCALL LE_NO ;密碼校驗(yàn)錯誤 顯示“NO”</p><p> LCALL DISP </p><p> A9:
53、 DJNZ COUNT_1,A10 ;校驗(yàn)三次錯誤報(bào)警</p><p> LJMP ALARM ;密碼三次錯誤調(diào)用報(bào)警程序</p><p><b> A10: </b></p><p> LCALL LE0</p><p> LCALL DI
54、SP</p><p> LCALL LSCAN</p><p> AJMP A5</p><p> ;*************************************************************</p><p> ; 讀鍵值子程序</p><
55、p><b> LSCAN:</b></p><p> ACALL KS1 ;調(diào)用判別有無按鍵閉合子程序</p><p> CJNE A,#0FH,LK1 ;有鍵閉合,則轉(zhuǎn)LK1</p><p> SJMP LSCAN</p><p> LK1
56、: ACALL DLY_S ;調(diào)用程序延時(shí),消除抖動</p><p> ACALL KS1 ;消抖后再次判斷是否有鍵閉合</p><p> CJNE A,#0FH,LK2 ;有鍵閉合,轉(zhuǎn)LK2</p><p> AJMP LSCAN</p><
57、p> LK2: MOV R2,#0EFH ;鍵盤列掃描模式,先掃描第一列</p><p> MOV R5,#00H ;初始掃描第一列,列號為0</p><p> LK3: MOV A,R2 ;使第一列為1,檢測有無按鍵</p><p> MOV P1,A</
58、p><p> MOV A,P1</p><p> MOV B,A</p><p> JB ACC.0,NEXT1 ;P3第0位為1,說明無鍵按下,轉(zhuǎn)至NEXT1,即下一行</p><p> MOV A,#0 ;P3第0位為0,有鍵按下,行起始行鍵號為0</p><p&g
59、t; AJMP LKP ;跳轉(zhuǎn)至LKP,計(jì)算鍵號</p><p> NEXT1: JB ACC.1,NEXT2 ;P3第1位為1,說明無鍵按下,轉(zhuǎn)至NEXT2,即下一行</p><p> MOV A,#4 ;P3第1位為0,有鍵按下,行起始行鍵號為4</p><p> AJMP LK
60、P ;跳轉(zhuǎn)至LKP,計(jì)算鍵號</p><p> NEXT2: JB ACC.2,NEXT3 ;P3第2位為1,說明無鍵按下,轉(zhuǎn)至NEXT3,即下一行</p><p> MOV A,#8 ;P3第2位為0,有鍵按下,行起始行鍵號為8</p><p> AJMP LKP ;跳轉(zhuǎn)至LKP,計(jì)算鍵號</p&g
61、t;<p> NEXT3: JB ACC.3,NEXT ;P3第3位為1,說明無鍵按下,轉(zhuǎn)至NEXT,即下一列</p><p> MOV A,#12 ;P3第3位為0,有鍵按下,行起始行鍵號為12</p><p> AJMP LKP ;跳轉(zhuǎn)至LKP,計(jì)算鍵號</p><p> LKP: ADD
62、 A,R5 ;行起始鍵號與列號之和為鍵號</p><p> LK4: MOV VAL,A</p><p> MOV R3,A</p><p> SETB P3.0</p><p> LCALL DLY</p><p> CLR P3.0</p><p
63、><b> RET</b></p><p> NEXT: INC R5 ;指向下一列,列號加1</p><p> MOV A,R2</p><p> JNB B.7,DONE ;是否4列全掃描完畢</p><p> RL
64、A ;沒有,準(zhǔn)備掃描下一列</p><p> MOV R2,A</p><p> AJMP LK3</p><p> DONE: AJMP LSCAN ;回到鍵掃程序開始處</p><p> KS1: MOV P1,#0FH
65、 ;將所有的列都置1,并將低四位作為輸入口</p><p> MOV A,P1 ;讀取行狀態(tài)</p><p><b> RET </b></p><p> ;************************************************</p><p> ;
66、 新密碼輸入程序</p><p> CHAN: MOV R0,#WORD_1 ;原始密碼第一位地址賦給R0 </p><p> MOV R4,#04H ;密碼位數(shù)給R4</p><p> CHAN1: LCALL LSCAN</p><p> LCALL SHIFTL
67、</p><p> LCALL DISP</p><p> MOV @R0,VAL</p><p> DJNZ R4,CHAN2 </p><p><b> RET</b></p><p> CHAN2: INC R0
68、 ;4位密碼未輸入完則轉(zhuǎn)回繼續(xù)輸入</p><p> AJMP CHAN1</p><p> ;*************************************************</p><p> ; 密碼輸入程序</p><p> INPUT1: MOV R4,#04H</p&g
69、t;<p> MOV R0,#KEY_1</p><p> INPUT: LCALL LSCAN ;沒鍵按下時(shí)處理 </p><p> JNB P1.0,INPUT_3 ;無按鍵則轉(zhuǎn)INPUT</p><p> JNB P1.1,INPUT_3</p><p>
70、; JNB P1.2,INPUT_3</p><p> JB P1.3,INPUT</p><p> INPUT_3:MOV @R0,VAL ;用來保存密碼</p><p> INC R0</p><p> LCALL SHIFTL ;顯示左移程序<
71、/p><p> LCALL DISP ;調(diào)用顯示程序</p><p> DJNZ R4,INPUT ;8位密碼是否輸入完畢 </p><p> INPUT_2:RET</p><p> ;******************************************</
72、p><p> ; 密碼比較程序</p><p> COMPA: MOV A,KEY_1 ;輸入密碼暫存第一位地址給A</p><p> CJNE A,WORD_1,COMPA_1 ;不相等則跳出賦R6為0</p><p> MOV A,KEY_2</p>
73、<p> CJNE A,WORD_2,COMPA_1</p><p> MOV A,KEY_3</p><p> CJNE A,WORD_3,COMPA_1</p><p> MOV A,KEY_4</p><p> CJNE A,WORD_4,COMPA_1</p>
74、;<p> MOV R6,#01H ;密碼正確則賦R6為1,返回</p><p> AJMP COMPA_2</p><p> COMPA_1:MOV R6,#00H </p><p> COMPA_2:RET </p><p> ;*************
75、*********************************</p><p> ; 開鎖程序</p><p> OPE: SETB P3.0 ;開鎖 紅燈亮 同時(shí)顯示888888888</p><p> LCALL LE8 </p><p&g
76、t; LCALL DISP </p><p> LCALL DLY_L ;調(diào)用延時(shí)程序</p><p> CLR P3.0</p><p> MOV COUNT_1,#03H</p><p><b> RET</b></p>&l
77、t;p> ;****************************************************</p><p> ; 密碼3次錯誤報(bào)警程序</p><p> ALARM:SETB P3.2</p><p> LCALL LE_NO2</p><p> LCALL DISP<
78、;/p><p> LCALL DLY_L</p><p> CLR P3.2</p><p> LJMP A0</p><p> ;******************************************************</p><p> ; 以下為各種顯示賦值
79、程序</p><p> LE8: MOV LED_BIT_1,#80H ;顯示存儲區(qū) 顯示8888</p><p> MOV LED_BIT_2,#80H</p><p> MOV LED_BIT_3,#80H</p><p> MOV LED_BIT_4,#80H</p>
80、<p><b> RET</b></p><p> LE6: MOV LED_BIT_1,#82H ;顯示存儲區(qū) 顯示6666</p><p> MOV LED_BIT_2,#82H</p><p> MOV LED_BIT_3,#82H</p><p>
81、MOV LED_BIT_4,#82H </p><p><b> RET</b></p><p> LE_NO: MOV LED_BIT_1,#0FFH ;顯示存儲區(qū) 顯示NO</p><p> MOV LED_BIT_2,#0FFH</p><p> MOV
82、 LED_BIT_3,#0C0H</p><p> MOV LED_BIT_4,#0C8H </p><p><b> RET</b></p><p> LE_NO2:MOV LED_BIT_1,#0C0H ;顯示存儲區(qū) 顯示NONO</p><p> MOV LED_
83、BIT_2,#0C8H</p><p> MOV LED_BIT_3,#0C0H</p><p> MOV LED_BIT_4,#0C8H </p><p><b> RET</b></p><p> LE0: MOV LED_BIT_1,#0FFH ;顯示存儲區(qū)
84、顯示空</p><p> MOV LED_BIT_2,#0FFH</p><p> MOV LED_BIT_3,#0FFH</p><p> MOV LED_BIT_4,#0FFH </p><p><b> RET</b></p><p> LE_
85、OK: MOV LED_BIT_1,#0FFH ;顯示存儲區(qū) 顯示OCOC</p><p> MOV LED_BIT_2,#0FFH</p><p> MOV LED_BIT_3,#0C0H </p><p> MOV LED_BIT_4,#0C6H </p><p><b>
86、; RET</b></p><p> ;**************************************************</p><p><b> ; 顯示程序</b></p><p> DISP: MOV A,#01H</p><p> MOV P2,A
87、</p><p> MOV P0,LED_BIT_1</p><p><b> LCALL DLY</b></p><p><b> RL A</b></p><p> MOV P2,A</p><p> MOV P0,LED_BIT_2</
88、p><p><b> LCALL DLY</b></p><p><b> RL A</b></p><p> MOV P2,A</p><p> MOV P0,LED_BIT_3</p><p><b> LCALL DLY</b>
89、</p><p><b> RL A</b></p><p> MOV P2,A</p><p> MOV P0,LED_BIT_4</p><p><b> LCALL DLY</b></p><p><b> RET</b>&l
90、t;/p><p> ;**************************************************</p><p> ; 段碼,輸入密碼左移子程序 顯示“-”</p><p><b> SHIFTL:</b></p><p> MOV LED_BIT_4,LED_BIT_
91、3</p><p> MOV LED_BIT_3,LED_BIT_2</p><p> MOV LED_BIT_2,LED_BIT_1</p><p> MOV LED_BIT_1,#0BFH</p><p><b> RET</b></p><p> ;*
92、************************************************</p><p> ; 延時(shí)子程序</p><p> DLY_S: MOV R6,#100 ;延時(shí)25ms </p><p> D1: MOV R7,#250</p><p> DJNZ
93、 R7,$</p><p> DJNZ R6,D1</p><p><b> RET</b></p><p> DLY: MOV R6,#100 ;25ms延時(shí)程序</p><p> D4: MOV R7,#250</p><p> DJN
94、Z R7,$</p><p> DJNZ R6,D4</p><p><b> RET</b></p><p> DLY_L: MOV R5,#100</p><p> D2: MOV R6,#100</p><p> D3: MOV
95、 R7,#250 ;2.5s延時(shí)程序</p><p> DJNZ R7,$</p><p> DJNZ R6,D3</p><p> DJNZ R5,D2</p><p><b> RET</b></p><p> FINI: NOP</
96、p><p><b> END</b></p><p> 第四章 Proteus仿真</p><p> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電
97、路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SP</p><p> I調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬
98、件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。</p><p> 本課程設(shè)計(jì)在做完方案設(shè)計(jì)和程序編輯后后就是利用Proteus進(jìn)行硬件仿真,先把
99、需要的元器件從元件庫里面調(diào)出來,再按照接線原理圖把線連接好,檢查線路準(zhǔn)確無誤后再把用KELL生成的HEX程序文件導(dǎo)入單片機(jī)里,一切就緒后開始進(jìn)行聯(lián)調(diào),若仿真結(jié)果與設(shè)計(jì)的不同,則先找有無硬件設(shè)置錯誤,再檢查程序,不斷檢查,直至仿真成功。仿真聯(lián)調(diào)過程如下:</p><p> 1、Keil C51 v7.50 軟件和 Proteus 7.0 SP 軟件,分別進(jìn)行安裝。</p><p> 2、
100、把Proteus 安裝目錄下 VDM51.dll ( C:\ProgramFiles\Labcenter Electronics\Proteus 6</p><p> Professional\MODELS)文件復(fù)制到Keil 安裝目錄的 \C51\BIN 目錄中。</p><p> 3、 編輯C51 里tools.ini 文件,加入TDRV1=BIN\VDM51.DLL("
101、PROTEUS VSM MONITOR 51 DRIVER")</p><p> 4、 Keil 里設(shè)置: project-->options for project-->debug tab</p><p> 5、 選中use Proteus VSM monitor 51</p><p> 6、 載入Proteus 文件</p>
102、;<p> 7、 KeilC與Proteus連接仿真調(diào)試</p><p> 單擊仿真運(yùn)行開始按鈕,我們能清楚地觀察到每一個引腳的電頻變化,紅色代表高電頻,藍(lán)色代表低電頻。在LED顯示器上,循環(huán)顯示1-4。</p><p> 8、若聯(lián)調(diào)失敗,則返回重新檢查再進(jìn)行調(diào)試。</p><p><b> 硬件制作</b></p&
103、gt;<p> 在軟件仿真成功交老師檢查后,就可以去領(lǐng)取器件做硬件設(shè)計(jì)了。硬件制作所要求的就是細(xì)心,再就是經(jīng)驗(yàn),其他就沒什么說的了。</p><p><b> 硬件制作過程如下:</b></p><p> 領(lǐng)取元器件,檢查元器件是否是自己所需要的;</p><p> 規(guī)劃,綜合考慮各個器件的引腳及接電源和節(jié)點(diǎn)的情況,對接線
104、路徑進(jìn)行規(guī)劃,盡量避免線路的重疊,要求做的美觀、使用;</p><p> 焊接固定座槽,注意不要短路;</p><p> 連接各條線路,不要錯漏,也不要重復(fù),這里尤其要小心;</p><p> 接線完畢進(jìn)行檢查,再把芯片裝上去;</p><p><b> 下載程序</b></p><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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)-密碼鎖課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-密碼鎖
- 單片機(jī)課程設(shè)計(jì)--密碼鎖
- 單片機(jī)課程設(shè)計(jì)-密碼鎖
- 單片機(jī)課程設(shè)計(jì)---密碼鎖
- 密碼鎖單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-密碼鎖
- 單片機(jī)密碼鎖畢業(yè)設(shè)計(jì)課程設(shè)計(jì)
- 單片機(jī)密碼鎖畢業(yè)設(shè)計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)---數(shù)字密碼鎖
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)---數(shù)字密碼鎖
- 單片機(jī)課程設(shè)計(jì)-數(shù)字密碼鎖
- 單片機(jī)課程設(shè)計(jì)電子密碼鎖
- 51單片機(jī)課程設(shè)計(jì)---密碼鎖
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖報(bào)告
- 單片機(jī)課程設(shè)計(jì)---電子密碼鎖報(bào)告
- 課程設(shè)計(jì)報(bào)告---單片機(jī)實(shí)現(xiàn)密碼鎖
評論
0/150
提交評論