2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  課 程 設(shè) 計</p><p>  課程名稱 測控電路 </p><p>  課題名稱 溫度測量顯示電路設(shè)計 </p><p>  專業(yè)班級 </p><p>  姓 名 </

2、p><p>  學 號 </p><p>  指導教師 </p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  課程名稱 測控電路 </p><p>  

3、課題名稱 溫度測量顯示電路設(shè)計 </p><p>  專業(yè)班級 </p><p>  姓 名 </p><p>  學 號 </p><p>  指導教師

4、 </p><p>  任務(wù)書下達日期 2011年 6月 22 日</p><p>  任務(wù)完成日期 2011年 月 日</p><p><b>  目 錄</b></p><p><b>  一.摘 要5</b></p><p&

5、gt;  二. 設(shè)計目的與意義6</p><p>  三. 方案論證與確定7</p><p>  3.1系統(tǒng)方案的確定7</p><p>  3.1.1方案一7</p><p>  3.1.2方案二8</p><p>  3.1.3方案三8</p><p>  3.2傳感器方案的確定

6、8</p><p>  3.2.1方案一8</p><p>  3.2.2方案二9</p><p>  3.3測量顯示方案的確定9</p><p>  3.3.1方案一9</p><p>  3.3.2方案二9</p><p>  四. 系統(tǒng)工作原理分析10</p>

7、<p>  4.1微控制器原理10</p><p>  4.2傳感器原理11</p><p>  4.2.1DS18B20簡介11</p><p>  4.2.2DS18B20內(nèi)部結(jié)構(gòu)11</p><p>  4.2.3DS18B20測溫原理14</p><p>  4.3溫度數(shù)值分析14<

8、/p><p>  五. 電路制作與軟件調(diào)試15</p><p>  5.1硬件制作15</p><p>  5.2軟件調(diào)試15</p><p>  5.2.1主程序流程15</p><p>  5.2.2子程序流程16</p><p><b>  六. 附錄20</b&g

9、t;</p><p>  6.1課程設(shè)計心得體會20</p><p>  6.2系統(tǒng)電路原理圖21</p><p>  6.3PCB圖22</p><p>  6.4數(shù)字溫度計實物圖22</p><p>  6.5程序代碼23</p><p>  七. 參考文獻30</p>

10、;<p><b>  八. 致謝31</b></p><p><b>  一.摘 要</b></p><p>  在現(xiàn)今科技高速發(fā)展的時代,各行各業(yè)對控制和測量的要求越來越高,其中,溫度測量和控制在很多行業(yè)中都有比較重要的應(yīng)用,尤其在工業(yè)上,如煉鋼時對溫度高低的控制。要控制好溫度,測量是前提,測量的精度影響著后續(xù)工序的進行,因此

11、溫度測量的方法和選取就顯得相當重要了。</p><p>  針對各種溫度測量方案的討論分析后,我們組決定以AT89S52為核心,采用DS18B20溫度傳感器進行溫度信號的檢測,并通過LCD液晶顯示測量所得溫度,外加紅外遙控調(diào)節(jié)設(shè)置溫度測量的上下限數(shù)值(默認溫度上下限為10℃~24℃),在所測溫度到達所設(shè)上下限數(shù)值時,蜂鳴器啟動報警提示。</p><p>  本報告是我們組所設(shè)計的數(shù)字溫度計

12、的說明書,包括方案論證選取、工作原理、所用元件介紹和設(shè)計電路原理圖、調(diào)試程序等。</p><p>  關(guān)鍵詞:AT89S52、DS18B20、LCD液晶顯示、紅外遙控</p><p><b>  設(shè)計目的與意義</b></p><p>  隨著電子技術(shù)的高速發(fā)展,對電子方面人才的要求越來越高,不僅要求其具備相關(guān)的專業(yè)理論知識,還要求其具有較強的

