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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、4 發(fā)光部分- 10 -</p><p>  3.5 鍵盤(pán)輸入電路- 11 -</p><p>  3.6 手動(dòng)復(fù)位電路- 11 -</p><p>  3.7 晶振電路- 12 -</p><p>  4 軟件設(shè)計(jì)- 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)試與測(cè)試- 18 -</p><p><b>  結(jié)論- 19 -</b></p><p><b>  致謝- 19 -</b></p><p>  參考文獻(xiàn)- 19 -</p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、6引腳線(xiàn)的。其主要技術(shù)參數(shù)為:</p><p>  顯示容量:16×2個(gè)字符。</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個(gè)引腳可參照?qǐng)D3-3,其引腳功能分別為:</p><p>  VSS:電源地(GND)。</p><p>  VCC:電源電壓(5V)。</p><p>  V0:LCD驅(qū)動(dòng)電壓,液晶顯示器對(duì)比度調(diào)整端。使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最

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

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

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

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

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

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

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

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

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

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

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

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

41、壓超過(guò)+4.5V時(shí),自動(dòng)對(duì)模塊進(jìn)行初始化操作,將模塊設(shè)置為默認(rèn)的顯示工作狀態(tài)。初始化大約持續(xù)10ms左右。初始化進(jìn)行的指令操作為:</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點(diǎn)陣字符字體。</p><p><b>  顯示開(kāi)/關(guān)控制</b></p><p><b>  D=0:關(guān)顯示。</b></p><p>  C=0:不顯示光標(biāo)。</p><p>  B=0:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

71、定的話(huà),有時(shí)是因?yàn)殡娫礊V波不好導(dǎo)致的。在單片機(jī)的電源引腳跟地引腳之間接上一個(gè)0.1uF的電容會(huì)有所改善。如果電源沒(méi)有濾波電容的話(huà),則需要再接一個(gè)更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容,越靠近芯片越好。</p><p>  系統(tǒng)的鍵盤(pán)輸入電路,蜂鳴器發(fā)聲電路,液晶顯示電路,這幾個(gè)部分在檢查硬件無(wú)誤后,需要結(jié)合軟件調(diào)試??删帉?xiě)單獨(dú)控制某一部分的程序,運(yùn)行看是否可以正確控制。如蜂鳴器發(fā)聲電路,

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

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

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

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

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

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

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

79、 稱(chēng):電子密碼鎖</p><p>  ;說(shuō) 明:首先顯示器提示輸入密碼,密碼在12.5S內(nèi)輸入有效,</p><p>  ; 輸入次三次錯(cuò)誤報(bào)警10S,輸入正確開(kāi)門(mén),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; 存放識(shí)別后的按鍵號(hào)</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>  ;========== 主程序開(kāi)始 ==============</p><p>  MAIN: MOV 30H,#07H ; 輸入密碼為7位 最高只可設(shè)15位</p><p>  MOV 42H,#200; 設(shè)定報(bào)警的時(shí)間,42H單元里的數(shù)*50MS</p><

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

85、MOV SP,#60H</p><p><b>  CLR OPEN</b></p><p>  CLR SPEAK ;初始化輸出設(shè)備</p><p>  CLR ENTER ;標(biāo)志位初始化</p><p>  MOV TMOD,#11H ;定時(shí)器工作方式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號(hào)單元開(kāi)始存放按建輸入的密碼 </p><p>  CLR 20H ;報(bào)警標(biāo)志清零</p><p>  CLR 21H ;密碼超時(shí)標(biāo)志</p><p>  MOV 46H,#00H ;超時(shí)后對(duì)定時(shí)器中斷次數(shù)清零,便于下一輪重新

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

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

92、<p>  CLR EX0 ;密碼輸入完后鎖定鍵盤(pán)</p><p>  ;========== 密碼判斷程序 ============</p><p>  COMP: MOV DPTR,#PASS</p><p>  MOV R4,30H ;密碼的長(zhǎng)度</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號(hào)單元開(kāi)始取出輸入的密碼</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 ;清屏,光標(biāo)復(fù)位</p><p>  ACALL LINE1

96、;從第一行開(kāi)始顯示</p><p>  MOV DPTR,#MES_C</p><p>  ACALL DISPLAY ;顯示"請(qǐng)進(jìn)"</p><p>  ACALL LINE2</p><p>  MOV DPTR,#TAB_1</p><p>  ACALL DISPLAY</

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

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

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

100、顯示錯(cuò)誤</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 ;輸錯(cuò)不到三次返回</p><p>  MOV 44H,#00H ;清零</p><p>  ACALL WRANING ;報(bào)警</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 ;延時(shí)消抖</p>

103、<p>  SETB TR1 ;啟動(dòng)定時(shí)器</p><p>  ACALL SMKEY ;按鍵識(shí)別</p><p>  MOV A,KEYNUMBER ;返回按鍵號(hào)</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 ;按下確認(rèn)后關(guān)畢定時(shí)器</p><p>  mov 46h,#00h ;對(duì)中斷次數(shù)清零</p><p>  AJM

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

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>  ;=========== 按鍵識(shí)別

107、程序 ==========</p><p>  SMKEY: MOV A,P1</p><p>  ANL A,#0FH</p><p>  WKEY: MOV B,A ;反轉(zhuǎn)法查詢(xú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 ;判斷哪個(gè)鍵按下,返回相應(yīng)按鍵號(hào)碼</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 ;等待按鍵松開(kāi)</p>

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論