單片機(jī)-密碼鎖1畢業(yè)設(shè)計(jì)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論