13、設(shè)計、制作等實踐動手能力。此次課程設(shè)計無疑是對從事測控專業(yè)的人的一次很好的鍛煉和考驗,是培養(yǎng)測控技術(shù)的人才的一次良好的機會,為其提供了一個理論知識與實踐相結(jié)合的平臺。通過本次課程設(shè)計,引導學生結(jié)合所學的測控電路理論知識,思考設(shè)計方案,以小組合作方式,分工完成各個部分,從而掌握相關(guān)的測量顯示電路的設(shè)計和調(diào)試技術(shù),一方面提高了學生的實踐動手和協(xié)作能力,另一方面培養(yǎng)了學生綜合運用所學理論知識進行工程設(shè)計的能力。</p><

14、p>  通過此次課程設(shè)計,可以培養(yǎng)學生的工程設(shè)計能力,包括動手能力、獨立思考設(shè)計能力、解決實際設(shè)計過程中遇到的問題以及團隊協(xié)作能力等,為今后的專業(yè)學習和工程實踐打下堅實的基礎(chǔ)。</p><p><b>  方案論證與確定</b></p><p>  3.1系統(tǒng)方案的確定</p><p><b>  3.1.1方案一</b&

15、gt;</p><p>  該方案為ICL7107 A/D轉(zhuǎn)換&譯碼方案。</p><p>  常見A/D轉(zhuǎn)換器的轉(zhuǎn)換方式有非積分式和積分式兩類,如逐次逼近比較式A/D轉(zhuǎn)換、斜坡電壓式A/D轉(zhuǎn)換等屬于非積分式,其特點是轉(zhuǎn)換速度快,但抗干擾能力差。電壓反饋型V-F變換、雙積分式A/D轉(zhuǎn)換則屬于積分式,其特點是抗干擾能力強、測量精度高,但轉(zhuǎn)換速度低,在轉(zhuǎn)換速度要求不太高的情況下,獲得

16、廣泛應(yīng)用。</p><p>  工作方框圖如圖1所示:</p><p>  電路原理圖如圖2所示:</p><p><b>  3.1.2方案二</b></p><p>  該方案利用AVR單片機對輸入信號進行模數(shù)轉(zhuǎn)換輸出數(shù)字信號控制數(shù)碼管顯示溫度值。并且可以通過編寫程序?qū)斎胄盘栠M行分段線性化處理,使得測量精度大大提高

17、,而且該電路無須外接譯碼器,結(jié)構(gòu)簡單。</p><p>  工作框圖如圖3所示:</p><p><b>  3.1.3方案三</b></p><p>  該方案以AT89S52為控制器,采用DS18B20溫度傳感器檢測溫度信號,利用紅外遙控設(shè)置溫度測量的上下限數(shù)值,并通過LCD液晶顯示。</p><p>  工作框圖如

18、圖4所示:</p><p>  經(jīng)過綜合研究分析,考慮整個設(shè)計和成本,方案三成本低,測量溫度方便簡單,故此次數(shù)字溫度計課程設(shè)計選取方案三。</p><p>  3.2傳感器方案的確定</p><p><b>  3.2.1方案一</b></p><p>  該方案采用熱敏電阻。</p><p> 

19、 熱敏電阻價格比較便宜、靈敏度比較好,在實際應(yīng)用的時候線性度較差,另外調(diào)試比較困難。不適合使用。故不使用熱敏電阻。</p><p><b>  3.2.2方案二</b></p><p>  該方案采用AD590。</p><p>  AD590擁有良好的線性關(guān)系,靈敏度較高、使用簡單方便。但是這種傳感器的價格比其他的兩種都貴很多。故不選用。&l

20、t;/p><p>  方案三:DS18B20數(shù)字溫度傳感器</p><p>  DS18B20是美國DALLAS半導體公司智能溫度傳感器,他能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他在測溫精

21、度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面擁有很大優(yōu)勢,給用戶帶來了更方便的使用和更令人滿意的效果。</p><p>  經(jīng)過上述三種方案的論證比較,綜合考慮成本、性能等因素,最終選取方案三。</p><p>  3.3測量顯示方案的確定</p><p><b>  3.3.1方案一</b></p><p>  該方案采用L

