基于單片機的電子密碼鎖設(shè)計畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  畢業(yè)設(shè)計論文</b></p><p>  作者 學(xué)號 </p><p>  系部 電子信息學(xué)院 </p><p>  專業(yè) 計算機控制技術(shù) </p>&

2、lt;p>  題目 基于單片機的電子密碼鎖設(shè)計 </p><p>  指導(dǎo)教師 </p><p>  評閱教師 </p><p>  完成時間: 2012 年 4 月 27 日 <

3、;/p><p>  畢業(yè)設(shè)計(論文)中文摘要</p><p>  畢業(yè)設(shè)計(論文)外文摘要</p><p><b>  目錄</b></p><p>  1 引言- 1 -</p><p>  2 系統(tǒng)設(shè)計- 1 -</p><p>  2.1 功能設(shè)計- 1 -&

4、lt;/p><p>  2.2 結(jié)構(gòu)設(shè)計- 2 -</p><p>  3 硬件設(shè)計- 3 -</p><p>  3.1 AT89S51簡介- 3 -</p><p>  3.2 液晶顯示電路- 5 -</p><p>  3.3 發(fā)聲電路- 10 -</p><p>  3.

5、4 發(fā)光部分- 10 -</p><p>  3.5 鍵盤輸入電路- 11 -</p><p>  3.6 手動復(fù)位電路- 11 -</p><p>  3.7 晶振電路- 12 -</p><p>  4 軟件設(shè)計- 13 -</p><p>  4.1 系統(tǒng)主程序- 13 -</p&g

6、t;<p>  4.2 系統(tǒng)相關(guān)子程序- 16 -</p><p>  5 系統(tǒng)調(diào)試與測試- 18 -</p><p><b>  結(jié)論- 19 -</b></p><p><b>  致謝- 19 -</b></p><p>  參考文獻- 19 -</p>

7、<p>  附錄 源程序- 20 -</p><p><b>  1 引言</b></p><p>  鎖具是源流千古的社會性用品,主要用于日常生活和工作中,住宅與部門的安全防范。當前門鎖的主流是彈子鎖,其保密性不強,鑰匙容易被仿制和意外丟失;且持有者需隨時攜帶鑰匙,使用不方便。保存貴重物件的保險箱主要用機械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,

8、成本高昂,且易出現(xiàn)故障。隨著科技、經(jīng)濟和社會的發(fā)展,當今社會公共安全防范系統(tǒng)對鎖具的保密性、牢固性、可靠性、耐用性以及安裝使用等提出了新的更高的要求。針對原有鎖具的特點和缺陷,為滿足人們對鎖的使用需求,增加其安全性,用密碼代替鑰匙的電子密碼鎖應(yīng)運而生。</p><p>  早期開發(fā)的電子密碼鎖由于電子器件所限,種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實現(xiàn)的,制作簡單但不安全。后來多是基于EDA

9、實現(xiàn),其電路結(jié)構(gòu)復(fù)雜,電子元件繁多,也有使用早先2051系列單片機來實現(xiàn)的,但密碼簡單,容易破解。隨著電子元件的進一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強大,使用更加方便,保密安全性更強;由以前的單密碼輸入發(fā)展到現(xiàn)在密碼加感應(yīng)元件,實現(xiàn)了真正的電子加密。電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品。電子密

10、碼鎖的出現(xiàn)給人們帶來了極大的方便,有很廣闊的市場前景。</p><p>  現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖,特點有:</p><p>  保密性好,編碼量多。</p><p>  隨機開鎖成功率幾乎為零。 </p><p>  誤碼輸入保護。當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動。&

11、lt;/p><p>  操作簡單易行,一學(xué)即會。</p><p>  論文闡述基于美國Atmel公司的AT89S51單片機,采用液晶顯示器1602作為輸出顯示系統(tǒng)提示信息的電子密碼鎖的設(shè)計與實現(xiàn)。 </p><p><b>  2 系統(tǒng)設(shè)計</b></p><p><b>  2.1 功能設(shè)計</b>

12、;</p><p>  本系統(tǒng)擬采用單片機為主控芯片,由于單片機種類繁多,各種型號都有其各自特點,應(yīng)用于不同的環(huán)境,因此在選用時要多加比較。一般來說,在選取單片機時從下面幾個方面考慮:性能、運行速度、I/O口、定時/計數(shù)器、串行/并行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性等等。基于以上因素本設(shè)計選用單片機AT89S51作為本設(shè)計的核心元件,利用該單片機靈活的編程設(shè)計和豐富的I/O端口,及其

13、控制的準確性,實現(xiàn)基本的密碼鎖功能。</p><p>  在單片機I/O接口上外接輸入鍵盤用于輸入和一些功能的控制??紤]到密碼的存在形式一般為數(shù)字或字母形式,而字母數(shù)量眾多,并且排列不規(guī)則,不能使用矩陣式鍵盤排列字母;并且按鍵過多會大大增加系統(tǒng)的體積,對適用性極為不利,故只使用數(shù)字作為密碼。阿拉伯數(shù)字不僅便于用戶記憶,而且通用性極強,是作為密碼的首選。10個數(shù)字需要1個不同的按鍵,故選用為3*4矩陣鍵盤。<

14、/p><p>  用戶使用電子密碼鎖開鎖的步驟為:用戶輸入數(shù)字密碼,輸入完畢后按確認鍵。如果密碼正確,再按開鎖鍵,即可開鎖。如果密碼錯誤則報警,如果密碼錯誤多次,還會鎖定鍵盤。這里需要蜂鳴器提示用戶按鍵已按下。液晶顯示器則直觀顯示系統(tǒng)當前狀態(tài)和提示用戶需要做的操作。</p><p>  為防止系統(tǒng)發(fā)生異常,還應(yīng)提供復(fù)位開關(guān),在系統(tǒng)無法正常運轉(zhuǎn)時手動復(fù)位。</p><p>

