版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科學(xué)生單片機(jī)課程設(shè)計(jì)報(bào)告</p><p> 題 目 基于單片機(jī)的電子密碼鎖設(shè)計(jì)(F題) </p><p> 姓 名 </p><p> 學(xué) 號(hào) </p>
2、<p> 院 (系) </p><p> 專業(yè)、年級(jí) </p><p> 指導(dǎo)教師 </p><p><b> 目 錄</b></p><p> 1、
3、 引言……………………………………………………………1</p><p> 2、 設(shè)計(jì)要求………………………………………………………2</p><p> 3、 硬件電路設(shè)計(jì)………………………………………………… 3</p><p> 3.1 設(shè)計(jì)方案的選擇…………………………………………… 3</p><p> 3.2
4、 主要元器件簡(jiǎn)介…………………………………………… 4</p><p> 3.3 硬件系統(tǒng)結(jié)構(gòu)……………………………………………… 8</p><p> 4、 程序設(shè)計(jì)……………………………………………………… 13</p><p> 5、 總結(jié)…………………………………………………………… 15</p><p> 參考
5、文獻(xiàn)……………………………………………………………… 16</p><p> 附件一:電路原理圖及作品實(shí)物圖………………………………… 17</p><p> 附件二:程序清單…………………………………………………… 18</p><p><b> 1、引言</b></p><p> 1.1 單片機(jī)密碼鎖課程設(shè)
6、計(jì)報(bào)告摘要</p><p> 隨著電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機(jī)已成為電子產(chǎn)品研制和開(kāi)發(fā)中首選的控制器。隨著人們生活水平的提高,如何實(shí)現(xiàn)家庭防盜這一問(wèn)題也變的尤其的突出,傳統(tǒng)的機(jī)械鎖由于其構(gòu)造的簡(jiǎn)單,安全性能低,無(wú)法滿足人們的需要。針對(duì)這些鎖具給人們帶來(lái)的不便若使用機(jī)械式鑰匙開(kāi)鎖,為滿足人們對(duì)鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。</p><p> 電
7、子密碼鎖是一種通過(guò)密碼輸入來(lái)控制電路或是芯片工作,從而控制機(jī)械開(kāi)關(guān)的閉合,完成開(kāi)鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡(jiǎn)易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過(guò)編程來(lái)實(shí)現(xiàn)的。其性能和安全性已大大超過(guò)了機(jī)械鎖。其特點(diǎn)如下:</p><p> 1) 保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于彈子鎖。隨機(jī)開(kāi)鎖成功率幾乎為零。</p><p> 2) 密碼
8、可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。</p><p> 3) 誤碼輸入保護(hù),當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。</p><p> 4) 無(wú)活動(dòng)零件,不會(huì)磨損,壽命長(zhǎng)。</p><p> 5) 使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開(kāi)鎖。</p><p> 6) 電子密碼鎖操作簡(jiǎn)
9、單易行,一學(xué)即會(huì)。</p><p> 隨著電子元件的進(jìn)一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強(qiáng)大,使用更加方便,安全保密性更強(qiáng),由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應(yīng)元件,實(shí)現(xiàn)了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開(kāi)鎖的,隨著電子元件的發(fā)展及人們對(duì)保密性需求的提高出現(xiàn)了越來(lái)越多的電子密碼鎖。</p><p> 由于數(shù)字、字符、圖形圖像、人體生物特征和時(shí)間
10、等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子防盜鎖獲得高度的保密性,如防范森嚴(yán)的金庫(kù),需要使用復(fù)合信息密碼的電子防盜鎖,這樣對(duì)盜賊而言是“道高一尺、魔高一丈”。組合使用信息也能夠使電子防盜鎖獲得無(wú)窮擴(kuò)展的可能,使產(chǎn)品多樣化,對(duì)用戶而言是“千挑百選、自得其所”??梢钥闯鼋M合使用電子信息是電子密碼鎖以后發(fā)展的趨勢(shì)。</p><p> 本系統(tǒng)由單片機(jī)系統(tǒng)、矩陣鍵盤(pán)、LED顯示和報(bào)警系統(tǒng)組成。系統(tǒng)能完成開(kāi)鎖
11、、超次鎖定、管理員解密、修改用戶密碼的功能。除上述基本的密碼鎖功能外,還具有掉電存儲(chǔ)、聲光提示等功能,依據(jù)實(shí)際的情況還可以添加其他功能。本系統(tǒng)成本低廉,功能實(shí)用。</p><p><b> 1.2 關(guān)鍵詞</b></p><p> 單片機(jī) 密碼鎖 課程設(shè)計(jì) 報(bào)警</p><p><b> 2、設(shè)計(jì)要求<
12、/b></p><p> 2.1 設(shè)計(jì)任務(wù)</p><p> 設(shè)計(jì)一種基于單片機(jī)的密碼鎖。</p><p><b> 2.2 設(shè)計(jì)要求</b></p><p> 1)密碼用鍵盤(pán)輸入(4~8位);</p><p> 2)用戶可預(yù)置密碼(4~8位),并永久保存;</p>
13、;<p> 3)用LED數(shù)碼管或LCD顯示密碼值,密碼設(shè)置成功或開(kāi)鎖后顯示“******”;</p><p> 4)密碼輸入成功后,開(kāi)鎖(用綠色的LED亮);密碼輸入錯(cuò)誤時(shí)數(shù)碼管或LCD提示錯(cuò)誤信息,并且紅色的LED亮;三次輸入錯(cuò)誤后,揚(yáng)聲器報(bào)警;</p><p> 2.3 設(shè)計(jì)報(bào)告要求</p><p> 說(shuō)明設(shè)計(jì)作品的功能、特點(diǎn)、應(yīng)用范圍;
14、</p><p> 方案對(duì)比,確定方案。</p><p> 電路設(shè)計(jì)、電路工作原理、技術(shù)指標(biāo)測(cè)試;</p><p> 編程方法、程序框圖及關(guān)鍵程序清單。</p><p><b> 課程設(shè)計(jì)總結(jié)。</b></p><p><b> 3、硬件電路設(shè)計(jì)</b></p
15、><p> 3.1 設(shè)計(jì)方案的選擇</p><p> 3.1.1 方案一:采用數(shù)字電路控制</p><p> 用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了9個(gè)用戶輸入鍵,其中只有4個(gè)是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤(pán)輸入電路自動(dòng)清零,原先輸入的密碼無(wú)效,需要重新輸入;如果用戶輸入密碼的時(shí)間超過(guò)10秒(一般
16、情況下,用戶不會(huì)超過(guò)10秒,若用戶覺(jué)得不便,還可以修改)電路將報(bào)警20秒,若電路連續(xù)報(bào)警三次,電路將鎖定鍵盤(pán)2分鐘,防止他人的非法操作。采用數(shù)字電路設(shè)計(jì)的方案好處就是設(shè)計(jì)簡(jiǎn)單但控制的準(zhǔn)確性和靈活性差。故不采用。</p><p> 3.1.2 方案二:采用以單片機(jī)為核心的控制方案</p><p> 由于單片機(jī)種類繁多,各種型號(hào)都有其一定的應(yīng)用環(huán)境,因此在選用時(shí)要多加比較,合理選擇,以
17、期獲得最佳的性價(jià)比。一般來(lái)說(shuō)在選取單片機(jī)時(shí)從下面幾個(gè)方面考慮:性能、存儲(chǔ)器、運(yùn)行速度、I/O口、定時(shí)/計(jì)數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數(shù)量和優(yōu)先級(jí)、工作溫度范圍、有沒(méi)有低電壓檢測(cè)功能、單片機(jī)內(nèi)有無(wú)時(shí)鐘振蕩器、有無(wú)上電復(fù)位功能等。在開(kāi)發(fā)過(guò)程中單片機(jī)還受到:開(kāi)發(fā)工具、編程器、開(kāi)發(fā)成本、開(kāi)發(fā)人員的適應(yīng)性、技術(shù)支持和服務(wù)等等因素?;谝陨弦蛩乇驹O(shè)計(jì)選用單片
18、機(jī)STC89C52作為本設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖功能。在單片機(jī)的外圍電路外接輸入鍵盤(pán)用于密碼的輸入和一些功能的控制,外接AT24C02芯片用于密碼的存儲(chǔ),外接LCD1602顯示器用于顯示作用。當(dāng)用戶需要開(kāi)鎖時(shí),先按鍵盤(pán)開(kāi)鎖鍵之后按鍵盤(pán)的數(shù)字鍵0-9輸入密碼。密碼輸完后按下確認(rèn)鍵,如果密碼輸入正確則開(kāi)鎖,不正確顯示密碼錯(cuò)誤重新輸入密碼,當(dāng)三次密碼錯(cuò)誤則發(fā)出報(bào)警;當(dāng)用戶需
19、要修改密碼時(shí),先按下鍵盤(pán)設(shè)置鍵后可</p><p> 可以看出方案二控制靈活準(zhǔn)確性好且保密性強(qiáng)還具有擴(kuò)展功能,根據(jù)現(xiàn)實(shí)生活的需要此次設(shè)計(jì)采用此方案。</p><p> 3.2 主要元器件簡(jiǎn)介</p><p> 3.2.1 主控芯片 單片機(jī)STC89C52</p><p> 1、宏基公司生產(chǎn)的STC89系列單片機(jī),高速、低功耗、
20、新增在系統(tǒng)/在應(yīng)用可編程(ISP,IAP)功能。</p><p> 2、特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,512 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩器。STC89C52設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式。空閑模式下,CPU暫停
21、工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。</p><p> STC89C52芯片引腳</p><p> 3、STC89C52引腳功能說(shuō)明:</p><p><b> Vcc:電源電壓</b></p><p><b&
22、gt; GND:地</b></p><p> P0口:P0口是一組8位漏極開(kāi)路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口,作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口寫(xiě)“1”可作為高阻抗輸入端口。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接
23、上拉電阻。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)校驗(yàn)期間,P1接收低8位地址。</p><p> P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)
24、可驅(qū)動(dòng)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流I。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行:MOVX @Ri 指令)時(shí),P2口線上的內(nèi)(也即特殊功能寄存器,在整個(gè)訪問(wèn)期間不改變。Flash 編程或校驗(yàn)時(shí),P2也接收高位地址和其它控制信號(hào)。</p><p> P3口:P3口是一組帶有內(nèi)部上拉
25、電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流I。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。</p><p> RST:復(fù)位輸入。當(dāng)振蕩工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期上高電平將使單片機(jī)復(fù)位。WDT益出將使該引腳輸出高電平,設(shè)置SFR A
26、UXR 的 DISRTO 位(地址8EH)可打開(kāi)或關(guān)閉該功能。DISRTO 位缺省為RESET輸出高電平打開(kāi)狀態(tài)。</p><p> ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目地,要注意的是:第當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。如有必
27、要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位禁位后,只有一條MOVX 和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳伎被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。</p><p> PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)STC89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。當(dāng)訪問(wèn)外部數(shù)據(jù)
28、存儲(chǔ)器,高有兩次有效的PSEN信號(hào)。</p><p> EA/VPP:外部訪問(wèn)允許。欲使CPU公訪問(wèn)外部程序存儲(chǔ)器(地址0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程電壓Vpp。</p><p>
29、XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 3.2.2 外部存儲(chǔ)芯片 AT24C02(ATMLU830)</p><p> AT24C02是美國(guó)Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5 V)、擦寫(xiě)次
30、數(shù)多(大于10000次)、寫(xiě)入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫(xiě)的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C02中帶有的片內(nèi)地址寄存器。每寫(xiě)入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫(xiě)。所有字節(jié)均以單一操作方式讀取。為降低總的寫(xiě)入時(shí)間,一次操作可寫(xiě)入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用
31、于IC器件之間連接的二線制總線。他通過(guò)SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。 AT24C02正是運(yùn)用了I2C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(hào)(通過(guò)SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開(kāi)始和停止的條件。無(wú)論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)</p&g
32、t;<p> 注:本設(shè)計(jì)采用的是同功能芯片ATMLU830,只命名方式不同,其功能與24C02完全相同。</p><p> AT24C02引腳圖</p><p><b> 管腳描述</b></p><p> A0 A1 A2:器件地址選擇</p><p> SDA:串行數(shù)據(jù)/地址</p>
33、;<p><b> SCL:串行時(shí)鐘</b></p><p><b> WP:寫(xiě)保護(hù)</b></p><p> Vcc:+1.8V 6.0V 工作電壓</p><p><b> GND:地</b></p><p> AT24C02的1、2、3腳是三條地
34、址線,用于確定芯片的硬件地址。在STC89C52的作品板上,第8腳和第4腳分別為正、負(fù)電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過(guò)這條雙向I2C總線串行傳送,和單片機(jī)的P3.5連接。第6腳SCL為串行時(shí)鐘輸入線,和單片機(jī)的P3.4連接。SDA和SCL都需要和正電源間各接一個(gè)4.7K的電阻上拉。第7腳需要接地。</p><p> 3.2.3 顯示器件 LCD1602液晶顯示器</p><
35、;p> 現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。</p><p> 1602型LCD的接口信號(hào)說(shuō)明</p><p> 1602型LCD的主要技
36、術(shù)參數(shù)如下表所示:</p><p> 1602型LCD的主要技術(shù)參數(shù)</p><p><b> 基本操作程序:</b></p><p> 讀狀態(tài):輸入:RS=L,RW=L, E=H 輸出:D0~D7=狀態(tài)字</p><p> 讀數(shù)據(jù):輸入:RS=H,RW=H, E=H
37、 輸出:無(wú)</p><p> 寫(xiě)指令:輸入:RS=L,RW=L, D0~D7=指令碼,E=高脈沖 輸出:D0~D7=數(shù)據(jù)</p><p> 寫(xiě)數(shù)據(jù):輸入:RS=H,RW=L, D0~D7=數(shù)據(jù), E=高脈沖 輸出:無(wú)</p><p> 3.3 硬件系統(tǒng)結(jié)構(gòu)</p><p> 3.3.1 設(shè)計(jì)原理<
38、;/p><p> 本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤(pán)、液晶顯示器和密碼存儲(chǔ)等部分組成。其中矩陣鍵盤(pán)用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過(guò)連接單片機(jī)的矩陣鍵盤(pán)輸入密碼,后經(jīng)過(guò)單片機(jī)對(duì)用戶輸入的密碼與自己保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開(kāi)鎖電路或者報(bào)警電路控制開(kāi)鎖還是報(bào)警,當(dāng)然也可以用繼電器的常開(kāi)觸點(diǎn)去控制電磁鐵吸合線圈。</p><p> 本系統(tǒng)共有兩
39、部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤(pán)輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、晶振部分、顯示部分、報(bào)警部分、開(kāi)鎖部分組成,軟件部分對(duì)應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤(pán)掃描程序、啟動(dòng)程序、關(guān)閉程序、密碼設(shè)置程序、EEPROM讀寫(xiě)程序和延時(shí)程序等組成。</p><p> 單片機(jī)電子密碼鎖原理框圖</p><p> 3.3.2 硬件總體構(gòu)成</p>
40、;<p> 在確定了選用什么型號(hào)的單片機(jī)后,就要確定在外圍電路,其外圍電路包括電源輸入部分、鍵盤(pán)輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、晶振部分、顯示部分、報(bào)警部分、開(kāi)鎖部分組成,根據(jù)實(shí)際情況鍵盤(pán)輸入部分選擇4*4矩陣鍵盤(pán),顯示部分選擇字符型液晶顯示LCD1602,密碼存儲(chǔ)部分選用AT24C02芯片來(lái)完成。其原理圖如(附錄一)所示。</p><p> 3.3.2.1 電源部分</p>
41、<p> 密碼鎖主控制部分電源需要用5V直流電源供電,本設(shè)計(jì)直接留出電源端提供外置電源輸入接口,可以使用外置5V穩(wěn)壓直流電源供電,亦可以使用電腦USB接口供電。</p><p> 3.3.2.2 鍵盤(pán)輸入部分</p><p> 由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤(pán)。采用的是矩陣式按鍵鍵盤(pán),它由行線和列線組成,也稱行列式鍵盤(pán),按鍵位于行列的交叉點(diǎn)上,密碼
42、鎖的密碼由鍵盤(pán)輸入完成,與獨(dú)立式按鍵鍵盤(pán)相比,要節(jié)省很多I/O口。本設(shè)計(jì)中使用的這個(gè)4*4鍵盤(pán)不但能完成密碼的輸入還能作特別功能鍵使用,設(shè)置功能等。鍵盤(pán)的每個(gè)按鍵功能在程序設(shè)計(jì)中設(shè)置。其大體功能(看鍵盤(pán)按鍵上的標(biāo)記)及與單片機(jī)引腳接法如下圖所示:</p><p><b> 鍵盤(pán)輸入部分原理圖</b></p><p> 3.3.2.3 密碼外存部分</p&g
43、t;<p> 用EPROM芯片AT24C02存儲(chǔ)密碼。AT24C02是美國(guó)Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5 V)、擦寫(xiě)次數(shù)多(大于10000次)、寫(xiě)入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫(xiě)的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT
44、24C02中帶有的片內(nèi)地址寄存器。每寫(xiě)入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫(xiě)。所有字節(jié)均以單一操作方式讀取。為降低總的寫(xiě)入時(shí)間,一次操作可寫(xiě)入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過(guò)SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。AT24C02正是運(yùn)用了I2C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從
45、機(jī)(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(hào)(通過(guò)SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開(kāi)始和停止的條件。無(wú)論是主機(jī)還是</p><p><b> 密碼存儲(chǔ)電路原理圖</b></p><p> 3.3.2.4 復(fù)位部分</p><p> 單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初
46、始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第—個(gè)單元取指令。無(wú)論是在單片機(jī)剛開(kāi)始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。在復(fù)位期間(即RST為高電平期間),P0口為高組態(tài),P1-P3口輸出高電平;外部程序存儲(chǔ)器讀選通信號(hào)PSEN無(wú)效。地址鎖存信號(hào)ALE也為高電平。根據(jù)實(shí)際情況選擇如圖4-6所示的復(fù)位電路。該電路在最簡(jiǎn)單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻 上的
47、電壓接近電源電壓,即RST為高電平,在電容充電的過(guò)程中RST端電壓逐漸下降,當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時(shí)間大于24個(gè)振蕩周期,CPU能夠可靠復(fù)位。增加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無(wú)法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電容C1通過(guò)R放電。當(dāng)電容C1放電結(jié)束后,RST端的電位為高電平。由于RST為高電平,CPU處于復(fù)位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復(fù)位狀
48、態(tài)。R5的作用在于限制按鍵按下瞬間電容C1的放電電流,避免產(chǎn)</p><p><b> 復(fù)位電路原理圖</b></p><p> 3.3.2.5 晶振部分</p><p> STC89C52引腳XTAL1和XTAL2與晶體振蕩器及電容C按下圖所示方式連接。晶振、電容C1/C2及片內(nèi)與非門(mén)(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振
49、蕩信號(hào)頻率與晶振頻率及電容C1、C2的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1、C2取值范圍在5~30pF之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用12MHZ做為系統(tǒng)的外部晶振。電容取值為30pF。</p><p><b> 晶振電路原理圖</b></p><p> 3.3.2.6 顯示部分</p><p> 為了提高
50、密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來(lái)完成。只有接通電源后,顯示器才處于開(kāi)啟狀態(tài)。否則顯示器將一直處于初始狀態(tài),當(dāng)需要對(duì)密碼鎖進(jìn)行開(kāi)鎖時(shí),按下鍵盤(pán)上的OPEN按鍵后利用鍵盤(pán)上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下確認(rèn)OK鍵,然后用LCD顯示相關(guān)的提示信息。以下是顯示部分接線圖。</p><p>
51、;<b> 顯示電路原理圖</b></p><p> 3.3.2.7 受控開(kāi)鎖部分</p><p> 此處利用聲光模擬密碼鎖電路得控制效果,當(dāng)密碼輸入正確時(shí),綠燈亮,反之則紅燈亮,連續(xù)輸入錯(cuò)誤則蜂鳴器鳴叫報(bào)警。在實(shí)際應(yīng)用中可將綠燈換成電磁閥來(lái)實(shí)現(xiàn)電能向動(dòng)能的轉(zhuǎn)換來(lái)實(shí)現(xiàn)實(shí)際的問(wèn)題。</p><p><b> 聲光指示電路&l
52、t;/b></p><p><b> 4、程序設(shè)計(jì)</b></p><p> 本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、LCD顯示程序、鍵盤(pán)掃描程序、鍵功能程序、密碼設(shè)置程序、EEPROM讀寫(xiě)程序和延時(shí)程序等組成。</p><p> 主要程序設(shè)計(jì)流程圖如下所示:</p><p> 4.1 主程序流程圖<
53、/p><p> 4.2 密碼操作流程圖</p><p> 密碼設(shè)置流程圖 開(kāi)鎖操作流程圖</p><p> 4.3 按鍵功能流程圖</p><p><b> 5、總結(jié)</b></p><p> 本設(shè)計(jì)從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用
54、宏基公司生產(chǎn)的STC89系列STC89C52單片機(jī)與低功耗CMOS型E2PROM AT24C02作為主控芯片與數(shù)據(jù)存儲(chǔ)器單元,結(jié)合外圍的鍵盤(pán)輸入、顯示、報(bào)警、開(kāi)鎖等電路并用C語(yǔ)言編寫(xiě)主控芯片的控制程序,設(shè)計(jì)了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。設(shè)計(jì)基本可行可以達(dá)到設(shè)計(jì)目地。使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡(jiǎn)單,易于開(kāi)發(fā),成本較低,安全可靠,操作方便等特點(diǎn),可應(yīng)用于住宅、辦公室的保險(xiǎn)箱及檔案柜等需要防盜的場(chǎng)所,有一定的實(shí)
55、用性。該電路設(shè)計(jì)還具有按鍵有效提示,輸入錯(cuò)誤提示,控制開(kāi)鎖電平,控制報(bào)警電路,修改密碼等多種功能。由于設(shè)計(jì)此電路的時(shí)間較倉(cāng)促,其中還有些許未考慮周全的因素,還需要繼續(xù)的改進(jìn)和完善。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 石文軒,宋薇.基于單片機(jī)MCS一51的智能密碼鎖設(shè)計(jì)[M].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,(01);<
56、/p><p> [2] 祖龍起,劉仁杰.一種新型可編程密碼鎖[J].大連輕工業(yè)學(xué)院學(xué)報(bào),2002,(01);</p><p> [3] 葉啟明.單片機(jī)制作的新型安全密碼鎖[J].家庭電子,2005,(10);</p><p> [4] 郭海英.基于單片機(jī)的電子安全密碼鎖的設(shè)計(jì)[M].現(xiàn)代電子技術(shù),2005,(13);</p><p> [
57、5] 李明喜.新型電子密碼鎖的設(shè)計(jì)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2004,(03);</p><p> [6] 董繼成.一種新型安全的單片機(jī)密碼鎖[J].電子技術(shù),2004,(03);</p><p> [7] 祖龍起,劉仁杰,孫乃凌.一種新穎的電子密碼鎖[J].電子世界,2001,(10);</p><p> [8] 李明喜.新型電子密碼鎖的設(shè)計(jì)[J].機(jī)電產(chǎn)
58、品開(kāi)發(fā)與創(chuàng)新,2004,(03);</p><p> [9] 楊茂濤.一種電子密碼鎖的實(shí)現(xiàn)[J].福建電腦,2004,(08);</p><p> [10] 瞿貴榮.實(shí)用電子密碼鎖[J].家庭電子,2000,(07);</p><p> [11] ATmega.ATmega8L-8AC,2006,(01);</p><p> [12]
59、 Wireless World,1998,vol、84,No、1509,p69;</p><p> [13] 王千.實(shí)用電子電路大全[M],電子工業(yè)出版社,2001,p101;</p><p> [14] 何立民.單片機(jī)應(yīng)用技術(shù)選編[M],北京:北京航空大學(xué)出版社,1998;</p><p> [15] 李華.MCS-51系列單片機(jī)使用接口技術(shù)[M],北京航空
60、航天大學(xué)出版社,1993;</p><p> [16] 彭為.單片機(jī)典型系統(tǒng)設(shè)計(jì)實(shí)例精講[M],北京:電子工業(yè)出版社,2006;</p><p> [17] 潘永雄.新編單片機(jī)原理與應(yīng)用[M],西安:西安電子科技大學(xué)出版社,2003;</p><p> [18] 童詩(shī)白,華成英,模擬電子技術(shù)基礎(chǔ)[M],北京:高等教育出版社,2000;</p>&
61、lt;p> [19] 閻石主.數(shù)字電子技術(shù)基礎(chǔ)[M],北京:高等教育出版社,1998;</p><p> [20] 樊昌信,曹麗娜.通信原理[M],北京:國(guó)防工業(yè)出版社,2007;</p><p> [21] 李瀚蓀.電路分析基礎(chǔ)[M],北京:高等教育出版社1991;</p><p> 附件一:電路原理圖作品實(shí)物圖</p><p&g
62、t;<b> 1、電路原理圖</b></p><p><b> 2、作品實(shí)物圖</b></p><p><b> 附件三:程序清單</b></p><p><b> 主程序</b></p><p> //**********家庭電子鎖 *****
63、*******/</p><p> //**********C語(yǔ)言版***************/</p><p> //**********2010年 1月************/</p><p> #include <REG52.H></p><p> #include <string.h></p
64、><p> #include <port.h></p><p> #include <1602.h></p><p> #include <24c02.h></p><p> #include<keyscan.h></p><p> uchar code a0[]
65、={"Password Setting"};</p><p> uchar code a1[]={"welcome to here"} ;</p><p> uchar code a2[]={"input password:"};</p><p> uchar code a4[]={"in
66、put length:"};</p><p> uchar code a5[]={"wait for ......"};</p><p> uchar code a6[]={"secret is saving"};</p><p> uchar code a7[]={"wait for ......&
67、quot;};</p><p> uchar code a8[]={"secret is OK"};</p><p> uchar code a9[] ={"Setting completed"};</p><p> uchar code a10[] ={"secret is ERROR"};<
68、/p><p> uchar code a11[] ={"setting serect"};</p><p> uchar code b1[]={"Families lock"};</p><p> uchar code b2[]={"Password"};</p><p> uc
69、har code c1[]={"Open the door "};</p><p> uchar code c2[]={"Welcome host "};</p><p> uchar code c3[]={"who are you ? " };</p><p> uchar code
70、 c4[]={"I don't know you"};</p><p> uchar code c5[]={"Password ERROR!"};</p><p> bit FLAG1,FLAG2,FLAG3,FALG4;</p><p> uchar idata set1[11]={0,0,0,0,0,0,0
71、,0,0,0,0};</p><p> uchar idata set2[11]={0,0,0,0,0,0,0,0,0,0,0}; </p><p> enum jian{enter=10,cancel,open,setserect} ;</p><p> /////////////////////////////////////////</p>
72、<p> //用戶密碼設(shè)置user(); </p><p> // 密碼輸入 inputserect() </p><p> // 開(kāi)鎖顯示 OPENLOCK()</p><p> //密碼讀入readserect()</p><p> //*******************密碼讀入 </p>
73、;<p> void readserect()</p><p><b> { int i;</b></p><p> for(i=0;i<read_random(20);i++)</p><p><b> {</b></p><p> set1[i]= read_ran
74、dom(i) ;</p><p><b> }</b></p><p><b> }</b></p><p> void yanzh1()</p><p><b> { </b></p><p><b> clear();</b
75、></p><p> write1602(0,0,a8);</p><p> write1602(0,1,a5);</p><p> delay(1000);</p><p><b> clear(); </b></p><p> write1602(0,0,c1);</p&
76、gt;<p> write1602(0,1,c2);</p><p> delay(1000);</p><p> delay(1000);</p><p><b> clear();</b></p><p><b> }</b></p><p>
77、void yanzh2()</p><p><b> {</b></p><p> write1602(0,0,a10);</p><p> write1602(0,1,a5);</p><p> delay(1000);</p><p> write1602(0,0,c3);</
78、p><p> write1602(0,1,c4);</p><p> delay(1000);</p><p> delay(1000);</p><p><b> clear();</b></p><p><b> }</b></p><p>
79、 void clear1()</p><p><b> { int i;</b></p><p> for(i=0;i<16;i++)</p><p> {wcom(0xc0+i);</p><p> wdata(0x20);}</p><p><b> }</b
80、></p><p> ///////////////////////////////////////////////////////</p><p><b> // 開(kāi)鎖函數(shù) </b></p><p> void openlock()</p><p><b> {</b></p&
81、gt;<p> uchar i=0,m,j=0;</p><p> m=read_random(20) ;</p><p> readserect();</p><p> next: key=18;</p><p><b> i=0;</b></p><p><b&
82、gt; j++;</b></p><p> while(key==18)</p><p><b> //矩陣鍵盤(pán)</b></p><p><b> { </b></p><p> while(flag)</p><p> keydown();</
83、p><p><b> flag=1;</b></p><p> if(key!=18) {</p><p> wcom(0xc0+i);//顯示輸入密碼 </p><p> wdata('*');</p><p> set2[i]=key+0x30;</p>
84、<p><b> i++; </b></p><p><b> }</b></p><p> if(key==enter){ key=0;i=0;}</p><p><b> else </b></p><p><b> key=18;</b
85、></p><p><b> }</b></p><p> for(i=0;i<m;i++)</p><p> if(set1[i]!=set2[i]&&j!=3) {for(i=0;i<m;i++) set2[i]=0; RED=0; GREEN=1; clear(); write1602( 0,0
86、, c5); delay(1000);clear(); write1602( 0,0, a2); goto next; }</p><p> if(j==3) {j=0;clear(); yanzh2();BEEP=0;RED=0; GREEN=1;}</p><p><b> else </b></p><p> { yanzh1(
87、); GREEN=0;RED=1;}</p><p><b> }</b></p><p> ///////////////////////////////////////////////////</p><p> ///////////////////////////////////////////////////</p>
88、<p> useserect()</p><p><b> {</b></p><p> uchar i=0 ;</p><p> write1602(0,0,a0);</p><p> write1602(0,1,a5);</p><p> delay(1000);&l
89、t;/p><p><b> clear();</b></p><p> write1602(0,0,a2);</p><p><b> key=18;</b></p><p> while(key==18)</p><p><b> //矩陣鍵盤(pán)</b&
90、gt;</p><p> { while(flag)</p><p> keydown();</p><p><b> flag=1;</b></p><p> if(key!=18) {</p><p> wcom(0xc0+i);//顯示輸入密碼 </p><
91、p> wdata(key+0x30);</p><p> write_byte(i,key+0x30); //密碼存儲(chǔ) </p><p><b> i++; </b></p><p><b> }</b></p><p> write_byte(20,i-1); //密碼存儲(chǔ) &
92、lt;/p><p> if(key==enter) key=0;</p><p><b> else </b></p><p><b> key=18;</b></p><p><b> }</b></p><p><b> clear(
93、);</b></p><p> write1602(0,0,a6);</p><p> write1602(0,1,a7);</p><p> delay(1000);</p><p><b> clear();</b></p><p><b> }</b&g
94、t;</p><p> /////////////////////////////////////////////////// </p><p> void main()</p><p><b> {</b></p><p><b> /////顯初始化</b></p>&l
95、t;p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> write1602(0,0,b1);</p><p> write1602(0,1,a1);</p>
96、<p> while(flag)</p><p> keydown();</p><p><b> flag=1;</b></p><p> switch(key)</p><p><b> {</b></p><p> case open:
97、 { clear(); write1602( 0,0, a2); openlock(); break; }</p><p> case setserect : { useserect(); break; }</p><p><b> }</b></p><p><b> }</b>&l
98、t;/p><p><b> 單片機(jī)引腳定義:</b></p><p> sbit RS = P1^0; //RS數(shù)據(jù)命令選擇端,高電平數(shù)據(jù),低電平命令</p><p> sbit RW = P1^1; //RW讀寫(xiě)選擇端,高電平讀操作,低電平寫(xiě)操作</p><p> sbit E =
99、 P1^2; //E使能控制端,E高電平跳變?yōu)榈碗娖綍r(shí)LCD執(zhí)行命令</p><p> sbit SDA = P3^5; </p><p> sbit SCL = P3^4; </p><p> sbit DB = P2;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口</p><p>
100、 sbit date1602 =P0;</p><p> sbit k1= P3^6; </p><p> sbit k2= P3^7; </p><p> sbit k3= P1^5; </p><p> sbit BEEP=P1^3; //報(bào)警器 </p><p> sbit RED=P1^5;&
101、lt;/p><p> sbit GREEN=P1^4;</p><p> 24C02存取程序C代碼:</p><p> #include <intrins.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned i
102、nt </p><p> #define OP_WRITE 0xa0 // 器件地址以及寫(xiě)入操作 </p><p> #define OP_READ 0xa1 // 器件地址以及讀取操作 </p><p> void delayNOP() {_nop_();_nop_();_nop_();_nop_();} </
103、p><p> void delayms(uint ms) </p><p><b> // 延時(shí)子程序 </b></p><p><b> { </b></p><p><b> uchar k; </b></p><p> while(ms--
104、) </p><p><b> { </b></p><p> for(k = 0; k < 90; k++); </p><p><b> } </b></p><p><b> }</b></p><p> /************
105、**********************************************/ </p><p> void start() </p><p><b> //開(kāi)始位 </b></p><p><b> { </b></p><p><b> SDA = 1; <
106、;/b></p><p><b> SCL = 1; </b></p><p> delayNOP(); </p><p><b> SDA = 0; </b></p><p> delayNOP(); </p><p><b> SCL = 0;
107、</b></p><p><b> } </b></p><p> /**********************************************************/ </p><p> void stop() </p><p><b> // 停止位 </b&g
108、t;</p><p><b> { </b></p><p><b> SDA = 0; </b></p><p> delayNOP(); </p><p><b> SCL = 1; </b></p><p> delayNOP(); &l
109、t;/p><p><b> SDA = 1; </b></p><p><b> } </b></p><p> /********************************************寫(xiě)操作*************/ </p><p> uchar shin() </
110、p><p> // 從AT24C02移出數(shù)據(jù)到MCU </p><p><b> { </b></p><p> uchar i,read_data; </p><p> for(i = 0; i < 8; i++) </p><p><b> { </b><
111、;/p><p><b> SCL = 1; </b></p><p> read_data <<= 1; </p><p> read_data |= SDA; </p><p><b> SCL = 0; </b></p><p><b> }
112、</b></p><p> return(read_data); </p><p><b> } </b></p><p> /*************************************************讀操作*********/ </p><p> bit shout(ucha
113、r write_data) </p><p> // 從MCU移出數(shù)據(jù)到AT24C02 </p><p><b> { </b></p><p><b> uchar i; </b></p><p> bit ack_bit; </p><p> for(i =
114、0; i < 8; i++) // 循環(huán)移入8個(gè)位 </p><p><b> { </b></p><p> SDA = (bit)(write_data & 0x80); </p><p><b> _nop_(); </b></p><p><b> SCL
115、 = 1; </b></p><p> delayNOP(); </p><p><b> SCL = 0; </b></p><p> write_data <<= 1; </p><p><b> } </b></p><p> SDA
116、= 1; // 讀取應(yīng)答 </p><p> delayNOP(); </p><p><b> SCL = 1; </b></p><p> delayNOP(); </p><p> ack_bit = SDA; </p><p><b&g
117、t; SCL = 0; </b></p><p> return ack_bit; // 返回AT24C02應(yīng)答位 </p><p><b> } </b></p><p> /**********************************************************/ <
118、;/p><p> void write_byte(uchar addr, uchar write_data) </p><p> // 在指定地址addr處寫(xiě)入數(shù)據(jù)write_data </p><p><b> { </b></p><p><b> start(); </b></p&g
119、t;<p> shout(OP_WRITE); </p><p> shout(addr); </p><p> shout(write_data); </p><p><b> stop(); </b></p><p> delayms(10); // 寫(xiě)入周期 </p&
120、gt;<p><b> } </b></p><p> /**********************************************************/ </p><p> /**********************************************************/ </p><
121、;p> uchar read_current() </p><p> // 在當(dāng)前地址讀取 </p><p><b> { </b></p><p> uchar read_data; </p><p><b> start(); </b></p><p>
122、 shout(OP_READ); </p><p> read_data = shin(); </p><p><b> stop(); </b></p><p> return read_data; </p><p><b> } </b></p><p> /*
123、*********************************************************/ </p><p> uchar read_random(uchar random_addr) </p><p> // 在指定地址讀取 </p><p><b> { </b></p><p>&l
124、t;b> start(); </b></p><p> shout(OP_WRITE); </p><p> shout(random_addr); </p><p> return(read_current()); </p><p><b> } </b></p><p&
125、gt; /*********************************************************</p><p> void write_byte( uchar addr, uchar write_data); //在任意地址傳送數(shù)據(jù) </p><p> void fill_byte(uchar fill_size,uchar fill_data); //
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)控制的電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)控制的電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)控制的電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖
- 基于單片機(jī)的電子密碼鎖設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字密碼鎖設(shè)計(jì)
- 單片機(jī)-密碼鎖課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-密碼鎖
- 單片機(jī)課程設(shè)計(jì)--密碼鎖
- 單片機(jī)課程設(shè)計(jì)-密碼鎖
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子密碼鎖
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)8051的密碼鎖控制
- 單片機(jī)課程設(shè)計(jì)--電子密碼鎖報(bào)告
- 單片機(jī)課程設(shè)計(jì)---電子密碼鎖報(bào)告
- 單片機(jī)課程設(shè)計(jì)---密碼鎖
評(píng)論
0/150
提交評(píng)論