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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  10/11學(xué)年第二學(xué)期</p><p>  《單片機(jī)控制系統(tǒng)設(shè)計(jì)與調(diào)試》 課程設(shè)計(jì)任務(wù)書(shū)</p><p>  指導(dǎo)教師: 班級(jí): </p><p>  地點(diǎn):機(jī)房、單片機(jī)實(shí)驗(yàn)室</p><p>  課程設(shè)計(jì)題目:密碼鎖的設(shè)計(jì)</p><p

2、><b>  課程設(shè)計(jì)目的</b></p><p>  1.靈活運(yùn)用單片機(jī)的基礎(chǔ)知識(shí),依據(jù)課程設(shè)計(jì)內(nèi)容,能夠完成從硬件電路圖設(shè)計(jì),到PCB制版,再到軟件編程及系統(tǒng)調(diào)試實(shí)現(xiàn)系統(tǒng)功能,完成課程設(shè)計(jì),加深對(duì)單片機(jī)基礎(chǔ)知識(shí)的理解,并靈活運(yùn)用,將各門知識(shí)綜合應(yīng)用。</p><p>  2.能夠上網(wǎng)查詢器件資料,培養(yǎng)對(duì)新知識(shí)新技術(shù)的獨(dú)立的學(xué)習(xí)能力和應(yīng)用能力。</p&g

3、t;<p>  3.獨(dú)立完成一個(gè)小的系統(tǒng)設(shè)計(jì),從硬件設(shè)計(jì)到軟件設(shè)計(jì),增強(qiáng)分析問(wèn)題、解決問(wèn)題的能力,為日后的畢業(yè)設(shè)計(jì)及科研工作奠定良好的基礎(chǔ)。</p><p>  課程設(shè)計(jì)內(nèi)容(包括技術(shù)指標(biāo))</p><p>  1. 主要設(shè)計(jì)內(nèi)容:</p><p>  使用數(shù)碼管顯示器來(lái)顯示密碼輸入的相關(guān)信息,通過(guò)10位數(shù)字按鍵(0~9)設(shè)置4位數(shù)字(0~9)密碼,2

4、位功能按鍵A(輸入校驗(yàn)密碼并驗(yàn)證密碼)和B (設(shè)置新密碼),利用繼電器模擬電子門鎖作出是否開(kāi)門以及報(bào)警等反應(yīng)。</p><p>  2. 具體設(shè)計(jì)內(nèi)容:</p><p>  上電時(shí)內(nèi)定初始密碼為“0000”,紅色發(fā)光二極管點(diǎn)亮,綠色發(fā)光二極管熄滅,數(shù)碼管顯示器顯示“初始狀態(tài)”,“初始狀態(tài)”由設(shè)計(jì)者自行設(shè)計(jì),但不可省略。</p><p>  功能按鍵A:實(shí)現(xiàn)設(shè)置新密碼

5、功能,存儲(chǔ)新密碼并顯示,一旦設(shè)定新密碼,則初始密碼失效。</p><p>  功能按鍵B:實(shí)現(xiàn)輸入校驗(yàn)密碼并驗(yàn)證密碼功能,顯示校驗(yàn)密碼并進(jìn)行密碼比較。</p><p>  密碼輸入正確則繼電器啟動(dòng),并使紅色發(fā)光二極管熄滅,綠色發(fā)光二極管點(diǎn)亮,數(shù)碼管顯示器提示“密碼正確”,“密碼正確”狀態(tài)的顯示內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),但不可省略,持續(xù)2~5S后繼電器關(guān)閉,綠色發(fā)光二極管熄滅,紅色發(fā)光二極管點(diǎn)亮

6、;</p><p>  密碼輸入錯(cuò)誤則持續(xù)紅色發(fā)光二極管點(diǎn)亮,綠色發(fā)光二極管熄滅狀態(tài),蜂鳴器報(bào)警,數(shù)碼管顯示器提示“密碼錯(cuò)誤”,“密碼錯(cuò)誤”狀態(tài)的顯示內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),但不可省略,持續(xù)2~5S后蜂鳴器停止報(bào)警;</p><p>  校驗(yàn)密碼連續(xù)輸入錯(cuò)誤3次,則持續(xù)紅色發(fā)光二極管點(diǎn)亮,綠色發(fā)光二極管熄滅狀態(tài),蜂鳴器報(bào)警,數(shù)碼管顯示器提示“密碼連續(xù)錯(cuò)誤3次”,“密碼連續(xù)錯(cuò)誤3次”狀態(tài)的顯示

7、內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),但不可省略,持續(xù)2~5S后蜂鳴器停止報(bào)警,新密碼失效,恢復(fù)初始密碼使用。</p><p>  3. 設(shè)計(jì)內(nèi)容說(shuō)明:</p><p>  設(shè)計(jì)必須實(shí)現(xiàn)“主要設(shè)計(jì)內(nèi)容”的所有功能,但對(duì)于“具體設(shè)計(jì)內(nèi)容”可做適當(dāng)調(diào)整,密碼輸入錯(cuò)誤3次環(huán)節(jié)可自行設(shè)計(jì)。</p><p>  此外,為了加強(qiáng)密碼鎖的嚴(yán)密性,可采取下述方案對(duì)“設(shè)置新密碼功能”環(huán)節(jié)進(jìn)行加強(qiáng),依

8、據(jù)設(shè)計(jì)思路可作適當(dāng)調(diào)整,此部分內(nèi)容為附加內(nèi)容。</p><p>  功能按鍵A:實(shí)現(xiàn)輸入校驗(yàn)密碼并驗(yàn)證密碼功能,顯示校驗(yàn)密碼并進(jìn)行密碼比較。</p><p><b>  密碼輸入正確:</b></p><p>  則繼電器啟動(dòng),并使紅色發(fā)光二極管熄滅,綠色發(fā)光二極管點(diǎn)亮,數(shù)碼管顯示器提示“密碼正確”,“密碼正確”狀態(tài)的顯示內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),