15、;<b>  2.2 結(jié)構(gòu)設(shè)計</b></p><p>  如圖2-1所示,整個系統(tǒng)以單片機為核心,輔以若干外圍電路,由矩陣鍵盤控制電路、復(fù)位電路、震蕩電路、報警電路、數(shù)碼管顯示電路和開鎖閉鎖電路組成。電源部分為整個系統(tǒng)供電,采用5V直流電源。鍵盤輸入部分采用3*4矩陣行列鍵盤,需不斷掃描檢查有無按鍵按下。復(fù)位部分提供手動復(fù)位功能,當系統(tǒng)發(fā)生異?;蛭粗e誤時可以由用戶手動復(fù)位單片機。晶振部

16、分是提供外部石英晶體諧振器。</p><p>  系統(tǒng)輸出有:液晶顯示部分,為用戶顯示字符提示當前操作狀態(tài)。蜂鳴器發(fā)聲,提示用戶按鍵已按下,以及密碼正確的提示音,錯誤的警告音等。發(fā)光二極管電路連通后發(fā)光,表示鎖已打開。</p><p><b>  3 硬件設(shè)計</b></p><p>  根據(jù)上面的結(jié)構(gòu)設(shè)計思路,具體設(shè)計中選用一塊20cm*1

17、0cm的萬用板做為系統(tǒng)焊接板。單片機為Atmel公司的AT89S51,電源部分為直流4.5V,3節(jié)5號電池供電,實驗時也可以用直流5V電源供電。鍵盤輸入部分為3*4矩陣鍵盤,不需上拉電阻,但掃描時需先給行線或列線供電。液晶顯示器選用1602,可以顯示兩行,每行16個字符。蜂鳴器為有源5V。系統(tǒng)電路圖如圖3-1所示。下面按系統(tǒng)的結(jié)構(gòu)具體介紹一些電路及其所用的芯片。</p><p>  圖3-1 硬件電路圖</

18、p><p>  3.1 AT89S51簡介</p><p>  AT89S51是一個低功耗,高性能CMOS8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Fl

19、ash存儲單元。AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。其引腳如圖3-2所示,下面簡要介紹其引腳功能:</p><p>  VCC:電源。本設(shè)計中接電源正極。</p><p>  GND:地。本設(shè)計中接電源負極。</p><p>  P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫"1&q

20、uot;時,引腳用作高阻抗輸入。</p><p>  P1口:P1口是一個具有內(nèi)部上拉電阻的8 位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對 P1 端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p>  P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2

21、輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p>  P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被

22、外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p>  RST:復(fù)位輸入。晶振工作時,RST腳持續(xù)2個機器周期高電平將使單片機復(fù)位??撮T狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復(fù)位高電平有效。</p><p>  EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到F

23、FFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。本設(shè)計中不需要外部程序存儲器,因此需接高電平。</p><p>  ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。</p><p>  PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當AT89S51從外部程序存儲器執(zhí)行外部代碼時

24、,PSEN在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。</p><p>  XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><p>  XTAL2:振蕩器反相放大器的輸出端。</p><p>  3.2 液晶顯示電路</p><p>  3.2.1 LCD1602簡介</p>&

25、lt;p>  字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片,HD44780是帶西文字庫的液晶顯示控制器,用戶只需要向HD44780送ASCII的字符碼,HD44780就按照內(nèi)置的ROM點陣發(fā)生器自動在LCD液晶顯示器上顯示出來。所以,HD44780主要適用于顯示西文ASCII字符內(nèi)容的液晶顯示。</p><p>  而1602字符型L

26、CD能夠同時顯示16*2即32個字符(16列2行)。其內(nèi)置192種字符(160個5*7點陣字符和32個5*10點陣字符),具有64個字節(jié)的自定義字符RAM,可自定義8個5*8點陣字符或4個5*11點陣字符。</p><p>  1602通常有14條引腳線或16條引腳線兩種,多出來的2條線是背光電源線和地線,帶背光的比不帶背光的略厚,控制原理與14腳的LCD完全一樣,是否帶背光在應(yīng)用中并無差別。本設(shè)計中采用帶背光1

27、6引腳線的。其主要技術(shù)參數(shù)為:</p><p>  顯示容量:16×2個字符。</p><p>  芯片工作電壓:4.5-5.5V。</p><p>  工作電流:2.0mA(5.0V)。</p><p>  模塊最佳工作電壓:5.0V。</p><p>  字符尺寸:2.95×4.35(W

28、5;H)mm。</p><p>  LCD1602的16個引腳可參照圖3-3,其引腳功能分別為:</p><p>  VSS:電源地(GND)。</p><p>  VCC:電源電壓(5V)。</p><p>  V0:LCD驅(qū)動電壓,液晶顯示器對比度調(diào)整端。使用時可以通過一個10K的電位器調(diào)整對比度,接正電源時對比度最弱,接地電源時對比度最

29、高。</p><p>  RS:寄存器選擇輸入端,選擇模塊內(nèi)部寄存器類型信號。RS=0,進行寫模塊操作時指向指令寄存器,進行讀模塊操作時指向地址計數(shù)器。RS=1,無論進行讀操作還是寫操作均指向數(shù)據(jù)寄存器。</p><p>  R/W:讀寫控制輸入端,選擇讀/寫模塊操作信號。R/W=0,讀操作;R/W=1,寫操作。本設(shè)計中只需往LCD里寫數(shù)據(jù)即可,寫時序見圖3-4。</p>&

