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