22、ED顯示。</p><p>  LED數(shù)碼顯示中每一個像素單元就是一個發(fā)光二極管,如果是單色,一般是紅色發(fā)光二級管。如果是彩色,一般是三個三原色小二極管組成的一個大二級管。這些二級管組成的矩陣由數(shù)碼控制實時顯示文字或者圖像,造價相對低廉,組成的顯像面積大。</p><p><b>  3.3.2方案二</b></p><p>  該方案采用LC

23、D液晶顯示。</p><p>  液晶顯示器是一種被動式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過處理后能改變光線通過方向的特性,而達到白底黑字或黑底白字顯示的目的。LCD液晶的像素單元是整合在同一塊液晶版當中分隔出來的小方格。通過數(shù)碼控制這些極小的方格進行顯像。造價高但是顯示非常細膩。</p><p>  經(jīng)過研究分析,選擇方案二。</p><p><b

24、>  系統(tǒng)工作原理分析</b></p><p>  本系統(tǒng)由溫度傳感器DS18B20、AT89S52、LCD顯示電路、軟件構(gòu)成。DS18B20輸出表示攝氏溫度的數(shù)字量,然后用51單片機進行數(shù)據(jù)處理、譯碼、顯示、報警等,</p><p>  系統(tǒng)框圖如圖5所示:</p><p><b>  4.1微控制器原理</b></p

25、><p>  AT89S52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含8K Bytes ISP的可反復擦寫100000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,其具有如下特點:40個引腳,8K Bytes Flash片內(nèi)程序存儲器,256 bytes的隨機存取數(shù)

26、據(jù)存儲器,32個外部雙向輸入/輸出口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗電路,片內(nèi)時鐘振蕩器。</p><p>  單片機引腳如圖6所示:</p><p><b>  4.2傳感器原理</b></p><p>  4.2.1DS18B20簡介</p><p>  DS

27、18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。</p><p>  DS18B20元件圖如圖7所示:</p><p>  DS18B20的性能特點如下:</p><p>  ●獨特的單線接口僅需要一個端口引腳進行

28、通信;</p><p>  ●多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;</p><p><b>  ●無須外部器件;</b></p><p>  ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p><b>  ●零待機功耗;</b></p><p

29、>  ●溫度以9或12位數(shù)字;</p><p>  ●用戶可定義報警設(shè)置;</p><p>  ●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;</p><p>  ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; </p><p>  4.2.2DS18B20內(nèi)部結(jié)構(gòu)</p><

30、;p>  DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖8所示。</p><p>  64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。</p><p>  DS18B20溫度傳感器

31、的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖9所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作

32、模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p>  由表1可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。</p><p>  高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的C

33、RC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p>  當DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><p>  當符號位S=0時,表示測得的溫度值為正值,可以直接將

34、二進制位轉(zhuǎn)換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表2是一部分溫度值對應(yīng)的二進制溫度數(shù)據(jù)。</p><p>  DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時測量溫度并進行報警搜索。</p>

35、<p>  在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。</p><p>  DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器

36、2的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預置在-55℃所對應(yīng)的一個基數(shù)值。</p><p>  減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時,溫度

37、寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)器門仍未關(guān)閉就重復上述過程,直到溫度寄存器值大致被測溫度值。 </p><p>  另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫

38、時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p>  4.2.3DS18B20測溫原理</p><p>  DS18B20低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)

39、器2的脈沖輸入。當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在-55 ℃所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器

40、1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。此外,用斜率累加器補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關(guān)閉就重復上述過程,直至溫度寄存器值達到被測溫度值,</p><p><b>  4.3溫度數(shù)值分析</b></p><p> 

41、 利用的單片機的一個IO口,讀取DS18B20的溫度高位,溫度低位。由上面的分析可知:溫度高位的高5位的符號位、低3位是整數(shù)部分的高四位(整數(shù)部分的最高位永遠為0),溫度低溫的高四位為整數(shù)部分的低四位,溫度地位的低四位是小數(shù)部分用以下公式計算:</p><p>  整數(shù)部分=溫度低位/16+溫度高位×16</p><p>  小數(shù)部分十分位=(溫度低位&0x0f)