30、lt;p>  E:使能信號輸入端。讀操作時,高電平有效;寫操作時,下降沿有效</p><p>  DB0~DB7:數(shù)據(jù)輸入/輸出口,單片機與模塊之間的數(shù)據(jù)傳送通道。選擇4位方式通訊時,不使用DB0~DB3。</p><p>  BLA:背光的正端+5V。</p><p>  BLK:背光的負端0V。</p><p>  1602模塊內(nèi)部

31、主要由LCD顯示屏、控制器、列驅(qū)動器和偏壓產(chǎn)生電路構(gòu)成??刂破鹘邮軄碜訫PU的指令和數(shù)據(jù),控制著整個模塊的工作。主要由顯示數(shù)據(jù)緩沖區(qū)DDRAM,字符發(fā)生器CGROM,字符發(fā)生器CGRAM,指令寄存器IR,地址寄存器DR,忙標志BF,地址計數(shù)器AC以及時序發(fā)生電路組成。</p><p>  模塊通過數(shù)據(jù)總線DB0~DB7和E、R/W、RS三個輸入控制端與MPU接口。這三根控制線按照規(guī)定的時序相互協(xié)調(diào)作用,使控制器通

32、過數(shù)據(jù)總線接受MPU發(fā)來的數(shù)據(jù)和指令,從CGROM中找到欲顯示字符的字符碼,送入DDRAM,在LCD顯示屏上與DDRAM存儲單元對應(yīng)的規(guī)定位置顯示出該字符。控制器還可以根據(jù)MPU的指令,實現(xiàn)字符的顯示,閃爍和移位等顯示效果。</p><p>  CGROM內(nèi)提供的是內(nèi)置字符碼,CGRAM則是供用戶存儲自定義的點陣圖形字符。模塊字符在LCD顯示屏上的顯示位置與該字符的字符代碼在顯示緩沖區(qū)DDRAM內(nèi)的存儲地址一一對

33、應(yīng)。</p><p>  LCD1602模塊內(nèi)部具有兩個8位寄存器:指令寄存器IR和地址寄存器DR,用戶可以通過RS和R/W輸入信號的組合選擇指定的寄存器,進行相應(yīng)的操作。表3-1中列出了組合選擇方式:</p><p>  表3-1 寄存器選擇組合</p><p>  1602提供了較為豐富的指令設(shè)置,通過選擇相應(yīng)的指令設(shè)置,用戶可以實現(xiàn)多種字符顯示樣式。下面僅簡

34、要介紹本次設(shè)計中需要用到的一些指令設(shè)置。</p><p>  清屏指令 Clear display</p><p>  清顯示指令將空位字符碼20H送入全部DDRAM地址中,時DDRAM中的內(nèi)容全部清除,顯示消失,地址計數(shù)器AC=0,自動增一模式。顯示歸位,光標閃爍回到原點(顯示屏左上角),但不改變移位設(shè)置模式。清屏指令碼見表3-2。</p><p>  表3-2

35、 清屏指令碼</p><p>  進入模式設(shè)置指令 Entry mode set</p><p>  見表3-3,進入模式設(shè)置指令用于設(shè)定光標移動方向和整體顯示是否移動。</p><p>  表3-3 模式設(shè)置指令碼</p><p>  I/D:字符碼寫入或者讀出DDRAM后DDRAM地址指針AC變化方向標志。</p><

36、;p>  I/D=1,完成一個字符碼傳送后,AC自動加1。</p><p>  I/D=0,完成一個字符碼傳送后,AC自動減1。</p><p><b>  S:顯示移位標志。</b></p><p>  S=1,完成一個字符碼傳送后顯示屏整體向右(I/D=0)或向左(I/D=1)移位。</p><p>  S=0

37、,完成一個字符碼傳送后顯示屏不移動。</p><p>  顯示開關(guān)控制指令 Display on/off control</p><p>  指令碼見表3-4,該指令功能為控制整體顯示開關(guān),光標顯示開關(guān)和光標閃爍開關(guān)。</p><p>  表3-4 顯示開關(guān)控制指令碼</p><p>  D:顯示開/關(guān)標志。D=1,開顯示;D=0,關(guān)顯示。

38、</p><p>  關(guān)顯示后,顯示數(shù)據(jù)仍保持在DDRAM中,開顯示即可再現(xiàn)。</p><p>  C:光標顯示控制標志。C=1,光標顯示;C=0,光標不顯示。</p><p>  不顯示光標并不影響模塊其他顯示功能。顯示5*8點陣字體時,光標在第八行顯示;顯示5*10點陣字符時,光標在第11行顯示。</p><p>  B:閃爍顯示控制標志

39、。B=1,光標所在位置會交替顯示全黑點陣和顯示字符,產(chǎn)生閃爍效果;B=0,光標不閃爍。</p><p>  功能設(shè)置指令 Function set</p><p>  功能設(shè)置指令用于設(shè)置接口數(shù)據(jù)位數(shù),顯示行數(shù)以及字形。指令碼見表3-5。</p><p>  表3-5 功能設(shè)置指令碼</p><p>  DL:數(shù)據(jù)接口寬度標志。DL=1,8

40、位數(shù)據(jù)總線DB7~DB0;DL=0,4位數(shù)據(jù)總線DB7~DB4,DB3~DB0不使用,此方式傳送數(shù)據(jù)需分兩次進行。</p><p>  N:顯示行數(shù)標志。N=0,顯示一行;N=1,顯示兩行。</p><p>  F:顯示字符點陣字體標志。F=0,顯示5*7點陣字符;F=1,顯示5*10點陣字符。</p><p>  1602模塊內(nèi)部設(shè)有上電自動復(fù)位電路,當外加電源電

41、壓超過+4.5V時,自動對模塊進行初始化操作,將模塊設(shè)置為默認的顯示工作狀態(tài)。初始化大約持續(xù)10ms左右。初始化進行的指令操作為:</p><p><b>  清顯示</b></p><p><b>  功能顯示</b></p><p>  DL=1:8位數(shù)據(jù)接口。</p><p><b>

