版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 隨著社會的發(fā)展進步,密碼鎖逐漸成為我們生活中很重要的一部分,密碼鎖是安全的一個很好的保障措施。本論文設(shè)計一個基于單片機和存儲器的,能夠進行開鎖,上鎖,修改密碼的電子密碼鎖。</p><p> 電子密碼鎖是現(xiàn)代電子科技與安全結(jié)合的產(chǎn)物。它在現(xiàn)代鎖業(yè)扮演著重要的角色,本文的主要內(nèi)容是用AT89c52單片
2、機為核心控制元件,用存儲器24c04進行存儲密碼鎖的密碼,當用戶輸入的密碼與存儲器儲存的密碼相同時,即可開鎖成功,并也可以修改密碼,若不相同,則不能開鎖,并提示密碼錯誤。</p><p> 關(guān)鍵詞:AT89C52單片機 密碼鎖 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è)計4</b></p><p><b> 2.1基本原理4</b></p>&
4、lt;p> 2.2系統(tǒng)總體框圖及設(shè)計思路4</p><p><b> 3.詳細設(shè)計5</b></p><p> 3.1 硬件設(shè)計5</p><p> 3.2軟件設(shè)計.8</p><p> 3.2.1程序設(shè)計思路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.心得體會17</b></p><p><b> 參考文獻18</b></p><p><b> 1.引 言</b></p&
6、gt;<p> 單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應(yīng)用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。 </p><p> 密碼鎖是一種通過密碼輸入來控制電路或是芯片工
7、作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的數(shù)字密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點是保密性好,隨機開鎖成功率幾乎為零。密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。無活動零件,不會磨損,壽命長。使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。數(shù)字密碼鎖操作簡單
8、易行,一學就會。</p><p><b> 2. 總體設(shè)計</b></p><p><b> 2.1基本原理</b></p><p> 電子密碼鎖是才用存儲芯片24C04進行存放密碼,單片機可以對24C04進行讀取密碼和寫入密碼,本密碼鎖是事先吧初始密碼123456寫入24C04中,用戶輸入密碼后,通過對用戶輸入的密
9、碼和24C04中的密碼進行比較,若比較相同則提示開鎖稱成功,開鎖后,用戶可以修改密碼,即把用戶輸入的新密碼寫入到24C04當中,并清除之前的密碼,按下保存鍵后,繼成功修改密碼。</p><p> 其中24C04的原理如下:</p><p> AT24C04是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(2.5~5.5 V)、擦寫次
10、數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了I2C總線式進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數(shù)據(jù)實時的存取十分方便。AT24C04中帶有的片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。I2C總線是一種用
11、于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件。 AT24C02正是運用了I2C規(guī)程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C04)均可工作于接收器和發(fā)送器狀態(tài)。主機產(chǎn)生串行時鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機還是從機,接收到一個字節(jié)后必須發(fā)出一個確認</p&g
12、t;<p> 2.2系統(tǒng)總體框圖及設(shè)計思路</p><p><b> 總體設(shè)計思路:</b></p><p> 本設(shè)計利用單片機靈活的編程設(shè)計和豐富的IO端口,及其控制的準確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加掉電存儲。其中,0-9為用戶可以輸入密碼可選擇的數(shù)字,10號功能為開鎖鍵,11號功能為上鎖,12號功能為輸入修改后的密碼,13號功能為保
13、存密碼,14號功能為重新輸入。利用LCD來顯示提示信息,用LED來提示密碼鎖的狀態(tài)。</p><p><b> 3.詳細設(shè)計</b></p><p><b> 3.1 硬件設(shè)計</b></p><p><b> 1.芯片及原理介紹</b></p><p><b>
14、; AT89C52</b></p><p> AT89C52與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33MHz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針 、掉電標識符 。 &
15、lt;/p><p> AT89C52的一些特殊功能口,如下表所示:</p><p><b> 矩陣鍵盤</b></p><p> 使用矩陣鍵盤,所以本設(shè)計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。其原理如圖。本設(shè)計中矩陣鍵盤接在單片機的P1口。</p><
16、p> 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。</p><p> 在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認有無按鍵按下的程序段。</p><p> 當確認有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩
17、種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。</p><p><b> LCD1602</b></p><p> 本系統(tǒng)設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的。本系統(tǒng)的顯示采用了LCD1602作為顯示模塊,其能夠同時顯示16x02即32個字符。LCD在系統(tǒng)中,其D0-D7引腳分別接單片機的P0口、VSS和VDD分別接電源和地線、VEE為液晶
18、亮度調(diào)節(jié)按鈕(可接電位器)、RS為數(shù)據(jù)或命令的選擇端接P2.0、RW為讀寫的選擇端接P2.1、E為使能信號接P2.2。如圖所示。</p><p><b> 24C04</b></p><p> 本設(shè)計中為了在系統(tǒng)掉電時能夠保存系統(tǒng)的設(shè)置密碼,使用了具有I2C總線接口的E2PROM的24C04芯片來保存密碼鎖的密碼。</p><p> SC
19、L串行時鐘 AT24C02串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘,這是一個輸入管腳。 </p><p> SDA串行數(shù)據(jù)/地址 AT24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進行線或(wire-OR)。 </p><p> A0、A1、A2器件地址輸入端 這些輸入腳用于多
20、個器件級聯(lián)時設(shè)置器件地址,當這些腳懸空時默認值為0。當使用AT24C02 時最大可級聯(lián)8個器件。如果只有一個AT24C02被總線尋址,這三個地址輸入腳(A0、A1、A2 )可懸空或連接到Vss,如果只有一個AT24C02被總線尋址這三個地址輸入腳(A0、A1、A2 )必須連接到Vss。 </p><p> WP寫保護 如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護只能讀。當WP管腳連接到Vss 或懸空允
21、許器件進行正常的讀/寫操作</p><p><b> 2.硬件原理圖</b></p><p> P1口通過連接1個矩陣鍵盤,作為密碼輸入和功能選擇按鍵;P0口接LCD1602的8位數(shù)據(jù)通信線;P2.0,P2.1,P2.2接LCD控制端;P3.2和P3.3接24C04。 </p><p><b> 軟件設(shè)計. </b>
22、</p><p> 3.2.1程序設(shè)計思路</p><p> 電子密碼鎖工作的主要過程是LCD提示開始選擇操作功能(選擇開鎖還是更改密碼),通過10號鍵盤開鎖,13號14號進行密碼的修改與保存。</p><p> 當用戶選擇開鎖時,通過鍵盤輸入開鎖密碼。如果密碼輸入正確,則LCD提示密碼正確、LED燈亮表示開鎖。如果密碼輸入錯誤則LCD提示密碼錯誤。</
23、p><p> 當用戶選擇更改密碼功能時,要求用戶先輸入當前密碼。當密碼正確時LCD提示用戶進一步操作。單片機向24C04寫入新密碼,否則提示錯誤并返回初狀態(tài)。</p><p> 3.2.1程序流程圖</p><p> 3.2.3 程序代碼</p><p><b> 1、預定義部分</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> //上次按鍵和當前按鍵序號,該矩陣中序號范圍0~15,16表示無按鍵</p>&
26、lt;p> uchar pre_keyno=16,keyno=16;</p><p> uchar code Title_Text[]="your password...";//標題字符串</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(); //掃描鍵盤獲取鍵序號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; //點亮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ā)送一個字節(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> //測試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點陣,8位數(shù)據(jù)接口</p><p>
72、 while(lcd_bz());</p><p> lcd_wcmd(0x0c);//顯示開及光標設(shè)置不顯示</p><p> lcd_wcmd(0x06);//顯示光標移動設(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行顯示標題</p><p> //24C04的內(nèi)容已由初始化BIN文件導入</p><p>
82、 //將24C04中預先寫入的密碼讀入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編寫程序編譯運行通過后,用Proteus仿真
84、結(jié)果如下,以下是輸入密碼正確,開鎖成功; </p><p> 修改密碼,提示輸入新密碼,并保存成功。</p><p><b> 5.心得體會</b></p><p> 在著手本次課程設(shè)計時,通過查閱網(wǎng)絡(luò)與圖書館搜集到的資料,加上指導老師指點,結(jié)合生活中對密碼鎖的功能特性要求,設(shè)計出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了
85、課題。不過由于了解的專業(yè)知識尚淺,對課題的研究經(jīng)驗的不足,使得在技術(shù)的解決與運用上顯得粗糙了一些,特別是功能鍵的設(shè)定。</p><p> 在設(shè)計的過程當中經(jīng)歷和克服了許多困難,暴露我們知識和經(jīng)驗不足的同時也積累了實踐經(jīng)驗,檢閱了大學所學的知識,使所學的知識得到復習和鞏固。通過這次畢業(yè)設(shè)計我學到了很多東西,復習了理論知識,特別是單片機外圍電路模塊電路設(shè)計及其應(yīng)用編程;學會收集和處理資料的一些基本問題,提高獲取新知
86、識的能力、分析和解決問題的能力以及交流與合作的能力。</p><p> 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,在同學的幫助下,終于游逆而解。非常感謝!</p><p><b> 參考文獻</b></p><p> [1]李群芳 張士軍 黃建 《單片微型計算機與接口技術(shù)》電子工業(yè)出版社</p><p&g
87、t; [2]周美娟 肖來勝 《單片機原理及系統(tǒng)設(shè)計》清華大學出版社</p><p> [3] 黃鑫,馬善農(nóng),趙永科.基于CPLD的電子琴研究與設(shè)計[J].科技廣場. </p><p> [4] 趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社. </p><p> [5] 徐新艷.單片機原理、應(yīng)用與實踐[M].北京:高等教育出版社</p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 課程設(shè)計--電子密碼鎖
- 電子密碼鎖課程設(shè)計報告 (2)
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖設(shè)計課程設(shè)計
- 課程設(shè)計----電子密碼鎖設(shè)計
- 電子密碼鎖設(shè)計課程設(shè)計
- 課程設(shè)計電子密碼鎖設(shè)計
- 課程設(shè)計-電子密碼鎖設(shè)計
- 電子密碼鎖課程設(shè)計報告
- eda課程設(shè)計---電子密碼鎖
- eda課程設(shè)計—電子密碼鎖
- eda電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計3
- 電子密碼鎖課程設(shè)計.doc
- 電子密碼鎖——eda課程設(shè)計
評論
0/150
提交評論