9、但不可省略,若不設(shè)置新密碼,則持續(xù)5~8S后繼電器關(guān)閉,綠色發(fā)光二極管熄滅,紅色發(fā)光二極管點(diǎn)亮;</p><p>  若功能按鍵B按下:實(shí)現(xiàn)設(shè)置新密碼功能,存儲(chǔ)新密碼并顯示,一旦設(shè)定新密碼,則初始密碼失效。但此功能必須以舊密碼輸入正確為前提。</p><p><b>  密碼輸入錯(cuò)誤:</b></p><p>  校驗(yàn)密碼連續(xù)輸入錯(cuò)誤小于3次,

10、則持續(xù)紅色發(fā)光二極管點(diǎn)亮,綠色發(fā)光二極管熄滅狀態(tài),蜂鳴器報(bào)警,數(shù)碼管顯示器提示“密碼錯(cuò)誤”,“密碼錯(cuò)誤”狀態(tài)的顯示內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),但不可省略,持續(xù)2~5S后蜂鳴器停止報(bào)警;</p><p>  校驗(yàn)密碼連續(xù)輸入錯(cuò)誤3次,則持續(xù)紅色發(fā)光二極管點(diǎn)亮,綠色發(fā)光二極管熄滅狀態(tài),蜂鳴器報(bào)警,數(shù)碼管顯示器提示“密碼連續(xù)錯(cuò)誤3次”,“密碼連續(xù)錯(cuò)誤3次”狀態(tài)的顯示內(nèi)容由設(shè)計(jì)者自行設(shè)計(jì),但不可省略,持續(xù)2~5S后蜂鳴器停止報(bào)

11、警,新密碼失效,恢復(fù)初始密碼使用。</p><p><b>  時(shí)間安排</b></p><p>  1. 布置任務(wù)、查資料 1天</p><p>  2. 硬件電路圖設(shè)計(jì)及PCB制版 3天</p><p>  3. 硬件電路圖及PCB制版驗(yàn)收 1天</p><

12、;p>  4.軟件編程設(shè)計(jì) 3天</p><p>  5.系統(tǒng)調(diào)試 3天</p><p>  6.調(diào)試驗(yàn)收 1天</p><p>  7.完成設(shè)計(jì)報(bào)告 3天</p><p><b> 

13、 基本要求</b></p><p>  畫(huà)出硬件電路圖,完成PCB制版;</p><p>  畫(huà)出軟件流程圖,編寫(xiě)程序(C51語(yǔ)言/匯編語(yǔ)言);</p><p><b>  完成系統(tǒng)調(diào)試;</b></p><p>  提交設(shè)計(jì)報(bào)告,用A4打印。</p><p><b>  目

14、 錄</b></p><p>  1 課程設(shè)計(jì)題目1</p><p>  2 課程設(shè)計(jì)目的及意義1</p><p>  3 系統(tǒng)方案設(shè)計(jì)及確定2</p><p>  3.1 系統(tǒng)方案的提出2</p><p>  3.2 方案比較及確定3</p><p>  4 系統(tǒng)

15、硬件設(shè)計(jì)4</p><p>  4.1 STC89C52最小系統(tǒng)設(shè)計(jì)4</p><p>  4.1.1時(shí)鐘電路設(shè)計(jì)4</p><p>  4.1.2復(fù)位電路設(shè)計(jì)5</p><p>  4.2 鍵盤、顯示電路硬件設(shè)計(jì)6</p><p>  4.2.1鍵盤電路硬件設(shè)計(jì)6</p><p>

16、  4.2.2顯示電路硬件設(shè)計(jì)6</p><p>  4.3 繼電器驅(qū)動(dòng)電路及報(bào)警電路設(shè)計(jì)8</p><p>  4.3.1 固態(tài)繼電器簡(jiǎn)介8</p><p>  4.3.2 固態(tài)繼電器驅(qū)動(dòng)電路設(shè)計(jì)9</p><p>  4.3.3 報(bào)警提示電路10</p><p>  5 系統(tǒng)軟件設(shè)計(jì)10</p&

17、gt;<p>  5.1 主程序模塊12</p><p>  5.2 密碼比較判斷模塊12</p><p>  5.3 鍵盤掃描模塊12</p><p>  5.4 修改密碼模塊13</p><p>  5.5 數(shù)碼管液晶顯示模塊14</p><p>  6 系統(tǒng)調(diào)試15</p>

18、<p><b>  7 總結(jié)15</b></p><p><b>  參考文獻(xiàn)17</b></p><p><b>  附錄一18</b></p><p><b>  附錄二24</b></p><p>  1 課程設(shè)計(jì)題目:密碼

19、鎖</p><p>  利用單片機(jī)STC89C52設(shè)計(jì)一個(gè)密碼鎖,能夠使用數(shù)碼管顯示器來(lái)顯示密碼輸入的相關(guān)信息,通過(guò)10位數(shù)字按鍵(0~9)設(shè)置4位數(shù)字(0~9)密碼,2位功能按鍵A(輸入校驗(yàn)密碼并驗(yàn)證密碼)和B (設(shè)置新密碼),利用繼電器模擬電子門鎖作出是否開(kāi)門以及報(bào)警等反應(yīng)。</p><p>  2 課程設(shè)計(jì)目的及意義</p><p>  在單片機(jī)向著大容量、

20、多功能、高性能、高速度、低電壓、低功耗及外圍電路內(nèi)裝化的方向發(fā)展的時(shí)代,選擇一種性價(jià)比最優(yōu)的芯片顯得尤為重要。</p><p>  在本次課程設(shè)計(jì)中,程序編寫(xiě)可選匯編和C語(yǔ)言。而匯編效率高,對(duì)硬件的可操控性更強(qiáng),體積小,但不易維護(hù),可移植性很差;C語(yǔ)言效率比較低,硬件可操控性比較差,目標(biāo)代碼體積大,但容易維護(hù),可移植性很好。該系統(tǒng)用C語(yǔ)言編寫(xiě)程序,與匯編語(yǔ)言相比具有更好的移植性和可讀性,便于修改和增減功能,故本次

21、課程設(shè)計(jì)我選擇了C語(yǔ)言。</p><p>  通過(guò)對(duì)此次設(shè)計(jì)的理解和掌握,使我受益很多:</p><p>  1、熟悉掌握單片機(jī)的結(jié)構(gòu)及工作原理,鍛煉獨(dú)立設(shè)計(jì)、制作和調(diào)試單片機(jī)應(yīng)用系統(tǒng)的軟硬件開(kāi)發(fā)的過(guò)程和方法。</p><p>  2、通過(guò)MCS-51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與編程應(yīng)用,將理論知識(shí)和實(shí)際應(yīng)用結(jié)合起來(lái),加深對(duì)電子電路、電子元器件、印刷電路板等方面的知識(shí),提