42、;  N=0:顯示一行。</b></p><p>  F=0:顯示5*8點陣字符字體。</p><p><b>  顯示開/關(guān)控制</b></p><p><b>  D=0:關(guān)顯示。</b></p><p>  C=0:不顯示光標。</p><p>  B=0:

43、光標不閃爍。</p><p><b>  輸入模式設(shè)置</b></p><p>  I/D=1:AC自動增一。</p><p>  S=0:顯示不移位。</p><p>  但是需要特別注意的是,倘若供電電源達不到要求,模塊內(nèi)部復(fù)位電路無法正常工作,上電復(fù)位初始化就會失敗。因此,最好在系統(tǒng)初始化時通過指令設(shè)置對模塊進行手

44、動初始化。</p><p>  3.2.2 LCD1602電路</p><p>  如圖3-5,AT89S51的P0口接1602的8位數(shù)據(jù)線,通過輸出數(shù)據(jù)控制1602顯示不同的提示字符。1602本身內(nèi)置各種字符,還可以自定義顯示字符。本設(shè)計中根據(jù)不同場合1602會顯示各種提示字符,顯示內(nèi)容對應(yīng)含義見表3-6。</p><p>  P3.0~P3.2接1602控制端

45、,其中P3.0接使能端E,寫操作時,使能端下降沿有效。P3.1接讀寫控制端R/W,R/W=0,讀操作;R/W=1,寫操作。P3.2接寄存器選擇端RS,RS=0,寫操作時指向指令寄存器,讀操作時指向地址寄存器;RS=1,無論讀操作還是寫操作都指向數(shù)據(jù)寄存器。</p><p>  LCD1602的VSS為電源地,需接地;VDD為電源電壓;V0為LCD驅(qū)動電壓,接電位器,通過調(diào)節(jié)電位器控制顯示的亮度,使LCD顯示清晰而

46、無黑影。背光電源線LCD正負兩端分別接電源和地即可。</p><p><b>  3.3 發(fā)聲電路</b></p><p>  發(fā)聲部分的電路如圖3-6,就是用P3.7口控制一個有源蜂鳴器發(fā)聲,作為提示音或報警音。程序設(shè)定為每當識別到有一位按鍵被按下時,蜂鳴器發(fā)聲0.1S;開鎖時發(fā)聲</p><p>  0.5S,發(fā)聲2次;密碼錯誤時每次停頓

47、0.5S發(fā)聲1S,錯誤3次發(fā)聲10S。 </p><p>  蜂鳴器有兩個引腳,其中長腳為正極,短腳為負極。其發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它。我們可以通過程序控制P3.7腳的電平來使蜂鳴器發(fā)出聲音和關(guān)閉。</p

48、><p><b>  3.4 發(fā)光部分</b></p><p>  發(fā)光部分的電路如圖3-6,就是用P3.6口控制一個發(fā)光二級管,作為提示燈。程序設(shè)定為每當開鎖程序啟動時,燈會亮起。</p><p>  LED(Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電能轉(zhuǎn)化為光能。LED的心臟是一個半導(dǎo)體的晶

49、片,晶片的一端附著在一個支架上,是負極,另一端連接電源的正極,整個晶片被環(huán)氧樹脂封裝起來。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來的時候,它們之間就形成一個“P-N結(jié)”。當電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長決定光的顏色,是由形成P-N結(jié)材料決定

50、的。</p><p>  3.5 鍵盤輸入電路</p><p>  本設(shè)計中采用的3*4矩陣鍵盤共有12個鍵位,3根列線連P1口低三位,4根行線 </p><p>  圖3-7 按鍵電路圖</p><p>  連P1口高四位(見圖3-7所示)。在按鍵未被按下時,每一條行線與線列線的交叉處互不相通,當某個按鍵被按下后,該按鍵所在的行線和列

51、線連通。這樣在P1口的高3位和低4位中各有一位互相連通。通過行列掃描檢測出這兩位,即可識別出被按下的鍵。具體識別方式和按鍵功能完全由軟件自定義。</p><p>  3.6 手動復(fù)位電路</p><p>  圖3-8 手動復(fù)位電路圖</p><p>  為確保系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分。無論是哪種類型的單片機,用戶在使用時都必須設(shè)計復(fù)位電

52、路,以提高單片機在強磁場、電源尖峰等強干擾環(huán)境下的工作穩(wěn)定性或?qū)崿F(xiàn)從誤操作中正確恢復(fù)初試狀態(tài)。如果復(fù)位電路可靠性較差,將直接影響到整個單片機系統(tǒng)工作的穩(wěn)定性,造成系統(tǒng)調(diào)試成功后出現(xiàn)死機或“程序跑飛”等現(xiàn)象。</p><p>  單片機復(fù)位是使CPU和系統(tǒng)的其他功能部件都處在一個確定的初試狀態(tài),并從這個狀態(tài)開始工作,無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復(fù)位。完成復(fù)位操作共需24個狀態(tài)周期,復(fù)

53、位結(jié)束后,單片機從地址0000H開始執(zhí)行程序。0000H~0002H是系統(tǒng)的啟動單元,而0003H~002AH是程序存儲器中的特殊保留單元,所以一般在啟動單元中存放一條無條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)去執(zhí)行指定的應(yīng)用程序。</p><p>  復(fù)位電路的基本功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防止復(fù)位開關(guān)閉合過程中引起的抖動而影響復(fù)位

54、。圖3-8所示的復(fù)位電路可以基本實現(xiàn)上述功能,該電路在最基本的復(fù)位電路基礎(chǔ)上增加了一個手動復(fù)位開關(guān),當人為按下按鈕時,則Vcc的高電平就會直接加到RST端。由于人的動作再快也會使按鈕保持接通達數(shù)十毫秒,所以完全能夠滿足復(fù)位的時間要求。</p><p><b>  3.7 晶振電路</b></p><p>  單片機本身是一個復(fù)雜的同步時序電路,為保證同步工作方式的實