42、5;10/16</p><p>  由于DS18B30的集成度很高,使得設(shè)計的原理還是比較簡單,設(shè)計的關(guān)鍵是了解DS18B20的時序,準確地獲得溫度高位和溫度低位。</p><p><b>  電路制作與軟件調(diào)試</b></p><p><b>  5.1硬件制作</b></p><p>  本次設(shè)

43、計應(yīng)用Protel DXP繪制電路原理圖,生成PCB圖,然后用雕刻機刻板,焊接電路元件,最后用程序調(diào)試系統(tǒng)功能。</p><p>  硬件電路主要由單片機最小系統(tǒng)、DS18B20為核心的傳感器電路、液晶顯示電路、報警電路、紅外遙控電路和供電電路組成。</p><p>  單片機最小系統(tǒng):提供一個上電復位高電平,和12MHZ時鐘振蕩。</p><p>  DS18B2

44、0傳感器電路:加電即可工作,DATA端加4.7K電阻作上拉電阻保證有足夠大的灌拉電流。</p><p><b>  液晶顯示電路:</b></p><p>  報警電路:利用5V蜂鳴器作報警提示。</p><p>  供電電路:利用7805組成線性穩(wěn)壓電源為整個系統(tǒng)供電。</p><p>  具體電路連接見附錄SCH電路

45、原理圖,硬件接線正確,單片機能構(gòu)正常工作,硬件調(diào)試成功。</p><p><b>  5.2軟件調(diào)試</b></p><p>  首先用Proteus進行仿真,調(diào)試程序,然后在制作好的電路板上調(diào)試程序。測溫精度可取到小數(shù)點后三位。</p><p>  5.2.1主程序流程</p><p>  主程序說明:小于10度,亮黃

46、色LED,表示較涼,開蜂鳴器;</p><p>  大于24度,亮綠色LED,表示溫度較熱,開蜂鳴器;</p><p>  遙控遠程控制,改變上下限報警溫度。</p><p>  主程序流程圖如圖10所示:</p><p>  5.2.2子程序流程</p><p>  DS18B20工作流程圖如圖11所示;</p

47、><p>  計算溫度流程圖如圖12、圖13所示;</p><p>  溫度讀取流程圖如圖14所示。</p><p><b>  附錄</b></p><p>  6.1課程設(shè)計心得體會</p><p>  本次課程設(shè)計,我們組成功完成了數(shù)字溫度計的設(shè)計、制作與調(diào)試。三天的時間里,我們分工合作,組長全

48、瑞負責寫程序,我和景存負責電路部分(主要繪制電路、焊接電路),安榮負責刻板、包裝。最后的調(diào)試工作我們共同參與,遇到了不少問題,大家從電路、程序中尋找出錯的原因(負責檢查自己負責的那部分,并作相應(yīng)修改),經(jīng)過討論、思考找到解決的方法,使得最終用程序調(diào)試電路顯示成功。</p><p>  在這里,很感謝與我共同奮斗的我們組的成員,尤其是景存,在我繪制電路原理圖和PCB圖時給予我很多幫助。這次課程設(shè)計,我嘗試用Prot

49、el DXP繪制電路圖,因為我們在討論方案是確定了電路制作方面采用刻板方式。雖然以前有學過Protel 99,但從未接觸過DXP,所以還是去圖書館借了相關(guān)的書籍,邊學邊繪制。這次用DXP而不用99,主要是考慮到對以后學習FPGA等會有更大的幫助。</p><p>  繪制電路圖的過程中,的確遇到了不少問題。雖然這次設(shè)計的電路并不復雜,(主要由單片機最小系統(tǒng)、DS18B20測溫電路、液晶顯示電路、紅外遙控電路、報警

50、電路和供電電路組成),但里面的元件查找和封裝很繁瑣,導入PCB后有些封裝太大,要做相應(yīng)的替換。通過這次繪制電路,認識了不少元件的各種封裝,更學會了刻板時用到的相關(guān)參數(shù)的設(shè)置,例如焊盤、布線等參數(shù)的設(shè)置。因為是第一次刻板,在設(shè)置這些參數(shù)時還請教了我們513實驗室的師兄,在這里非常感謝他們給予的幫助。導入PCB后,更頭痛的是布局。剛開始嘗試用自動布局功能,但是出來的效果不是很理想,有不少跳線,所以還是用手動布局。對應(yīng)著電路原理圖,初步調(diào)整元