22、高在軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)設(shè)備的使用技能。掌握單片機(jī)的接口及外圍設(shè)備的特性,使用和控制方法。為以后設(shè)計(jì)和實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)打下良好的基礎(chǔ)。</p><p>  3、通過(guò)密碼鎖的設(shè)計(jì)將所學(xué)知識(shí)融會(huì)貫通,鍛煉獨(dú)立設(shè)計(jì)、制作和調(diào)試單片機(jī)應(yīng)用系統(tǒng)的能力,領(lǐng)會(huì)單片機(jī)應(yīng)用系統(tǒng)的軟件、硬件調(diào)試方法和習(xí)題研制開(kāi)發(fā)過(guò)程,為進(jìn)一步的動(dòng)手實(shí)踐活動(dòng)打下一定的基礎(chǔ)。</p><p>  4、這次課程設(shè)計(jì)

23、時(shí)我翻閱了很多資料例如張毅剛主編的《單片機(jī)原理及應(yīng)用》、高峰編的《單片微型計(jì)算機(jī)原理與接口技術(shù)》等書(shū)籍,還從網(wǎng)上找了STC89C52、74LS244以及74LS06的資料。讓我在學(xué)習(xí)開(kāi)發(fā)單片機(jī)應(yīng)用系統(tǒng)時(shí)對(duì)芯片功能的學(xué)習(xí)有了更新的理解,這不僅需要電子技術(shù)方面要有數(shù)字電路和模擬電路等方面的理論基礎(chǔ),還需要英語(yǔ)基礎(chǔ)。</p><p>  3 系統(tǒng)方案設(shè)計(jì)及確定</p><p>  3.1 系統(tǒng)

24、方案的提出</p><p>  本次課程設(shè)計(jì)的密碼鎖電路主要由四個(gè)模塊組成:鍵盤輸入模塊、數(shù)據(jù)處理模塊、顯示控制模塊,繼電器驅(qū)動(dòng)模塊和蜂鳴器報(bào)警模塊。</p><p>  方案一:以單片機(jī)為電子密碼鎖系統(tǒng)核心,使用4*4矩陣鍵盤作為數(shù)據(jù)輸入方式,驅(qū)動(dòng)4位數(shù)碼管顯示器提示程序運(yùn)行過(guò)程和開(kāi)鎖的步驟,利用繼電器及蜂鳴器模擬電子門鎖作出是否開(kāi)門以及報(bào)警等反應(yīng)。圖1為單片機(jī)控制密碼鎖的系統(tǒng)原理框圖。

25、</p><p>  圖1 單片機(jī)控制密碼鎖的系統(tǒng)原理框圖</p><p>  方案二:以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路控制方案,如圖2。</p><p>  3.2 方案比較及確定 </p><p>  由于利用單片機(jī)靈活的編程設(shè)計(jì)和強(qiáng)大的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還可以增添掉電存儲(chǔ)、

26、聲光提示等功能,故選用方案一。</p><p><b>  CPU的選擇</b></p><p>  STC89C52系列單片機(jī),高速、低功耗、新增在系統(tǒng)/在應(yīng)用可編程(ISP,IAP)功能,使不具有E2PROM的單片機(jī)具有了E2PROM的功能,可以在線對(duì)現(xiàn)場(chǎng)歷史數(shù)據(jù)的存儲(chǔ)功能,適用于一些需經(jīng)常改變數(shù)據(jù)的應(yīng)用產(chǎn)品(如計(jì)費(fèi)器、門禁系統(tǒng)等)及需遠(yuǎn)距離改變?cè)O(shè)備參數(shù)的產(chǎn)品(遙

27、控設(shè)備等)。采用STC89C52單片機(jī)設(shè)計(jì)的電子密碼鎖,利用內(nèi)部E2PROM資源,不需要外接程序存儲(chǔ)器就能完成修改密碼等多種功能,并且保密性高、成本低、簡(jiǎn)單易行,符合住宅、部門辦公安全要求。</p><p>  ISP在線編程功能,這個(gè)功能的優(yōu)勢(shì)在于改寫(xiě)單片機(jī)存儲(chǔ)器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離,是一個(gè)強(qiáng)大易用的功能。具有雙工UART串行通道。內(nèi)部集成看門狗計(jì)時(shí)器,不再需要像AT89C51那樣外接看門狗計(jì)時(shí)

28、器單元電路</p><p>  鍵盤電路采用矩陣式鍵盤,顯示電路采用四位數(shù)碼管動(dòng)態(tài)顯示方式,動(dòng)態(tài)顯示相對(duì)于靜態(tài)顯示有占用I/O口資源少的特點(diǎn),恰好適合于本系統(tǒng)。方案中沒(méi)有采用鍵盤、顯示接口芯片8279實(shí)現(xiàn)鍵盤、顯示接口。由于本次課程設(shè)計(jì)所使用的鍵盤數(shù)量、顯示的方式及單片機(jī)的I/O口線使用情況等,采用前一種方式就足以能完成課程設(shè)計(jì)的要求,不必要多用一個(gè)芯片。根據(jù)本次課程設(shè)計(jì)的實(shí)際情況,兼顧經(jīng)濟(jì)性、使用性、簡(jiǎn)單易行、

29、操作簡(jiǎn)單等多方面因素,本次課程設(shè)計(jì)采用方案一來(lái)完成。</p><p><b>  4 系統(tǒng)硬件設(shè)計(jì)</b></p><p>  本次課程設(shè)計(jì)的密碼鎖電路主要由四個(gè)模塊組成:鍵盤輸入模塊、數(shù)據(jù)處理模塊、顯示控制模塊,繼電器驅(qū)動(dòng)模塊和蜂鳴器報(bào)警模塊。通過(guò)單片機(jī)送給開(kāi)鎖執(zhí)行機(jī)構(gòu),電路驅(qū)動(dòng)繼電器吸合,從而達(dá)到開(kāi)鎖的目的。如圖3所示,為密碼鎖開(kāi)鎖電路原理圖。</p>