55、現(xiàn),必須提供時鐘信號,以使其系統(tǒng)在時鐘信號的控制下按時序協(xié)調(diào)工作。單片機的時鐘電路由振蕩電路和分頻電路組成,其中振蕩電路由反向器以及其并聯(lián)外接的石英晶體和電容構(gòu)成,用于產(chǎn)生振蕩脈沖。而分頻電路則用于把振蕩脈沖分頻,以得到所需要的時鐘信號。</p><p>  晶振是晶體振蕩器的簡稱,它用一種能把電能和機械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。在通常工作條件下,普通的晶振頻率絕對精度可達

56、百萬分之五十,高級的精度更高。電路中的晶振即石英晶體振蕩器,它與電容構(gòu)成振蕩回路,為片內(nèi)放大器提供正反饋和振蕩所需的相移條件,從而構(gòu)成一個穩(wěn)定的自激振蕩器。</p><p>  如圖3-9所示,AT89S51芯片中的高增益反向放大器輸入端為引腳XTAL1,輸出端引腳為XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(一般取30pF)。這兩個電容叫晶振的負載電容,它是根據(jù)晶振廠家提供的晶振要求負載電容

57、選值的;換句話說,晶振的頻率就是在它提供的負載電容下測得的,能最大限度的保證頻率值的誤差,也能保證溫漂等誤差。</p><p><b>  4 軟件設(shè)計</b></p><p>  系統(tǒng)的軟件設(shè)計采用匯編語言編碼。設(shè)計方法是先用文本編輯器編寫源碼,然后用軟件Keil C51編譯,如果沒有錯誤,可連接生成.HEX格式的文件(需事先在Keil C51中設(shè)置)。如果有錯誤

58、則無法連接,但可在生成的.OBJ文件中找到代碼錯誤的地方,便于修改。當然也可以直接在Keil中編碼。</p><p>  生成的HEX文件是記錄文本行的ASCII文本文件,在HEX文件中,每一行是一個HEX記錄,由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量。HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。</p><p>  在Keil中生成的HE

59、X文件需要燒寫到單片機ROM中,系統(tǒng)上電運行后才能看出程序運行的實際效果。下載需要的設(shè)備是軒微編程器控制平臺,將單片機引腳放入下載器并卡緊,打開下載器,打開軟件,選定單片機的型號,AT89S51。下載之前需擦除ROM內(nèi)原有的內(nèi)容,然后載入上面生成的.HEX文件,然后寫入。完成后校驗,無誤后即可關(guān)掉下載器,取下單片機。</p><p>  4.1 系統(tǒng)主程序</p><p>  系統(tǒng)的主程

60、序如圖4-1所示。由于用戶在使用系統(tǒng)的過程中,可能在任何時刻按下任何按鍵,而程序都必須對此作出正確響應(yīng)。所以主程序流程的主要思路是根據(jù)按鍵的不同進行不同的程序處理,下面具體介紹主程序的流程。</p><p>  圖4-1 主程序流程圖</p><p>  4.1.1 初始化及按鍵識別</p><p>  如圖4-2,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個定時/

61、計數(shù)器的設(shè)定,液晶</p><p>  顯示模式的設(shè)定,一些自定義數(shù)據(jù)空間的初始化,蜂鳴器初始化發(fā)聲等操作。</p><p>  統(tǒng)初始化并讀取密碼完成后,液晶顯示"Password?",提示用戶可以輸入密碼。此時程序即不斷測試按鍵,檢查是否有按鍵被按下。如果有,則進行按鍵識別;行列掃描法識別出的鍵位與對應(yīng)BUFF的值如表4-1所示。</p><p&

62、gt;  表4-1 BUFF初值</p><p>  如果沒有按鍵按下,或者按下的按鍵沒有被識別,BUFF賦值0FFH,并跳轉(zhuǎn)至按鍵測試。實際程序運行時,絕大部分時間都在測試按鍵,等待用戶輸入。</p><p>  4.1.2 開鎖鍵處理</p><p>  該程序段是程序識別到開鎖鍵被按下后的流程,如圖4-3所示。此段并不需校驗密碼,這里只需檢查密碼正確標志位

63、PSW_F的狀態(tài)。如果PSW_F=1,則前面輸入的密碼正確,可以開鎖。如果PSW_F=0,說明密碼錯誤,甚至根本沒有校驗密碼(輸入密碼后沒有按確認鍵,或者直接按下開鎖鍵),此時提示用戶密碼錯誤,無法開鎖。</p><p>  開鎖過程就是將P3.6口置0,點亮發(fā)光二極管;可以配合液晶顯示器和蜂鳴器發(fā)聲,提示用戶鎖已被打開。整個過程可持續(xù)若干時間。</p><p>  4.2 系統(tǒng)相關(guān)子程

64、序</p><p>  4.2.1 按鍵識別子程序</p><p>  按鍵識別子程序的功能是行列掃描矩陣鍵盤并識別按鍵送入BUFF值,如圖4-4所示。盡管進入子程序的前提條件是按鍵檢測子程序檢測到有按鍵被按下,但掃描前仍再次調(diào)用按鍵檢測子程序;因為人為按鍵的速度再快也會持續(xù)幾十毫秒,遠遠低于程序的處理速度,所以若是用戶正常按下按鍵,此處的按鍵檢測子程序仍可檢測到。此處調(diào)用按鍵檢測子程序