51、件的位置,在盡量避免線路的交叉。在布局過程中,景存和我一起思考討論布局方案,可是第一次自動布線后,還是有不少跳線。我們研究自動布線時線路的走向,討論怎樣移動一下元件的位置能讓這里的跳線消除,讓線路有空間繞過去而不必跳線。另外結(jié)合刻板的實際(例如雕刻機的刀有些鈍),線的大小和焊盤孔徑的大小的修改也相當考驗我。當安榮把第一塊板刻出來時,發(fā)現(xiàn)線太細,有些幾乎要斷了,孔徑太小,根本無法鉆孔。就這樣,我結(jié)合師兄給予的建</p>&l

52、t;p>  出來自己負責的繪制電路原理圖和PCB圖外,我還學會了雕刻電路板(例如如何定位雕刻刀、如何調(diào)整進刀的大小等),在電路調(diào)試中更是深有感慨。一個作品無論大小、復雜或簡單,在軟硬件相結(jié)合的過程中總會出現(xiàn)一些問題,要我們?nèi)フ{(diào)試,去檢查,才能使結(jié)果更精確。而且調(diào)試時讓我著實體會到前期電路制作部分很重要,電路制作得好,會減少調(diào)試中出現(xiàn)問題的可能性。</p><p>  這次課程設(shè)計我受益匪淺,也是進實驗室以來

53、的又一次不錯的經(jīng)歷。團隊協(xié)作做出來的作品,每一部分都不可或缺,既要分工又要合作,這樣才能有更佳的效果。</p><p>  6.2系統(tǒng)電路原理圖</p><p><b>  6.3PCB圖</b></p><p><b>  6.5程序代碼</b></p><p>  ***************

54、*********************LCD1602模塊**********************************************/</p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned

55、int</p><p>  sbit rs=P2^7;//液晶使能端口</p><p>  sbit rw=P2^6;</p><p>  sbit e=P2^5;</p><p>  sbit P3_6=P3^6;</p><p>  sbit P1_0=P1^0;</p><p&g

56、t;  sbit P1_1=P1^1;</p><p>  //sbit P1_0 = P1^0;</p><p>  //sbit P1_1 = P1^1;</p><p>  void delay_ms(uchar ms){ //延時</p><p><b>  uint i,j;</b></p>

57、<p>  for(i=0;i<ms;i++)</p><p>  for(j=0;j<120;j++);</p><p><b>  }</b></p><p>  void lcd_wcmd(uchar cmd){ //液晶寫指令</p><p>  rs=0;rw=0;</p>

58、;<p><b>  e=0;</b></p><p><b>  P0=cmd;</b></p><p><b>  e=1;</b></p><p><b>  e=0;</b></p><p>  delay_ms(5);</p&

59、gt;<p><b>  }</b></p><p>  void lcd_wdat(uchar dat){ //液晶寫數(shù)據(jù)</p><p>  rs=1;rw=0;</p><p><b>  e=0;</b></p><p><b>  P0=dat;</b>

60、;</p><p><b>  e=1;</b></p><p><b>  e=0;</b></p><p>  delay_ms(5);</p><p><b>  }</b></p><p>  void lcd_dis(uchar post,u

61、char *p){</p><p>  lcd_wcmd(0x80 | post);//設(shè)置數(shù)據(jù)地址指針顯示</p><p>  while(*p!='\0'){</p><p>  lcd_wdat(*p++);</p><p><b>  }</b></p><p>&

62、lt;b>  }</b></p><p>  uchar code def_char0[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //字符℃</p><p>  void lcd_wcgram(uchar adress,uchar tmp[]){</p><p><b>  uchar i;

63、</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  lcd_wcmd(adress+i);</p><p>  lcd_wdat(tmp[i]);</p><p><b>  }</b>