30、;<p>  當(dāng)用戶輸入的密碼正確時(shí),單片機(jī)便輸出開(kāi)門信號(hào),送到繼電器驅(qū)動(dòng)電路,然后驅(qū)動(dòng)繼電器常開(kāi)觸點(diǎn)閉合,達(dá)到開(kāi)門的目的。本次設(shè)計(jì)中,繼電器選用固態(tài)繼電器,信息通過(guò)數(shù)碼管顯示,并利用蜂鳴器和發(fā)光二極管聲光指示。其中,綠發(fā)光二極管亮,表示開(kāi)鎖;否則,紅發(fā)光二極管亮,表示密碼輸入錯(cuò)誤并開(kāi)啟報(bào)警電路。</p><p>  圖3 密碼鎖開(kāi)鎖電路原理圖</p><p>  4.1

31、 STC89C52最小系統(tǒng)設(shè)計(jì)</p><p>  單片機(jī)最小系統(tǒng)包括CPU、時(shí)鐘電路和復(fù)位電路等三部分。下面則分別介紹這三部分的選取。</p><p>  4.1.1時(shí)鐘電路設(shè)計(jì)</p><p>  時(shí)鐘電路用于產(chǎn)生單片機(jī)工作時(shí)所必需的時(shí)鐘控制信號(hào),常用的時(shí)鐘電路有內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。內(nèi)部時(shí)鐘方式電路外接兩個(gè)電容和一個(gè)晶振,根據(jù)振蕩頻率要求的不同選用不同阻

32、值的電容和晶振。時(shí)鐘電路中的晶振震蕩頻率范圍通常是1.2MHz~12MHz,AT89S51常選擇6MHz或12MHz的石英晶體,為消除誤差,得到準(zhǔn)確的波特率,本設(shè)計(jì)選擇震蕩頻率為11.0592MHz的石英晶,時(shí)鐘電路如圖4所示。</p><p><b>  圖4時(shí)鐘電路</b></p><p>  4.1.2復(fù)位電路設(shè)計(jì)</p><p>  復(fù)

33、位是單片機(jī)的初始化操作,只需在單片機(jī)的復(fù)位引腳加上大于2個(gè)機(jī)器周期的高電平就可使單片機(jī)復(fù)位,當(dāng)程序運(yùn)行出錯(cuò)或操作進(jìn)入死循環(huán)狀態(tài)可通過(guò)復(fù)位重新啟動(dòng)程序。MCS-51的復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的,STC89C52也不例外,復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式,為方便復(fù)位操作,本文采用按鍵電平復(fù)位,電路如圖5所示。其中C取10uF,R2取10KΩ,復(fù)位電路如圖5所示。</p><p><b> 

34、 圖5復(fù)位電路</b></p><p>  4.2 鍵盤、顯示電路硬件設(shè)計(jì)</p><p>  4.2.1鍵盤電路硬件設(shè)計(jì)</p><p>  鍵盤是系統(tǒng)中的手動(dòng)控制部分,所以鍵盤的設(shè)計(jì)就顯得尤為的重要。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過(guò)一個(gè)按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要M條行線和N條列線,即可組成具有M×N

35、個(gè)按鍵的鍵盤。由于本設(shè)計(jì)中要求使用16個(gè)按鍵輸入,為減少鍵盤與單片機(jī)接口時(shí)所占用的I/O線的數(shù)目,故使用矩陣鍵盤。本設(shè)計(jì)中,矩陣鍵盤列線和單片機(jī)P2.0-P2.3相連,行線與單片機(jī)P2.4-P2.7相連。</p><p>  鍵盤掃描采用行掃描法,即依次置行線中的每一行為低電平,其余均為高電平,掃描列線電平狀態(tài),為低電平即表示該鍵按下。</p><p>  鍵盤電路硬件連接圖如圖6所示。

36、 圖6 矩陣按鍵</p><p>  4.2.2顯示電路硬件設(shè)計(jì)</p><p>  顯示是系統(tǒng)的輸出部分,用于觀察當(dāng)前的輸入狀態(tài)。顯示電路采用三極管對(duì)位碼進(jìn)行驅(qū)動(dòng)。LED數(shù)碼管有共陽(yáng)和共陰兩種,把這些LED發(fā)光二極管的正極接到一塊(一般是拼成一個(gè)8字加一個(gè)小數(shù)點(diǎn))而作為一個(gè)引腳,就叫共陽(yáng)的,相反的,就叫共陰的,那么應(yīng)用時(shí)這個(gè)腳就

37、分別的接VCC和GND。再把多個(gè)這樣的8字裝在一起就成了多位的數(shù)碼管了 。 </p><p>  圖7 共陽(yáng)、共陰數(shù)碼管</p><p>  顯示方式有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。靜態(tài)顯示時(shí),數(shù)據(jù)是分開(kāi)送到每一位LED上的;而動(dòng)態(tài)顯示則是數(shù)據(jù)是送到每一個(gè)LED上,再根據(jù)位選線來(lái)確定是哪一位LED被顯示。靜態(tài)顯示亮度很高,但口線占用較多;動(dòng)態(tài)顯示占用口線數(shù)目較少,適合用在顯示位數(shù)較多

38、的場(chǎng)合,但顯示位數(shù)的增多,將占用大量的CPU時(shí)間。本次設(shè)計(jì)選用動(dòng)態(tài)顯示。</p><p>  顯示電路硬件連接圖如圖8、圖9所示。 </p><p>  圖8 數(shù)碼管驅(qū)動(dòng)電路</p><p><b>  圖9 四位數(shù)碼管</b></p><p>  4.3 繼電器驅(qū)動(dòng)電路及報(bào)警電路設(shè)計(jì)</p><p

39、>  4.3.1固態(tài)繼電器簡(jiǎn)介</p><p>  固態(tài)繼電器(Solid State Relay,縮寫(xiě)SSR),是由微電子電路,分立電子器件,電力電子功率器件組成的無(wú)觸點(diǎn)開(kāi)關(guān)。用隔離器件實(shí)現(xiàn)了控制端與負(fù)載端的隔離。固態(tài)繼電器的輸入端用微小的控制信號(hào),達(dá)到直接驅(qū)動(dòng)大電流負(fù)載。</p><p>  固態(tài)繼電器有三部分組成:輸入電路,隔離(耦合)和輸出電路。按輸入電壓的不同類別,輸入電路