65、可以防止因按鍵抖動產(chǎn)生的不必要識別。</p><p>  前面提到,按鍵沒有上拉電阻,掃描行列之前需先給行列寫1。程序的處理方法是在讀行線之前先給P1口低4位送高電平,然后再讀P1口低4位;被按下的按鍵所在行高電平會因為行列導(dǎo)通,高電平被拉低;故P1口低4位中低電平所在行就是被按下的行。同理,在讀列線之前先給P1口高4位送高電平,然后再讀出,低電平所在的列就是被按下的列。</p><p>

66、  確定BUFF初值的方法是行掃描時送該行第一個按鍵的值入BUFF,4行的首個按鍵鍵值分別為00H,04H,08H,0CH。然后在列掃描時給BUFF加上按鍵所在列的值,分別加00H,01H,02H,03H。即可得到BUFF初值。至于BUFF的重賦值,則在按鍵重定位中根據(jù)初值對應(yīng)修改。</p><p>  4.2.2 液晶顯示子程序</p><p>  液晶顯示子程序在每次更新顯示內(nèi)容時都

67、會被調(diào)用,其流程如圖4-5所示。</p><p>  每次更新顯示內(nèi)容前,需清顯示。清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。</p><p>  LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,LCD1602會

68、將寫入的ASCII碼對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時,即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會一直保持。</p><p><b>  5 系統(tǒng)調(diào)試與測試</b></p><p>  系統(tǒng)的軟硬件設(shè)計都完成后,還不能直接上電運行;需要對系統(tǒng)進行詳細的調(diào)試,以消除在設(shè)計過程中出現(xiàn)的各種錯誤。

69、單片機系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,很多硬件錯誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進一步排除故障。所以硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計則是無從做起。</p><p>  當硬件設(shè)計從布線到焊接安裝完成之后,就開始進入硬件調(diào)試階段。首先應(yīng)該確認電源電壓是否正常,用電壓表測量接地引腳跟電源引腳之間的電壓,看是否是電源電壓。接下來就是檢查復(fù)位引腳

70、電壓是否正常。分別測量按下復(fù)位按鈕和放開復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個辦法是測量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測量IO口(沒接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因為晶振沒有起振。另外還要注意的地方是,如果使用片內(nèi)ROM的話,一定要將EA引腳拉高,否則會出現(xiàn)程序亂跑的情況。如果系統(tǒng)運行不穩(wěn)

71、定的話,有時是因為電源濾波不好導(dǎo)致的。在單片機的電源引腳跟地引腳之間接上一個0.1uF的電容會有所改善。如果電源沒有濾波電容的話,則需要再接一個更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時,就可以并上電容,越靠近芯片越好。</p><p>  系統(tǒng)的鍵盤輸入電路,蜂鳴器發(fā)聲電路,液晶顯示電路,這幾個部分在檢查硬件無誤后,需要結(jié)合軟件調(diào)試??删帉憜为毧刂颇骋徊糠值某绦颍\行看是否可以正確控制。如蜂鳴器發(fā)聲電路,

72、可編寫程序控制單片機P3.7口電平,上電運行看是否正常發(fā)聲。一些無法直接觀測出運行效果的電路,如鍵盤輸入電路和密碼存儲電路,則需結(jié)合液晶顯示器調(diào)試。如鍵盤輸入電路,需加上按鍵顯示程序顯示被按下按鍵的BUFF值。</p><p>  當電池安裝后,電路開始工作。當輸入密碼時,蜂鳴器發(fā)出聲音,液晶顯示器并顯示按下的數(shù)字。當輸入錯誤密碼時,液晶顯示器提示錯誤,當連續(xù)輸入錯誤密碼三次時,蜂鳴器報警10S.當輸入正確密碼時

73、,液晶顯示器提示密碼正確,進入開鎖程序。</p><p><b>  結(jié)論</b></p><p>  本設(shè)計利用單片機AT89S51作為主控芯片,配合液晶顯示器LCD1602,3*4矩陣薄膜鍵盤,蜂鳴器及其他外圍電路,用單片機匯編語言編寫的控制程序,成功設(shè)計出一款利用密碼開鎖,可以隨時改密,豐富聲光提示信息,具有適用價值的電子密碼鎖。本系統(tǒng)發(fā)揮出單片機應(yīng)有的價值,完

74、成了電子密碼鎖的基礎(chǔ)功能。利用單片機控制矩陣鍵盤輸入密碼,液晶顯示器顯示英文字符,蜂鳴器發(fā)聲等部件都運轉(zhuǎn)良好,密碼鎖運行的效果也可以正確呈現(xiàn)。</p><p><b>  致謝</b></p><p>  畢業(yè)設(shè)計是對我們知識運用能力的一次全面的考核,也是對我們進行科學(xué)研究基本功的訓(xùn)練,培養(yǎng)我們綜合運用所學(xué)知識獨立地分析問題和解決問題的能力,為以后的工作打下良好的基礎(chǔ)

75、。本次設(shè)計歷時數(shù)月,收獲頗豐。從前期的設(shè)計到后期的焊接電路,中間遇到許多許多困難??朔@些困難,需要理論和實踐的結(jié)合,把知識融入到設(shè)計的每個角落。最終完成整個設(shè)計,做出實實在在的東西,自是欣喜不已。</p><p>  本次設(shè)計能夠順利完成,首先我要感謝我的母?!猚c學(xué)院,是她為我們提供了學(xué)習(xí)知識的土壤,使我們在這里茁壯成長;其次我要感謝我的老師們,是他們教會我們專業(yè)方面的知識;尤其要感謝在本次設(shè)計中給與我大力

76、支持和幫助的cc老師,每有問題,老師總是耐心的解答,使我能夠充滿熱情的投入到畢業(yè)設(shè)計中去;還要感謝我的同學(xué)們,他們熱心的幫我解決了許多困難;最后還要感謝相關(guān)資料的編著者,感謝您們?yōu)槲覀兲峁┮粋€良好的環(huán)境,使本次設(shè)計圓滿完成。</p><p><b>  參考文獻</b></p><p>  [1] 徐愛均.Keil Cx51 V7.0 單片機高級語言編程與μVisio

