版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計 (論文)</b></p><p> 2012?。?013 學(xué)年度</p><p> 電子信息工程 系(部) 應(yīng)用電子技術(shù) 專業(yè)</p><p> 題 目 </p><p> 學(xué)生姓名 </p><p> 學(xué)
2、生班級 </p><p> 指導(dǎo)教師 </p><p> 起止日期 </p><p> 2012 年10 月 日</p><p> 畢業(yè)設(shè)計 (論文)任務(wù)書</p><p> 系(部) 專業(yè) 班級 姓名 學(xué)號
3、 </p><p> 指導(dǎo)教師 </p><p> 職務(wù)(稱) </p><p> 20 年 月 日</p><p><b> 電子密碼鎖設(shè)計</b></p><p><b> 作者:xxx</b></p>
4、;<p> 【摘要】隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點,本設(shè)計使用ATMEL公司的AT89S52實現(xiàn)一基于單片機(jī)的電子密碼鎖的設(shè)計。本文介紹一種基于單片機(jī)和串行EEPROM的智能密碼鎖,是密碼鎖設(shè)計中比較簡單的一種,其主要功能有鍵盤輸入、LED數(shù)碼管顯示、加密、修改密
5、碼、密碼檢測、錯誤報警等簡單易懂、使用方便、安全性能高等。本設(shè)計采用AT89S52單片機(jī)為芯片主體,采用AT24C08為掉電存儲器的芯片。這種芯片穩(wěn)定性高,成本低。它是采用AT89S52單片機(jī)和AT24C08串行EEPROM,通過AT89S52模擬I2C總線和AT24C08通訊,實現(xiàn)密碼鎖的功能。</p><p> 【關(guān)鍵詞】 AT89S52 AT24C08 密碼鎖 矩陣鍵盤</p><
6、;p><b> 引言</b></p><p> 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙
7、的密碼鎖應(yīng)運而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點。</p><p> 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼鎖,克服了機(jī)械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機(jī)的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密
8、碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。</p><p> 隨著人們對安全的重視和科技的發(fā)展,許多電子智能鎖(指紋識別、IC卡辨認(rèn))已在國內(nèi)外相繼面世。但是這些產(chǎn)品的特點是針對特定的指紋和有效卡,只能適用于保密要求的箱、柜、門等。而且指紋識識別器若在公共場所使用存在容易機(jī)械損壞,IC卡還存在容易丟失、損壞等特點。加上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣。鑒于目前的技術(shù)水平與市場的接收程度,電子密
9、碼鎖是這類電子防盜產(chǎn)品的主流。本次設(shè)計使用ATMEL公司的AT89S52實現(xiàn)一基于單片機(jī)的電子密碼鎖的設(shè)計</p><p><b> 方案論證</b></p><p> 設(shè)計本課題時構(gòu)思時考慮到數(shù)字電路方案原理過于簡單,而且不能滿足現(xiàn)在的安全需求,所以本文采用一種是用以AT89S52為核心的單片機(jī)控制方案。</p><p> 以AT89S
10、51為核心的單片機(jī)控制方案利用單片機(jī)靈活的編程設(shè)計和豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加調(diào)電存儲、聲光提示甚至添加遙控控制功能。其原理方框圖如圖2-1所示。</p><p><b> 圖2-1</b></p><p> 單片機(jī)方案有較大的活動空間,不但能實現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級
11、。</p><p><b> 硬件設(shè)計</b></p><p><b> 3.1 功能模塊</b></p><p> 3.11開鎖電路設(shè)計</p><p> 通過單片機(jī)送給開鎖執(zhí)行機(jī)構(gòu),將P3.5置低電平,密碼正確指示燈亮,從而達(dá)到開鎖的目的。其原理如圖3-1所示。</p>&
12、lt;p> 圖3-1密碼鎖開鎖示意圖</p><p> 3.12按鍵電路設(shè)計</p><p> 由于設(shè)計要求使用矩陣鍵盤,所以本設(shè)計就彩行列式鍵盤,同時也能減少鍵盤與單片機(jī)接口時所占用的I/O口線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。</p><p> 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣
13、結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。</p><p> 當(dāng)確認(rèn)有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法,另一種是速度較快的線反轉(zhuǎn)法。</p><p> 判斷鍵盤中哪一個鍵被按下使通過將列線逐列置
14、低電平后,檢查行輸入狀態(tài)來實現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點上的那個鍵。</p><p> 按鍵的操作面板如圖3-2所示。共計數(shù)字鍵10個,功能鍵4個,鍵盤上還有2個指示燈和蜂鳴器。</p><p> 圖3-2按鍵操作面板示意圖</p><p&g
15、t; 其中10個數(shù)字鍵用來輸入密碼,另外4個功能鍵分別是:A、B、C、D。其中A鍵的功能是顯示密碼,B鍵的功能是確認(rèn)輸入的密碼,C鍵的功能是當(dāng)輸入密碼錯誤的時候,清除前面已經(jīng)輸入的數(shù)據(jù),重新輸入,D是用來進(jìn)入修改密碼的狀態(tài)。上面的兩個指示燈L1、L2、是用來指示操作的狀態(tài):L1是開門指示燈,正常的情況下無顯示,當(dāng)鍵盤動作且密碼正確的時候,燈亮;L2是電源狀態(tài)指示燈,當(dāng)接通電源時,指示燈自動點亮,否則,燈滅。</p>&l
16、t;p> 面板上還有一個蜂鳴器,其功能是當(dāng)用戶輸入密碼錯誤時或密碼輸入錯誤次數(shù)超過了3次,鳴笛以示報警。</p><p> 3.13顯示電路設(shè)計</p><p> 本系統(tǒng)設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的,選擇四位連體共陽的數(shù)碼管,本系統(tǒng)的顯示采用并行顯示的方式,只使用單片機(jī)的兩個口P0口和P2口,就可以完成單片機(jī)的顯示功能,顯示電路的電路原理圖如圖3-3所示,P0口完
17、成段碼顯示,P2口完成位選功能。</p><p> 電路設(shè)定:當(dāng)密碼輸入錯誤次數(shù)達(dá)到三次以上時,顯示”E”,當(dāng)無輸入\斷電時,則關(guān)閉顯示,當(dāng)忘記密碼,輸錯密碼,判斷密碼正確無誤時,可通過功能鍵進(jìn)行顯示更改密碼及判斷。</p><p> 圖3-3顯示器原理圖</p><p> 3.14 AT24C08斷電存儲單元的設(shè)計</p><p>
18、 斷電存儲單元的作用是在電源斷開的時候,存儲當(dāng)前設(shè)定的信息。AT24C08是ATMEL公司的8KB字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。其電路如圖3-4所示。</p><p> 圖3-4斷電存儲電路原理圖</p><p&g
19、t; 由于AT24C08的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。</p><p> 每當(dāng)設(shè)定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等信息,讀到緩存單元中,供主程序使用。</p><p> 3.15 總體設(shè)計總框圖</
20、p><p> 圖3-5總體設(shè)計框圖</p><p><b> 3.2 原理圖</b></p><p><b> 3.3 PCB圖</b></p><p><b> 軟件設(shè)計</b></p><p> 4.1 程序流程圖</p>
21、<p> 圖4-1 主程序流程圖 圖4-2 修改密碼流程圖</p><p> 圖4-3 鍵盤程序流程圖 圖4-4 24c08程序流程圖</p><p> 4.2 程序?qū)崿F(xiàn)功能.</p><p> 該主要由三部分組成:4×4矩陣鍵盤接口電路、密碼鎖的控制電路、輸出八段顯示電路。另
22、外系統(tǒng)還有LED提示燈,報警蜂鳴器等,可分為以下幾個模塊: </p><p><b> 垣殘壁 </b></p><p><b> (1)主程序模塊 </b></p><p> 主程序主要完成初始化、檢查有無按鍵按下、以及調(diào)用顯示等等,其流程圖如4-1所示。 </p><p><b>
23、; (2)顯示子程序 </b></p><p> 由于是分屏顯示數(shù)據(jù),所以就要用到4個顯示子程序,分別是:功能鍵顯示密碼狀態(tài)子程序、修改密碼顯示子程序、判斷密碼輸入正確提示子程序、密碼輸入錯誤次數(shù)超過3次后的鎖定狀態(tài)顯示子程序,其流程圖如4-2所示。 </p><p> (3)鍵盤掃描及識別子程序 </p><p> 鍵盤采用查詢的方式,放在主程
24、序中,當(dāng)沒有按鍵按下的時候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回,其程序流程圖如4-3所示。 </p><p> (4)調(diào)電存儲服務(wù)程序 </p><p> 當(dāng)比較密碼的時候,需要讀AT24C08程序,將存儲在芯片內(nèi)的數(shù)據(jù)讀到RAM中,然后和輸入的密碼相比較。當(dāng)修改密碼的時候,需要把輸入的密碼保存到AT24C08中,并實現(xiàn)斷電保護(hù),其流程圖如4-4所
25、示。 </p><p><b> 程序及部分說明</b></p><p> #include <reg52.h></p><p> #include <intrins.h></p><p><b> unsigned </b></p><p>
26、 char b[14]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,</p><p> 0x80,0x90,0xff,0xff,0xff,0xff};</p><p> unsigned char c[4];</p><p> unsigned char a[4]={0xf1,0xf2,0xf4,0xf8},kk[8]
27、;</p><p> unsigned char K,Key,ac,i,z,wr,ii; //ac表示數(shù)碼管顯示個數(shù)</p><p> sbit scl = P2^6; </p><p> sbit sda = P2^7; </p><p> sbit P35 = P3^5;</p&
28、gt;<p> sbit P34 = P3^4;</p><p><b> // 延時子程序 </b></p><p> void delay(unsigned char pp)//延遲時間等于pp*1ms</p><p><b> {</b></p><p> wh
29、ile(pp--)</p><p><b> {</b></p><p> unsigned char j;</p><p> for(j=0;j<126;j++); //j進(jìn)行的內(nèi)部循環(huán),1次延遲8us,延遲1ms</p><p><b> }<
30、;/b></p><p><b> }</b></p><p> void delayNOP()</p><p><b> {</b></p><p> _nop_();_nop_();_nop_();_nop_();</p><p><b> }&
31、lt;/b></p><p><b> //開始位 </b></p><p> void start() </p><p><b> { </b></p><p><b> sda = 1;</b></p><p> delayNOP()
32、; </p><p><b> scl = 1; </b></p><p> delayNOP(); </p><p><b> sda = 0; </b></p><p> delayNOP(); </p><p><b> } </b&g
33、t;</p><p><b> // 停止位 </b></p><p> void stop() </p><p><b> { </b></p><p><b> sda = 0; </b></p><p> delayNOP(); <
34、;/p><p> scl = 1; </p><p> delayNOP(); </p><p><b> sda = 1; </b></p><p> delayNOP(); </p><p><b> }</b></p><p><b
35、> //應(yīng)答// </b></p><p> void respons ()</p><p><b> {</b></p><p> unsigned char i;</p><p><b> scl=1;</b></p><p> delayN
36、OP(); </p><p> while((sda==1)&&(i<250))i++;</p><p><b> scl=0;</b></p><p> delayNOP();</p><p><b> }</b></p><p><b&
37、gt; //總線初始化//</b></p><p> void init()</p><p><b> { </b></p><p><b> sda=1;</b></p><p> delayNOP(); </p><p><b> scl
38、=1;</b></p><p> delayNOP(); </p><p><b> }</b></p><p><b> //寫字節(jié)//</b></p><p> void write_byte(unsigned char date)</p><p>&
39、lt;b> {</b></p><p> unsigned char i,temp;</p><p> temp=date;</p><p> for(i=0;i<8;i++)</p><p><b> { </b></p><p> temp=temp<
40、<1; </p><p><b> scl=0;</b></p><p> delayNOP(); </p><p><b> sda=CY;</b></p><p> delayNOP();</p><p><b> scl=1;</b>
41、;</p><p> delayNOP(); </p><p><b> }</b></p><p><b> scl=0;</b></p><p> delayNOP();</p><p><b> sda=1;</b></p>
42、<p> delayNOP(); </p><p><b> }</b></p><p><b> //讀字節(jié)//</b></p><p> unsigned char read_byte()</p><p><b> { </b></p>
43、<p> unsigned char i,j,k;</p><p><b> scl=0;</b></p><p> delayNOP();</p><p><b> sda=1;</b></p><p> delayNOP(); </p><p>
44、 for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> scl=1;</b></p><p> delayNOP(); </p><p> if(sda==1)</p><p><b> j=1;</
45、b></p><p><b> else</b></p><p><b> j=0;</b></p><p> k=(k<<1)|j;</p><p><b> scl=0;</b></p><p> delayNOP();
46、</p><p><b> }</b></p><p><b> return k;</b></p><p><b> }</b></p><p><b> //寫地址//</b></p><p> void write_
47、add(unsigned char address,unsigned char date)</p><p><b> {</b></p><p><b> start();</b></p><p> write_byte(0xa0);</p><p> respons();</p>
48、;<p> write_byte(address);</p><p> respons();</p><p> write_byte(date);</p><p> respons();</p><p><b> stop();</b></p><p><b>
49、 }</b></p><p><b> //讀地址//</b></p><p> unsigned char read_add(unsigned char address)</p><p><b> { </b></p><p> unsigned char date;<
50、/p><p><b> start();</b></p><p> write_byte(0xa0);</p><p> respons();</p><p> write_byte(address);</p><p> respons();</p><p><
51、b> start();</b></p><p> write_byte(0xa1);</p><p> respons();</p><p> date=read_byte();</p><p><b> stop();</b></p><p> return dat
52、e;</p><p><b> }</b></p><p><b> //功能//</b></p><p> void fun1()//功能鍵顯示密碼</p><p><b> { </b></p><p> for(z=0;z<ac;
53、z++)</p><p><b> {</b></p><p><b> P0=c[z];</b></p><p> P2=read_add(wr++);</p><p> c[3]=c[2];</p><p> c[2]=c[1];</p><
54、p> c[1]=c[0];</p><p> c[0]=read_add(i++);</p><p><b> }</b></p><p><b> } </b></p><p> void fun2()//判斷密碼</p><p><b> {
55、</b></p><p> if(((P0=read_add(i))!=(P0=c[i]))&&((P2=read_add(i))!=(P2=a[i])))</p><p><b> {</b></p><p><b> P34=0;</b></p><p> d
56、elay(100);</p><p><b> P34=1;</b></p><p><b> ii++;</b></p><p><b> }</b></p><p><b> else</b></p><p><b
57、> {</b></p><p><b> P35=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> void fun3()//刪除功能鍵</p><p><b&g
58、t; {</b></p><p> for(K=10;K<11;K++) </p><p><b> {</b></p><p> c[0]=c[1];</p><p> c[1]=c[2];</p><p> c[2]=
59、c[3]; </p><p> c[3]=b[K];</p><p><b> }</b></p><p><b> }</b></p><p> void fun4()//更改密碼確認(rèn)鍵</p><p><b> {</b><
60、;/p><p> if(P35==0)</p><p><b> {</b></p><p> write_add(i,c[0]);</p><p> write_add(wr,a[0]);</p><p> delay(10);</p><p> write_a
61、dd(i+1,c[1]);</p><p> write_add(wr,a[1]);</p><p> delay(10);</p><p> write_add(i+2,c[2]);</p><p> write_add(wr,a[2]);</p><p> delay(10);</p>&
62、lt;p> write_add(i+3,c[3]);</p><p> write_add(wr,a[3]);</p><p> delay(10);</p><p><b> }</b></p><p><b> }</b></p><p><b>
63、; //顯示//</b></p><p> void display()</p><p><b> { </b></p><p> unsigned char i;</p><p> for(i=0;i<ac;i++) //為了讓4個數(shù)碼管輪流亮一遍過去</p&
64、gt;<p><b> {</b></p><p><b> P0=c[i];</b></p><p><b> P2=a[i];</b></p><p> delay(1); </p><p><b> }</b></p&g
65、t;<p><b> } </b></p><p><b> //按鍵//</b></p><p> unsigned char Keycan(void) //按鍵掃描程序 P1.0--P1.3為行線 P1.4--P1.7為列線</p><p><b> {</b&g
66、t;</p><p> unsigned char rcode, ccode;</p><p> P1 = 0xF0; // 發(fā)全0行掃描碼,列線輸入</p><p> if((P1&0xF0) != 0xF0) // 若有鍵按下</p><p><b>
67、; { </b></p><p> delay(1); // 延時去抖動 </p><p> if((P1&0xF0) != 0xF0)</p><p><b> { </b></p><p> rcode = 0xFE;
68、 // 逐行掃描初值</p><p> while((rcode&0x10) != 0)</p><p><b> {</b></p><p> P1 = rcode; // 輸出行掃描碼</p><p> if((P1&0xF0) !=
69、 0xF0) // 本行有鍵按下</p><p><b> {</b></p><p> ccode = (P1&0xF0)|0x0F;</p><p> while((P1&0xF0) != 0xF0); //等待鍵釋放</p><p> return ((~rco
70、de) + (~ccode)); // 返回鍵編碼</p><p><b> }</b></p><p><b> else</b></p><p> rcode = (rcode<<1)|0x01; // 行掃描碼左移一位</p><p><b> }
71、</b></p><p><b> }</b></p><p><b> } </b></p><p> return 0; // 無鍵按下,返回值為0</p><p><b> }</b></p>
72、;<p> void KeyDeal(unsigned char Key)</p><p><b> { </b></p><p> if(Key!=0)</p><p><b> {</b></p><p> switch(Key)</p><p>
73、;<b> {</b></p><p> case 0x11: K=0; break;</p><p> case 0x21: K=1; break;</p><p> case 0x41: K=2; break;</p><p> case 0x81: K=3; break;</p><p
74、> case 0x12: K=4; break;</p><p> case 0x22: K=5; break;</p><p> case 0x42: K=6; break;</p><p> case 0x82: K=7; break;</p><p> case 0x14: K=8; break;</p>
75、<p> case 0x24: K=9; break;</p><p> case 0x44: K=10,fun1(); break;</p><p> case 0x84: K=11,fun2(); break;</p><p> case 0x18: K=12,fun3(); break;</p><p> case
76、0x28: K=13,fun4(); break;</p><p> default: break;</p><p><b> } </b></p><p><b> if(K<=9)</b></p><p><b> { </b></p>
77、<p> c[3]=c[2];</p><p> c[2]=c[1];</p><p> c[1]=c[0];</p><p> c[0]=b[K];</p><p><b> ac++;</b></p><p><b> if(ac>4)</b>
78、</p><p><b> ac=4;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void main()</p>
79、<p><b> { </b></p><p> init(); // 24C08初始化</p><p> while(1) //鍵盤及顯示</p><p><b> { </b></p><p> Key = Keycan();
80、 //鍵盤掃描獲取一次按鍵的編碼0x11-0x88</p><p> KeyDeal(Key); //對掃描到的鍵盤編碼進(jìn)行</p><p> 轉(zhuǎn)換處理,變成數(shù)據(jù)鍵盤0-9</p><p> display();</p><p><b> if(ii==3)</b></p><
81、;p><b> { </b></p><p> P0=0x86; // 三次錯誤顯示E</p><p> while(1); // 自鎖鍵盤</p><p><b> }</b></p><p><b> }</b></p>
82、;<p><b> }</b></p><p><b> 第五章 總結(jié)</b></p><p> 在沒有做畢業(yè)設(shè)計以前,覺得畢業(yè)設(shè)計只是對知識的單純總結(jié),但是通過這次畢業(yè)設(shè)計發(fā)現(xiàn)自己的看法有點太片面,畢業(yè)設(shè)計(論文)不僅是對前面所學(xué)知識的一種檢驗,也是對自己能力的一種提高,通過這次課程設(shè)計使自己明白了原來的那點知識是非常欠缺
83、的,要學(xué)習(xí)的東西還很多,通過這次課程設(shè)計,明白學(xué)習(xí)是一個長期積累的過程,在以后的工作和生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己的知識和綜合素質(zhì)。雖然這個設(shè)計做的不怎么好,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益</p><p><b> 致謝</b></p><p> 通過寫作論文,我更加深刻理解了“態(tài)度決定一切”這句話,論文即將完成之
84、際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接受我誠摯的謝意! </p><p> 我還要向給予我轉(zhuǎn)載和引用權(quán)的資料、圖片、文獻(xiàn)、研究思想和設(shè)想的所有者表示衷心的感謝!</p><p> 最后,再次對關(guān)心、幫助我的老師和同學(xué)表示衷心地感謝!</p><p><b> 【參考文獻(xiàn)】<
85、/b></p><p> [1] 孫涵芳,徐愛卿編著。MCS—51/96系列單片機(jī)原理及應(yīng)用(修訂版)。北京:北京航空航天大學(xué)出版社,1996.4</p><p> [2] 何立民編著。MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(系統(tǒng)配置與接口技術(shù))。北京:北京航空航天大學(xué)出版社,1993.8</p><p> [3] 杜剛,電路設(shè)計與制板——Protel應(yīng)用教
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計---電子密碼鎖設(shè)計
- 電子密碼鎖設(shè)計畢業(yè)設(shè)計
- 電子密碼鎖畢業(yè)設(shè)計
- 電子密碼鎖畢業(yè)設(shè)計
- 電子密碼鎖的畢業(yè)設(shè)計
- 電子密碼鎖畢業(yè)設(shè)計論文
- 電子密碼鎖畢業(yè)設(shè)計論文
- 電子密碼鎖畢業(yè)設(shè)計 (2)
- 電子密碼鎖設(shè)計畢業(yè)設(shè)計論文
- 密碼鎖畢業(yè)設(shè)計
- 電子密碼鎖的畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---lcd電子密碼鎖的設(shè)計
- 電子密碼鎖畢業(yè)設(shè)計論文 (2)
- eda電子密碼鎖畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計--基于fpga的電子密碼鎖設(shè)計
- 無限密碼鎖畢業(yè)設(shè)計
- 密碼鎖畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計---多功能電子密碼鎖設(shè)計報告
- 畢業(yè)設(shè)計---基于fpga的電子密碼鎖設(shè)計
- 電子密碼鎖的設(shè)計與制作畢業(yè)設(shè)計
評論
0/150
提交評論