40、可分為直流輸入電路,交流輸入電路和交直流輸入電路三種。有些輸入控制電路還具有與TTL/CMOS兼容,正負(fù)邏輯控制和反相等功能。固態(tài)繼電器的輸入與輸出電路的隔離和耦合方式有光電耦合和變壓器耦合兩種。固態(tài)繼電器的輸出電路也可分為直流輸出電路,交流輸出電路和交直流輸出電路等形式。交流輸出時(shí),通常使用兩個(gè)可控硅或一個(gè)雙向可控硅,直流輸出時(shí)可使用雙極性器件或功率場(chǎng)效應(yīng)管。</p><p>  1、固態(tài)繼電器的優(yōu)點(diǎn)</

41、p><p>  (1)高壽命,高可靠:固態(tài)繼電器沒(méi)有機(jī)械零部件,有固體器件完成觸點(diǎn)功能,由于沒(méi)有運(yùn)動(dòng)的零部件,因此能在高沖擊,振動(dòng)的環(huán)境下工作,由于組成固態(tài)繼電器的元器件的固有特性,決定了固態(tài)繼電器的壽命長(zhǎng),可靠性高。 </p><p>  靈敏度高,控制功率小,電磁兼容性好:固態(tài)繼電器的輸入電壓范圍較寬,驅(qū)動(dòng)功率低,可與大多數(shù)邏輯集成電路兼容不需加緩沖器或驅(qū)動(dòng)器。</p>&l

42、t;p>  快速轉(zhuǎn)換:固態(tài)繼電器因?yàn)椴捎霉腆w器件,所以切換速度可從幾毫秒至幾微妙。</p><p>  電磁干擾小:固態(tài)繼電器沒(méi)有輸入“線圈”,沒(méi)有觸點(diǎn)燃弧和回跳,因而減少了電磁干擾。大多數(shù)交流輸出固態(tài)繼電器是一個(gè)零電壓開(kāi)關(guān),在零電壓處導(dǎo)通,零電流處關(guān)斷,減少了電流波形的突然中斷,從而減少了開(kāi)關(guān)瞬態(tài)效應(yīng)。 </p><p>  2、固態(tài)繼電器的缺點(diǎn)</p><p&

43、gt; ?。?)導(dǎo)通后的管壓降大,可控硅或雙相控硅的正向降壓可達(dá)1~2V,大功率晶體管的飽和壓降也在1~2V之間,一般功率場(chǎng)效應(yīng)管的導(dǎo)通電阻也較機(jī)械觸點(diǎn)的接觸電阻大。 </p><p>  半導(dǎo)體器件關(guān)斷后仍可有數(shù)微安至數(shù)毫安的漏電流,因此不能實(shí)現(xiàn)理想的電隔離。</p><p>  由于管壓降大,導(dǎo)通后的功耗和發(fā)熱量也大,大功率固態(tài)繼電器的體積遠(yuǎn)遠(yuǎn)大于同容量的電磁繼電器,成本也較高。<

44、;/p><p>  電子元器件的溫度特性和電子線路的抗干擾能力較差,耐輻射能力也較差,如不采取有效措施,則工作可靠性低。</p><p>  固態(tài)繼電器對(duì)過(guò)載有較大的敏感性,必須用快速熔斷器或RC阻尼電路對(duì)其進(jìn)行過(guò)載保護(hù)。固態(tài)繼電器的負(fù)載與環(huán)境溫度明顯有關(guān),溫度升高,負(fù)載能力將迅速下降。</p><p>  主要不足是存在通態(tài)壓降(需相應(yīng)散熱措施),有斷態(tài)漏電流,交直流

45、不能通用,觸點(diǎn)組數(shù)少,另外過(guò)電流、過(guò)電壓及電壓上升率、電流上升率等指標(biāo)差。</p><p>  4.3.2 固態(tài)繼電器驅(qū)動(dòng)電路設(shè)計(jì)</p><p>  當(dāng)用戶輸入的密碼正確時(shí),單片機(jī)便輸出開(kāi)門信號(hào),送到繼電器驅(qū)動(dòng)電路,然后驅(qū)動(dòng)繼電器常開(kāi)觸點(diǎn)閉合,綠發(fā)光二極管亮,表示開(kāi)鎖;否則,紅發(fā)光二極管亮,表示密碼輸入錯(cuò)誤。</p><p>  硬件電路如圖10所示</p&

46、gt;<p>  圖10 固態(tài)繼電器驅(qū)動(dòng)電路</p><p>  4.3.3 報(bào)警提示電路</p><p>  報(bào)警提示電路采用小蜂鳴器提示。蜂鳴器能夠根據(jù)脈沖信號(hào),以及信號(hào)的頻率發(fā)出各種不同的聲音,這樣可以根據(jù)系統(tǒng)要求在密碼出入正確和密碼輸入錯(cuò)誤時(shí)發(fā)出不同的聲音提示,已達(dá)到報(bào)警的要求。蜂鳴器電路,如圖11所示。

47、 圖11 報(bào)警電路</p><p><b>  5 系統(tǒng)軟件設(shè)計(jì)</b></p><p>  在系統(tǒng)設(shè)計(jì)中,除了硬件設(shè)計(jì)之外,軟件設(shè)計(jì)也是很重要的,它是系統(tǒng)工作的指揮者,因此系統(tǒng)軟件設(shè)計(jì)時(shí)要遵循結(jié)構(gòu)合理、操作性能好、具有一定的保護(hù)措施、兼容性好的設(shè)計(jì)原則來(lái)開(kāi)發(fā)設(shè)計(jì)。密碼鎖系統(tǒng)軟件設(shè)計(jì)主要包括主程序模塊、密碼比較判斷模塊、鍵盤掃描模塊、修改密碼模塊、數(shù)碼管顯示模

48、塊等及按鍵檢測(cè)模塊。</p><p>  系統(tǒng)程序流程如圖12所示。</p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b>&l

49、t;/p><p><b>  否</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p&

