版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> LCD遙控密碼鎖的設(shè)計(jì)與制作 </p><p><b> 摘 要</b></p><p><b> 【摘要】</b></p><p> 隨著科技的日益發(fā)展,電子密碼控制系統(tǒng)已越來越符合人們的要求。本文介紹了基于單片機(jī)和串行EEPROM的智能
2、密碼控制系統(tǒng),對(duì)系統(tǒng)硬件設(shè)計(jì)和軟件實(shí)現(xiàn)進(jìn)行了詳細(xì)的描述。該系統(tǒng)采用AT89C51單片機(jī)和AT24C01串行EEPROM,通過AT89C51模擬I2C總線和AT24C02通訊,實(shí)現(xiàn)密碼控制的功能。本文從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國Atmel公司的單片機(jī)AT89C51作為主控芯片與數(shù)據(jù)存儲(chǔ)器單元,結(jié)合外圍的矩陣鍵盤輸入、LCD液晶顯示、報(bào)警、開鎖等,用C語言編寫主控芯片的控制程序與EEPROM讀寫程序相結(jié)合,設(shè)計(jì)了一款可以多次更改密碼,具有
3、報(bào)警功能的電子密碼控制系統(tǒng)。這種電路設(shè)計(jì)具有防試探按鍵輸入、智能控制上鎖、開鎖、報(bào)警、修改密碼等多種功能。密碼長度可變、保密性強(qiáng)、靈活性高。經(jīng)實(shí)驗(yàn)證明,該密碼控制系統(tǒng)具有設(shè)計(jì)方法合理,簡(jiǎn)單易行,成本低,安全使用等特點(diǎn),符合車輛、辦公室用鎖要求,具有推廣價(jià)值。</p><p> 關(guān)鍵詞: 單片機(jī);密碼鎖;遙控;EEPROM讀寫程序</p><p><b> 目 錄</b
4、></p><p><b> 1 引 言3</b></p><p> 1.1 選題背景3</p><p> 1.2 LCD電子密碼控制簡(jiǎn)介3</p><p><b> 2 系統(tǒng)設(shè)計(jì)4</b></p><p> 2.1 選題論證4</p&
5、gt;<p> 2.2 方案選擇4</p><p> 3硬件電路的設(shè)計(jì)6</p><p> 3.1 主控芯片 AT89S52簡(jiǎn)介6</p><p> 3.1.1 AT89S52芯片簡(jiǎn)介6</p><p> 3.1.2 AT89S52引腳功能說明7</p><p> 3.2各
6、部分電路元件介紹9</p><p> 3.2.1 LCD1602液晶顯示器9</p><p> 3.2.2 1602主要技術(shù)參數(shù)9</p><p> 3.2.3 LCD1602 基本操作程序10</p><p> 3.2.4 晶體振蕩器10</p><p> 3.2.5 AT24C01串行
7、EEPROM11</p><p> 3.2.6 I2C總線說明12</p><p> 3.3 硬件電路設(shè)計(jì)14</p><p> 3.3.1 硬件系統(tǒng)框架設(shè)計(jì)14</p><p> 3.3.2 晶振電路15</p><p> 3.3.3 復(fù)位電路16</p><p&g
8、t; 3.3.4 LCD液晶顯示電路16</p><p> 3.3.5 遙控部分電路16</p><p> 4 軟件設(shè)計(jì)19</p><p> 4.1 主程序流程圖19</p><p> 4.2鍵功能程序流程圖20</p><p> 4.3 密碼修改程序流程圖21</p>
9、<p> 4.4 LCD液晶顯示流程圖21</p><p><b> 結(jié)束語24</b></p><p><b> 致謝25</b></p><p><b> 參考文獻(xiàn)26</b></p><p><b> 附錄27</b&g
10、t;</p><p> 附錄1 電路原理圖27</p><p> 附錄2 PCB板圖28</p><p><b> 附錄3 程序29</b></p><p> LCD遙控密碼鎖的設(shè)計(jì)與制作</p><p><b> 1 引 言</b></p>
11、<p><b> 1.1 選題背景</b></p><p> 在安全技術(shù)防范領(lǐng)域,具有防盜報(bào)警功能的電子密碼控制系統(tǒng)逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼控制系統(tǒng),克服了機(jī)械式密碼控制的密碼量少、安全性能差的缺點(diǎn),使電子密碼控制系統(tǒng)無論在技術(shù)上還是在性能上都大大提高了一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機(jī)的問世,出現(xiàn)了帶微處理器的智能密碼控制系統(tǒng),它除具有傳統(tǒng)電子密碼控制系統(tǒng)的功
12、能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼控制系統(tǒng)具有很高的安全性、可靠性,應(yīng)用日益廣泛。</p><p> 1.2 電子密碼控制簡(jiǎn)介</p><p> 電子密碼控制是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。電子密碼控制不論性能還是安全性都已大大超過了機(jī)械類。其特點(diǎn)如下:</p><p>
13、1) 保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于機(jī)械控制。隨機(jī)開鎖成功率幾乎為零。</p><p> 2) 密碼可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使控制的保密性下降。</p><p> 3) 誤碼輸入保護(hù),當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。</p><p> 4) 無活動(dòng)零件,不會(huì)磨損,壽命長。</p><p&g
14、t; 5) 使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開鎖。</p><p> 6) 電子密碼控制系統(tǒng)具有操作簡(jiǎn)單易行,一學(xué)即會(huì)的特點(diǎn)。</p><p><b> 2 系統(tǒng)設(shè)計(jì)</b></p><p> 2.1 選題論證 </p><p> 制作無線遙控密碼鎖可以用一片AT89S52,以單片機(jī)為核心通過編程來
15、實(shí)現(xiàn)密碼部分使用一片EEPROM實(shí)現(xiàn)掉電處理,遙控部分可以采用PT2262和PT2272之所以選擇單片機(jī)編程是因?yàn)榫幊痰撵`活性可以彌補(bǔ)硬件電路的不足,EEPROM存儲(chǔ)密碼使整個(gè)系統(tǒng)更安全穩(wěn)定。</p><p> 2.2 方案選擇 </p><p> 方案一:用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼控制系統(tǒng)的核心控制,共設(shè)了9個(gè)用戶輸入鍵,其中只有4個(gè)是有效的密碼按鍵,
16、其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動(dòng)清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時(shí)間超過10秒(一般情況下,用戶不會(huì)超過10秒,若用戶覺得不便,還可以修改)電路將報(bào)警20秒,若電路連續(xù)報(bào)警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作 。采用數(shù)字電路設(shè)計(jì)方案時(shí)設(shè)計(jì)雖然簡(jiǎn)單,但控制的準(zhǔn)確性和靈活性差。故不采用。</p><p> 方案二:由于單片機(jī)種類繁多,各種型號(hào)都有其一定的應(yīng)用環(huán)境
17、,因此在選用時(shí)要多加比較,合理選擇,以期獲得最佳的性價(jià)比。一般來說在選取單片機(jī)時(shí)從下面幾個(gè)方面考慮:性能、存儲(chǔ)器、運(yùn)行速度、I/O口、定時(shí)/計(jì)數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些還有一些最基本的,比如:中斷源的數(shù)量和優(yōu)先級(jí)、工作溫度范圍、有沒有低電壓檢測(cè)功能、單片機(jī)內(nèi)有無時(shí)鐘振蕩器、有無上電復(fù)位功能等。在開發(fā)過程中單片機(jī)還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應(yīng)性、技術(shù)支持和服
18、務(wù)等等因素 。基于以上因素本設(shè)計(jì)選用單片機(jī)AT89S52作為本設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼控制功能。在單片機(jī)的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。當(dāng)用戶需要開鎖時(shí),先按鍵盤的數(shù)字鍵0-3輸入密碼。密碼輸完系統(tǒng)會(huì)自動(dòng)判斷密碼正確與否,如果密碼輸入正確則開鎖,不正確顯示密碼錯(cuò)誤重新輸入密碼,當(dāng)三次密碼錯(cuò)誤系統(tǒng)自動(dòng)鎖定并不接收
19、任何輸入;當(dāng)用戶需要修改密碼時(shí),先按下鍵盤設(shè)置鍵后輸入原來的密碼</p><p> 可以看出方案二的控制靈活,準(zhǔn)確性好,且保密性強(qiáng)還具有擴(kuò)展功能,根據(jù)現(xiàn)實(shí)生活的需要此次設(shè)計(jì)采用此方案。 </p><p><b> 3硬件電路的設(shè)計(jì)</b></p><p> 3.1 主控芯片 AT89S52簡(jiǎn)介 </p><p>
20、; AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 3.1
21、.1 AT89S52芯片簡(jiǎn)介</p><p> AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口中斷繼續(xù)工作。掉
22、電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p><b> 其主要功能特性:</b></p><p> 兼容MCS-51指令系統(tǒng) 4k可反復(fù)擦寫(>1000次)Flash ROM</p><p> 32個(gè)雙向I/O口
23、 4.5-5.5V工作電壓</p><p> 2個(gè)16位可編程定時(shí)/計(jì)數(shù)器 時(shí)鐘頻率0-33MHz</p><p> 全雙工UART串行中斷口線 128x8 bit內(nèi)部RAM</p><p> 2個(gè)外部中斷源 低功耗空閑和省電模式</p><p> 中斷喚醒省電模式
24、 3級(jí)加密</p><p> 軟件設(shè)置空閑和省電功能 雙數(shù)據(jù)寄存器指針 </p><p> 可以看出AT89C51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,以及片內(nèi)振蕩器和時(shí)鐘。同時(shí), AT89C51
25、可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式時(shí)停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式是在RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到一個(gè)硬件復(fù)位。</p><p> 3.1.2 AT89S52引腳功能說明</p><p><b> VCC:電源電壓</b></p>
26、<p><b> GND:地</b></p><p> P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口,作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口寫“1”可作為高阻抗輸入端口。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí)
27、,輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)校驗(yàn)期間,P1接收低8位地址。</p><p> P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8
28、位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流I。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行:MOVX @Ri 指令)時(shí),P2口線上的內(nèi)(也即特殊功能寄存器,在整個(gè)訪問期間不改變。Flash 編程或校驗(yàn)時(shí),P2也接收高位地址和其它控制信號(hào)。</p><p>
29、P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流I。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,P3口的第二功能如下表2。</p><p> 表2 為 P3口的第二功能</p><p>&
30、lt;b> 表2</b></p><p> RST:復(fù)位輸入。當(dāng)振蕩工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期上高電平將使單片機(jī)復(fù)位。ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不再訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目地,要注意的是:當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE
31、脈沖。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置禁位后,只有一條MOVX 和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳伎被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。</p><p> PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。當(dāng)
32、訪問外部數(shù)據(jù)存儲(chǔ)器,高有兩次有效的PSEN信號(hào)。</p><p> EA/VPP:外部訪問允許。欲使CPU訪問外部程序存儲(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&
33、gt; XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 各部分電路元件介紹 </p><p> 3.2.1 LCD1602液晶顯示器</p><p> 1602型LCD的接口信號(hào)說明如表:</p><p> 3.2.
34、2 1602主要技術(shù)參數(shù)</p><p> 1602型LCD的主要技術(shù)參數(shù)如表3所示</p><p> 表3-6為 1602型LCD的主要技術(shù)參數(shù)</p><p><b> 表3</b></p><p> 3.2.3 LCD1602 基本操作程序 </p><p> 讀狀態(tài):
35、輸入:RS=L,RW=L,E=H 輸出:D0-D7=狀態(tài)字</p><p> 讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:無</p><p> 寫指令:輸入:RS=L,RW=L,D0-D7=指令碼,E=高脈沖 輸出:D0-D7=數(shù)據(jù)</p><p> 寫數(shù)據(jù):輸入:RS=H,RW=
36、L,D0-D7=數(shù)據(jù),E=高脈沖 輸出:無</p><p> 3.2.4 晶體振蕩器</p><p> 晶體振蕩器,簡(jiǎn)稱晶振,其作用在于產(chǎn)生原始的時(shí)鐘頻率,這個(gè)頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了電腦中各種不同的總線頻率。以聲卡為例,要實(shí)現(xiàn)對(duì)模擬信號(hào)44.1kHz或48kHz的采樣,頻率發(fā)生器就必須提供一個(gè)44.1kHz或48kHz的時(shí)鐘頻率。如果需要對(duì)這兩種音頻同時(shí)支持
37、的話,聲卡就需要有兩顆晶振。但是現(xiàn)在的娛樂級(jí)聲卡為了降低成本,通常都采用SCR將輸出的采樣頻率固定在48kHz,但是SRC會(huì)對(duì)音質(zhì)帶來損害,而且現(xiàn)在的娛樂級(jí)聲卡都沒有很好地解決這個(gè)問題?,F(xiàn)在應(yīng)用最廣泛的是石英晶體振蕩器。</p><p> 石英晶體振蕩器是一種高精度和高穩(wěn)定度的振蕩器,石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。石英晶體振蕩器廣泛地應(yīng)用在
38、電視機(jī)、影碟機(jī)、錄像機(jī)、無線通訊設(shè)備、電子鐘表、單片機(jī)、數(shù)字儀器儀表等電子設(shè)備中。為數(shù)據(jù)處理設(shè)備產(chǎn)生時(shí)鐘信號(hào)和為特定系統(tǒng)提供基準(zhǔn)信號(hào)。在單片機(jī)中為其提供時(shí)鐘頻率。</p><p> 石英晶體振蕩器是利用石英晶體(二氧化硅的結(jié)晶體)的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片(簡(jiǎn)稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個(gè)對(duì)應(yīng)面上涂敷上銀層用作電極使用,在每個(gè)電極
39、上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡(jiǎn)稱為石英晶體或晶體、晶振。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會(huì)使晶片產(chǎn)生機(jī)械變形振動(dòng),此現(xiàn)象即所謂逆壓電效應(yīng)。當(dāng)外加電壓頻率等于晶體諧振器的固有頻率時(shí),就會(huì)發(fā)生壓電諧振,從而導(dǎo)致機(jī)械變形的振幅突然增大。</p><p> 本設(shè)計(jì)中采用12MHZ做系統(tǒng)的外部晶振。電容取值為20pF。<
40、;/p><p> 3.2.5 AT24C01串行EEPROM</p><p> 如圖1為AT24C02的芯片引腳圖。</p><p> 圖1 AT24C02的芯片引腳圖</p><p> AT24C02提供電可擦除的串行1024位存儲(chǔ)或可編程只讀存儲(chǔ)器(EEPROM)128字(8位/字)。</p><p> 芯
41、片在低壓的工業(yè)與商業(yè)應(yīng)用中進(jìn)行了最優(yōu)化。AT24C01的封裝為8腳PDIP、8腳JEDEC</p><p> SOIC、8腳TSSOP,通過2線制串行接口進(jìn)行數(shù)據(jù)傳輸。另外,整個(gè)系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)兩個(gè)版本。</p><p><b> 設(shè)備操作:</b></p><p> C L O C
42、K 和 D A T A 變化:SDA管腳通常外部要拉高。SDA管腳上的數(shù)據(jù)只能在SCL低期間改變。數(shù)據(jù)在SCL高期間改變定義為一個(gè)開始或停止信號(hào)。</p><p> 開始狀態(tài):在任何操作之前必須有一個(gè)開始信號(hào)----在SCL為高時(shí)SDA上產(chǎn)生一個(gè)下降沿。</p><p> 停止?fàn)顟B(tài): SCL為高時(shí)SDA產(chǎn)生一個(gè)上升沿是停止信號(hào),停止信號(hào)后將停止所有通信。</p><
43、p> 在一個(gè)讀的序列之后,停止信號(hào)將讓EEPROM進(jìn)入備用電源模式。</p><p> 3.2.6 I2C總線說明</p><p> I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的
44、通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇。可隨時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。</p><p> 1 I2C總線的硬件結(jié)構(gòu)</p><p> I2C串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的
45、時(shí)鐘線SCL接到總線的SCL上。</p><p> 為了避免總線信號(hào)的混亂,要求各設(shè)備連接到總線的輸出端時(shí)必須是開漏輸出或集電極開路輸出。設(shè)備上的串行數(shù)據(jù)線SDA接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。而串行時(shí)鐘線也應(yīng)是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī),一方面要通過SCL輸出電路發(fā)送時(shí)鐘信號(hào),另一方面還要檢測(cè)總線上的SCL電平,以決定什么時(shí)候發(fā)送下一個(gè)時(shí)鐘脈沖電平;作
46、為接受主機(jī)命令的從機(jī),要按總線上的SCL信號(hào)發(fā)出或接收SDA上的信號(hào),也可以向SCL線發(fā)出低電平信號(hào)以延長總線時(shí)鐘信號(hào)周期??偩€空閑時(shí),因各設(shè)備都是開漏輸出,上拉電阻RP使SDA和SCL線都保持高電平。任一設(shè)備輸出的低電平都將使相應(yīng)的總線信號(hào)線變低,也就是說:各設(shè)備的SDA是“與”關(guān)系,SCL也是“與”關(guān)系。 </p><p> 總線對(duì)設(shè)備接口電路的制造工藝和電平都沒有特殊的要求(NMOS、CMOS都可以兼容)
47、。在I2C總線上的數(shù)據(jù)傳送率可高達(dá)每秒十萬位,高速方式時(shí)在每秒四十萬位以上。另外,總線上允許連接的設(shè)備數(shù)以其電容量不超過400pF為限。 </p><p> 總線的運(yùn)行(數(shù)據(jù)傳輸)由主機(jī)控制。所謂主機(jī)是指啟動(dòng)數(shù)據(jù)的傳送(發(fā)出啟動(dòng)信號(hào))、發(fā)出時(shí)鐘信號(hào)以及傳送結(jié)束時(shí)發(fā)出停止信號(hào)的設(shè)備,通常主機(jī)都是微處理器。被主機(jī)尋訪的設(shè)備稱為從機(jī)。為了進(jìn)行通訊,每個(gè)接到I2C總線的設(shè)備都有一個(gè)唯一的地址,以便于主機(jī)尋訪。主機(jī)和從機(jī)
48、的數(shù)據(jù)傳送,可以由主機(jī)發(fā)送數(shù)據(jù)到從機(jī),也可以由從機(jī)發(fā)到主機(jī)。凡是發(fā)送數(shù)據(jù)到總線的設(shè)備稱為發(fā)送器,從總線上接收數(shù)據(jù)的設(shè)備被稱為接受器。</p><p> I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號(hào), 它們分別是:開始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。</p><p> 開始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。</p><p> 結(jié)束信號(hào):S
49、CL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。 </p><p> 應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。如圖3-3所示:</p><p>
50、圖2 開始、結(jié)束信號(hào)圖</p><p> 目前有很多半導(dǎo)體集成電路上都集成了I2C接口。帶有I2C接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供I2C接口。</p><p><b> 總線基本操作:</b></p>&l
51、t;p> I2C規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來表示起始和停止條件。</p><p> 控制字節(jié)
52、:在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),接著三位為片選,最后一位為讀寫位,當(dāng)為1時(shí)為讀操作,為0時(shí)為寫操作。</p><p> 寫操作:寫操作分為字節(jié)寫和頁面寫兩種操作,對(duì)于頁面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同。</p><p> 讀操作:讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。圖4
53、給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期時(shí)發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。</p><p> 3.3 硬件電路設(shè)計(jì) </p><p> 3.3.1 硬件系統(tǒng)框架設(shè)計(jì)</p><p> 本設(shè)計(jì)主要由單片機(jī)、獨(dú)立式鍵盤、遙控模塊、液晶顯示器和
54、密碼存儲(chǔ)等部分組成。其中獨(dú)立式鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的獨(dú)立式鍵盤輸入密碼,后經(jīng)過單片機(jī)對(duì)用戶輸入的密碼與自己保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,判斷開鎖系統(tǒng)開鎖與否。本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、復(fù)位部分、晶振部分、顯示部分、遙控部分組成,軟件部分對(duì)應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動(dòng)程序、關(guān)閉程序、鍵功能程序、
55、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。其原理框圖如圖4所示。</p><p> 圖4 電子密碼鎖原理框圖</p><p> 3.3.2 晶振電路</p><p> CPU工作時(shí)都必須有一個(gè)時(shí)鐘脈沖。有兩種方式可以向89S52提供時(shí)鐘脈沖:一是外部時(shí)鐘方式,即使用外部電路向89S52提供始終脈沖,;二是內(nèi)部時(shí)鐘方式,本設(shè)計(jì)采用了內(nèi)部時(shí)鐘方式,即使
56、用晶振由89S52內(nèi)部電路產(chǎn)生時(shí)鐘脈沖。其電路見圖3所示。</p><p> 圖3 89S52的時(shí)鐘脈沖</p><p> 圖3中:C3一般為石英晶體,其頻率由系統(tǒng)需要和器件決定,在頻率穩(wěn)定度要求不高時(shí)也可以使用陶瓷濾波器。</p><p> 3.3.3 復(fù)位電路</p><p> 使CPU開始工作的方法就是給CPU一個(gè)復(fù)位信號(hào),
57、CPU收到復(fù)位信號(hào)后將內(nèi)部特殊功能寄存器設(shè)置為規(guī)定值,并將程序計(jì)數(shù)器設(shè)置為“0000H”。復(fù)位信號(hào)結(jié)束后,CPU從程序存儲(chǔ)器“0000H”處開始執(zhí)行程序。89S52為高電平復(fù)位,一般有2種復(fù)位方法。</p><p> 圖4為最簡(jiǎn)單的上電復(fù)位和手動(dòng)復(fù)位方法。</p><p> 圖4 89S52的復(fù)位電路</p><p> 3.3.4 LCD液晶顯示電路<
58、;/p><p> 為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來完成。通過LCD顯示屏,可以清楚的判斷出密碼鎖所處的狀態(tài) 。其顯示部分引腳接口如圖5所示:</p><p> 圖5 LCD顯示電路</p><p> 3.3.5 遙控部分電路</p><p> 編碼解碼芯片PT2262/PT2
59、272芯片原理簡(jiǎn)介: </p><p> PT2262/2272是臺(tái)灣普城公司生產(chǎn)的一種CMOS工藝制造的低功耗低價(jià)位通用編解碼電路,PT2262/2272最多可有12位(A0-A11)三態(tài)地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441地址碼,PT2262最多可有6位(D0-D5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從17腳串行輸出,可用于無線遙控發(fā)射電路。</p><p&g
60、t; 編碼芯片PT2262發(fā)出的編碼信號(hào)由:地址碼、數(shù)據(jù)碼、同步碼組成一個(gè)完整的碼字,解碼芯片PT2272接收到信號(hào)后,其地址碼經(jīng)過兩次比較核對(duì)后,VT腳才輸出高電平,與此同時(shí)相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會(huì)連續(xù)發(fā)射。當(dāng)發(fā)射機(jī)沒有按鍵按下時(shí),PT2262不接通電源,其17腳為低電平,所以315MHz的高頻發(fā)射電路不工作,當(dāng)有按鍵按下時(shí),PT2262得電工作,其第17腳輸出經(jīng)調(diào)制的串行數(shù)據(jù)信號(hào),當(dāng)17腳為高
61、電平期間315MHz的高頻發(fā)射電路起振并發(fā)射等幅高頻信號(hào),當(dāng)17腳為低平期間315MHz的高頻發(fā)射電路停止振蕩,所以高頻發(fā)射電路完全收控于PT2262的17腳輸出的數(shù)字信號(hào),從而對(duì)高頻電路完成幅度鍵控(ASK調(diào)制)相當(dāng)于調(diào)制度為100%的調(diào)幅。 PT2262/2272特點(diǎn):CMOS工藝制造,低功耗,外部元器件少,RC振蕩電阻,工作電壓范圍寬:2.6~15v ,數(shù)據(jù)最多可達(dá)6位,地址碼最多
62、可達(dá)531441種。</p><p> 圖6為發(fā)射機(jī)等效電路:</p><p> 圖6 發(fā)射機(jī)等效電路</p><p> 圖7為接收機(jī)等效電路:</p><p><b> 圖7接收機(jī)等效電路</b></p><p><b> 4 軟件設(shè)計(jì)</b></p>
63、;<p> 4.1 主程序流程圖 </p><p> 如圖8所示為主程序流程圖,開始接上電源,程序進(jìn)行初始化設(shè)置,然后在鍵盤上輸入密碼,此系統(tǒng)進(jìn)行鍵盤掃描,然后啟動(dòng)程序,進(jìn)行保護(hù),再次在鍵盤上輸入密碼,系統(tǒng)進(jìn)行掃描,如和之前一樣,則執(zhí)行程序,如不是,則執(zhí)行另一種程序,最后結(jié)束。</p><p><b> 鍵功能程序流程圖</b></p
64、><p> 本設(shè)計(jì)中按鍵一共有9個(gè) 其中4個(gè)按鍵用于輸入密碼,當(dāng)系統(tǒng)開始運(yùn)行時(shí),對(duì)應(yīng)的按下這4個(gè)按鍵,系統(tǒng)會(huì)把當(dāng)前的輸入的密碼和儲(chǔ)存在EEPROM里的密碼進(jìn)行比較,密碼修改鍵用于標(biāo)志修改密碼,當(dāng)修改密碼鍵被按下,系統(tǒng)將進(jìn)入修改密碼狀態(tài),并會(huì)要求用戶輸入當(dāng)前密碼,用戶輸入4位密碼后系統(tǒng)會(huì)自動(dòng)判斷密碼正確與否,若正確,這時(shí)便需要按下修改密碼確認(rèn)鍵。</p><p> 4.3 密碼修改程序流程
65、圖</p><p> 4.4 LCD液晶顯示流程圖</p><p> 本次設(shè)計(jì)中,由于LCD只是輔助顯示方便用戶更直觀的對(duì)系統(tǒng)進(jìn)行操作,所以LCD顯示上沒有做過多的復(fù)雜程序,只采用了幾種顯示狀態(tài)來直觀的表現(xiàn)出當(dāng)前系統(tǒng)的運(yùn)行情況以及引導(dǎo)用戶操作。其顯示狀態(tài)大致有4種,對(duì)應(yīng)狀態(tài)如下表:</p><p><b> 結(jié)束語</b></p&
66、gt;<p> 以上為畢業(yè)期間所設(shè)計(jì)的電子密碼控制系統(tǒng)的電路,它經(jīng)過多次修改和整理,可以滿足設(shè)計(jì)的基本要求。輸入密碼時(shí),如三次輸入錯(cuò)誤,則系統(tǒng)不接收任何輸入,在輸入時(shí),LCD顯示為“*”。</p><p> 但因?yàn)槲业乃接邢蓿穗娐分幸泊嬖谝欢ǖ膯栴}。譬如說電路的密碼不能遺忘,一旦遺忘,就很難打開,這可以通過增加電路解決,但由于過于復(fù)雜,本設(shè)計(jì)并未加入;由于鍵盤開鎖與遙控開鎖的統(tǒng)一性致使整個(gè)密
67、碼鎖采用的是4為密碼方案雖然密碼位數(shù)只有4位,其組合方法也不少所以他人開鎖幾率是很小的。由于使用的是單片機(jī)作為核心的控制元件,配合其它器件,使本密碼控制系統(tǒng)具有功能強(qiáng)、性能可靠、電路簡(jiǎn)單、成本低的特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。</p><p> 通過本次做畢業(yè)設(shè)計(jì)自己學(xué)到了許多的知識(shí),而且還把以前學(xué)的很多知識(shí)點(diǎn)重新鞏固及加深了,特別是電路分析、單片機(jī)、和protel 99 SE電路設(shè)計(jì)等專業(yè)
68、科目的知識(shí)在本次設(shè)計(jì)中得到了很大的應(yīng)用,感覺自己收獲很大。</p><p><b> 致謝</b></p><p> 大學(xué)生活不知不覺中就要結(jié)束了,在這段難忘的生活中,我有許多美好的回憶。在這份大學(xué)的最后一頁里,我要感謝的人很多,首先要感謝我的學(xué)校,感謝她教給我的做人的道理,讓我從一個(gè)懵懂得高中生變成一個(gè)成熟的青年。還要感謝我的指導(dǎo)老師--羅德雄羅老師,在他的指導(dǎo)
69、下我完成了我的畢業(yè)設(shè)計(jì),老師多次詢問研究進(jìn)程,并在我制作過程中給予了我很大的幫助。當(dāng)然,還要感謝寢室的兄弟們?cè)谖抑谱鳟厴I(yè)設(shè)計(jì)的過程中給予我的幫助和鼓勵(lì)最后要感謝的就是我的父母,我能完成我的大學(xué)生涯是和父母的支持與幫助是分不開的?,F(xiàn)在即將揮別我的學(xué)校、老師、同學(xué),還有我的大學(xué)生活,雖然依依不舍,但是對(duì)未來的路,我充滿了信心。最后,感謝在大學(xué)期間認(rèn)識(shí)我和我認(rèn)識(shí)的所有人,有你們的伴隨,才有我大學(xué)生活的豐富多彩,絢麗多姿!謝謝</p>
70、;<p><b> 參考文獻(xiàn)</b></p><p> 張毅剛.等MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱工業(yè)大學(xué)出版社.</p><p> 及力主編《prote l99 SE原理圖與PCB設(shè)計(jì)教程》電子工業(yè)出版社2007年1月.</p><p><b> 附錄</b></p><
71、p><b> 附錄1 電路原理圖</b></p><p><b> 附錄2 PCB板圖</b></p><p><b> 附錄3 程序</b></p><p> #include<reg52.h></p><p> #define uchar uns
72、igned char</p><p> #define uint unsigned int</p><p> sbit sda=P2^5;</p><p> sbit scl=P2^4;</p><p> sbit fuwei=P3^6;</p><p> sbit KAI=P1^0;</p>
73、<p> sbit lcden=P2^7;</p><p> sbit lcdrs=P2^6;</p><p> sbit w1=P2^0;</p><p> sbit w2=P2^1;</p><p> sbit w3=P2^2;</p><p> sbit w4=P2^3;</p>
74、;<p> uchar num,n=0,temp,count4,flag,date,r;//r記錄錯(cuò)誤次數(shù)</p><p> uchar mima[4];</p><p> uchar yuanmima[4];</p><p> uchar tab_key[4];</p><p> bit mimaflag;
75、//密碼正確與否的標(biāo)志</p><p> bit xiugaiflag;//修改密碼標(biāo)志</p><p> bit enter1flag;//確認(rèn)密碼修改</p><p> unsigned char KeyValue;</p><p> void delay()</p><p&
76、gt;<b> { ;; }</b></p><p> void key_scan();</p><p> void key_scan1();</p><p> void DELAY(uint DELAY)</p><p><b> {</b></p><p>&l
77、t;b> uint h;</b></p><p> for(;DELAY>0;DELAY--)</p><p><b> {</b></p><p> for(h=0;h<110;h++)</p><p><b> {;}</b></p><
78、;p><b> }</b></p><p><b> }</b></p><p> void msgbox(unsigned char MODE,unsigned char DATA)//選擇寫數(shù)據(jù)or命令 0為命令 1為數(shù)據(jù)</p><p><b> { </b></p>
79、<p><b> P0=DATA;</b></p><p> if(0==MODE)</p><p><b> {</b></p><p> lcdrs=0;//寫命令</p><p><b> }</b></p><p><
80、;b> else</b></p><p><b> {</b></p><p> lcdrs=1;//寫數(shù)據(jù)</p><p><b> }</b></p><p><b> DELAY(5);</b></p><p><
81、b> lcden=1;</b></p><p><b> DELAY(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void lcdchar(unsigned char a
82、dd,unsigned char ch)</p><p> { if(0!=add)</p><p><b> {</b></p><p> msgbox(0,add);</p><p><b> }</b></p><p> msgbox(1,ch);</
83、p><p><b> }</b></p><p> void lcdstring(unsigned char add,unsigned char *str)</p><p><b> { int I;</b></p><p> msgbox(0,add);</p><p&g
84、t; for(I=0;*(str+I)!='\0'&&I<32;I++)</p><p><b> {</b></p><p> msgbox(1,*(str+I));</p><p><b> DELAY(2);</b></p><p><b&g
85、t; }</b></p><p><b> }</b></p><p> void initlcd()</p><p><b> {</b></p><p><b> lcden=0;</b></p><p> msgbox(0,
86、0x38); //顯示模式設(shè)置 16*2 5*7 8位</p><p> msgbox(0,0x0c); //開關(guān)光標(biāo)顯示設(shè)置</p><p> msgbox(0,0x06);//指針自動(dòng)+1</p><p> msgbox(0,0x01);//清屏</p><p> msgbox(0,0x80);//0x80+0x10</p&
87、gt;<p><b> }</b></p><p> //**********************************************</p><p> void start() //開始信號(hào)</p><p><b> {</b></p><p><b
88、> sda=1;</b></p><p><b> delay();</b></p><p><b> scl=1;</b></p><p><b> delay();</b></p><p><b> sda=0;</b>&l
89、t;/p><p><b> delay();</b></p><p><b> }</b></p><p> void stop() //停止</p><p><b> {</b></p><p><b> sda=0;</b&
90、gt;</p><p><b> delay();</b></p><p><b> scl=1;</b></p><p><b> delay();</b></p><p><b> sda=1;</b></p><p>
91、<b> delay();</b></p><p><b> }</b></p><p> void respons() //應(yīng)答</p><p><b> {</b></p><p><b> uchar i;</b></p>
92、<p><b> scl=1;</b></p><p><b> delay();</b></p><p> while((sda==1)&&(i<250))i++;</p><p><b> scl=0;</b></p><p><
93、;b> delay();</b></p><p><b> }</b></p><p> void init() //SHU SHI</p><p><b> {</b></p><p><b> sda=1;</b></p><
94、p><b> delay();</b></p><p><b> scl=1;</b></p><p><b> delay();</b></p><p><b> }</b></p><p> void write_byte(uchar
95、date) //寫到24c02</p><p><b> {</b></p><p> uchar i,temp;</p><p> temp=date;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p&g
96、t;<p> temp=temp<<1;</p><p><b> scl=0;</b></p><p><b> delay();</b></p><p><b> sda=CY;</b></p><p><b> delay()
97、;</b></p><p><b> scl=1;</b></p><p><b> delay();</b></p><p><b> }</b></p><p><b> scl=0;</b></p><p>
98、;<b> delay();</b></p><p><b> sda=1;</b></p><p><b> delay();</b></p><p><b> }</b></p><p> uchar read_byte() </p&g
99、t;<p><b> {</b></p><p> uchar i,k;</p><p><b> scl=0;</b></p><p><b> delay();</b></p><p><b> sda=1;</b></p
100、><p><b> delay();</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> scl=1;</b></p><p><b> delay();&l
101、t;/b></p><p> k=(k<<1)|sda;</p><p><b> scl=0;</b></p><p><b> delay();</b></p><p><b> }</b></p><p><b&g
102、t; return k;</b></p><p><b> }</b></p><p> void write_add(uchar address,uchar date) //從單元寫 </p><p><b> {</b></p><p><b> start()
103、;</b></p><p> write_byte(0xa0);</p><p> respons();</p><p> write_byte(address);</p><p> respons();</p><p> write_byte(date);</p><p>
104、; respons();</p><p><b> stop();</b></p><p><b> }</b></p><p> uchar read_add(uchar address) //從單元讀 </p><p><b> {</b></p>
105、<p><b> start();</b></p><p> write_byte(0xa0);</p><p> respons();</p><p> write_byte(address);</p><p> respons();</p><p><b>
106、 start();</b></p><p> write_byte(0xa1);</p><p> respons();</p><p> date=read_byte();</p><p><b> stop();</b></p><p> return date;<
107、/p><p><b> }</b></p><p> void mimacmp()</p><p><b> {</b></p><p> uchar i0,i1,i2,i3;</p><p> i0=i1=i2=i3=0;</p><p&
108、gt; if(mima[0]==tab_key[0])</p><p><b> i0=1;</b></p><p> if(mima[1]==tab_key[1])</p><p><b> i1=1;</b></p><p> if(mima[2]==tab_key[2])</p
109、><p><b> i2=1;</b></p><p> if(mima[3]==tab_key[3])</p><p><b> i3=1;</b></p><p> flag=i0*i1*i2*i3; //全為1密碼正確</p><p><b> }&l
110、t;/b></p><p> void key_manage1()</p><p><b> {</b></p><p> tab_key[n]=0;</p><p><b> n++;</b></p><p> if(xiugaiflag==1)</p
111、><p><b> {</b></p><p> mima[count4]=0;</p><p><b> count4++;</b></p><p><b> }</b></p><p><b> }</b></p&g
112、t;<p> void key_manage2()</p><p><b> {</b></p><p> tab_key[n]=1;</p><p><b> n++;</b></p><p> if(xiugaiflag==1)</p><p>&
113、lt;b> {</b></p><p> mima[count4]=1;</p><p><b> count4++;</b></p><p><b> }</b></p><p><b> }</b></p><p> v
114、oid key_manage3()</p><p><b> {</b></p><p> tab_key[n]=2;</p><p><b> n++;</b></p><p> if(xiugaiflag==1)</p><p><b> {</
115、b></p><p> mima[count4]=2;</p><p><b> count4++;</b></p><p><b> }</b></p><p><b> }</b></p><p> void key_manage4(
116、)</p><p><b> {</b></p><p> tab_key[n]=3;</p><p><b> n++;</b></p><p> if(xiugaiflag==1)</p><p><b> {</b></p>
117、<p> mima[count4]=3;</p><p><b> count4++;</b></p><p><b> }</b></p><p><b> }</b></p><p> void key_manage5()</p><
118、;p><b> {</b></p><p> xiugaiflag=1;</p><p><b> n=0;</b></p><p><b> }</b></p><p> void c02int()//24c02初始化</p><p>
119、<b> {</b></p><p><b> init();</b></p><p> write_add(1,0);</p><p> DELAY(100);</p><p><b> //init();</b></p><p> wri
120、te_add(10,0);</p><p> DELAY(100);</p><p> //init();</p><p> write_add(20,0);</p><p> DELAY(100);</p><p> //init();</p><p> write_add(3
121、0,0);</p><p> DELAY(100);</p><p><b> }</b></p><p> void key_manage6() //確認(rèn)件</p><p> {if(enter1flag==1)</p><p> { </p><
122、;p><b> c02int();</b></p><p><b> init();</b></p><p> write_add(1,mima[0]);</p><p> DELAY(100);</p><p> //init();</p><p> w
123、rite_add(10,mima[1]);</p><p> DELAY(100);</p><p> //init();</p><p> write_add(20,mima[2]);</p><p> DELAY(100);</p><p> //init();</p><p>
124、; write_add(30,mima[3]);</p><p> DELAY(100);</p><p> yuanmima[0]=mima[0]=read_add(1);</p><p> DELAY(100);</p><p> yuanmima[1]=mima[1]=read_add(10);</p><
125、p> DELAY(100);</p><p> yuanmima[2]=mima[2]=read_add(20);</p><p> DELAY(100);</p><p> yuanmima[3]=mima[3]=read_add(30);</p><p> DELAY(100);</p><p>
126、 enter1flag=xiugaiflag=0;</p><p> DELAY(1000);</p><p><b> KAI=0;</b></p><p> lcdstring(0x80," PASSWORD RENEW ");</p><p> DELAY(1000);</
127、p><p> lcdstring(0x80,"INPUT THE PASS");</p><p> lcdstring(0x80+0x40," WODE: ____ ");</p><p><b> }</b></p><p><b> }</b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅外遙控密碼鎖畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---lcd電子密碼鎖的設(shè)計(jì)
- 電子密碼鎖的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)
- 紅外遙控電子密碼鎖設(shè)計(jì)—硬件設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 密碼鎖畢業(yè)設(shè)計(jì)
- 紅外遙控電子密碼鎖設(shè)計(jì)—軟件設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)-紅外遙控密碼鎖畢業(yè)論文
- 畢業(yè)設(shè)計(jì)-----基于單片機(jī)的密碼鎖設(shè)計(jì)與制作
- 無限密碼鎖畢業(yè)設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 密碼鎖畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---電子密碼鎖設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)紅外遙控密碼鎖的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 電子密碼鎖的畢業(yè)設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 電子密碼鎖畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的紅外遙控智能密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)220數(shù)字密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)220數(shù)字密碼鎖設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論