64、</p><p><b>  }</b></p><p>  void lcd_inti(){</p><p>  delay_ms(15);</p><p>  lcd_wcmd(0x38);//16X2字符,5X7點陣,8位數(shù)據(jù)接口</p><p>  lcd_wcmd(0x38);<

65、;/p><p>  lcd_wcmd(0x08);//關(guān)閉顯示</p><p>  lcd_wcmd(0x01);//清屏</p><p>  lcd_wcmd(0x06);//設(shè)置光標工作方式</p><p>  lcd_wcmd(0x0c);//開顯示,設(shè)置光標顯示方式</p><p>  lcd_wcgram

66、(0x48,def_char0); //載入用戶自定義字符</p><p><b>  }</b></p><p>  sbit DQ=P3^7; //18B20數(shù)據(jù)管腳</p><p>  /*************************ds18b20延遲子函數(shù)(晶振12MHz )*************************

67、********/ </p><p>  void delay_18B20(unsigned int i){</p><p>  while(i--);</p><p><b>  }</b></p><p>  void reset() {</p><p>  uchar x=0;</p&

68、gt;<p>  DQ = 1; //DQ復位</p><p>  delay_18B20(8); //稍做延時</p><p>  DQ = 0; //單片機將DQ拉低</p><p>  delay_18B20(80); //精確延時 大于 480us</p><p>  DQ = 1;

69、 //拉高總線</p><p>  delay_18B20(14);</p><p>  x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗</p><p>  delay_18B20(20);</p><p><b>  }</b></p>&l

70、t;p>  unsigned char rbyte(){</p><p>  uchar i=0;</p><p>  uchar dat = 0;</p><p>  for (i=8;i>0;i--){</p><p>  DQ = 0; // 給脈沖信號</p><p><b>  dat&

71、gt;>=1;</b></p><p>  DQ = 1; // 給脈沖信號</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay_18B20(4);</p><p><b>  }</b>

72、;</p><p>  return(dat);</p><p><b>  }</b></p><p>  void wbyte(uchar dat){</p><p>  uchar i=0;</p><p>  for (i=8; i>0; i--){</p><p

73、><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p>  delay_18B20(5);</p><p><b>  DQ = 1;</b></p><p><b>  dat>>=1;</b><

74、/p><p><b>  }</b></p><p><b>  }</b></p><p>  uchar rTempetuare(uchar tmp[]){</p><p>  uchar a=0,b=0,temp,decimal;</p><p>  uint uival

75、;</p><p><b>  reset();</b></p><p>  wbyte(0xCC); //跳過讀序號列號的操作</p><p>  wbyte(0x44); //啟動溫度轉(zhuǎn)?</p><p><b>  reset();</b></p><p>  wbyt

76、e(0xCC); //跳過讀序號列號的操作</p><p>  wbyte(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度</p><p>  a=rbyte(); //讀取溫度值低位</p><p>  b=rbyte(); //讀取溫度值高位</p><p><b>  temp=b;</b

77、></p><p>  temp&=0xf0;</p><p>  if(temp){ //負溫</p><p><b>  if(a==0){</b></p><p>  a=~a+1; //bit7向bit8位產(chǎn)生進位</p><p><b>  b=~b+1;

78、 </b></p><p><b>  }</b></p><p>  else{ </p><p>  a=~a+1; </p><p><b>  b=~b;</b></p><p><b>  }</b></p&g

79、t;<p>  tmp[0]='-';</p><p><b>  }</b></p><p><b>  else</b></p><p>  tmp[0]=' ';</p><p>  temp=(b<<4)|(a>>4);

80、 //組合</p><p>  decimal=a&0x0f; //將小數(shù)點后的數(shù)據(jù)提取出來</p><p>  uival=decimal*625;</p><p>  tmp[0]='T';</p><p>  tmp[1]='=';</p><p>  t

81、mp[2]=0x20; //空格</p><p>  tmp[3]=temp/100 | 0x30; //取百位</p><p>  tmp[4]=temp%100/10 | 0x30; //取十位</p><p>  tmp[5]=temp%100%10 | 0x30; //取個位<

82、/p><p>  tmp[6]=0x2e; //小數(shù)點</p><p>  tmp[7]=uival/1000 | 0x30; //十分位</p><p>  tmp[8]=uival%1000/100 | 0x30; //百分位</p><p>  tmp[9]=uival%1000%100/10

83、 | 0x30; //千分位</p><p>  tmp[10]=uival%1000%100%10 | 0x30; //萬分位</p><p>  tmp[11]=0x20; //空格</p><p>  tmp[12]=0x01; //字符℃</p><p>  tmp

84、[13]='\0';</p><p>  return temp; //十進制溫度</p><p><b>  }</b></p><p>  /*******************************紅外解碼模塊******************************************/</p

85、><p>  #define c(x) (x*110592/120000)</p><p>  sbit Ir_Pin=P3^2; //紅外數(shù)據(jù)管腳</p><p>  unsigned char Ir_Buf[4]; //用于保存解碼結(jié)果</p><p>  //=======================================

86、=======================</p><p>  unsigned int Ir_Get_Low() //計數(shù)器1,用于解碼延時</p><p><b>  {</b></p><p><b>  TL1=0;</b></p><p><b>  TH1=0;

87、</b></p><p><b>  TR1=1;</b></p><p>  while(!Ir_Pin && (TH1&0x80)==0);</p><p><b>  TR1=0;</b></p><p>  return TH1*256+TL1;&l

88、t;/p><p><b>  }</b></p><p>  //=============================================================</p><p>  unsigned int Ir_Get_High() //計數(shù)器1,用于解碼延時</p><p><

89、;b>  {</b></p><p><b>  TL1=0;</b></p><p><b>  TH1=0;</b></p><p><b>  TR1=1;</b></p><p>  while(Ir_Pin && (TH1&am

90、p;0x80)==0);</p><p><b>  TR1=0;</b></p><p>  return TH1*256+TL1;</p><p><b>  }</b></p><p>  char jianche()</p><p>  {

91、 //解碼程序</p><p><b>  char i,j;</b></p><p>  uint temp;</p><p><b>  restart:</b></p><p>  while(Ir_Pin);</p><p>  temp=Ir_Get_Low(

92、);</p><p>  if(temp<c(8500) || temp>c(9500)) goto restart;//引導脈沖低電平9000</p><p>  temp=Ir_Get_High();</p><p>  if(temp<c(4000) || temp>c(5000)) goto restart;//引導脈沖高電平4500

93、</p><p>  for(i=0;i<4;i++) //4個字節(jié)</p><p>  for(j=0;j<8;j++) //每個字節(jié)8位</p><p><b>  {</b></p><p&g

94、t;  temp=Ir_Get_Low();</p><p>  if(temp<c(200) || temp>c(800)) goto restart;</p><p>  temp=Ir_Get_High();</p><p>  if(temp<c(200) || temp>c(2000)) goto restar

95、t;</p><p>  Ir_Buf[i]>>=1;</p><p>  if(temp>c(1120)) Ir_Buf[i]|=0x80;</p><p><b>  }</b></p><p>  return Ir_Buf[2]&0x0f; //所得碼</

96、p><p><b>  }</b></p><p>  /*********************************時鐘模塊****************************************/</p><p>  extern uchar minTX; //最小報警溫度</p><