50、gt;<p>  圖12 系統(tǒng)程序流程圖</p><p><b>  5.1 主程序模塊</b></p><p>  主程序主要用于定義全局變量,給全局變量賦初值,啟動(dòng)定時(shí)器,為整個(gè)程序提供數(shù)據(jù);檢測(cè)按鍵;調(diào)用顯示等功能。</p><p>  5.2 密碼比較判斷模塊</p><p>  該模塊的功能是將

51、鍵盤輸入的密碼利用if語(yǔ)句與設(shè)定的密碼進(jìn)行逐個(gè)比較,若密碼完全正確則開(kāi)鎖;若不正確,則開(kāi)啟報(bào)警電路,可重新輸入密碼。其密碼輸入和比較判決流程圖如圖13所示。</p><p>  圖13 密碼輸入和比較判決流程圖</p><p>  5.3 鍵盤掃描模塊</p><p>  鍵盤使用矩陣式鍵盤,由行和列組成,CPU對(duì)所有鍵盤進(jìn)行監(jiān)視,從而實(shí)現(xiàn)逐列掃描鍵盤確定被按鍵的

52、具體位置、判斷鍵盤上有無(wú)鍵按下、消除去抖動(dòng)、判斷閉合的鍵是否釋放等功能。如圖14所示,為鍵盤掃描流程圖。</p><p>  圖14 鍵盤掃描流程圖</p><p>  5.4 修改密碼模塊</p><p>  在密碼輸入正確情況下,可以按下“重置密碼”對(duì)密碼進(jìn)行重新設(shè)置,每設(shè)定一位就將密碼存儲(chǔ)起來(lái),當(dāng)設(shè)置4位密碼完畢后,系統(tǒng)將自動(dòng)跳到程序開(kāi)始,調(diào)用新設(shè)置的密碼。

53、圖15為修改密碼流程圖。</p><p>  圖15 修改密碼流程圖</p><p>  5.5 數(shù)碼管液晶顯示模塊</p><p>  此模塊包括數(shù)碼管初始化、動(dòng)態(tài)掃描等。</p><p>  在顯示之前,我們編好了段選表0—9,通過(guò)查表來(lái)顯示,由于本次設(shè)計(jì)采用動(dòng)態(tài)顯示,所以先送段選給每一位,然后給相應(yīng)的數(shù)碼管送位選,延時(shí)1MS,再給下一位

54、送段選,送位選,延時(shí)1MS,以此類推,讓4位數(shù)碼管顯示不同的數(shù)字,利用人的視覺(jué)暫留,使我們看到4位數(shù)碼管的動(dòng)態(tài)顯示效果。顯示子程序流程圖如圖15所示。</p><p>  圖15 顯示子程序流程圖</p><p><b>  6 系統(tǒng)調(diào)試</b></p><p>  在本次軟件調(diào)試中,我們使用的是STC_ISP_V481C51單片機(jī)下載工具和

55、Keil uVision2軟件,Keil uVision2是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),使用接近于傳統(tǒng)c語(yǔ)言的語(yǔ)法來(lái)開(kāi)發(fā),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,而且大大的提高了工作效率和項(xiàng)目開(kāi)發(fā)周期,他還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Win

56、dows界面,使您能在很短的時(shí)間內(nèi)就能學(xué)會(huì)使用keil c51來(lái)開(kāi)發(fā)您的單片機(jī)應(yīng)用程序 。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。</p><p><b>  7 總 結(jié)</b></p><p>  經(jīng)過(guò)三周的緊張?jiān)O(shè)計(jì),終于順利

57、完成了設(shè)計(jì)任務(wù)。本次課程設(shè)計(jì)主要是針對(duì)密碼鎖系統(tǒng)做了詳細(xì)介紹,以STC89C52為核心,并通過(guò)調(diào)試運(yùn)行可以實(shí)現(xiàn)數(shù)碼管顯示器顯示密碼輸入的相關(guān)信息,通過(guò)10位數(shù)字按鍵(0~9)設(shè)置4位數(shù)字(0~9)密碼,實(shí)現(xiàn)2位功能按鍵A(輸入校驗(yàn)密碼并驗(yàn)證密碼)和B (設(shè)置新密碼),利用繼電器模擬電子門鎖作出是否開(kāi)門以及報(bào)警等反應(yīng)。</p><p>  通過(guò)課程設(shè)計(jì)讓我對(duì)單片機(jī)系統(tǒng)有了較詳細(xì)的了解,而且觸及到與其相關(guān)的很多新知識(shí)

58、,而且隨著電子技術(shù)的發(fā)展簡(jiǎn)易數(shù)字電壓表也會(huì)越來(lái)越完善,作為大學(xué)生的我們應(yīng)該跟上時(shí)代的步伐,時(shí)刻關(guān)注形勢(shì)變化,不斷充實(shí)更新自己的知識(shí)。</p><p>  在設(shè)計(jì)中既應(yīng)用到了基礎(chǔ)知識(shí),也用到了專業(yè)知識(shí),它是對(duì)三年來(lái)所學(xué)知識(shí)的綜合考察。最重要的是我通過(guò)親自設(shè)計(jì),親自繪制原理圖,印制電路板以及系統(tǒng)調(diào)試培養(yǎng)了我的耐心和細(xì)心,這對(duì)我以后的工作和學(xué)習(xí)有很大的幫助。</p><p><b> 

59、 參考文獻(xiàn)</b></p><p>  1、張志良.單片機(jī)學(xué)習(xí)指導(dǎo)及習(xí)題解答. 機(jī)械工業(yè)出版社,2008.</p><p>  2、張偉.單片機(jī)原理及應(yīng)用. 機(jī)械工業(yè)出版社,2009.</p><p>  3、孫俊逸 盛秋林. 張錚編著.單片機(jī)原理及應(yīng)用.清華大學(xué)出版社.</p><p>  4、張毅剛主編. 單片機(jī)原理及應(yīng)

60、用. 北京: 高等教育出版社,2010.5.</p><p>  5、黃仁欣.單片機(jī)原理及應(yīng)用技術(shù). 北京: 清華大學(xué)出版社, 2005.</p><p><b>  附錄一:</b></p><p><b>  程序清單</b></p><p>  #include<reg52.h>

