![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/47c37df8-2d62-4405-8113-40b1af9f4192/47c37df8-2d62-4405-8113-40b1af9f4192pic.jpg)
![電子密碼鎖課程設(shè)計(jì)論文_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/47c37df8-2d62-4405-8113-40b1af9f4192/47c37df8-2d62-4405-8113-40b1af9f41921.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 電子信息工程實(shí)驗(yàn)教學(xué)中心</p><p> 《電子技術(shù)課程設(shè)計(jì)》設(shè)計(jì)報(bào)告</p><p><b> 完成日期:</b></p><p><b> 目錄</b></p><p><b> 目錄2</b></p><p>&l
2、t;b> 摘要- 1 -</b></p><p><b> 1緒論- 2 -</b></p><p> 1.1 課題背景- 2 -</p><p> 1.2 課題設(shè)計(jì)目標(biāo)- 2 -</p><p> 2原理分析- 2 -</p><p> 3設(shè)計(jì)方案論證-
3、 3 -</p><p> 3.1 主控部分的選擇- 3 -</p><p> 3.2 密碼輸入方式- 3 -</p><p> 4 電路原理圖與仿真- 4 -</p><p> 4.1 主要芯片介紹- 4 -</p><p> 4.2電路原理圖- 11 -</p><p>
4、 4.3各部分原理圖- 11 -</p><p> 5綜合調(diào)試- 14 -</p><p> 5.1硬件調(diào)試- 14 -</p><p> 5.2軟件調(diào)試- 15 -</p><p> 5.3Proteus仿真- 16 -</p><p> 6總結(jié)- 18 -</p><p&
5、gt; 附錄:設(shè)計(jì)所用程序- 20 -</p><p> 參考文獻(xiàn)- 40 -</p><p><b> 摘要</b></p><p> 本系統(tǒng)由單片機(jī)系統(tǒng)、矩陣鍵盤、LED顯示和報(bào)警系統(tǒng)組成。系統(tǒng)能完成開鎖、超次鎖定、報(bào)警、修改用戶密碼基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還具有掉電存儲、聲光提示等功能。本系統(tǒng)成本低廉,功
6、能實(shí)用。 </p><p> 關(guān)鍵詞: AT89C51 、AT24C02、 電子密碼鎖 </p><p><b> 1緒論 </b></p><p> 隨著人們生活水平的提高和安全意識的加強(qiáng),對安全的要求也就越來越高。鎖自古以來就是把守護(hù)門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電
7、子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運(yùn)而生,電子密碼鎖就是其中之一。</p><p><b> 1.1 課題背景</b></p><p> 由于電子鎖的密鑰量(密碼量)極大,可以與機(jī)械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡
8、鎖,IC卡鎖,生物鎖等。但較實(shí)用的還是按鍵式電子密碼鎖。</p><p> 1.2 課題設(shè)計(jì)目標(biāo)</p><p> 本設(shè)計(jì)采用AT89C51單片機(jī)為主控芯片,通過軟件程序組成電子密碼鎖系統(tǒng),能夠?qū)崿F(xiàn):</p><p> 1. 正確輸入密碼前提下,開鎖提示;</p><p> 2. 錯(cuò)誤輸入密碼情況下,蜂鳴器報(bào)警;</p>
9、<p> 3. 密碼可以根據(jù)用戶需要更改;</p><p> 4. 斷電存儲功能。</p><p> 5. 輸入密碼時(shí)顯示“*”。</p><p><b> 2原理分析 </b></p><p> 本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種
10、功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖3.1所示。</p><p> 圖2.1 系統(tǒng)結(jié)構(gòu)框圖</p><p><b> 各模塊功能如下:
11、</b></p><p> 1.矩陣鍵盤輸入模塊:分為密碼輸入按鍵與幾個(gè)功能按鍵,用于完成密碼鎖輸入功能。</p><p> 2.顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能。</p><p> 3.報(bào)警電路:用于完成輸錯(cuò)密碼時(shí)候的警報(bào)功能。</p><p> 4.密碼存儲模塊:用于完成掉電存儲功能,使修改的密碼斷電后仍
12、能保存。</p><p> 5.電源模塊:用于對系統(tǒng)電路提供+5V的直流電壓。</p><p> 3設(shè)計(jì)方案論證(趙瑜、楊淥)</p><p> 系統(tǒng)從主控部分和密碼輸入方式兩方面進(jìn)行論證。</p><p> 3.1 主控部分的選擇</p><p> 方案一:采用數(shù)字電路控制</p><p
13、> 用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,將密碼保存在JK觸發(fā)器中,與輸入密碼通過比較器比較,判斷結(jié)果是否相符合。采用數(shù)字電路設(shè)計(jì)的方案好處就是設(shè)計(jì)簡單,但控制的準(zhǔn)確性和靈活性差,故不采用。 </p><p> 方案二:采用以單片機(jī)為核心的控制方案</p><p> 選用單片機(jī)作為系統(tǒng)的核心部件,實(shí)現(xiàn)控制與處理的功能。單片機(jī)具有資源豐富、速度快、
14、編程容易等優(yōu)點(diǎn)。利用單片機(jī)內(nèi)部的隨機(jī)存儲器(RAM)和只讀存儲器(ROM)及其引腳資源,外接液晶顯示(LCD),鍵盤輸入等實(shí)現(xiàn)數(shù)據(jù)的處理傳輸和顯示功能,基本上能實(shí)現(xiàn)設(shè)計(jì)指標(biāo),因此綜合考慮,本系統(tǒng)采用方案二。</p><p> 3.2 密碼輸入方式</p><p> 方案一:指紋輸入識別</p><p> 指紋識別技術(shù)主要涉及四個(gè)功能:讀取指紋圖像、提取特征、保
15、存數(shù)據(jù)和比對。通過指紋讀取設(shè)備讀取到人體指紋的圖像,然后要對原始圖像進(jìn)行初步的處理,使之更清晰,再通過指紋辨識軟件建立指紋的特征數(shù)據(jù)。軟件從指紋上找到被稱為"節(jié)點(diǎn)"(minutiae)的數(shù)據(jù)點(diǎn),即指紋紋路的分叉、終止或打圈處的坐標(biāo)位置,這些點(diǎn)同時(shí)具有七種以上的唯一性特征。通常手指上平均具有70個(gè)節(jié)點(diǎn),所以這種方法會產(chǎn)生大約490個(gè)數(shù)據(jù)。這些數(shù)據(jù),通常稱為模板。通過計(jì)算機(jī)模糊比較的方法,把兩個(gè)指紋的模板進(jìn)行比較,計(jì)算出
16、它們的相似程度,最終得到兩個(gè)指紋的匹配結(jié)果,從而判斷輸入結(jié)果的正確與否。考慮到本方案軟硬件太過復(fù)雜,而且成本也高,故不采用。</p><p> 方案二:矩陣鍵盤輸入識別</p><p> 由各按鍵組成的矩陣鍵盤每條行線和列線都對應(yīng)一條I/O口線,鍵位設(shè)在行線和列線的交叉點(diǎn),當(dāng)一個(gè)鍵按下就會有某一條行線與某一條列線接觸,只要確定接觸的是哪兩條線,即哪兩個(gè)I/O口線,就可以確定哪一個(gè)鍵被觸
17、動(dòng)。行線設(shè)計(jì)成上拉口線,初始時(shí)被置高電位,列線懸空,初始置低。通過不斷讀行線口線,或者中斷方式觸發(fā)鍵位掃描。當(dāng)發(fā)現(xiàn)有鍵按下,將列線逐一置低,其他列線置高,讀行線口線。當(dāng)某條列線置低時(shí),某條行線也被拉低,則確定這兩條線的交點(diǎn)處的按鈕被按下。每個(gè)按鍵都可通過程序賦予功能,從而完成密碼識別。本方案簡單易行,故采用。</p><p> 4 電路原理圖與仿真 </p><p> 系統(tǒng)主要芯片有A
18、T89C51,AT24C02及液晶LCD1602等。</p><p> 4.1 主要芯片介紹</p><p> 4.1.1 AT89C51 </p><p> AT89C51是美國Atmel公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和256bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),AT
19、89C51有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線。</p><p><b> 主要功能特性:</b></p><p> ·兼容MCS51指令系統(tǒng)。</p><p> ·8k可反復(fù)擦寫(>1000次)Flash RO
20、M,32個(gè)雙向I/O口,256x8bit內(nèi)部RAM,時(shí)鐘頻率0-24MHz,可編程UART串行通道。</p><p> ·3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷,2個(gè)串行中斷,2個(gè)外部中斷源,共6個(gè)中斷源,2個(gè)讀寫中斷口線。</p><p> 其引腳排列圖如下圖3.1:</p><p> 圖4.1 AT89C51的引腳排列</p><p
21、><b> 引腳功能如下:</b></p><p><b> ·Vcc:電源電壓</b></p><p><b> ·GND:地</b></p><p> ·P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收
22、電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對端口P0寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。</p><p> ·P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使
23、用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(IIL)。</p><p> ·P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(IIL)。在訪問8位地址的外部數(shù)據(jù)存儲
24、器(如執(zhí)行MOVX@RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。</p><p> Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號。</p><p> ·P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對P3口寫入“1”時(shí),它們被內(nèi)部上位電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻
25、輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表3.1所示:</p><p> 表4.1 P3口的第二功能</p><p> ·RST:復(fù)位輸入 。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片復(fù)位。</p><p> ·ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址
26、鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過一個(gè)ALE脈沖。</p><p> ·EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會鎖存EA端狀
27、態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時(shí),該引腳加上+12V的編程允許電源VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。</p><p> ·XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> ·XTAL2:振蕩器反相放大器的輸出端。</p><p> 4
28、.1.2 存儲芯片AT24C02 AT24C02是美國Atmel公司的低功耗CMOS型EEPROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(2.5~5.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了IIC總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C02中帶有的片內(nèi)地址
29、寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對下一個(gè)存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在 連到總線上的器件之間傳送信息,并根據(jù)地址識別每個(gè)器件。 AT24C02正是運(yùn)用了I?C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C02)
30、均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無</p><p> 圖4.2 AT24C02引腳圖</p><p> 4.1.3顯示電路(LCD1602)</p><p> LCD1602:所謂的1602即是16字符*2行的字符型LCD顯示器,它由32個(gè)字符點(diǎn)陣塊組成,每個(gè)字符點(diǎn)陣
31、塊由5×7或5×10個(gè)點(diǎn)陣組成,可以顯示ASCII碼表中的所有可視的字符。它內(nèi)置了字符產(chǎn)生器ROM(CGROM)、字符產(chǎn)生器RAM(CGRAM)和顯示數(shù)據(jù)RAM(DDRAM)。CGROM中內(nèi)置了192個(gè)常用字符的字模,CGRAM包含8個(gè)字節(jié)的RAM,可存放用戶自定義的字符,DDRAM就是用來寄存待顯示的字符代碼。</p><p> 1602液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧
32、的諸多優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用</p><p> 4.1.3.1 1602引腳及其具體功能如下表:</p><p> 表1 1602引腳及功能</p><p> 4.1.3.2 LCD1602基本操作時(shí)序: </p><p> 讀狀態(tài):輸入:RS=L,RW=H,E=H
33、輸出:D0~D7=狀態(tài)字</p><p> 寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出:無</p><p> 讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0~D7=數(shù)據(jù)</p><p> 寫數(shù)據(jù):輸入:RS=L,RW=H,E=H 輸出:
34、無</p><p><b> 1)讀操作時(shí)序圖</b></p><p> 圖4.3 讀操作時(shí)序圖</p><p><b> 2)寫操作時(shí)序圖</b></p><p> 圖4.4寫操作時(shí)序圖</p><p><b> 3)時(shí)序參數(shù)表</b><
35、;/p><p><b> 表2 時(shí)序參數(shù)表</b></p><p> 4.1.3.3 狀態(tài)字說明表</p><p><b> 表3 狀態(tài)字說明</b></p><p> 注意:對控制器每次進(jìn)行讀寫操作之前,都必須進(jìn)行讀寫檢測,確保STA7=0</p><p> 4.1
36、.3.6 數(shù)據(jù)控制</p><p> 控制器內(nèi)部設(shè)有一個(gè)數(shù)據(jù)地址指針,用戶可通過它們來訪問內(nèi)部的全部80字節(jié)RAM。</p><p><b> 數(shù)據(jù)指針設(shè)置如表4</b></p><p><b> 表4 數(shù)據(jù)指針設(shè)置</b></p><p><b> 其他設(shè)置如表5</b&g
37、t;</p><p><b> 表5 其他設(shè)置</b></p><p> LCD初始化顯示設(shè)置為:</p><p> 初始化過程(復(fù)位過程) 延時(shí)15ms 寫指令38H(不檢測忙信號) 延時(shí)5ms 寫指令38H(不檢測忙信號) 5延時(shí)5ms 寫指令38H(
38、不檢測忙信號) (以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需檢測忙信號) 寫指令38H:顯示模式設(shè)置 寫指令08H:顯示關(guān)閉 寫指令01H:顯示清屏 寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置 寫指令0CH:顯示開及光標(biāo)設(shè)置。</p><p><b> 4.2電路原理圖</b></p><p> 本密
39、碼鎖系統(tǒng)硬件電路是由AT89C51單片機(jī)、存儲器AT24C02和LCD1602液晶顯示、鍵盤輸入以及輸出控制報(bào)警5個(gè)模塊組成的。其整體電路圖如下4.1所示:</p><p> 圖4.5 整體電路圖</p><p><b> 4.3各部分原理圖</b></p><p> 4.3.1單片機(jī)最小系統(tǒng)原理圖</p><p&g
40、t; 由AT89C51,復(fù)位電路,時(shí)鐘產(chǎn)生電路組成。其原理圖如下:</p><p> 圖4.6 最小系統(tǒng)電路原理圖</p><p> 4.3.2電源輸入部分</p><p> 密碼鎖主控制部分電源需要用5V直流電源供電,把頻率為50Hz、有效值為220V的單相交流電壓轉(zhuǎn)換為幅值穩(wěn)定的5V直流電壓。其主要原理是把單相電經(jīng)過電源變壓器、整流電路、濾波電路、穩(wěn)壓電
41、路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會影響到負(fù)載電路的正常工作。需通過低通濾波電路濾波,使輸出電壓平滑。穩(wěn)壓電路的功能是使輸出直流電壓基本不受電網(wǎng)電壓波動(dòng)和負(fù)載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直流壓。本電路使用充電器
42、解決電源穩(wěn)壓問題。</p><p> 4.3.4鍵盤輸入部分</p><p> 由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設(shè)計(jì)中使用的這個(gè)4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每
43、個(gè)按鍵功能在程序設(shè)計(jì)中設(shè)置 。其大體功能(看鍵盤按鍵上的標(biāo)記)及與單片機(jī)引腳接法如圖4.3所示。</p><p> 圖4.7 鍵盤輸入原理圖</p><p> 4.3.5 密碼存儲部分</p><p> 用EPROM芯片AT24C02存儲密碼。AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(
44、2.5~5.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對下一個(gè)存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字
45、節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個(gè)器件。AT24C02正是運(yùn)用了I2C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機(jī)還是</p>&l
46、t;p> 圖4.8密碼存儲電路原理圖4.3.6 顯示部分 </p><p> 為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來完成。顯示器一直處于初始狀態(tài),當(dāng)需要對密碼鎖進(jìn)行開鎖時(shí),按下鍵盤上的開鎖按鍵后利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話,
47、 LCD子顯示“RIGHT”,LCD顯示屏?xí)@示“ERROR”,P2.0輸出的是低電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出鎖所處狀態(tài) 。其顯示部分引腳接口如圖4.5所示。</p><p> 圖4.9 顯示電路原理圖</p><p> 4.3.7 報(bào)警部分</p><p> 報(bào)警部分由喇叭電路組成,當(dāng)有鍵按下時(shí),每按一下,喇叭koi響一次,
48、當(dāng)密碼輸入錯(cuò)誤時(shí),單片機(jī)的P2.1引腳為低電平,喇叭發(fā)出噪鳴聲報(bào)警。如圖4.6所示。</p><p> 圖4.10 報(bào)警電路原理圖</p><p><b> 5綜合調(diào)試 </b></p><p><b> 5.1硬件調(diào)試 </b></p><p> 單片機(jī)應(yīng)用系統(tǒng)的硬件調(diào)試和軟件調(diào)試是分不開
49、的.許多硬件故障只有通過軟、硬件聯(lián)調(diào)才能發(fā)現(xiàn),但一般是先排除系統(tǒng)中比較明顯的硬件故障后才和軟件一起聯(lián)調(diào)。常見的硬件故障: (1)邏輯錯(cuò)誤 硬件的邏輯錯(cuò)誤是由于設(shè)計(jì)錯(cuò)誤和焊接過程中的工藝錯(cuò)誤而造成的,包括錯(cuò)線、開路、短路等,其中最常見的是短路故障。 (2)元器件錯(cuò)誤 元器件錯(cuò)誤的原因有器件損壞或性能不符合要求,電解電容、二極管的極性接反或集成塊裝反等。 (3)可靠性差 應(yīng)用系統(tǒng)可靠性差的原因很多,如內(nèi)部和
50、外部的干擾、電壓紋波系數(shù)過大、器件負(fù)載過重等均會造成系統(tǒng)的可靠性差。另外,走線和布置的不合理也會造成系統(tǒng)可靠性差。 (4)電源故障 </p><p> 電源故障包括:電壓值不符合設(shè)計(jì)要求、電源功率不足、負(fù)載能力差、紋波太重等。 硬件調(diào)試辦法 脫機(jī)調(diào)試是在加電前,先用萬用表等工具,按圖紙仔細(xì)核對線路是否正確,并對元器件的安裝、型號、規(guī)格等進(jìn)行仔細(xì)檢查,特別焊接時(shí)有無走線之間相互短路等。 </p&
51、gt;<p><b> 5.2軟件調(diào)試 </b></p><p> 5.2.1軟件的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 軟件的設(shè)計(jì)從設(shè)計(jì)原理和主程序流程圖兩方面進(jìn)行說明。</p><p> 5.2.1.1 設(shè)計(jì)原理 本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的
52、實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當(dāng)然也可以用繼電器的常開觸點(diǎn)去控制電磁鐵吸合線圈。本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、密碼存儲部分、顯示部分、報(bào)警部分組成,軟件部分
53、對應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動(dòng)程序、關(guān)閉程序、鍵功能程序、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。</p><p> 5.2.1.2 主程序流程圖</p><p> 主程序?qū)δK進(jìn)行初始化,而后調(diào)用密碼輸入子程序、密碼比較子程序、判斷密碼是否輸入正確。主程序流程圖如圖5.2所示。</p><p> 圖5.1 系統(tǒng)主程
54、序流程圖</p><p> 程序在KEIL C51上調(diào)試,采用模塊程序設(shè)計(jì)技術(shù),則逐個(gè)模塊調(diào)好后再進(jìn)行系統(tǒng)程序總調(diào)。對于模塊結(jié)構(gòu)程序.要一個(gè)個(gè)子程序分別調(diào)試。調(diào)試時(shí),一定要符合入口條件和出口條件,調(diào)試可用單步運(yùn)行和斷點(diǎn)運(yùn)行方式,通過檢查用者系統(tǒng)的CPU現(xiàn)場情況、RAM的內(nèi)容和I/O口的狀態(tài),檢測程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求,有無循環(huán)錯(cuò)誤、有無機(jī)器碼錯(cuò)誤以及轉(zhuǎn)移地址的錯(cuò)誤,同時(shí),還可以發(fā)現(xiàn)系統(tǒng)中存在的硬件設(shè)計(jì)錯(cuò)誤
55、和軟件算法錯(cuò)誤。 各程序模塊通過后,則可以把相關(guān)功能塊連在一起進(jìn)行總調(diào)。這個(gè)階段若有故障,可以考慮各子程序運(yùn)行時(shí)是否破壞了現(xiàn)場,緩沖單元、工作寄存器是否發(fā)生沖突,標(biāo)志位的建立和清除是否有誤,堆棧區(qū)是否有溢出,輸入設(shè)備的狀態(tài)是否正常等等,若用者系統(tǒng)是在開發(fā)機(jī)的監(jiān)控程序下運(yùn)行時(shí),還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 單步和斷點(diǎn)調(diào)試后,還應(yīng)進(jìn)行連續(xù)調(diào)試,用以確定定時(shí)精度、CPU的實(shí)時(shí)響應(yīng)等問題。 當(dāng)全部調(diào)
56、試和修改完成后,將程序固化到AT89C51中。進(jìn)行整機(jī)調(diào)試。各功能實(shí)現(xiàn)則調(diào)試完成。</p><p> 5.3 Proteus仿真 </p><p> 在硬件和軟件都能實(shí)現(xiàn)的條件下,利用Proteus進(jìn)行仿真,通過不停的調(diào)試與改正,最后終于實(shí)現(xiàn)了密碼鎖的功能,Proteus仿真結(jié)果如圖6-1所示</p><p> 當(dāng)連好各個(gè)模塊電路的導(dǎo)線后,導(dǎo)入芯片程序,運(yùn)行
57、該密碼鎖仿真電路,通過按鍵可以進(jìn)行密碼鎖的開鎖,修改密碼,錯(cuò)誤密碼3次以上報(bào)警的操作,LCD顯示屏顯示相應(yīng)的操作現(xiàn)象,密碼正確可以開鎖,進(jìn)而可以修改密碼,密碼錯(cuò)誤三次以上由喇叭發(fā)出報(bào)警聲,如果系統(tǒng)出現(xiàn)錯(cuò)誤還可以通過復(fù)位電路進(jìn)行復(fù)位。</p><p> 總之,在原有的理論基礎(chǔ)上,通過Proteus能夠成功的進(jìn)行密碼鎖基本操作的仿真,實(shí)現(xiàn)了相關(guān)的功能。</p><p> 圖5.2 Prot
58、eus仿真結(jié)果圖</p><p><b> 6總結(jié) </b></p><p> 以上為課程設(shè)計(jì)報(bào)告---基于單片機(jī)的電子密碼鎖設(shè)計(jì),它經(jīng)過多次修改和整理,可以滿足設(shè)計(jì)的基本要求。本設(shè)計(jì)從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國Atmel公司的單片機(jī)AT89C51與低功耗CMOS型E2PROM AT24C02作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警等電路并用
59、匯編編寫主控芯片的控制程序,完成了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖設(shè)計(jì)。設(shè)計(jì)完全可行可以達(dá)到設(shè)計(jì)目地。使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn),可應(yīng)用于住宅、辦公室的保險(xiǎn)箱及檔案柜等需要防盜的場所,有一定的實(shí)用性。該電路設(shè)計(jì)還具有按鍵有效提示,輸入錯(cuò)誤提示,控制開鎖電平,控制報(bào)警電路,修改密碼等多種功能??稍谝馔庑姑艿那闆r下隨時(shí)修改密碼。保密性強(qiáng),靈活性高,特別適用于家庭、辦
60、公室、學(xué)生宿舍及賓館等場所。</p><p> 通過對該課題的研究,加深對所學(xué)知識的理解,提高對課外知識的學(xué)習(xí)能力, 增強(qiáng)知識的應(yīng)用能力,提高解決實(shí)際問題的能力,培養(yǎng)自我創(chuàng)新意識。積累實(shí)踐經(jīng)驗(yàn),為以后的發(fā)展打下基礎(chǔ),也為以后我們自己在這方面的發(fā)展打下基礎(chǔ),并能夠在這方面培養(yǎng)自己的興趣。在設(shè)計(jì)中我們必須首先熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理,單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外
61、特性,控制方法。以單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù)了解表關(guān)電路參數(shù)的計(jì)算方法。單片機(jī)不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。</p><p> 課程設(shè)計(jì)設(shè)
62、計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程,隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。</p><p> 通過這次課程設(shè)計(jì),無論從選題到定稿,從理論到實(shí)踐都使我們學(xué)到了很多東西,它不僅可以鞏固了以前所學(xué)過的
63、知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。同時(shí)也明白了理論與實(shí)踐相結(jié)合的重要性,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。最后真誠感謝謝*老師在設(shè)計(jì)過程中的悉心指導(dǎo)。</p><p><b> 附錄:</b></p><p><b> 設(shè)計(jì)所用程
64、序:</b></p><p> #include <REG51.h></p><p> #include<intrins.h></p><p> #define LCM_Data P0</p><p> #define uchar unsigned char </p><p&g
65、t; #define uint unsigned int</p><p> #define w 6//定義密碼位數(shù)</p><p> sbit lcd1602_rs=P2^5;</p><p> sbit lcd1602_rw=P2^6;</p><p> sbit lcd1602_en=P2^7;</p>
66、<p> sbit Scl=P3^4;//24C02串行時(shí)鐘</p><p> sbit Sda=P3^5;//24C02串行數(shù)據(jù)</p><p> sbit ALAM = P2^1;//報(bào)警</p><p> sbit KEY = P2^0;//開鎖</p><p> sbit open_led=P
67、2^2;//開鎖指示燈</p><p> bit operation=0;//操作標(biāo)志位</p><p> bit pass=0;//密碼正確標(biāo)志</p><p> bit ReInputEn=0;//重置輸入充許標(biāo)志</p><p> bit s3_keydown=0;//3秒按鍵標(biāo)志位</p&
68、gt;<p> bit key_disable=0;//鎖定鍵盤標(biāo)志</p><p> unsigned char countt0,second;//t0中斷計(jì)數(shù)器,秒計(jì)數(shù)器</p><p> void Delay5Ms(void);</p><p> unsigned char code a[]={0xFE,0xFD,0xFB,0xF
69、7}; //控盤掃描控制表</p><p> unsigned char code start_line[]= {"password: "};</p><p> unsigned char code name[] = {"Coded Management"};//顯示名稱</
70、p><p> unsigned char code Error[] = {" error "}; //輸入錯(cuò)誤</p><p> unsigned char code Locktrue[]= {" true "};//輸入正確</p><
71、p> unsigned char code SetNew[] = {"SetNewWordEnable"};</p><p> unsigned char code Input[] = {"input: "};//INPUT</p><p> unsigned char code Rese
72、tOK[] = {"ResetPasswordOK "};</p><p> unsigned char code initword[]= {"Init password..."};</p><p> unsigned char code Er_try[]= {"error,try again!"};</p>
73、;<p> unsigned char code again[]= {"input again "};</p><p> unsigned char InputData[6];//輸入密碼暫存區(qū)</p><p> unsigned char CurrentPassword[6]={1,3,1,4,2,0};
74、 //當(dāng)前密碼值</p><p> unsigned char TempPassword[6];</p><p> unsigned char N=0;//密碼輸入位數(shù)記數(shù)</p><p> unsigned char ErrorCont;//錯(cuò)誤次數(shù)計(jì)數(shù)</p><p> unsigned
75、char CorrectCont;//正確輸入計(jì)數(shù)</p><p> unsigned char ReInputCont; //重新輸入計(jì)數(shù)</p><p> unsigned char code initpassword[6]={1,2,3,4,5,6};</p><p> //=====================5ms延時(shí)========
76、======================</p><p> void Delay5Ms(void)</p><p><b> {</b></p><p> unsigned int TempCyc = 5552;</p><p> while(TempCyc--);</p><p>&
77、lt;b> }</b></p><p> //===================400ms延時(shí)==============================</p><p> void Delay400Ms(void)</p><p><b> {</b></p><p> unsigned
78、 char TempCycA = 5;</p><p> unsigned int TempCycB;</p><p> while(TempCycA--)</p><p><b> {</b></p><p> TempCycB=7269;</p><p> while(TempCyc
79、B--);</p><p><b> }</b></p><p><b> }</b></p><p> //=============================================================================================</p>
80、<p> //================================24C02========================================================</p><p> //========================================================================================
81、=====</p><p> void mDelay(uint t) //延時(shí)</p><p><b> { </b></p><p><b> uchar i;</b></p><p> while(t--)</p><p><b> {</b&g
82、t;</p><p> for(i=0;i<125;i++)</p><p><b> {;}</b></p><p><b> }</b></p><p><b> }</b></p><p> void Nop(void) //
83、空操作</p><p><b> {</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><
84、;b> _nop_();</b></p><p><b> }</b></p><p><b> /*起始條件*/</b></p><p> void Start(void)</p><p><b> {</b></p><p&g
85、t;<b> Sda=1;</b></p><p><b> Scl=1;</b></p><p><b> Nop();</b></p><p><b> Sda=0;</b></p><p><b> Nop();</b>
86、;</p><p><b> }</b></p><p><b> /*停止條件*/</b></p><p> void Stop(void)</p><p><b> {</b></p><p><b> Sda=0;</b&
87、gt;</p><p><b> Scl=1;</b></p><p><b> Nop();</b></p><p><b> Sda=1;</b></p><p><b> Nop();</b></p><p><
88、b> }</b></p><p><b> /*應(yīng)答位*/</b></p><p> void Ack(void)</p><p><b> {</b></p><p><b> Sda=0;</b></p><p><
89、b> Nop();</b></p><p><b> Scl=1;</b></p><p><b> Nop();</b></p><p><b> Scl=0;</b></p><p><b> }</b></p>
90、<p><b> /*反向應(yīng)答位*/</b></p><p> void NoAck(void)</p><p><b> {</b></p><p><b> Sda=1;</b></p><p><b> Nop();</b>&
91、lt;/p><p><b> Scl=1;</b></p><p><b> Nop();</b></p><p><b> Scl=0;</b></p><p><b> }</b></p><p> /*發(fā)送數(shù)據(jù)子程序,D
92、ata為要求發(fā)送的數(shù)據(jù)*/</p><p> void Send(uchar Data)</p><p><b> {</b></p><p> uchar BitCounter=8;</p><p> uchar temp;</p><p><b> do</b>
93、</p><p><b> {</b></p><p> temp=Data;</p><p><b> Scl=0;</b></p><p><b> Nop();</b></p><p> if((temp&0x80)==0x80)
94、</p><p><b> Sda=1;</b></p><p><b> else </b></p><p><b> Sda=0;</b></p><p><b> Scl=1;</b></p><p> temp=D
95、ata<<1;</p><p> Data=temp;</p><p> BitCounter--;</p><p><b> }</b></p><p> while(BitCounter);</p><p><b> Scl=0;</b></p
96、><p><b> }</b></p><p> /*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/</p><p> uchar Read(void)</p><p><b> {</b></p><p> uchar temp=0;</p><p>
97、uchar temp1=0;</p><p> uchar BitCounter=8;</p><p><b> Sda=1;</b></p><p><b> do{</b></p><p><b> Scl=0;</b></p><p>&l
98、t;b> Nop();</b></p><p><b> Scl=1;</b></p><p><b> Nop();</b></p><p><b> if(Sda)</b></p><p> temp=temp|0x01;</p>
99、<p><b> else</b></p><p> temp=temp&0xfe;</p><p> if(BitCounter-1)</p><p><b> {</b></p><p> temp1=temp<<1;</p><p&g
100、t; temp=temp1;</p><p><b> }</b></p><p> BitCounter--;</p><p><b> }</b></p><p> while(BitCounter);</p><p> return(temp);</p
101、><p><b> }</b></p><p> void WrToROM(uchar Data[],uchar Address,uchar Num)</p><p><b> {</b></p><p><b> uchar i;</b></p><p
102、> uchar *PData;</p><p> PData=Data;</p><p> for(i=0;i<Num;i++)</p><p><b> {</b></p><p><b> Start();</b></p><p> Send(0x
103、a0);</p><p><b> Ack();</b></p><p> Send(Address+i);</p><p><b> Ack();</b></p><p> Send(*(PData+i));</p><p><b> Ack();<
104、;/b></p><p><b> Stop();</b></p><p> mDelay(20);</p><p><b> }</b></p><p><b> }</b></p><p> void RdFromROM(uchar
105、Data[],uchar Address,uchar Num)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> uchar *PData;</p><p> PData=Data;</p><p> for
106、(i=0;i<Num;i++)</p><p><b> {</b></p><p><b> Start();</b></p><p> Send(0xa0);</p><p><b> Ack();</b></p><p> Send
107、(Address+i);</p><p><b> Ack();</b></p><p><b> Start();</b></p><p> Send(0xa1);</p><p><b> Ack();</b></p><p> *(PDa
108、ta+i)=Read();</p><p><b> Scl=0;</b></p><p><b> NoAck();</b></p><p><b> Stop();</b></p><p><b> }</b></p><p
109、><b> }</b></p><p> //==================================================================================================</p><p> //=======================================LCD1602
110、====================================================</p><p> //==================================================================================================</p><p> #define yi 0x80 //LCD第
111、一行的初始位置,因?yàn)長CD1602字符地址首位D7恒定為1(100000000=80)</p><p> #define er 0x80+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)</p><p> //----------------延時(shí)函數(shù),后面經(jīng)常調(diào)用----------------------</p><p> voi
112、d delay(uint xms)//延時(shí)函數(shù),有參函數(shù)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=xms;x>0;x--)</p><p> for(y=110;y>0;y--);</p>
113、;<p><b> }</b></p><p> //--------------------------寫指令---------------------------</p><p> void write_1602com(uchar com)//****液晶寫入指令函數(shù)****</p><p><b> {&l
114、t;/b></p><p> lcd1602_rs=0;//數(shù)據(jù)/指令選擇置為指令</p><p> lcd1602_rw=0; //讀寫選擇置為寫</p><p> P0=com;//送入數(shù)據(jù)</p><p><b> delay(1);</b></p><p> lcd1602
115、_en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備</p><p><b> delay(1);</b></p><p> lcd1602_en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b> }</b></p><p> //------------------
116、-------寫數(shù)據(jù)-----------------------------</p><p> void write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****</p><p><b> {</b></p><p> lcd1602_rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù)</p><p>
117、; lcd1602_rw=0; //讀寫選擇置為寫</p><p> P0=dat;//送入數(shù)據(jù)</p><p><b> delay(1);</b></p><p> lcd1602_en=1; //en置高電平,為制造下降沿做準(zhǔn)備</p><p><b> delay(1);</b>&
118、lt;/p><p> lcd1602_en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p><b> }</b></p><p> //-------------------------初始化-------------------------</p><p> void lcd_init(void)
119、</p><p><b> {</b></p><p> write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p> write_1602com(0x0c);//開顯示不顯示光標(biāo)</p><p> write_1602com(0x06);//整屏不移
120、動(dòng),光標(biāo)自動(dòng)右移</p><p> write_1602com(0x01);//清顯示</p><p><b> }</b></p><p> //========================================================================================</p&g
121、t;<p> //=========================================================================================</p><p> //==============將按鍵值編碼為數(shù)值=========================</p><p> unsigned char codi
122、ng(unsigned char m) </p><p><b> {</b></p><p> unsigned char k;</p><p><b> switch(m)</b></p><p><b> {</b></p><p>
123、case (0x18): k=1;break;</p><p> case (0x28): k=2;break;</p><p> case (0x48): k=3;break;</p><p> case (0x88): k='A';break;</p><p> case (0x14): k=4;break;<
124、;/p><p> case (0x24): k=5;break;</p><p> case (0x44): k=6;break;</p><p> case (0x84): k='B';break;</p><p> case (0x12): k=7;break;</p><p> case (
125、0x22): k=8;break;</p><p> case (0x42): k=9;break;</p><p> case (0x82): k='C';break;</p><p> case (0x11): k='*';break;</p><p> case (0x21): k=0;break
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子密碼鎖
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)----電子密碼鎖設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)電子密碼鎖設(shè)計(jì)
- 課程設(shè)計(jì)-電子密碼鎖設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)---電子密碼鎖
- eda課程設(shè)計(jì)—電子密碼鎖
- eda電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)3
- 電子密碼鎖課程設(shè)計(jì).doc
- 電子密碼鎖——eda課程設(shè)計(jì)
- eda電子密碼鎖課程設(shè)計(jì)
評論
0/150
提交評論