77、n2應(yīng)用實踐[M].北京:北京航空航天大學(xué)出版社,1998</p><p>  [2] 徐煜明.單片機原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2003</p><p>  [3] 徐達誠.微型計算機控制技術(shù)及應(yīng)用[M].北京:高等教育出版社,2007</p><p>  [4] 楊將新,李華軍,劉到駿等.單片機程序設(shè)計及應(yīng)用(從基礎(chǔ)到實踐)[J].電子工業(yè)出版社

78、,2006</p><p>  [5] 陳寧,王文寧等.單片機技術(shù)項目教程 [M] .南京:東南大學(xué)出版社,2008</p><p><b>  附錄 源程序</b></p><p>  ;===================================================</p><p>  ;名

79、 稱:電子密碼鎖</p><p>  ;說 明:首先顯示器提示輸入密碼,密碼在12.5S內(nèi)輸入有效,</p><p>  ; 輸入次三次錯誤報警10S,輸入正確開門,7秒后返回初態(tài)</p><p>  ;===================================================</p><p>  RS

80、BIT P2.7 </p><p>  RW BIT P2.6</p><p>  E BIT P2.5</p><p>  ENTER BIT 22H.0</p><p>  OPEN BIT P3.6</p><p>  SPEAK BIT P3.7</p><p>  PASSBUF EQ

81、U 40H</p><p>  KEYNUMBER EQU 41H; 存放識別后的按鍵號</p><p><b>  ORG 0000H</b></p><p><b>  AJMP MAIN</b></p><p><b>  ORG 0003H</b></p&

82、gt;<p>  JMP KEY_INT</p><p><b>  ORG 000BH</b></p><p>  AJMP INTT0</p><p><b>  ORG 001BH</b></p><p>  AJMP INTT1</p><p><

83、b>  ORG 0030H</b></p><p>  ;========== 主程序開始 ==============</p><p>  MAIN: MOV 30H,#07H ; 輸入密碼為7位 最高只可設(shè)15位</p><p>  MOV 42H,#200; 設(shè)定報警的時間,42H單元里的數(shù)*50MS</p><

84、;p>  MOV 43H,#250 ; 設(shè)定開門時間14的倍數(shù)(實際上液晶顯示器執(zhí)行指令占用了時間,開門時間會比14*250MS大)</p><p>  ;44H號單元存放輸入錯誤的次數(shù);45H為定時器0中斷次數(shù);46H為定時器1中斷次數(shù)</p><p>  MOV 47H,#250 ;輸入密碼時間設(shè)定,50MS倍數(shù)</p><p>  

85、MOV SP,#60H</p><p><b>  CLR OPEN</b></p><p>  CLR SPEAK ;初始化輸出設(shè)備</p><p>  CLR ENTER ;標志位初始化</p><p>  MOV TMOD,#11H ;定時器工作方式2<

86、;/p><p>  MOV TH0,#3CH ;初值50MS</p><p>  MOV TL0,#0BH </p><p>  MOV TH1,#3CH </p><p>  MOV TL1,#0BH </p><p><b>  SETB EA</b><

87、/p><p><b>  SETB ET0</b></p><p><b>  SETB ET1</b></p><p>  MOV TCON,#00000000B ;電平觸發(fā)</p><p>  START:MOV R0,30H</p><p>  MOV R1,#31

88、H</p><p>  SS1: MOV @R1,#00H</p><p><b>  INC R1</b></p><p>  DJNZ R0,SS1 ;將輸入密碼緩沖單元清零</p><p>  MOV P1,#0FH ;初始化按鍵口</p><p&

89、gt;  MOV R1,#31H;從31號單元開始存放按建輸入的密碼 </p><p>  CLR 20H ;報警標志清零</p><p>  CLR 21H ;密碼超時標志</p><p>  MOV 46H,#00H ;超時后對定時器中斷次數(shù)清零,便于下一輪重新

90、計時</p><p>  INIT: ACALL SELLCD ;設(shè)定液晶工作方式</p><p>  ACALL LINE1 ;在第一行顯示</p><p>  MOV DPTR,#MES_P ;顯示請輸入密碼</p><p>  ACALL DISPLAY </p>&

91、lt;p>  SETB EX0 ;開中斷,允許鍵盤輸入</p><p>  KEYIN:JB 21H,ERR ;超時轉(zhuǎn)到錯誤程序</p><p>  JNB ENTER,KEYIN ;等待ENTER按下</p><p><b>  CLR ENTER</b></p>

92、<p>  CLR EX0 ;密碼輸入完后鎖定鍵盤</p><p>  ;========== 密碼判斷程序 ============</p><p>  COMP: MOV DPTR,#PASS</p><p>  MOV R4,30H ;密碼的長度</p><p><b>  M

93、OV A,#0</b></p><p>  MOV R1,#31H </p><p>  LOOP: MOV R5,A</p><p>  MOVC A,@A+DPTR</p><p>  MOV PASSBUF,A ;取出系統(tǒng)設(shè)定的密碼</p><p>  MOV

94、 A,@R1 ;從31號單元開始取出輸入的密碼</p><p>  CJNE A,PASSBUF,ERR ;比較</p><p><b>  MOV A,R5</b></p><p><b>  INC A</b></p><p>  INC R1

95、 ;取下一位</p><p>  DJNZ R4,LOOP</p><p><b>  ;正確</b></p><p>  MATCH: MOV A,#01H</p><p>  ACALL ENABLE ;清屏,光標復(fù)位</p><p>  ACALL LINE1