97、p>  extern uchar maxTX; //最大報警溫度</p><p>  uchar storeT[14]; //實際溫度的顯示長度</p><p>  uchar wendu; </p><p>  void t0ISR() interrupt 1 //T0中斷(50ms),中斷讀溫度</p><

98、p><b>  {</b></p><p>  static uchar timeC = 0;</p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b></p><p>  if(10==++timeC) // (50

99、*N)毫秒</p><p><b>  {</b></p><p><b>  timeC=0;</b></p><p>  wendu=rTempetuare(storeT);</p><p>  lcd_dis(0x42, storeT); //顯示實際溫度</p>&l

100、t;p>  if(wendu <= minTX)</p><p><b>  {</b></p><p><b>  P1_0= 0;</b></p><p>  P3_6=0; //小于最小溫度,報警</p><p><b>  }</b><

101、/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  P1_0= 1;</b></p><p><b>  P3_6=1;</b></p><p><b>  }&l

102、t;/b></p><p>  if(wendu>=maxTX)</p><p>  { //大于最高溫度,報警</p><p><b>  P1_1= 0;</b></p><p><b>  P3_6=0;</b></p><p><

103、;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  P1_1= 1;</b></p><p><b>  P3_6=1;</b></p>

104、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void inti_timer()</p><p>  { //初始化</p><p&g

105、t;  IE|=0x82; //允許定時器0中斷</p><p>  IP|=0x02; //設(shè)置定時器0的優(yōu)先級</p><p>  TMOD=0x01; //選用定時器0</p><p>  TH0=0x3c; //50ms定時</p><p><b>  TL0=0xb0;</b></p>&l

106、t;p>  TR0=1; //啟動定時器0</p><p><b>  }</b></p><p>  /*****************************主程序模塊 ***************************************/</p><p>  uchar minTX = 10; //最小報警

107、溫度初始化</p><p>  uchar maxTX = 24; //最大報警溫度初始化</p><p>  char minT[7]="min:10";</p><p>  char maxT[7]="max:24";</p><p><b>  main()</b>&

108、lt;/p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  lcd_inti(); //LCD初始化</p><p>  inti_timer();</p><p>  TMOD=0x11; //設(shè)置

109、計數(shù)器寄存器</p><p>  lcd_dis(0x01, minT); //顯示最小報警溫度</p><p>  lcd_dis(0x0a, maxT); //顯示最大報警溫度</p><p><b>  while(1)</b></p><p><b>  {</b></p>

110、;<p>  for(i=4; i!=6; ++i){</p><p>  minT[i]=jianche();</p><p>  minT[i] |= 0x30;</p><p>  lcd_dis(0x01, minT);</p><p><b>  }</b></p><p&g

111、t;  minTX=(minT[4]-0x30)*10 + (minT[5]-0x30);</p><p>  for(i=4; i!=6; ++i){</p><p>  maxT[i]=jianche();</p><p>  maxT[i] |= 0x30;</p><p>  lcd_dis(0x0a, maxT);</p&g

112、t;<p><b>  }</b></p><p>  maxTX=(minT[4]-0x30)*10 + (minT[5]-0x30);</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  參

113、考文獻</b></p><p>  1.張國雄等編.測控電路.機械工業(yè)出版社,2001.8.</p><p>  2.趙負圖等編.現(xiàn)代傳感器集成電路.人民郵電出版社,2000.1.</p><p>  3.劉征宇等編.線性放大器應(yīng)用手冊.福建科學技術(shù)出版社,2005.1.</p><p>  4.蔡錦福等編.運算放大器原理

114、與應(yīng)用.科學出版社,2005.7.</p><p>  5.自編.測控電路設(shè)計型實驗任務(wù)書.</p><p>  6. 谷樹忠等編.Protel 2004實用教程——原理圖與PCB設(shè)計.電子工業(yè)出版社,2007.2.</p><p>  7. 袁鵬平等編.Protel DXP電路設(shè)計實用教程.化學工業(yè)出版社,2007.1</p><p>

115、;<b>  致謝</b></p><p>  這次課程設(shè)計,首先要感謝我們組的每一位成員。感謝組長全瑞給予我鍛煉的機會,把繪制電路部分交給我;感謝景存和安榮給予的幫助。此外,還要感謝513實驗室的zz師兄在刻板方面給予的建議和指導,感謝老師給予我們這次鍛煉工程設(shè)計和實踐動手能力的機會。</p><p>  由于時間原因,我們的作品還有很多可以完善的地方,但整個過程我

116、們受益匪淺。負責硬件方面的工作讓我真切感受到硬件的制作要不斷積累經(jīng)驗,硬件制作得好,對于軟件調(diào)試有重要意義,能減少不少問題。</p><p>  另外,我必須感謝一直以來給予我?guī)椭椭С值睦蠋?、師兄和同學。無論是在課程方面還是在實驗室的電子制作方面,他們都給予了我不少建議和引導。在實驗室參與電子方面的制作和比賽的一年里,學到了很多知識,也提高了自己的實踐動手能力和獨立思考能力。運用在實驗室接觸到的知識和課堂所學知

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論