版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 隨著社會(huì)的發(fā)展進(jìn)步,密碼鎖逐漸成為我們生活中很重要的一部分,密碼鎖是安全的一個(gè)很好的保障措施。本論文設(shè)計(jì)一個(gè)基于單片機(jī)和存儲(chǔ)器的,能夠進(jìn)行開鎖,上鎖,修改密碼的電子密碼鎖。</p><p> 電子密碼鎖是現(xiàn)代電子科技與安全結(jié)合的產(chǎn)物。它在現(xiàn)代鎖業(yè)扮演著重要的角色,本文的主要內(nèi)容是用AT89c52單片
2、機(jī)為核心控制元件,用存儲(chǔ)器24c04進(jìn)行存儲(chǔ)密碼鎖的密碼,當(dāng)用戶輸入的密碼與存儲(chǔ)器儲(chǔ)存的密碼相同時(shí),即可開鎖成功,并也可以修改密碼,若不相同,則不能開鎖,并提示密碼錯(cuò)誤。</p><p> 關(guān)鍵詞:AT89C52單片機(jī) 密碼鎖 LCD 矩陣鍵盤 </p><p><b> 目錄</b></p><p><b> 摘 要1&
3、lt;/b></p><p><b> 目錄2</b></p><p><b> 1.引 言3</b></p><p><b> 2. 總體設(shè)計(jì)4</b></p><p><b> 2.1基本原理4</b></p>&
4、lt;p> 2.2系統(tǒng)總體框圖及設(shè)計(jì)思路4</p><p><b> 3.詳細(xì)設(shè)計(jì)5</b></p><p> 3.1 硬件設(shè)計(jì)5</p><p> 3.2軟件設(shè)計(jì).8</p><p> 3.2.1程序設(shè)計(jì)思路8</p><p> 3.2.2 程序流程圖8</
5、p><p> 3.2.3 程序代碼9</p><p> 4. 系統(tǒng)調(diào)試及分析15</p><p><b> 5.心得體會(huì)17</b></p><p><b> 參考文獻(xiàn)18</b></p><p><b> 1.引 言</b></p&
6、gt;<p> 單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。 </p><p> 密碼鎖是一種通過密碼輸入來控制電路或是芯片工
7、作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡(jiǎn)易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的數(shù)字密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的。其性能和安全性已大大超過了機(jī)械鎖。其特點(diǎn)是保密性好,隨機(jī)開鎖成功率幾乎為零。密碼可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。無活動(dòng)零件,不會(huì)磨損,壽命長(zhǎng)。使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開鎖。數(shù)字密碼鎖操作簡(jiǎn)單
8、易行,一學(xué)就會(huì)。</p><p><b> 2. 總體設(shè)計(jì)</b></p><p><b> 2.1基本原理</b></p><p> 電子密碼鎖是才用存儲(chǔ)芯片24C04進(jìn)行存放密碼,單片機(jī)可以對(duì)24C04進(jìn)行讀取密碼和寫入密碼,本密碼鎖是事先吧初始密碼123456寫入24C04中,用戶輸入密碼后,通過對(duì)用戶輸入的密
9、碼和24C04中的密碼進(jìn)行比較,若比較相同則提示開鎖稱成功,開鎖后,用戶可以修改密碼,即把用戶輸入的新密碼寫入到24C04當(dāng)中,并清除之前的密碼,按下保存鍵后,繼成功修改密碼。</p><p> 其中24C04的原理如下:</p><p> AT24C04是美國(guó)Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5 V)、擦寫次
10、數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C04中帶有的片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用
11、于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。 AT24C02正是運(yùn)用了I2C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C04)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(hào)(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)</p&g
12、t;<p> 2.2系統(tǒng)總體框圖及設(shè)計(jì)思路</p><p><b> 總體設(shè)計(jì)思路:</b></p><p> 本設(shè)計(jì)利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的IO端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加掉電存儲(chǔ)。其中,0-9為用戶可以輸入密碼可選擇的數(shù)字,10號(hào)功能為開鎖鍵,11號(hào)功能為上鎖,12號(hào)功能為輸入修改后的密碼,13號(hào)功能為保
13、存密碼,14號(hào)功能為重新輸入。利用LCD來顯示提示信息,用LED來提示密碼鎖的狀態(tài)。</p><p><b> 3.詳細(xì)設(shè)計(jì)</b></p><p><b> 3.1 硬件設(shè)計(jì)</b></p><p><b> 1.芯片及原理介紹</b></p><p><b>
14、; AT89C52</b></p><p> AT89C52與MCS-51單片機(jī)產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33MHz 、 三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程I/O口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時(shí)器 、雙數(shù)據(jù)指針 、掉電標(biāo)識(shí)符 。 &
15、lt;/p><p> AT89C52的一些特殊功能口,如下表所示:</p><p><b> 矩陣鍵盤</b></p><p> 使用矩陣鍵盤,所以本設(shè)計(jì)就采用行列式鍵盤,同時(shí)也能減少鍵盤與單片機(jī)接口時(shí)所占用的I/O線的數(shù)目,在按鍵比較多的時(shí)候,通常采用這樣方法。其原理如圖。本設(shè)計(jì)中矩陣鍵盤接在單片機(jī)的P1口。</p><
16、p> 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個(gè)按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個(gè)按鍵的鍵盤。</p><p> 在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。</p><p> 當(dāng)確認(rèn)有按鍵按下后,下一步就要識(shí)別哪一個(gè)按鍵按下。對(duì)鍵的識(shí)別通常有兩
17、種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。</p><p><b> LCD1602</b></p><p> 本系統(tǒng)設(shè)計(jì)的顯示電路是為了給使用者以提示而設(shè)置的。本系統(tǒng)的顯示采用了LCD1602作為顯示模塊,其能夠同時(shí)顯示16x02即32個(gè)字符。LCD在系統(tǒng)中,其D0-D7引腳分別接單片機(jī)的P0口、VSS和VDD分別接電源和地線、VEE為液晶
18、亮度調(diào)節(jié)按鈕(可接電位器)、RS為數(shù)據(jù)或命令的選擇端接P2.0、RW為讀寫的選擇端接P2.1、E為使能信號(hào)接P2.2。如圖所示。</p><p><b> 24C04</b></p><p> 本設(shè)計(jì)中為了在系統(tǒng)掉電時(shí)能夠保存系統(tǒng)的設(shè)置密碼,使用了具有I2C總線接口的E2PROM的24C04芯片來保存密碼鎖的密碼。</p><p> SC
19、L串行時(shí)鐘 AT24C02串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘,這是一個(gè)輸入管腳。 </p><p> SDA串行數(shù)據(jù)/地址 AT24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個(gè)開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線或(wire-OR)。 </p><p> A0、A1、A2器件地址輸入端 這些輸入腳用于多
20、個(gè)器件級(jí)聯(lián)時(shí)設(shè)置器件地址,當(dāng)這些腳懸空時(shí)默認(rèn)值為0。當(dāng)使用AT24C02 時(shí)最大可級(jí)聯(lián)8個(gè)器件。如果只有一個(gè)AT24C02被總線尋址,這三個(gè)地址輸入腳(A0、A1、A2 )可懸空或連接到Vss,如果只有一個(gè)AT24C02被總線尋址這三個(gè)地址輸入腳(A0、A1、A2 )必須連接到Vss。 </p><p> WP寫保護(hù) 如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護(hù)只能讀。當(dāng)WP管腳連接到Vss 或懸空允
21、許器件進(jìn)行正常的讀/寫操作</p><p><b> 2.硬件原理圖</b></p><p> P1口通過連接1個(gè)矩陣鍵盤,作為密碼輸入和功能選擇按鍵;P0口接LCD1602的8位數(shù)據(jù)通信線;P2.0,P2.1,P2.2接LCD控制端;P3.2和P3.3接24C04。 </p><p><b> 軟件設(shè)計(jì). </b>
22、</p><p> 3.2.1程序設(shè)計(jì)思路</p><p> 電子密碼鎖工作的主要過程是LCD提示開始選擇操作功能(選擇開鎖還是更改密碼),通過10號(hào)鍵盤開鎖,13號(hào)14號(hào)進(jìn)行密碼的修改與保存。</p><p> 當(dāng)用戶選擇開鎖時(shí),通過鍵盤輸入開鎖密碼。如果密碼輸入正確,則LCD提示密碼正確、LED燈亮表示開鎖。如果密碼輸入錯(cuò)誤則LCD提示密碼錯(cuò)誤。</
23、p><p> 當(dāng)用戶選擇更改密碼功能時(shí),要求用戶先輸入當(dāng)前密碼。當(dāng)密碼正確時(shí)LCD提示用戶進(jìn)一步操作。單片機(jī)向24C04寫入新密碼,否則提示錯(cuò)誤并返回初狀態(tài)。</p><p> 3.2.1程序流程圖</p><p> 3.2.3 程序代碼</p><p><b> 1、預(yù)定義部分</b></p><
24、;p> #include<reg52.h></p><p> #include<string.h></p><p> #include<intrins.h></p><p> #include <lcd_1602.h></p><p> #include <key.h>
25、;</p><p> #include <IIC_24C04.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> //上次按鍵和當(dāng)前按鍵序號(hào),該矩陣中序號(hào)范圍0~15,16表示無按鍵</p>&
26、lt;p> uchar pre_keyno=16,keyno=16;</p><p> uchar code Title_Text[]="your password...";//標(biāo)題字符串</p><p> uchar DSY_BUFFER[16]=" ";//顯示緩沖</p><p>
27、; uchar userpassword[7]=" ";//用戶輸入的密碼</p><p> uchar IIC_Password[7];</p><p> uchar IS_Valid_User = 0;</p><p> uchar i = 0;</p><p> void Beep();<
28、/p><p> uchar Clear_Password();</p><p> sbit LED_OPEN = P2^0;//開鎖燈亮</p><p> sbit BEEP = P3^7;//蜂鳴器</p><p><b> 2、功能控制</b></p><p> void key_mai
29、n()</p><p><b> {</b></p><p> P1 = 0xF0;</p><p> if(P1 != 0xF0) keyno = keys_scan(); //掃描鍵盤獲取鍵序號(hào)KeyNo </p><p> if(pre_keyno != keyno)</p><p&
30、gt;<b> {</b></p><p><b> if(i<=6)</b></p><p><b> {</b></p><p> switch ( keyno )</p><p><b> {</b></p><p
31、> case 0: case 1: case 2: case 3: case 4: </p><p> case 5: case 6: case 7: case 8: case 9:</p><p> if (i == 0) display_string(" ",0x40); &
32、lt;/p><p> userpassword[i] = keyno + '0';</p><p> userpassword[i+1] = ' ';//DSY_BUFFER[i] = userpassword[i];</p><p> DSY_BUFFER[i] = '*';</p><p>
33、; DSY_BUFFER[i+1] = ' ';</p><p> display_string(DSY_BUFFER,0x40);</p><p> i++;break;</p><p> case 10: //按A鍵開鎖</p><p> if (strcmp(userpassword,IIC_Passwor
34、d) == 0) </p><p><b> {</b></p><p> LED_OPEN = 0; //點(diǎn)亮LED</p><p> Clear_Password();</p><p> display_string("Unlock OK! ",0x40);</p>
35、<p> IS_Valid_User = 1;</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> LED_OPEN =1; //關(guān)閉LED</p>
36、<p> Clear_Password();</p><p> display_string("ERROR ! ",0x40);</p><p> IS_Valid_User = 0;</p><p><b> }</b></p><p><b> i
37、= 0;</b></p><p><b> break;</b></p><p> case 11: //按B鍵上鎖</p><p> LED_OPEN =1; </p><p> Clear_Password();</p><p> display_string(Tit
38、le_Text,0x00);</p><p> display_string(" ",0x40);</p><p><b> i = 0; </b></p><p> IS_Valid_User = 0; </p><p><b&
39、gt; break;</b></p><p> case 12: //按C鍵設(shè)置新密碼</p><p> //如果是合法用戶則提示輸入新密碼</p><p> if ( !IS_Valid_User ) </p><p> display_string("No rights !",0x40);<
40、/p><p><b> else </b></p><p><b> {</b></p><p><b> i = 0;</b></p><p> display_string("New Password: ",0x00);</p>&
41、lt;p> display_string(" ",0x40);</p><p><b> }</b></p><p> break; </p><p> case 13: //按D鍵保存新密碼</p><p>
42、 if ( !IS_Valid_User ) display_string("No rights !",0x40);</p><p><b> else </b></p><p><b> {</b></p><p> sendstring(0xa0, 0 , userpassword, 6);&
43、lt;/p><p> //重新讀入剛寫的密碼</p><p> recstring(0xa0, 0 , IIC_Password, 6); </p><p> IIC_Password[6] = ' '; </p><p><b> i = 0;</b
44、></p><p> display_string(Title_Text,0x00);</p><p> display_string("Password Saved! ",0x40);</p><p> } </p><p> break;
45、 </p><p> case 14: //按E鍵消除所有輸入</p><p><b> i = 0;</b></p><p> Clear_Password();</p><p> display_string(" ",0x40);
46、</p><p><b> }</b></p><p><b> }</b></p><p><b> beep();</b></p><p> pre_keyno = keyno;</p><p><b> }</b>&
47、lt;/p><p> //delay(100);</p><p> // Beep(); </p><p> delay(100);</p><p><b> P1= 0xF0;</b></p><p> while (P1 != 0xF0); //如果有鍵未
48、釋放則等待</p><p> while (P1 == 0xF0); //如果沒有再次按下按鍵則等待</p><p><b> }</b></p><p> 3、24C04讀寫程序 </p><p> //---------------------從芯片讀取1字節(jié)</p><p>
49、 uchar recbyte()</p><p><b> {</b></p><p> uchar i,rd;</p><p><b> rd=0x00;</b></p><p><b> SDA=1;</b></p><p> for(i=
50、0;i<8;i++)</p><p><b> {</b></p><p> SCL=1;rd<<=1;rd|=SDA;delay4us();SCL=0;delay4us();</p><p><b> }</b></p><p><b> SCL=0;</
51、b></p><p> delay4us();</p><p> return rd;</p><p><b> }</b></p><p> //----------------------向芯片發(fā)送一個(gè)字節(jié)</p><p> uchar sendbyte(uchar wd)&l
52、t;/p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> bit ACK0;</b></p><p> for(i=0;i<8;i++)</p><p><b> {<
53、;/b></p><p> SDA=(bit)(wd&0x80);</p><p> _nop_();_nop_(); SCL=1;delay4us(); SCL=0; wd<<=1;</p><p><b> }</b></p><p> delay4us();</p>
54、<p><b> SDA=1;</b></p><p><b> SCL=1;</b></p><p> delay4us();</p><p> ACK0=!SDA;</p><p><b> SCL=0; </b></p><p&g
55、t; delay4us();</p><p> return ACK0;</p><p><b> }</b></p><p> //發(fā)送多字節(jié)數(shù)據(jù)函數(shù)</p><p> uchar sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar N)</
56、p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> start();</b></p><p> if(!sendbyte(slave))</p><p><b> return
57、0;</b></p><p> if(!sendbyte(subaddr)) </p><p><b> return 0;</b></p><p> for(i=0;i<N-1;i++)</p><p><b> {</b></p><p> i
58、f(!sendbyte(buffer[i])) return 0;</p><p><b> }</b></p><p><b> stop();</b></p><p><b> return 1;</b></p><p><b> }</b>&
59、lt;/p><p> //-------------------接收多字節(jié)數(shù)據(jù)函數(shù)</p><p> uchar recstring(uchar slave,uchar subaddr,uchar *buffer,uchar N)</p><p><b> {</b></p><p><b> uchar
60、i;</b></p><p><b> start();</b></p><p> if(!sendbyte(slave)) </p><p><b> return 0;</b></p><p> if(!sendbyte(subaddr)) </p><p
61、><b> return 0;</b></p><p><b> start();</b></p><p> if(!sendbyte(slave+1)) </p><p><b> return 0;</b></p><p> for(i=0;i<N-1
62、;i++)</p><p><b> {</b></p><p> buffer[i]=recbyte();</p><p><b> ACK();</b></p><p><b> }</b></p><p> buffer[N-1]= re
63、cbyte();</p><p><b> no_ACK();</b></p><p><b> stop();</b></p><p><b> return 1;</b></p><p><b> }</b></p><p&
64、gt; 4、LCD1602顯示部分</p><p> //測(cè)試LCD忙狀態(tài) 返回result</p><p> bit lcd_bz()</p><p><b> {</b></p><p> bit result;</p><p><b> rs = 0;</b&g
65、t;</p><p><b> rw = 1;</b></p><p><b> eq = 1;</b></p><p> _nop_();_nop_();_nop_();_nop_();</p><p> result = (bit)(P0&0x80);</p>
66、<p><b> eq = 0;</b></p><p> return result;</p><p><b> } </b></p><p> //寫指令數(shù)據(jù)到LCD</p><p> void lcd_wcmd(uchar cmd)</p><p>
67、;<b> {</b></p><p><b> rs = 0;</b></p><p><b> rw = 0;</b></p><p><b> eq = 0;</b></p><p><b> P0 = cmd;</b>
68、;</p><p><b> eq = 1;</b></p><p> delay_lcd(1);</p><p><b> eq = 0;</b></p><p><b> }</b></p><p> //寫入顯示數(shù)據(jù)到LCD</p&
69、gt;<p> void lcd_wdat(uchar dat)</p><p><b> {</b></p><p> while(lcd_bz());</p><p><b> rs = 1;</b></p><p><b> rw = 0;</b>
70、</p><p><b> P0 = dat;</b></p><p> delay_lcd(1);</p><p><b> eq = 1;</b></p><p><b> eq = 0;</b></p><p><b> }&l
71、t;/b></p><p><b> //LCD初始化</b></p><p> void lcd_init()</p><p><b> {</b></p><p> lcd_wcmd(0x38);//顯示模式設(shè)置,5*7點(diǎn)陣,8位數(shù)據(jù)接口</p><p>
72、 while(lcd_bz());</p><p> lcd_wcmd(0x0c);//顯示開及光標(biāo)設(shè)置不顯示</p><p> lcd_wcmd(0x06);//顯示光標(biāo)移動(dòng)設(shè)置</p><p> lcd_wcmd(0x01);//顯示清屏</p><p><b> }</b></p><p
73、> void display_string(uchar *str,uchar lineno)//在液晶指定行顯示字符串</p><p><b> {</b></p><p><b> uchar i;</b></p><p> lcd_wcmd(0x80 + lineno);</p><p
74、> for(i=0; i<16; i++)//???length(str)?????????</p><p><b> {</b></p><p> lcd_wdat(str[i]);</p><p><b> }</b></p><p><b> }<
75、;/b></p><p> 5、矩陣鍵盤掃描部分</p><p> //-------------------------矩陣鍵盤掃描</p><p> uchar keys_scan()</p><p><b> {</b></p><p> uchar temp,k;</
76、p><p><b> P1=0x0f;</b></p><p> delay_key(2);</p><p> temp=P1^0x0f;</p><p> switch(temp)</p><p><b> {</b></p><p> ca
77、se 1: k=0;break;</p><p> case 2: k=1;break;</p><p> case 4: k=2;break;</p><p> case 8: k=3;break;</p><p> default:break ;</p><p><b> }</b>
78、</p><p><b> P1=0xf0;</b></p><p> delay_key(2);</p><p> temp=(P1>>4)^0x0f;</p><p> switch(temp)</p><p><b> {</b></p>
79、;<p> case 1: k+=0;break;</p><p> case 2: k+=4;break;</p><p> case 4: k+=8;break;</p><p> case 8: k+=12;break;</p><p> default:break ;</p><p>&
80、lt;b> }</b></p><p> //keyno=k;</p><p><b> return k;</b></p><p><b> }</b></p><p><b> 6、主函數(shù)</b></p><p> vo
81、id main()</p><p><b> {</b></p><p> init_main(); </p><p> display_string(Title_Text,0x00); //在第1行顯示標(biāo)題</p><p> //24C04的內(nèi)容已由初始化BIN文件導(dǎo)入</p><p>
82、 //將24C04中預(yù)先寫入的密碼讀入pass</p><p> recstring(0xa0, 0 , IIC_Password, 6); </p><p> IIC_Password[6] = '\0';</p><p><b> while(1)</b></p><p><b>
83、; { </b></p><p> key_main(); </p><p><b> }</b></p><p><b> }</b></p><p> 4. 系統(tǒng)調(diào)試及分析</p><p> 用keil編寫程序編譯運(yùn)行通過后,用Proteus仿真
84、結(jié)果如下,以下是輸入密碼正確,開鎖成功; </p><p> 修改密碼,提示輸入新密碼,并保存成功。</p><p><b> 5.心得體會(huì)</b></p><p> 在著手本次課程設(shè)計(jì)時(shí),通過查閱網(wǎng)絡(luò)與圖書館搜集到的資料,加上指導(dǎo)老師指點(diǎn),結(jié)合生活中對(duì)密碼鎖的功能特性要求,設(shè)計(jì)出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了
85、課題。不過由于了解的專業(yè)知識(shí)尚淺,對(duì)課題的研究經(jīng)驗(yàn)的不足,使得在技術(shù)的解決與運(yùn)用上顯得粗糙了一些,特別是功能鍵的設(shè)定。</p><p> 在設(shè)計(jì)的過程當(dāng)中經(jīng)歷和克服了許多困難,暴露我們知識(shí)和經(jīng)驗(yàn)不足的同時(shí)也積累了實(shí)踐經(jīng)驗(yàn),檢閱了大學(xué)所學(xué)的知識(shí),使所學(xué)的知識(shí)得到復(fù)習(xí)和鞏固。通過這次畢業(yè)設(shè)計(jì)我學(xué)到了很多東西,復(fù)習(xí)了理論知識(shí),特別是單片機(jī)外圍電路模塊電路設(shè)計(jì)及其應(yīng)用編程;學(xué)會(huì)收集和處理資料的一些基本問題,提高獲取新知
86、識(shí)的能力、分析和解決問題的能力以及交流與合作的能力。</p><p> 這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,在同學(xué)的幫助下,終于游逆而解。非常感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1]李群芳 張士軍 黃建 《單片微型計(jì)算機(jī)與接口技術(shù)》電子工業(yè)出版社</p><p&g
87、t; [2]周美娟 肖來勝 《單片機(jī)原理及系統(tǒng)設(shè)計(jì)》清華大學(xué)出版社</p><p> [3] 黃鑫,馬善農(nóng),趙永科.基于CPLD的電子琴研究與設(shè)計(jì)[J].科技廣場(chǎng). </p><p> [4] 趙亮,侯國(guó)銳.單片機(jī)C語言編程與實(shí)例[M].北京:人民郵電出版社. </p><p> [5] 徐新艷.單片機(jī)原理、應(yīng)用與實(shí)踐[M].北京:高等教育出版社</p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子密碼鎖
- 電子密碼鎖課程設(shè)計(jì)報(bào)告 (2)
- 電子密碼鎖課程設(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ì)
評(píng)論
0/150
提交評(píng)論