96、;從第一行開始顯示</p><p>  MOV DPTR,#MES_C</p><p>  ACALL DISPLAY ;顯示"請進"</p><p>  ACALL LINE2</p><p>  MOV DPTR,#TAB_1</p><p>  ACALL DISPLAY</

97、p><p>  SETB OPEN ;開門</p><p>  MOV 44H,#00H ;輸入錯誤次數(shù)清零</p><p>  MOV R6,43H </p><p>  ACALL DELAY</p><p>  CLR OPEN

98、 ;復(fù)位</p><p>  JMP START </p><p><b>  ;錯誤</b></p><p>  ERR: ACALL BACK</p><p>  MOV R6,#03H</p><p>  ACALL DELAY</p><p&

99、gt;  ACALL BACK ;輸錯提示音,鳴兩下</p><p>  MOV A,#01H</p><p>  ACALL ENABLE</p><p>  ACALL LINE1 </p><p>  MOV DPTR,#MES_E</p><p>  ACALL DISPLAY ;

100、顯示錯誤</p><p>  MOV R6,#40H</p><p>  ACALL DELAY </p><p><b>  INC 44H</b></p><p><b>  MOV A,44H</b></p><p>  CJNE A,#03H,EE0

101、</p><p>  EE0: JC ERROUT ;輸錯不到三次返回</p><p>  MOV 44H,#00H ;清零</p><p>  ACALL WRANING ;報警</p><p>  ERROUT:JMP START</p><p>  ;========

102、=== 按鍵中斷服務(wù)程序 ==========</p><p>  KEY_INT:PUSH ACC</p><p><b>  PUSH PSW</b></p><p><b>  clr ex0</b></p><p>  acall delay 10ms ;延時消抖</p>

103、<p>  SETB TR1 ;啟動定時器</p><p>  ACALL SMKEY ;按鍵識別</p><p>  MOV A,KEYNUMBER ;返回按鍵號</p><p>  ACALL BACK ;按鍵發(fā)聲</p><p><b>  MOV

104、R3,A</b></p><p>  CJNE R3,#0BH,K1 ;ENTER是否按下</p><p>  SETB ENTER</p><p>  clr tr1 ;按下確認后關(guān)畢定時器</p><p>  mov 46h,#00h ;對中斷次數(shù)清零</p><p>  AJM

105、P KEY_RTN</p><p>  K1: ADD A,#30H ;將按鍵號轉(zhuǎn)換為ASCⅡ碼</p><p>  MOV @R1,A ;將輸入的密碼存入緩沖單元</p><p>  INC R1 ;修改地址</p><p>  ACALL WRDATA ; 輸入一位顯示一個"*"<

106、;/p><p>  KEY_RTN:pop psw</p><p><b>  pop acc</b></p><p><b>  setb ex0</b></p><p><b>  RETI</b></p><p>  ;=========== 按鍵識別

107、程序 ==========</p><p>  SMKEY: MOV A,P1</p><p>  ANL A,#0FH</p><p>  WKEY: MOV B,A ;反轉(zhuǎn)法查詢 </p><p>  MOV P1,#0F0H</p><p><b>  NOP</b><

108、/p><p><b>  MOV A,P1</b></p><p>  ANL A,#0F0H</p><p><b>  ORL A,B</b></p><p>  MOV P1,#0FH ;還原P1口初態(tài)</p><p>  CJNE A,#0EEH,WKEY

109、1</p><p>  MOV KEYNUMBER,#00H </p><p>  AJMP RETURN</p><p>  WKEY1: CJNE A,#0EDH,WKEY2</p><p>  MOV KEYNUMBER,#01H</p><p>  AJMP RETURN</p>&l

110、t;p>  WKEY2: CJNE A,#0EBH,WKEY3</p><p>  MOV KEYNUMBER,#02H</p><p>  AJMP RETURN</p><p>  WKEY3: CJNE A,#0E7H,WKEY4</p><p>  MOV KEYNUMBER,#03H</p><p>

111、  AJMP RETURN</p><p>  WKEY4: CJNE A,#0DEH,WKEY5</p><p>  MOV KEYNUMBER,#04H</p><p>  AJMP RETURN</p><p>  WKEY5: CJNE A,#0DDH,WKEY6</p><p>  MOV KEYNUMB

112、ER,#05H</p><p>  AJMP RETURN</p><p>  WKEY6: CJNE A,#0DBH,WKEY7</p><p>  MOV KEYNUMBER,#06H</p><p>  AJMP RETURN</p><p>  WKEY7: CJNE A,#0D7H,WKEY8</p

113、><p>  MOV KEYNUMBER,#07H</p><p>  AJMP RETURN</p><p>  WKEY8: CJNE A,#0BEH,WKEY9</p><p>  MOV KEYNUMBER,#08H</p><p>  AJMP RETURN</p><p>  WKEY

114、9: CJNE A,#0BdH,WKEY10</p><p>  MOV KEYNUMBER,#09H</p><p>  AJMP RETURN</p><p>  WKEY10: CJNE A,#0BbH,WKEY11</p><p>  MOV KEYNUMBER,#0AH</p><p>  AJMP RET

115、URN</p><p>  WKEY11: CJNE A,#0B7H,RETURN</p><p>  MOV KEYNUMBER,#0BH ;判斷哪個鍵按下,返回相應(yīng)按鍵號碼</p><p>  RETURN: MOV P1,#0FH</p><p><b>  NOP</b></p><

116、;p><b>  NOP </b></p><p><b>  MOV A,P1</b></p><p><b>  CPL A</b></p><p>  ANL A,#0FH</p><p>  JNZ RETURN ;等待按鍵松開</p>

117、;<p><b>  RET</b></p><p>  ;========== 液晶工作方式設(shè)置 ============</p><p>  SELLCD: MOV A,#01H ;清屏,光標復(fù)位 </p><p>  ACALL ENABLE</p><p>  MOV A,#

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論