

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計論文</b></p><p> 設(shè)計題目: 基于單片機的數(shù)字溫度計設(shè)計 </p><p> 專 業(yè): 應(yīng)用電子技術(shù) </p><p> 班 級: 應(yīng)電08-3 </p><p> 學(xué)
2、 號: </p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p><b> 二0一0年七月十日</b></p><p> 畢業(yè)設(shè)計(論文)任務(wù)書&
3、lt;/p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p><b> 第1章 緒論2</b></p><p> 第2章 系統(tǒng)方案論證與比較3</p><p> 2.1 方案比較3</p
4、><p> 2.2 方案論證4</p><p> 第3章 硬件設(shè)計6</p><p> 3.1主控芯片介紹6</p><p> 3.2 復(fù)位電路8</p><p> 3.3 時鐘電路9</p><p> 3.4 矩陣電路10</p><p> 3.5
5、 顯示電路11</p><p> 3.6 測溫電路13</p><p> 3.6.1 DS18B20單線數(shù)字溫度傳感器13</p><p> 3.6.2 DS18B20工作原理13</p><p> 3.6.3 DS18B20的性能特點14</p><p> 3.6.4 DS18B20內(nèi)部結(jié)構(gòu)1
6、4</p><p> 3.7 整機工作原理16</p><p> 第4章 軟件設(shè)計17</p><p> 第5章 仿真與調(diào)試29</p><p> 5.1 仿真與調(diào)試29</p><p> 5.2 調(diào)試與運行29</p><p><b> 結(jié) 論30</b
7、></p><p><b> 參考文獻31</b></p><p> 附錄1 源程序32</p><p> 附錄2元器件名細表45</p><p> 附錄3仿真電路圖46 </p><p><b> 摘 要</b></p><p&
8、gt; 溫度的檢測與控制是工業(yè)生產(chǎn)過程中比較典型的應(yīng)用之一,隨著傳感器在生產(chǎn)和生活中的更加廣泛的應(yīng)用,利用新型單總線式數(shù)字溫度傳感器實現(xiàn)對溫度的測試與控制得到更快的開發(fā)。在這里介紹了一種基于DS18B20和AT89C52單片機的溫度測量及控制系統(tǒng)的硬件結(jié)構(gòu)以及C語言程序設(shè)計,該系統(tǒng)設(shè)計和布線簡單,結(jié)構(gòu)緊湊,體積小,重量輕,抗干擾能力強,性價比高,擴展方便,在大型倉庫,工廠,智能化建筑等領(lǐng)域的多點溫度檢測中有廣闊的應(yīng)用前景。</p
9、><p> 關(guān)鍵詞 DS18B20;AT89C52;溫度測量;控制</p><p><b> 第1章 緒論</b></p><p> 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的。溫度測控技術(shù)也在各個領(lǐng)域應(yīng)用越來越廣泛,同時溫度測量也被人們異常關(guān)注,一時間涌現(xiàn)出大量各式各樣的測試溫度儀器,這
10、些儀器的原理到底是怎樣的呢?說到底也是所以溫度測控的范疇,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、學(xué)習(xí)、生活提供更好的更方便的設(shè)施就需要從數(shù)字單片機技術(shù)入手,一切想著數(shù)字化,智能化控制方向發(fā)展。</p><p> 本設(shè)計所介紹的數(shù)字溫度計與傳統(tǒng)數(shù)字溫度計相比,具有讀數(shù)方便,測溫范圍廣,測量準確,其輸出采用數(shù)字顯示,主要用于對測溫比較準確的地方,或科研實驗室使用,測溫傳感
11、器使用DS18B20,用LCD實現(xiàn)溫度顯示。</p><p> 第2章 系統(tǒng)方案論證與比較</p><p><b> 2.1 方案比較</b></p><p><b> 方案一:</b></p><p> 采用熱電偶溫差電路測溫,溫度檢測部分可以采用低溫?zé)崤?,熱電偶由兩個焊接在一起的異金屬導(dǎo)
12、線組成(熱電偶的組成如圖2-1),熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成。通過將參考結(jié)點保持在已知溫度并測量該電壓,便可以推測出檢測結(jié)點的溫度。數(shù)據(jù)采集部分則使用帶有A/D通道的單片機,在將隨被溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)處理了,在顯示電路上就可以將北側(cè)溫度顯示出來。熱電偶的優(yōu)點是工作溫度寬,且體積小,但是也存在輸出電壓小,容易遭受來自導(dǎo)線環(huán)路噪音的影響以及漂移較高的缺點
13、并且這種電路需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p><b> 方案二:</b></p><p> 采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號全數(shù)字化。便于單片機處理和控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性質(zhì)穩(wěn)定,它溫用作工業(yè)測溫元件,此元件線性較好。在0-100攝氏度時,最大線性偏差小于1攝氏度。DS18B20的最大
14、特點之一是采用了單總數(shù)的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89C52構(gòu)成溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接和計算機連接。這樣溫度系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51單片機控制軟件編程的自由度大,而且體積小,硬件實現(xiàn)簡單,安裝方便。</p><p> 該系統(tǒng)利用AT89C51芯片控制溫度傳感器DS18B20進行溫度的實時檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)置上限
15、報警溫度。</p><p> 從以上兩總方案,容易看出方案一的溫測裝置可測溫度范圍廣,體積小,但是單線性誤差大。</p><p> 方案二的溫測裝置電路簡單,精準度較高,實現(xiàn)方便,軟件設(shè)計也比較簡單,故本次設(shè)計采用方案二。</p><p> 顯示電路可以采用兩種方案:第一種是通過單片機控制譯碼器將譯碼器輸出的數(shù)據(jù)送給數(shù)碼管進行顯示,但是要單獨增加一個顯示電路,
16、使設(shè)計比較復(fù)雜。另一種是直接運用LCD液晶顯示,即直接通過單片對其進行顯示以及數(shù)據(jù)處理較多;因此選擇第二種方案。</p><p><b> 2.2 方案論證</b></p><p> 在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要檢測溫度,傳統(tǒng)的方式是采用熱電偶或熱電阻。其硬件電路和軟件調(diào)試比較復(fù)雜,制作成本較高。近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正不斷走向深入。所以我們選用
17、單片機作為核心部件進行邏輯控制及信號的產(chǎn)生,用單片機本生的優(yōu)勢節(jié)約成本,使電路更簡單。</p><p> 根據(jù)題目的要求,本次設(shè)計采用由 AT89C51單片機及DS18B20溫度傳感器組成數(shù)據(jù)采集電路,加上顯示電路和控制電路等,根據(jù)溫度數(shù)據(jù)測量,通過控制電路對溫度進行控制。本系統(tǒng)具有快速顯示、測量準確、精度高、可調(diào)溫控范圍、硬件結(jié)構(gòu)簡單等優(yōu)點,是一種比較經(jīng)濟的溫度控制系統(tǒng)。</p><p&g
18、t; A/D轉(zhuǎn)換器將溫度傳感器采集的溫度模擬信號轉(zhuǎn)化成數(shù)字信號,送入單片機的I/O數(shù)據(jù)接口,然后通過單片機讀回I/O數(shù)據(jù)進行溫度的判斷,最后將數(shù)據(jù)送入顯示譯碼單元。顯示時,譯碼電路是將單片機輸出的BCD碼送入譯碼器,通過其譯碼后送入LCD顯示電路。</p><p><b> 第3章 硬件設(shè)計</b></p><p><b> 3.1主控芯片介紹<
19、/b></p><p> 單片機AT89C2051具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。</p><p> AT89C51是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATM
20、EL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C51提供了高性價比的解決方案。</p><p> AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C51可以按照常規(guī)方法進行編程,也可以在
21、線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。</p><p> 3-1AT89C51主要功能特性:</p><p> 表3-1AT89C51單片機的管腳功能。</p><p><b> VCC:供電電壓。</b></p><p><b>
22、 GND:接地。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p> P1口:P1口是一個
23、內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并
24、因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:P3口是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸
25、出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口,如下所示:</p><p> P3口管腳 備選功能</p><p> P3.0 RXD(串行輸入口)</p><p>
26、; P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(計時器0外部輸入)</p><p> P3.5 T1(計時器1外部輸入)</p><p> P3.6 /WR(外部數(shù)據(jù)存儲器寫選通
27、)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p><p> P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p> ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在F
28、LASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><
29、;p> /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLAS
30、H編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p><b> 3.2 復(fù)位電路</b></p><p> 為確保兩點間溫度控制系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必
31、不可少的一部分,復(fù)位電路的第一功能是上電復(fù)位。一般電路正常工作需要供電電源為5V±5%,即4.75~5.25V。</p><p> 復(fù)位是單片機的初始化操作,其目的是使CPU及各專用寄存器處于一個確定的初始狀態(tài)。如:把PC的內(nèi)容初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當(dāng)單片機系統(tǒng)在運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要復(fù)位以使其恢復(fù)正
32、常工作狀態(tài)。</p><p> RST端的外部復(fù)位電路有兩種操作方式:上電自動復(fù)位和按鍵手動復(fù)位。按鍵手動復(fù)位有電平方式和脈沖方式兩種,本系統(tǒng)設(shè)計采用上電復(fù)位,如圖2-3所示。上電復(fù)位是直接將RST端通過電阻接高電平來實現(xiàn)單片機的復(fù)位。</p><p><b> 3.3 時鐘電路</b></p><p> 單片機的時鐘信號用來提供單片機內(nèi)
33、各種微操作的時間基準,時鐘電路用于產(chǎn)生單片機工作所需要的時鐘信號。</p><p> 單片機的時鐘信號用來提供單片機片內(nèi)各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。本系統(tǒng)設(shè)計采用內(nèi)部振蕩方式,如圖2-4所示。MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,
34、實際使用中常采用這種方式。</p><p><b> 3.4 矩陣電路</b></p><p> 按照鍵盤與單片機的連接方式可分為獨立式鍵盤與矩陣式鍵盤。矩陣式鍵盤是一種常見的輸入裝置,在日常生活中,矩陣式鍵盤在計數(shù)機、電話、手機、微波爐等各式電子產(chǎn)品上已經(jīng)被廣泛應(yīng)用。在鍵盤中按鍵較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平
35、線和垂直線在交叉處不直接連接,而是通過一個按鍵加以連接。這樣,一個端口就可以構(gòu)成4x4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20的鍵盤,而直接用端口線則只能多出一鍵。所以本次設(shè)計采用的是矩陣式鍵盤,確定矩陣式鍵盤上的何鍵被按下可以采用行掃描法。</p><p> 判斷鍵盤中有無鍵按下:</p><p> 將全部行線置低電平
36、,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位低于電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則按鍵中無鍵按下。</p><p> 判斷閉合鍵所在位置:</p><p> 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,在逐行檢測各
37、列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。</p><p><b> 3.5 顯示電路</b></p><p> 在單片機應(yīng)用系統(tǒng)中,對于系統(tǒng)的運行狀態(tài)和運行結(jié)果,通常都需要直觀交互顯示出來。單片機應(yīng)用系統(tǒng)中最常用的顯示器有LED和LCD兩種。這兩種顯示器都可以顯示數(shù)字、字符及系統(tǒng)的狀態(tài),LED和LED數(shù)碼顯示最為普遍,本設(shè)
38、計采用的是更為環(huán)保的LCD顯示器。</p><p> 字符型液晶顯示模塊是一種專門用于顯示字母,數(shù)字,字符等點陣式LCD,目前常用的有16x1,16x2,,20x2,40x2行等模塊。</p><p> 點陣字符型LCD的接口特性</p><p> 點陣字符型LCD是專門用于顯示數(shù)字,字母,圖形符號及少量自定義字號的液晶顯示器。這類顯示器把LCD控制器,點陣驅(qū)
39、動器,字符存儲器,顯示體及少量的組容元件等集成一個液晶顯示模塊,鑒于字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,其電特性及接口特性是統(tǒng)一的。因此,只要設(shè)計出一種字號的接口電路,在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示模塊。字符型液晶顯示模塊的控制器大多數(shù)為日立公司生產(chǎn)的HD44780及其兼容的控制器。</p><p> 點陣型液晶顯示模塊的基本特點</p><p> (1)液晶顯
40、示屏是以若干5x8或5x11點陣塊組成的顯示字符群。每個點陣塊為一個字符位,字符間距和行距都為一個點的寬度。</p><p> ?。?)主控電路電路為HD44780-及其他公司的全兼容電路。因此從程序員的角度來說,LCD的顯示接口與編程是面向HD44780的,只要了解HD44780的編程結(jié)構(gòu)即可進行LCD的顯示編程。</p><p> ?。?)內(nèi)部具有字符發(fā)生器ROM,可顯示192種字符。
41、</p><p> ?。?)具有64字節(jié)的自定義字符RAM,可以定義8個5x8點陣字符或4個5x11點陣字符。</p><p> (5)具有64字節(jié)的數(shù)據(jù)顯示RAM,共進行顯示編程時使用。</p><p> ?。?)標(biāo)準接口,與M68HC08系列MCU容易接口。</p><p> (7)模塊結(jié)構(gòu)緊湊,輕巧,裝備容易。</p>
42、<p> (8)單+5V電源供電。</p><p> (9)低功耗,高可靠性。</p><p> (10)HD44780的引腳與時序</p><p> ?。?1)HD44780的外部接口信號一般有16條,與MCU的接口有8條數(shù)據(jù)線DB0~DB7和3條控制線RS,RW,E,HD44780的引腳功能如表3-2所示。</p><p&g
43、t; 表3-2 HD47780的引腳功能表</p><p> 控制器HD44780的信號功能控制如表3-3</p><p> 3-3控制器HD44780的信號功能</p><p> 圖3-5 LCD顯示電路</p><p><b> 3.6 測溫電路</b></p><p> 3.6
44、.1 DS18B20單線數(shù)字溫度傳感器</p><p> 由DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,可廣泛用于工業(yè)、民用、軍事等領(lǐng)域的溫度測量及控制儀器、測控系統(tǒng)和大型設(shè)備中。它具有體積小,接口方便,傳輸距離遠等特點。</p><p> 產(chǎn)品的主要技術(shù)指標(biāo):</p><p> ?。?)測量范圍:-5
45、5℃~+125℃;</p><p> (2)測量精度:0.5℃;</p><p> ?。?)反應(yīng)時間≤500ms。</p><p> 3.6.2 DS18B20工作原理</p><p> 溫度傳感器DS18B20將被測環(huán)境溫度轉(zhuǎn)化成帶符號的數(shù)字信號(以十六位補碼形式,占兩個字節(jié))在通過單片機發(fā)出命令送給顯示器。它的輸出腳I/O直接與單片
46、機相連,并接一個上拉電阻,傳感器采用外部電源供電。傳感器控制程序是按照DS18B20的通信協(xié)議編制。系統(tǒng)的工作是在程序控制下,完成對傳感器的讀寫和對溫度的顯示。</p><p> 3.6.3 DS18B20的性能特點</p><p> (1) 采用單總線專用技術(shù),既可通過串行口線,也可通過其它I/O口線與微機接口,無須經(jīng)過其它變換電路,直接輸出被測溫度值(9位二進制數(shù),含符號位);&
47、lt;/p><p> (2) 測溫范圍為-55℃~+125℃,測量分辨率為0.0625℃;</p><p> (3) 內(nèi)含64位經(jīng)過激光修正的只讀存儲器ROM;</p><p> (4) 適配各種單片機或系統(tǒng)機;</p><p> (5) 用戶可分別設(shè)定各路溫度的上、下限;</p><p> (6) 內(nèi)含寄生電源
48、。</p><p> 3.6.4 DS18B20內(nèi)部結(jié)構(gòu)</p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器TH和TL,高速暫存器。DS18B20的管腳排列如圖3-5所示。64位光刻ROM是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號。不同的器件地址序列號不同。</p><p> 圖3-
49、6 DS18B20引腳分布圖</p><p> 表3-4 DS18B20引腳功能</p><p> 表3-5 DS18B20信號功能</p><p> 以12位轉(zhuǎn)化為例說明溫度高低字節(jié)存放形式及計算:12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個高低兩個8位的RAM中,二進制中的前面5位是符號位。如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于
50、0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625才能得到實際溫度。3.6.5 DS18B20控制方法</p><p> 在硬件上,DS18B20與單片機的連接有兩種方法,一種是VCC接外部電源,GND接地,I/O與單片機的I/O線相連;另一種是用寄生電源供電,此時UDD、GND接地,I/O接單片機I/O。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右
51、的上拉電阻。此次設(shè)計選擇的是前面一種控制。表3-2 DS18B20有六條控制命令</p><p> CPU對DS18B20的訪問流程是:先對DS18B20初始化,再進行ROM操作命令,最后才能對存儲器操作,數(shù)據(jù)操作。DS18B20每一步操作都要遵循嚴格的工作時序和通信協(xié)議。如主機控制DS18B20完成溫度轉(zhuǎn)換這一過程,根據(jù)DS18B20的通訊協(xié)議,須經(jīng)三個步驟:每一次讀寫之前都要對DS18B20進行復(fù)位,復(fù)位成
52、功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操做。</p><p><b> 圖3-7測溫電路</b></p><p> 3.7 整機工作原理</p><p> 當(dāng)接通電源以后,溫度傳感器正常工作,溫度傳感器將根據(jù)被測溫度的不同來采集不同的數(shù)據(jù),然后將所采集到的數(shù)據(jù)傳送到比較器到中,然后由比較器將采集到的
53、數(shù)據(jù)轉(zhuǎn)變成高低電平,在送入單片機,單片機通過控制各個引腳電平的高低來來控制溫度的顯示輸出,當(dāng)溫度顯示TH為110°C,TL為—20°C,通過矩陣鍵盤電路可以調(diào)節(jié)TH和TL的初始值,并且還可以調(diào)節(jié)當(dāng)前的顯示的溫度值,按一次鍵盤TH和TL的值自加一或自減一,當(dāng)減到低于20°C或高于110°時,將自動返回初始值。整機電路圖如圖3-8所示</p><p><b> 第4
54、章 軟件設(shè)計</b></p><p> 整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當(dāng)硬件基本定型的時候軟件也基本定下拉了,從軟件的功能不同,可以分為兩的類:一是主程序,它是整個軟件的核心,專門用來協(xié)調(diào)各個執(zhí)行模塊和操作者的聯(lián)系。二是子程序,它是用來完成各種實質(zhì)性的工作的,如測量、計算、顯示、通訊等。每一個執(zhí)行軟件就是一個小的執(zhí)行模塊,這里將每一個模塊一一列出來,并為每個執(zhí)行模塊進行功能定義和接口定
55、義。各執(zhí)行模塊規(guī)劃好以后,就可以規(guī)劃監(jiān)控軟件了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的主程序結(jié)構(gòu),然后根據(jù)實時性的條件,合理安排監(jiān)控軟件和執(zhí)行軟件之間的調(diào)度關(guān)系。</p><p><b> 4.1主程序模塊</b></p><p> 主程序主要完成硬件初始化,子程序調(diào)用等功能</p><p> 圖4-1主程序流程圖</p>
56、<p><b> 主程序函數(shù)如下:</b></p><p> Void main()</p><p> { setds18b20(TH,TL,RS); //設(shè)置上下限報警溫度和分辨率</p><p> delay(100); </p><p><b>
57、 while(1)</b></p><p><b> { </b></p><p> pt=ReadTemperature(); </p><p> temper_LCD(); </p><p> user_temper_LCD(user_temper);</p>
58、<p> alarm_LCD(TH,TL); </p><p> LCD_Initial();</p><p> LCD_Print(0,0,TempBuffer0);</p><p> LCD_Print(0,1,TempBuffer1); </p><p> scan_full();
59、 //看有無鍵按下</p><p> if(key_ok) //如有鍵按下則看到底哪個鍵按下</p><p><b> {</b></p><p> key_value=key_scan(); //調(diào)用鍵盤掃描程序</p><p
60、> key_command(key_value); //鍵盤命令處理函數(shù)</p><p><b> }</b></p><p><b> }</b></p><p> 圖4-2 DS18B20初始化流程圖</p><p> DS18B20初始化函數(shù)</p>
61、;<p> void Init_DS18B20(void)</p><p><b> {</b></p><p> unsigned char x=0;</p><p> DQ = 0; //單片機將DQ拉低</p><p> delay_18B20(80); //精確延時 大
62、于 480us</p><p> DQ = 1; //拉高總線</p><p> delay_18B20(14);</p><p><b> x=DQ;</b></p><p> delay_18B20(20);</p><p><b> }</b>
63、;</p><p> /***********ds18b20讀一個字節(jié)**************/</p><p> unsigned char ReadOneChar(void)</p><p><b> {</b></p><p> unsigned char i=0;</p><p&g
64、t; unsigned char dat = 0;</p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p> DQ = 0; // 給脈沖信號</p><p><b> dat>>=1;</b></p>&
65、lt;p> DQ = 1; // 給脈沖信號</p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> delay_18B20(4);</p><p><b> }</b></p><p> return(da
66、t);</p><p><b> }</b></p><p> 溫度測量的結(jié)果以二進補碼形式來存放,分辨力12位的測量結(jié)果用帶5個符號的16位二進制格式來表示,高低8位分別存儲在兩個RAM單元中,前面5位S代表符號位,DS18B20函數(shù)的作用就是完成這一過程的</p><p><b> N</b></p>
67、<p> 圖4-3DS18B20寫字節(jié)流程圖</p><p> DS18B20寫函數(shù)</p><p> void setds18b20(unsigned char TH,unsigned char TL,unsigned char RS)</p><p><b> {</b></p><p> I
68、nit_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號列號的操作</p><p> WriteOneChar(0x4E);</p><p> WriteOneChar(TH); //寫入想設(shè)定的溫度報警上限</p><p> WriteOneChar(TL); //寫入想設(shè)定的溫
69、度報警下限</p><p> WriteOneChar(RS); </p><p><b> }</b></p><p> LCD上電時,都必須按照一定的時序?qū)CD進行初始化操作,主要任務(wù)是設(shè)置LCD的工作方式,顯示狀態(tài),清屏,輸入方式,光標(biāo)位置等。</p><p> 圖4-3LCD初始化流程圖</p&
70、gt;<p> 要想把顯示字符顯示在某一指定位置,就必須先將顯示數(shù)據(jù)寫在相應(yīng)的DDRAM地址中,寫數(shù)據(jù)操作函數(shù)就是完成這一過程的函數(shù)</p><p> 圖4-4LCD寫數(shù)據(jù)流程圖</p><p> void LCD_Wait(void)</p><p><b> {</b></p><p> Lc
71、dRs=0; //RS=0表示選擇指令寄存器</p><p> LcdRw=1;_nop_();//RW=1表示進行讀操作</p><p> LcdEn=1;_nop_(); //在EN為下降沿的時候鎖存據(jù)</p><p> while(DBPort&0x80)</p><p><b>
72、{</b></p><p><b> LcdEn=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_()</b></p><p><b> LcdEn=1;</b></p>
73、<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> } </b></p><p> LcdEn=0;</p><p><b> }</b></p>
74、<p> LCD要能讀寫數(shù)據(jù),必須對LCD進行讀寫操作,讀操作時,先設(shè)置RS和R/W狀態(tài),在設(shè)置E信號為高,這時從數(shù)據(jù)口讀取數(shù)據(jù),寫操作時,使能E信號下降沿有效</p><p> 圖4-5LCD讀寫操作流程圖</p><p><b> LCD寫指令函數(shù)</b></p><p> #define LCD_COMMAND
75、</p><p> #define LCD_DATA</p><p> #define LCD_CLEAR_SCREEN // 清屏</p><p> #define LCD_HOMING // 光標(biāo)返回原點</p><p> void LCD_Write(bit style, unsi
76、gned char input)</p><p><b> {</b></p><p><b> LcdEn=0;</b></p><p> LcdRs=style;</p><p> LcdRw=0;_nop_();</p><p> DBPort=input
77、;_nop_(); </p><p> LcdEn=1;_nop_(); </p><p> LcdEn=0;_nop_();</p><p> LCD_Wait();</p><p><b> }</b></p><p> //設(shè)置顯示模式****
78、********************************************************</p><p> #define LCD_SHOW//顯示開</p><p> #define LCD_HIDE//顯示關(guān) </p><p> #define LCD_CURSOR//顯示光標(biāo)</p><p&
79、gt; #define LCD_NO_CURSOR//無光標(biāo) </p><p> #define LCD_FLASH//光標(biāo)閃動</p><p> #define LCD_NO_FLASH//光標(biāo)不閃動</p><p> void LCD_SetDisplay(unsigned char DisplayMode)</p>&
80、lt;p><b> {</b></p><p> LCD_Write(LCD_COMMAND, 0x08|DisplayMode);</p><p><b> }</b></p><p> #define LCD_AC_UP</p><p> #define LCD_AC_D
81、OWN</p><p> #define LCD_MOVE// 畫面可平移</p><p> #define LCD_NO_MOVE</p><p> void LCD_SetInput(unsigned char InputMode)</p><p><b> { </b></p>
82、;<p> LCD_Write(LCD_COMMAND, 0x04|InputMode);</p><p><b> }</b></p><p> 最常見的矩陣式鍵盤按鍵識別方法是編程掃描,這里采用的是列掃描方法。</p><p><b> NO</b></p><p><
83、;b> YES</b></p><p><b> NO</b></p><p><b> YES</b></p><p> 圖4-5矩陣鍵盤流程圖</p><p> 鍵盤掃描函數(shù)</p><p> sfr key_port=0x90
84、; //定義P1口為鍵盤掃描口</p><p> //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口</p><p> bit key_ok=0; //有鍵按下的標(biāo)志</p><p> /*************延時子程序*************</p><p> ****調(diào)用一次用
85、時18微秒,t每加1,用時增加6微秒*/</p><p> void delay(unsigned char t)</p><p><b> {</b></p><p> while(t--);</p><p><b> }</b></p><p> unsigne
86、d char r_left(unsigned char x)</p><p><b> {</b></p><p><b> x<<=1;</b></p><p><b> x++;</b></p><p> return(x);</p>&l
87、t;p><b> }</b></p><p> /*************粗判有無鍵按下**********</p><p> ****有鍵按下則將key_ok置1************/</p><p> void scan_full(void)</p><p><b> {</b&
88、gt;</p><p> unsigned char temp;</p><p> key_port=0xf0; </p><p><b> temp=P1;</b></p><p> if(temp!=0xf0)</p><p><b> key_ok=1;</b&
89、gt;</p><p> else key_ok=0;</p><p><b> }</b></p><p> /************鍵盤掃描程序*************************</p><p> ****功能:返回鍵值,當(dāng)無鍵按下時,返回0*************/</p>
90、<p> unsigned char key_scan(void)</p><p><b> {</b></p><p> unsigned char temp,count=0x01,key_value;</p><p> unsigned char x_scan=0xfe,y_scan=0xef;</p>&
91、lt;p> unsigned char i,j,y; </p><p><b> while(1)</b></p><p><b> {</b></p><p> scan_full(); //粗判是否有鍵按下</p><p> if(k
92、ey_ok==1)</p><p><b> {</b></p><p><b> key_ok=0;</b></p><p> delay(200); //延時去抖動</p><p> scan_full(); //再次粗判是否有鍵按下<
93、/p><p> if(key_ok==1)</p><p><b> {</b></p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p> key_port=x_scan;</p><p&g
94、t; for(j=0;j<4;j++) </p><p><b> {</b></p><p> temp=key_port;</p><p> temp=temp&0xf0;</p><p> y=y_scan&0xf0;</p><p> i
95、f(temp==y)</p><p><b> {</b></p><p> while(key_ok!=0) //等待按鍵松開</p><p><b> {</b></p><p> scan_full();</p><p><b> }</b
96、></p><p> key_value=count;</p><p> return(key_value);</p><p><b> }</b></p><p><b> else </b></p><p><b> {&l
97、t;/b></p><p><b> count++;</b></p><p> y_scan=r_left(y_scan);</p><p><b> } </b></p><p><b> }</b></p><p> y_scan
98、=0xef; </p><p> x_scan=r_left(x_scan); </p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> return(k
99、ey_value);</p><p><b> }</b></p><p><b> }</b></p><p><b> 第5章 仿真與調(diào)試</b></p><p><b> 5.1 仿真與調(diào)試</b></p><p>
100、 此設(shè)計的電路在Proteus軟件中進行仿真,運行 Proteus 的 ISIS 程序后,進入該仿真軟件的主界面。主界面由菜單欄、工具欄、預(yù)覽窗口、元件選擇按鈕、元件列表窗口、原理圖繪制窗口和仿真進程控制按鈕組成(如圖7-2所示)。通過元件選擇按鈕 P (從庫中選擇元件命令) 命令,在彈出的 Pick Devices 窗口中選擇電路所需的元件,放置元件并調(diào)整其相對位置,對元件參數(shù)設(shè)置及元器件間連線,完成單片機系統(tǒng)的硬件原理圖繪制。仿真電
101、路圖見附錄3</p><p><b> 5.2 調(diào)試與運行</b></p><p> (1)首先啟動KEIL C51軟件的集成開發(fā)環(huán)境,從桌面上雙擊uVision圖標(biāo)以啟動軟件。</p><p> ?。?)建立工程文件。通常單片機應(yīng)用系統(tǒng)軟件包含多個源程序文件,KEIL C51使用工程這一概念,將這些參數(shù)設(shè)置和所需的所有文件都加在一個工程中
102、。因此,需要建立一個工程文件,并為這個工程選擇CPU,確定編譯,匯編,連接的參數(shù),指定調(diào)試的方式。</p><p> ?。?)建立并添加源文件。使用菜單或者單擊工具欄的新建文件按鈕,出現(xiàn)文本便捷窗口,在該窗口中輸入新編制的源程序并保存該文件。</p><p> 然后,我打開已經(jīng)畫好的仿真圖,再將生成的HEX文件導(dǎo)入單片機里,點擊開始按鈕,電路正常工作,并且能夠?qū)崿F(xiàn)預(yù)先設(shè)想的所有功能,而且
103、效果很好,從而驗證了我的程序的正確性。</p><p><b> 結(jié) 論</b></p><p> 在我的畢業(yè)設(shè)計中,主要是以AT89C51單片機為核心的,對溫度的檢測與顯示進行了簡單的設(shè)計與闡述。本次設(shè)計可以說是軟硬結(jié)合,又以硬件為主。當(dāng)今科技發(fā)展迅速,單片機嵌入式開發(fā)有著光明的前景。由于單片機經(jīng)濟實用、開發(fā)簡便等特點依然在工業(yè)控制、家電等領(lǐng)域占據(jù)了廣泛的市場。
104、所以我選擇這樣的畢業(yè)設(shè)計課題,并且能通過此次設(shè)計來提高自己軟件編制和硬件電路設(shè)計的能力。在我完成這次畢業(yè)設(shè)計的過程中,當(dāng)看到自己將專業(yè)知識用于解決實際的問題時,那份成就感和喜悅感是難以形容的。但是,在實際的編程以及調(diào)試程序過程中,我發(fā)現(xiàn)自己應(yīng)該學(xué)的太多太多。光靠自己在書本上所學(xué)過的這點知識是遠遠不夠的,真正地認識到了工作就是學(xué)習(xí)的道理。</p><p> 由于我以前對51單片機的C語言沒有認真鉆研過,所以感覺畢
105、業(yè)設(shè)計的任務(wù)十分緊迫。通過對本系統(tǒng)的設(shè)計,我學(xué)習(xí)到了硬件開發(fā)和軟件開發(fā)的基本流程并有了一定的駕御此開發(fā)過程的能力。編程的過程中,雖然不乏辛苦,但更多的是程序調(diào)試成功后的喜悅。</p><p> 總之,這次畢業(yè)設(shè)計對我來說是一次比較全面的、富有創(chuàng)造性和探索性的鍛煉,完成了我選題時的心愿。令我深有感觸,對于我今后的學(xué)習(xí)、工作和生活都將是受益非淺的!</p><p><b> 參考
106、文獻</b></p><p> [1] 王靜霞.《單片機應(yīng)用技術(shù)》.電子工業(yè)出版社,2009</p><p> [2] 何立民.《單片機高等教程》.北京航空航天大學(xué)出版社,2000 </p><p> [3] 雄建云.《Protel99 se EDA技術(shù)及應(yīng)用》.北京機械工業(yè)出版社,2007</p><p> [4] 華永
107、平,陳松編著.《電子線路課程設(shè)計》.東南大學(xué)出版社</p><p> [5] 林春方.《電子線路學(xué)習(xí)指導(dǎo)與實訓(xùn)》.北京電子工業(yè)出版社,2004</p><p> [6] 楊寶清,宋文貴主編.《實用電路手冊》.機械工業(yè)出版社 2002</p><p> [7] 張存禮,韓愛娟主編.《電子技術(shù)綜合實訓(xùn)》.北京師范大學(xué)出版社</p><p>
108、<b> 附錄1 源程序</b></p><p> //#include <at89x51.h>//用AT89C51時就用這個頭文件</p><p> #include <reg52.h>//用華邦W78E58B時必須用這個頭文件</p><p> sbit DQ = P3^7;//定義DQ引腳為P3.7&
109、lt;/p><p> /***********ds18b20延遲子函數(shù)(晶振12MHz )*******/ </p><p> /************DS18B20對時間要求很嚴,但只能長不能短</p><p> *************在11.0592M下也行,因為時間長些********/</p><p> void delay
110、_18B20(unsigned int i)</p><p><b> {</b></p><p> while(i--);</p><p><b> }</b></p><p> /**********ds18b20初始化函數(shù)**********************/</p>
111、;<p> void Init_DS18B20(void) </p><p><b> {</b></p><p> unsigned char x=0;</p><p> DQ = 0; //單片機將DQ拉低</p><p> delay_18B20(80); //精確延時
112、大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay_18B20(14);</p><p> x=DQ; </p><p> delay_18B20(20);</p><p><b> }</b></
113、p><p> /***********ds18b20讀一個字節(jié)**************/ </p><p> unsigned char ReadOneChar(void)</p><p><b> {</b></p><p> unsigned char i=0;</p><p>
114、unsigned char dat = 0;</p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p> DQ = 0; //給脈沖信號</p><p><b> dat>>=1;</b></p
115、><p> DQ = 1; //給脈沖信號</p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> delay_18B20(4);</p><p><b> }</b></p><
116、;p> return(dat);</p><p><b> }</b></p><p> /*************ds18b20寫一個字節(jié)****************/ </p><p> void WriteOneChar(unsigned char dat)</p><p><b>
117、 {</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p><b> {</b></p><p><b> DQ = 0;</b></p><p> DQ = d
118、at&0x01;</p><p> delay_18B20(5);</p><p><b> DQ = 1;</b></p><p><b> dat>>=1;</b></p><p><b> }</b></p><p>&
119、lt;b> }</b></p><p> /****************設(shè)置DS18B20工作狀態(tài)*******************</p><p> TH和TL分別是上限報警和下限報警溫度,RS是顯示分辨率的設(shè)置</p><p> **************************************************
120、*****/</p><p> void setds18b20(unsigned char TH,unsigned char TL,unsigned char RS)</p><p><b> {</b></p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC);
121、 //跳過讀序號列號的操作</p><p> WriteOneChar(0x4E); </p><p> WriteOneChar(TH);//寫入想設(shè)定的溫度報警上限</p><p> WriteOneChar(TL);//寫入想設(shè)定的溫度報警下限</p><p> WriteOneChar(RS);//寫配置寄
122、存器,格式為0 R1 R0 1,1 1 1 1</p><p> //R1R0=00分辨率婁9位,R1R0=11分辨率為12位</p><p><b> }</b></p><p> /**************讀取ds18b20當(dāng)前溫度************/</p><p> unsigned char
123、*ReadTemperature(void)</p><p> {unsigned char tt[2];</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); // 跳過讀序號列號的操作</p><p> WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換&l
124、t;/p><p> delay_18B20(70); // 溫度轉(zhuǎn)化要一段時間</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號列號的操作</p><p> WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機數(shù)字溫度計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機數(shù)字溫度計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計——基于單片機的數(shù)字溫度計設(shè)計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機的數(shù)字溫度計設(shè)計 畢業(yè)設(shè)計
- 單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機的數(shù)字溫度計的設(shè)計 畢業(yè)設(shè)計
- 基于單片機控制的數(shù)字溫度計----畢業(yè)設(shè)計
- 基于5單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于51單片機的數(shù)字溫度計-畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字溫度計設(shè)計
- 畢業(yè)設(shè)計(論文)基于單片機的數(shù)字溫度計設(shè)計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計論文
- 單片機畢業(yè)設(shè)計--單片機設(shè)計數(shù)字溫度計
- 畢業(yè)設(shè)計(論文)基于單片機的數(shù)字語音溫度計
- 數(shù)字溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
- 畢業(yè)設(shè)計(論文)單片機的數(shù)字溫度計控制
- 基于單片機的溫度計的設(shè)計畢業(yè)設(shè)計
評論
0/150
提交評論