61、</p><p>  #define DataPort P0 //定義數(shù)據(jù)端口數(shù)碼管顯示</p><p>  #define KeyPort P2//按鍵掃描</p><p>  sbit DIG1=P3^1;</p><p>  sbit DIG2=P3^2; </p><p> 

62、 sbit DIG3=P3^3;</p><p>  sbit DIG4=P3^4;</p><p>  bit key_flag;</p><p><b>  bit Flag;</b></p><p>  bit clr_flag;</p><p>  sbit P23=P2^3;//繼電器控

63、制端</p><p>  sbit P30=P3^0;//蜂鳴器控制端</p><p>  unsigned char code</p><p>  dofly_DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e};//

64、 顯示段碼值0~F</p><p>  unsigned char TempData[4]; //存儲(chǔ)顯示值的全局變量</p><p>  unsigned char time_flag;</p><p>  unsigned char delay_count1;</p><p>  unsigned char delay_count2;&l

65、t;/p><p>  unsigned char change_flag;</p><p>  unsigned char c_flag;</p><p>  void Delay(unsigned int z);</p><p>  void Display(void);//數(shù)碼管顯示函數(shù)</p><p>  unsig

66、ned char KeyScan(void);//鍵盤掃描</p><p>  void Init_Timer0(void);//定時(shí)器初始化</p><p>  void Init_Timer1(void);</p><p>  void main (void)</p><p><b>  {</b></p>

67、;<p>  unsigned char key,i,j,count; </p><p>  unsigned char num; </p><p>  unsigned char temp[4];</p><p>  unsigned char password[4]={0,0,0,0};</p><

68、;p>  Init_Timer0();</p><p>  Init_Timer1();</p><p><b>  i=0;</b></p><p><b>  num=0;</b></p><p>  time_flag=0;</p><p><b>  

69、count=0;</b></p><p>  clr_flag=0;</p><p>  change_flag=0;</p><p><b>  key=0;</b></p><p><b>  c_flag=0;</b></p><p>  delay_cou

70、nt1=0;</p><p>  delay_count2=0;</p><p>  for(j=0;j<4;j++) </p><p><b>  { </b></p><p>  TempData[j]=0xff; </p><p><b>  }<

71、;/b></p><p>  TempData[0]=0xbf; // </p><p>  TempData[1]=0xbf; //</p><p>  TempData[2]=0xbf; // </p><p>  TempData[3]=0xbf;//</p><p>  while (1)

72、 //主循環(huán)</p><p><b>  {</b></p><p>  key_flag=0;</p><p>  key=KeyScan();</p><p>  if(delay_count1!=0)</p><p><b>  P23=1;</b></p>

73、<p>  while(key_flag)</p><p><b>  {</b></p><p>  if(clr_flag==1)</p><p><b>  {</b></p><p>  clr_flag=0;</p><p>  for(j=0;j&l

74、t;4;j++) </p><p><b>  { </b></p><p>  TempData[j]=0xbf; </p><p><b>  }</b></p><p><b>  }</b></p><p>  switc

75、h(key)</p><p><b>  {</b></p><p>  case 0x11:num=0;break; </p><p>  case 0x21:num=1;break;</p><p>  case 0x41:num=2;break; &l

76、t;/p><p>  case 0x81:num=3;break;</p><p>  case 0x12:num=4;break;</p><p>  case 0x22:num=5;break; </p><p>  case 0x42:num=6;break; </p&

77、gt;<p>  case 0x82:num=7;break; </p><p>  case 0x14:num=8;break; </p><p>  case 0x24:num=9;break; </p><p>  case 0x44:num=10;b

78、reak; </p><p>  case 0x84:num=11;break; </p><p>  default:break;</p><p><b>  }</b></p><p>  key_flag=0;</p><p>

79、  if(change_flag==1&&num==11&&i==0)</p><p><b>  {</b></p><p><b>  c_flag=1;</b></p><p><b>  }</b></p><p>  if(chang

80、e_flag==1&&c_flag==1)</p><p><b>  {</b></p><p>  if( i<5&&i>0)</p><p>  password[i-1]=num;</p><p>  TempData[i-1]=dofly_DuanMa[num];

81、if(i==5&&num==10)</p><p><b>  {</b></p><p>  for(j=0;j<4;j++) </p><p><b>  { </b></p><p>  TempData[j]=0xbf; <

82、/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  i++;</b></p><p><b>  if(i==6)</b></p><p><b>  {</b&g

83、t;</p><p>  change_flag=0;</p><p><b>  c_flag=0;</b></p><p><b>  i=0;</b></p><p>  clr_flag=1;</p><p><b>  }</b></p&

84、gt;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  if(i<4)</b></p><p><b>  {</b>

85、</p><p>  temp[i]=num;</p><p>  TempData[i]=0x89;//把按鍵值輸入到顯示數(shù)組中 }</p><p>  if(i==4&&num==10)</p><p><b>  {</b></p><p>  Flag

86、=1;//先把比較位置1</p><p>  for(j=0;j<4;j++) Flag=Flag&&(temp[j]==password[j]);</p><p>  for(j=0;j<4;j++)</p><p>  TempData[j]=0XFF;</p><p>

87、;<b>  if(Flag)</b></p><p><b>  {</b></p><p>  TempData[0]=0xc0; // "o" TempData[1]=0x8c; // "p"</p><p>  TempData[2]=0

88、x86; // "E"</p><p>  TempData[3]=0xc8; // "n" </p><p><b>  P23=1;</b></p><p>  TR0=1; //定時(shí)器開(kāi)關(guān)打開(kāi)</p><p>  change_flag=1;&l

89、t;/p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  count++;</b></p><p>  if(count==3)<

90、/p><p><b>  {</b></p><p>  TempData[0]=0x86; // "E"</p><p>  TempData[1]=0x88; // "r"</p><p>  TempData[2]=0x88; // "r"</p>

91、<p>  TempData[3]=0xb0;//"3"</p><p><b>  count=0;</b></p><p><b>  P30=0;</b></p><p>  TR1=1; //定時(shí)器0開(kāi)關(guān)打開(kāi)</p><p><b&

92、gt;  }</b></p><p><b>  else</b></p><p>  { //否則顯示"Err"</p><p>  TempData[0]=0x86; // "E"</p><p>  TempData[1]=0x88; // "r

93、"</p><p>  TempData[2]=0x88; // "r</p><p><b>  P30=0;</b></p><p>  TR1=1; //定時(shí)器1開(kāi)關(guān)打開(kāi)</p><p><b>  } </b></p><p

94、><b>  }</b></p><p>  clr_flag=1;</p><p><b>  }</b></p><p>  if(i==4&&num!=10)</p><p><b>  {</b></p><p>  Te

95、mpData[0]=0x86; // "E"</p><p>  TempData[1]=0x88; // "r"</p><p>  TempData[2]=0x88; // "r</p><p>  TempData[3]=0xff; // </p><p><b>  }<

96、;/b></p><p><b>  i++;</b></p><p><b>  if(i==5)</b></p><p><b>  i=0;</b></p><p><b>  }</b></p><p><b&g

97、t;  }</b></p><p>  Display();</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Delay(unsigned int z)</p><p><b>  {<

98、/b></p><p>  unsigned int x;</p><p>  unsigned int y;</p><p>  for(x=z;x>0;x--)</p><p>  for(y=100;y>0;y--);</p><p><b>  } </b></

99、p><p>  void Display(void)</p><p><b>  {</b></p><p>  DataPort=0xff; //清空數(shù)據(jù),防止有交替重影</p><p><b>  DIG1=0;</b></p><p><b>  DIG2=1

100、;</b></p><p><b>  DIG3=1;</b></p><p><b>  DIG4=1;</b></p><p>  DataPort=TempData[0]; //取顯示數(shù)據(jù),段碼0</p><p><b>  Delay(2);</b><

101、/p><p>  DataPort=0xff; //清空數(shù)據(jù),防止有交替重影</p><p><b>  DIG1=1;</b></p><p><b>  DIG2=0;</b></p><p><b>  DIG3=1;</b></p><p>

102、<b>  DIG4=1;</b></p><p>  DataPort=TempData[1]; //取顯示數(shù)據(jù),段碼1</p><p><b>  Delay(2);</b></p><p>  DataPort=0xff; //清空數(shù)據(jù),防止有交替重影</p><p><b>

103、;  DIG1=1;</b></p><p><b>  DIG2=1;</b></p><p><b>  DIG3=0;</b></p><p><b>  DIG4=1;</b></p><p>  DataPort=TempData[2]; //取顯示數(shù)據(jù),

104、段碼2</p><p><b>  Delay(2);</b></p><p>  DataPort=0xff; //清空數(shù)據(jù),防止有交替重影</p><p><b>  DIG1=1;</b></p><p><b>  DIG2=1;</b></p>

105、<p><b>  DIG3=1;</b></p><p><b>  DIG4=0;</b></p><p>  DataPort=TempData[3]; //取顯示數(shù)據(jù),段碼3 </p><p><b>  Delay(2);</b></p><p><

106、b>  DIG1=1;</b></p><p><b>  DIG2=1;</b></p><p><b>  DIG3=1;</b></p><p><b>  DIG4=1;</b></p><p><b>  }</b><

107、/p><p>  void Init_Timer0(void)</p><p><b>  {</b></p><p>  TMOD |= 0x01; </p><p>  TH0=(65536-50000)/256; //重新賦值 50ms</p><p>  TL0=(65

108、536-50000)%256;</p><p>  EA=1; //總中斷打開(kāi)</p><p>  ET0=1; //定時(shí)器中斷打開(kāi)</p><p><b>  }</b></p><p>  void Timer0_isr(void) interrupt 1 using 1&l

109、t;/p><p><b>  {</b></p><p>  TH0=(65536-50000)/256; //重新賦值 50ms</p><p>  TL0=(65536-50000)%256;</p><p>  delay_count1++;</p><p>  if(delay_coun

110、t1==100)</p><p><b>  {</b></p><p><b>  P23=0;</b></p><p>  delay_count1=0;</p><p>  TR0=0; //定時(shí)器關(guān)</p><p><b>  }<

111、/b></p><p><b>  }</b></p><p>  void Init_Timer1(void)</p><p><b>  {</b></p><p>  TMOD |= 0x10; </p><p>  TH1=(65536-40000)/256

112、; </p><p>  TL1=(65536-40000)%256;</p><p>  EA=1; //總中斷打開(kāi)</p><p>  ET1=1; //定時(shí)器中斷打開(kāi)</p><p>  //TR1=1; //定時(shí)器開(kāi)關(guān)打開(kāi)</p><p>&

113、lt;b>  }</b></p><p>  void Timer1_isr(void) interrupt 3 using 1</p><p><b>  {</b></p><p>  TH1=(65536-40000)/256; //初值40ms</p><p>  TL1=(65536

114、-40000)%256;</p><p>  delay_count2++;</p><p>  if(delay_count2==100)</p><p><b>  {</b></p><p><b>  P30=1;</b></p><p>  delay_count2

115、=0;</p><p>  TR1=0; //定時(shí)器關(guān)</p><p><b>  }</b></p><p><b>  }</b></p><p>  unsigned char KeyScan(void)</p><p><b>  {&

116、lt;/b></p><p>  unsigned char l_code,h_code;</p><p>  KeyPort=0xf0;</p><p>  if((KeyPort&0xf0)!=0xf0)</p><p><b>  {</b></p><p><b>

117、  Delay(5);</b></p><p>  if((KeyPort&0xf0)!=0xf0)</p><p><b>  {</b></p><p>  key_flag=1;</p><p>  l_code=0xfe;</p><p>  while((l_code

118、&0x10)!=0)</p><p><b>  {</b></p><p>  KeyPort=l_code;</p><p><b>  P23=0;</b></p><p>  if((P2&0xf0)!=0xf0)</p><p><b> 

119、 {</b></p><p>  h_code=(KeyPort&0xf0)|0x0f;</p><p>  while((KeyPort&0xf0)!=0xf0); return((~l_code)+(~h_code));</p><p><b>  }</b></p><p>

120、;  else l_code=(l_code<<1)|0x01;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return(0);</p><p><b>  }</b></p><p>

121、;<b>  }</b></p><p><b>  附錄二:</b></p><p><b>  原理圖</b></p><p><b>  PCB版圖</b></p><p><b>  三維PCB版圖</b></p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論