版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程名稱:電子技術(shù)課程設(shè)計</p><p> 設(shè)計題目: </p><p> 院 系: </p><p> 專 業(yè): </p><p> 年 級:
2、 </p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p> XXXX大學(xué)XX校區(qū)</p><p><b> XX 年 X月X日</b></p><p> 課
3、 程 設(shè) 計 任 務(wù) 書</p><p> 專 業(yè): 姓 名: 學(xué) 號: </p><p> 開題日期: XX年X月X日 完成日期:XX年X月X日</p><p> 題 目: 數(shù) 字 溫 度 計 </p><p><b
4、> 一、設(shè)計的目的</b></p><p> 1、設(shè)計一個簡易的數(shù)字溫度計滿足一定的測量范圍并通過LED顯示出來; </p><p> 2、了解常用電子器件的類型和特性,并掌握合理選用的原則;
5、 3、進(jìn)一步熟悉電子儀器的使用方法; </p><p> 4、學(xué)會撰寫課程設(shè)計總結(jié)報告;</p><p> 5、培
6、養(yǎng)獨立分析問題和解決實際問題的能力;</p><p> 6、培養(yǎng)嚴(yán)肅認(rèn)真的工作作風(fēng)和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。</p><p> 二、設(shè)計的內(nèi)容及要求</p><p> 1、測溫范圍為—30℃~+120℃,精度為±0.5℃;</p><p> 2、LED數(shù)碼管直讀顯示,當(dāng)溫度為“負(fù)”則最高位顯示“—”號,最低位顯示單位“C”;<
7、/p><p> 3、當(dāng)溫度不在測量范圍內(nèi)(<—30℃或>+120℃)時,蜂鳴器報警且發(fā)光二極管閃爍。
8、 </p><p><b> 三、指導(dǎo)教師評語 </b></p><p> 四、成 績: </p><p> 指導(dǎo)教師 (簽章) </p><p> 年 月 日<
9、/p><p> 摘要:本設(shè)計以AT89C51單片機(jī)為核心,DS18B20數(shù)字式溫度傳感器為溫度傳感器,7段LED數(shù)碼管構(gòu)成顯示電路;單片機(jī)控制DS18B20進(jìn)行溫度采集,在接收DS18B20傳回數(shù)據(jù)后進(jìn)行處理,通過74LS245驅(qū)動數(shù)碼管顯示實時溫度的動態(tài)顯示。由于采用的是可編程器件作為控制核心,與傳統(tǒng)的溫度計相比該溫度計具有示數(shù)直觀,精度可調(diào),功能易擴(kuò)展等優(yōu)點。</p><p> 關(guān)鍵詞
10、:數(shù)字溫度計、AT89C51 、DS18B20 、74LS245 、LED </p><p><b> 設(shè)計背景</b></p><p> 隨著人們生活水平的不斷提高,數(shù)字化無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,科學(xué)技術(shù)向著數(shù)字化、智能化控制方向發(fā)展,其中數(shù)字溫度計就是一個典型的例子。數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測
11、溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準(zhǔn)確的場所,或科研實驗室使用。溫度計是常用的熱工儀表,常用于工業(yè)現(xiàn)場作業(yè)過程的溫度測量,在工業(yè)生產(chǎn)過程中,不僅需要了解當(dāng)前溫度讀數(shù),而且還希望能了解過程中的溫度變化情況。隨著工業(yè)現(xiàn)代化的發(fā)展,對溫度測量儀表的要求越來越高,而數(shù)字溫度計具有結(jié)構(gòu)簡單,抗干擾能力強(qiáng),功耗小,可靠性高,速度快等特點,更加適合于工業(yè)過程中以及科學(xué)試驗中對溫度進(jìn)行在線測量的要求。數(shù)字溫度計的高速發(fā)展,使它已成為實現(xiàn)
12、測量自動化、提高工作效率不可缺少的儀表;溫度計在實際生產(chǎn)和人們的生活中都有廣泛應(yīng)用,為此我選擇了設(shè)計一個數(shù)字溫度計。</p><p><b> 一、設(shè)計任務(wù)與要求</b></p><p> 1、測溫范圍為—30℃~+120℃,精度為±0.5℃;</p><p> 2、LED數(shù)碼管直讀顯示,當(dāng)溫度為“負(fù)”則最高位顯示“—”號,最低
13、位顯示單位“C”;</p><p> 3、當(dāng)溫度不在測量范圍內(nèi)(<—30℃或>+120℃)時,蜂鳴器報警且發(fā)光二極管閃爍。</p><p><b> 二、方案設(shè)計與論證</b></p><p><b> 1、方案一</b></p><p> 由于本設(shè)計是測溫電路,可以使用熱敏電阻
14、之類的器件,將隨被測溫度變化的電壓或電流采樣,進(jìn)行A/D轉(zhuǎn)換后就可以用單片機(jī)進(jìn)行數(shù)據(jù)處理,實現(xiàn)溫度顯示。這種設(shè)計需要用到A/D轉(zhuǎn)換電路,增大了電路的復(fù)雜性,而且要做到高精度也比較困難。</p><p><b> 2、方案二</b></p><p> 考慮到單片機(jī)屬于數(shù)字系統(tǒng),容易想到數(shù)字溫度傳感器,可選用DS18B20數(shù)字溫度傳感器,此傳感器為單總線數(shù)字溫度傳感器
15、,體積小、構(gòu)成的系統(tǒng)結(jié)構(gòu)簡單,它可直接將溫度轉(zhuǎn)化成串行數(shù)字信號給單片機(jī)處理,即可實現(xiàn)溫度顯示。另外DS18B20具有3引腳的小體積封裝,測溫范圍為-55~+125℃,測溫分辨率可達(dá)0.0625℃,其測量范圍與精度都能符合設(shè)計要求。</p><p> 以上兩種方案相比較,第二種方案的電路、軟件設(shè)計更簡單,此方案設(shè)計的系統(tǒng)在功耗、測量精度、范圍等方面都能很好地達(dá)到要求,故本設(shè)計采用方案二。</p>&
16、lt;p><b> 方案總體設(shè)計方框圖</b></p><p> 三、單元電路設(shè)計與參數(shù)計算</p><p><b> 1、電源電路</b></p><p> 本設(shè)計采用的7805穩(wěn)壓電源,線路簡單,價格低廉、性能穩(wěn)、使用方便。</p><p> 7805是三端穩(wěn)壓器件,顧名思義05
17、就是輸出電壓為5v,還可以微調(diào),7805輸出波紋很小。它的樣子象是普通的三極管,7805三端固定集成穩(wěn)壓器有三個端子:輸入端UI、輸出U0和公共端COM。輸入端接整流濾波電路,輸出端接負(fù)載;公共端接輸入、輸出的公共連接點。其內(nèi)部由采樣、基準(zhǔn)、放大、調(diào)整和保護(hù)等電路組成;7805集成穩(wěn)壓器可將不穩(wěn)定的直流電壓變?yōu)榉€(wěn)定的直流電壓的集成電路。由于集成穩(wěn)壓器具有穩(wěn)壓精度高、工作穩(wěn)定可靠、外圍電路簡單、體積小、重量輕等顯著優(yōu)點,在各種電源電路中得
18、到了普遍的應(yīng)用。</p><p> 7805三端集成穩(wěn)壓器可直接用于各種電子設(shè)備作電壓穩(wěn)定器,無須外接任何元件,即可達(dá)到標(biāo)準(zhǔn)的穩(wěn)壓值,也可在公共端(GND)接分壓元件改變輸出電壓值;由于內(nèi)部帶有過流、過熱保護(hù)等電路,所以使用非常方便、可靠,電子制作中經(jīng)常采用。</p><p><b> 2、主控電路</b></p><p> 主控制器采用
19、單片機(jī)AT89C51是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央 處理器和Flash存儲單元,功能強(qiáng)大的AT89C51單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。AT89C51有40個引腳,32個外部雙向輸入/輸出(I/O)端口
20、,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2 個讀寫口線,AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲器可有效地降低開發(fā)成本。單片機(jī)AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要。</p><p><b> 3、時鐘、復(fù)位電路<
21、/b></p><p> 本電路選石英晶振作為時鐘組件,接至AT89S51的XTAL1,XTAL2引腳組成時鐘電路,如設(shè)計圖所示。</p><p> 石英晶片所以能做振蕩電路(諧振)是基于它的壓電效應(yīng),從物理學(xué)中知道,若在晶片的兩個極板間加一電場,會使晶體產(chǎn)生機(jī)械變形;反之,若在極板間施加機(jī)械力,又會在相應(yīng)的方向上產(chǎn)生電場,這種現(xiàn)象稱為壓電效應(yīng)。如在極板間所加的是交變電壓,就會產(chǎn)
22、生機(jī)械變形振動,同時機(jī)械變形振動又會產(chǎn)生交變電場。一般來說,這種機(jī)械振動的振幅是比較小的,其振動頻率則是很穩(wěn)定的。</p><p> 石英晶體振蕩器是利用石英晶體的壓電效應(yīng)來起振,振蕩器直接應(yīng)用于電路中,采用內(nèi)部時鐘方式,選石英晶振作為時鐘組件,接至AT89S51的XTAL1,XTAL2引腳組成時鐘電路,如設(shè)計圖所示,其中石英晶振選12MHz,C1、C2為負(fù)載電容,選C1=C2=22pF的瓷介電容。</p
23、><p><b> 4、溫度傳感器電路</b></p><p> DS18B20管腳圖</p><p> DS18B20的性能特點如下:</p><p> ? 獨特的單線接口僅需一個端口引腳進(jìn)行通訊;</p><p><b> ? 無需外部器件;</b></p&g
24、t;<p> ? 可通過數(shù)據(jù)線供電;</p><p><b> ? 零待機(jī)功耗;</b></p><p> ? 測溫范圍-55~+125℃,以0.5℃遞增;</p><p> ? 溫度數(shù)字量轉(zhuǎn)換時間200ms(典型值);</p><p> ? 報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)
25、的器件;</p><p> DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的
26、定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p> 圖3 DS18B20字節(jié)定義</p><p> 由表1可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率
27、和轉(zhuǎn)換時間權(quán)衡考慮。</p><p> 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p> 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在
28、先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><p> 當(dāng)符號位S=0時,表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號位S=1時,表示測得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計算十進(jìn)制數(shù)值。表2是一部分溫度值對應(yīng)的二進(jìn)制溫度數(shù)據(jù)。</p><p> 表1 DS18B20溫度轉(zhuǎn)換時間表</p><p> DS18B20完成
29、溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報警標(biāo)志位置位,并對主機(jī)發(fā)出的報警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時測量溫度并進(jìn)行報警搜索。</p><p> 在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機(jī)ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</
30、p><p> DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進(jìn)行計數(shù)進(jìn)而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對應(yīng)的一個
31、基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。</p><p> 減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其
32、輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。</p><p> 表2 一部分溫度對應(yīng)值表</p><p> 另外,由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)
33、。</p><p> DS18B20溫度傳感器與單片機(jī)的接口電路</p><p> DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖4 所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。</p><
34、;p> 當(dāng)DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強(qiáng)的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。</p><p> 5、數(shù)碼管顯示驅(qū)動電路</p><p> 顯示電路采用兩只4位共陰LED數(shù)碼管和數(shù)碼管的驅(qū)動芯片74LS245。</p><p> ?7
35、4LS245用來驅(qū)動LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù);?74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù);?當(dāng)AT89C51單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時,必須接入74LS245等總線驅(qū)動器;?/G=1, DIR=X(X=0或者1),輸入和輸出均為高阻態(tài);高阻態(tài)的含意就是相當(dāng)于沒有這個芯片;</p><p> ?當(dāng)/G低電平有效時,DIR
36、=“0”,信號由B向A傳輸(接收)DI;DIR=“1”,信號由A向B傳輸(發(fā)送)。</p><p><b> 6、報警電路</b></p><p> 圖中蜂鳴器可以在被測溫度不在上下限范圍內(nèi)時,發(fā)出報警鳴叫聲音,同時LED數(shù)碼管將沒有被測溫度值顯示,這時可以調(diào)整報警上下限,從而測出被測的溫度值。</p><p> 四、總原理圖及元器件清單
37、</p><p><b> 元器件清單</b></p><p><b> 五、安裝與調(diào)試</b></p><p><b> 六、性能測試與分析</b></p><p> 對電路用Altium Designer軟件進(jìn)行仿真,仿真結(jié)果如圖</p><p&
38、gt; 由仿真結(jié)果可知該數(shù)字溫度計測量結(jié)果還是具有一定準(zhǔn)確度的,較大誤差可能是一些參數(shù)設(shè)置不合理造成的。</p><p><b> 附:總程序 </b></p><p> #include <reg51.h></p><p> #include <intrins.h></p><p>
39、#define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P3^6;//wendu</p><p> sbit BEEP=P3^7; //蜂鳴器驅(qū)動線</p><p> sbit HI_LED=P1^4;</p>
40、<p> sbit LO_LED=P1^5;</p><p> //共陰數(shù)碼管段碼及空白顯示//</p><p> uchar code DSY_CODE[] =</p><p> {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};</p><p> //溫
41、度小數(shù)位對照表</p><p> uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};</p><p><b> //</b></p><p> //報警溫度上下限,為進(jìn)行正負(fù)數(shù)比較,此處注意設(shè)為char類型</p><p> //取值范圍為-128——
42、+127,DS18B20支持范圍為-50——+125</p><p><b> //</b></p><p> char Alarm_Temp_HL[2]={120,-30};</p><p><b> //</b></p><p> uchar CurrentT=0;</p>
43、<p> uchar Temp_Value[]={0x00,0x00};</p><p> uchar Display_Digit[]={0,0,0,0};</p><p> bit HI_Alarm=0,LO_Alarm=0;</p><p> bit DS18B20_IS_OK=1;</p><p> uint Ti
44、me0_Count=0;</p><p><b> //</b></p><p><b> //延時</b></p><p><b> //</b></p><p> void Delay(uint x)</p><p><b> {
45、</b></p><p> while( --x );</p><p><b> }</b></p><p><b> //</b></p><p> //初始化DS18B20</p><p><b> //</b></p
46、><p> uchar Init_DS18B20()</p><p><b> {</b></p><p> uchar status;</p><p> DQ =1; //DQ復(fù)位</p><p> Delay(8); //稍做延時</p><p> DQ =0;
47、 //單片機(jī)將DQ拉低</p><p> Delay(90); //</p><p> DQ =1; //拉高總線</p><p><b> Delay(8);</b></p><p> status=DQ; //</p><p> Delay(100);</p><
48、p><b> DQ=1;</b></p><p> return status;</p><p><b> }</b></p><p><b> //</b></p><p><b> //讀一字節(jié)</b></p><p
49、><b> //</b></p><p> uchar ReadOneByte()</p><p><b> {</b></p><p> uchar i,dat = 0;</p><p> DQ = 1;_nop_();</p><p> for (i=0
50、;i<8;i++)</p><p><b> {</b></p><p> DQ = 0; dat>>=1;DQ = 1;_nop_();_nop_();</p><p> if(DQ) dat|=0x80;Delay(4);DQ = 1; </p><p><b> }</b&
51、gt;</p><p> return dat;</p><p><b> }</b></p><p><b> //</b></p><p><b> //寫一節(jié)</b></p><p><b> //</b></
52、p><p> void WriteOneByte(uchar dat)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> for (i=0;i<8;i++)</p><p><b> {<
53、/b></p><p> DQ= 0;DQ= dat & 0x01;Delay(5);DQ = 1;dat>>=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> //</b></p
54、><p><b> //讀取溫度值</b></p><p><b> //</b></p><p> void Read_Temperature()</p><p><b> {</b></p><p> if( Init_DS18B20() =
55、= 1)</p><p> DS18B20_IS_OK=0;</p><p><b> else</b></p><p><b> {</b></p><p> WriteOneByte(0xCC); // 跳過讀序號列號的操作</p><p> WriteOne
56、Byte(0x44); // 啟動溫度轉(zhuǎn)換</p><p> Init_DS18B20();</p><p> WriteOneByte(0xCC); //跳過讀序號列號的操作</p><p> WriteOneByte(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度</p><p> Temp_Value[0
57、]=ReadOneByte();</p><p> Temp_Value[1]=ReadOneByte();</p><p> Alarm_Temp_HL[0]=ReadOneByte();</p><p> Alarm_Temp_HL[1]=ReadOneByte();</p><p> DS18B20_IS_OK=1;</p
58、><p><b> }</b></p><p><b> }</b></p><p><b> //</b></p><p> //設(shè)置DS18B20溫度報警值</p><p><b> //</b></p>&
59、lt;p> void Set_Alarm_Temp_Value()</p><p><b> {</b></p><p> Init_DS18B20();</p><p> WriteOneByte(0xCC); // 跳過讀序號列號的操作</p><p> WriteOneByte(0x4E);<
60、/p><p> WriteOneByte(Alarm_Temp_HL[0]);</p><p> WriteOneByte(Alarm_Temp_HL[1]);</p><p> WriteOneByte(0x7F);</p><p> Init_DS18B20();</p><p> WriteOneByte(
61、0xCC);</p><p> WriteOneByte(0x48);</p><p><b> }</b></p><p><b> //</b></p><p> //在數(shù)碼管上顯示溫度</p><p><b> //</b></p&
62、gt;<p> void Display_Temperature()</p><p><b> {</b></p><p><b> uchar i;</b></p><p> uchar t=150;</p><p> uchar ng=0,np=0;</p>
63、<p> char Signed_Current_Temp;</p><p> //如果為負(fù)數(shù)則取反加1,并設(shè)置負(fù)號標(biāo)識及負(fù)號顯示位置</p><p> if ((Temp_Value[1]&0xF8)==0xF8)</p><p><b> {</b></p><p> Temp_Valu
64、e[1]=~Temp_Value[1];</p><p> Temp_Value[0]=~Temp_Value[0]+1;</p><p> if (Temp_Value[0] == 0x00) Temp_Value[1]++;</p><p> ng =1; np= 0xFD;</p><p><b> }</b&g
65、t;</p><p> //查表得到小數(shù)部分</p><p> Display_Digit[0] =df_Table[Temp_Value[0]&0x0F];</p><p> //獲取溫度整數(shù)部分(無符號)</p><p> CurrentT=((Temp_Value[0]&0x0F)>>4)|((Tem
66、p_Value[1]&0x07)<<4);</p><p><b> //</b></p><p> Signed_Current_Temp=ng?-CurrentT:CurrentT;</p><p><b> //</b></p><p> HI_Alarm =Sig
67、ned_Current_Temp >=Alarm_Temp_HL[0]?1:0;</p><p> LO_Alarm =Signed_Current_Temp <=Alarm_Temp_HL[1]?1:0;</p><p><b> //</b></p><p> Display_Digit[3] =CurrentT / 10
68、0;</p><p> Display_Digit[2] =CurrentT % 100 / 10;</p><p> Display_Digit[1] =CurrentT % 10;</p><p> if(Display_Digit[3] ==0)</p><p><b> {</b></p>
69、<p> Display_Digit[3] =10;</p><p> np = 0xFB;</p><p> if(Display_Digit[2] ==0)</p><p><b> {</b></p><p> Display_Digit[2] =10;</p><p>
70、 np = 0xF7;</p><p><b> }</b></p><p><b> }</b></p><p><b> //</b></p><p> for (i=0;i<30;i++)</p><p><b> {&
71、lt;/b></p><p> P0 = 0x39;P2= 0x7F; Delay(t); P2 =0xFF;</p><p> P0 = 0x63;P2= 0xBF; Delay(t); P2 =0xFF;</p><p> P0 =DSY_CODE[Display_Digit[0]];</p><p> P2 = 0xDF;
72、Delay(t); P2 =0xFF;</p><p> P0 =(DSY_CODE[Display_Digit[1]])| 0x80;</p><p> P2 = 0xEF;Delay(t); P2 =0xFF;</p><p> P0 =DSY_CODE[Display_Digit[2]];</p><p> P2 = 0xF7;
73、Delay(t); P2 =0xFF;</p><p> P0 =DSY_CODE[Display_Digit[3]];</p><p> P2 = 0xFB;Delay(t); P2 =0xFF;</p><p><b> if(ng)//</b></p><p><b> {</b>&l
74、t;/p><p> P0 = 0x40;P2 = np;Delay(t); P2 =0xFF;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> /
75、/</b></p><p><b> //</b></p><p><b> //</b></p><p> void T0_INT() interrupt 1</p><p><b> {</b></p><p> TH0 =-1
76、000 / 256;</p><p> TL0 =-1000 % 256;</p><p> BEEP=!BEEP ;</p><p> if( ++Time0_Count == 400) </p><p><b> {</b></p><p> Time0_Count = 0;<
77、/p><p> if (HI_Alarm) HI_LED = ~HI_LED; else HI_LED = 1;</p><p> if (LO_Alarm) LO_LED = ~LO_LED; else LO_LED = 1;</p><p><b> }</b></p><p><b>
78、; } </b></p><p><b> //</b></p><p><b> //</b></p><p><b> //</b></p><p> void main(void)</p><p><b> {&l
79、t;/b></p><p> IE = 0X82;</p><p> TMOD = 0X01;</p><p> TH0 = -1000 / 256;延時一秒</p><p> TL0 = -1000 % 256;</p><p><b> TR0 = 0;</b></p&g
80、t;<p> HI_LED = 1;</p><p> LO_LED = 1;</p><p> Set_Alarm_Temp_Value();</p><p> Read_Temperature();</p><p> Delay(50000);</p><p> Delay(50000);
81、</p><p><b> while(1)</b></p><p><b> {</b></p><p> Read_Temperature();</p><p> if( DS18B20_IS_OK )</p><p><b> { </b>
82、;</p><p> if (HI_Alarm == 1 || LO_Alarm == 1) TR0=1;</p><p> else TR0=0;</p><p> Display_Temperature();</p><p><b> } </b></p><p&g
83、t; else </p><p><b> {</b></p><p> P0 = P2 = 0x00;</p><p><b> }</b></p><p><b&g
84、t; }</b></p><p><b> }</b></p><p><b> 七、結(jié)論與心得體會</b></p><p><b> 結(jié)論:</b></p><p> 通過軟件模擬,該設(shè)計電路具有一定的精確度,能夠適合我們的生活雖然沒有實際測試,但根據(jù)模
85、擬測試可以得出結(jié)論:此設(shè)計方案可以實現(xiàn)。</p><p><b> 心得體會:</b></p><p> 經(jīng)過近一周的努力,終于完成了數(shù)字溫度計的課程設(shè)計,雖然沒有完全達(dá)到設(shè)計要求,但還是感到高興,高興之余有值得我去深思的。</p><p> 回顧起此次課程設(shè)計,至今我仍感慨頗多,可以說,這次課程設(shè)計比較不容易,因為很多內(nèi)容還未進(jìn)行學(xué)習(xí),
86、因此,就要花了大量的時間和精力進(jìn)行資料查閱和方案論證,結(jié)合自己所學(xué),認(rèn)真解決每一個功能模塊中遇到的問題.有時,為了解決一個具體問題,竟到了絞盡腦汁的地步。但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。這次設(shè)計使自己有機(jī)會使用到原來所學(xué)理論知識,并且可以有更深的認(rèn)識,我意識到了理論與實際結(jié)合的重要性,可以說收獲確實不小。</p><p> 在設(shè)計的過程中
87、可以說得是困難重重,這畢竟是第一次做電子課程設(shè)計,難免會遇到過各種各樣的問題,設(shè)計的過程中我發(fā)現(xiàn)了自己的不足之處,自己對仿真軟件不熟悉、已學(xué)過的電子技術(shù)課程、單片機(jī)應(yīng)用、C語言編程等內(nèi)容未掌握,導(dǎo)致課程設(shè)計的進(jìn)度很慢并且還有很多錯誤;也提醒自己要更加努力學(xué)習(xí)來擴(kuò)充自己的知識。在此次課程設(shè)計的過程中,我發(fā)現(xiàn)很多的問題:有很多知識,只有我們?nèi)嵺`應(yīng)用,才能真正的掌握,只學(xué)習(xí)理論有些知識是很難理解的,更談不上掌握;學(xué)習(xí)要理論聯(lián)系實際,實踐是檢
88、驗真理的惟一標(biāo)準(zhǔn);在課堂上,我們學(xué)習(xí)理論知識,如果我們在實際當(dāng)中不能靈活運用,那就等于沒學(xué)。在以后的學(xué)習(xí)中,我們更應(yīng)該把所學(xué)的理論知識與實際應(yīng)用相結(jié)合,才能使我們所學(xué)的知識融匯貫通,才能真正的學(xué)到知識,真正的做到學(xué)以致用。</p><p> 總的來說,自己從這次獨立的課程設(shè)計中收獲了一些知識與經(jīng)驗,一些從書本中學(xué)不到的知識,自主動手動腦實踐,小小的成果亦能帶來碩大的喜悅!這次設(shè)計真的讓我受益匪淺!我們知道自己還
89、有很多的不足和很多需要學(xué)習(xí)的東西,我相信通過自己的努力,在未來的課程等方面會有更大的進(jìn)步,不斷提高自己的能力。</p><p><b> 八、參考文獻(xiàn)</b></p><p> [1] 陳明義.電子技術(shù)課程設(shè)計實用教程.中南大學(xué)出版社,2009</p><p> [2] 廖洪翔.電子技術(shù)實驗指導(dǎo).西南交通大學(xué)出版社,2010</p&
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子技術(shù)基礎(chǔ)數(shù)字溫度計課程設(shè)計
- 《 電子技術(shù) 》綜合課程設(shè)計--智能溫度計
- 電子課程設(shè)計小結(jié)---數(shù)字溫度計
- 課程設(shè)計---數(shù)字溫度計
- 數(shù)字溫度計課程設(shè)計
- 數(shù)字溫度計課程設(shè)計
- 數(shù)字溫度計課程設(shè)計
- 數(shù)字溫度計課程設(shè)計
- 數(shù)字溫度計課程設(shè)計
- 課程設(shè)計-數(shù)字溫度計
- 課程設(shè)計---數(shù)字溫度計設(shè)計
- 數(shù)字電子技術(shù)課程設(shè)計
- 數(shù)字電子技術(shù)課程設(shè)計
- 數(shù)字電子技術(shù)課程設(shè)計
- 數(shù)字溫度計課程設(shè)計 (2)
- 數(shù)字溫度計課程設(shè)計 (2)
- 數(shù)字溫度計課程設(shè)計 (2)
- 數(shù)字溫度計的課程設(shè)計
- 數(shù)字溫度計課程設(shè)計 (3)
- 數(shù)字溫度計課程設(shè)計報告
評論
0/150
提交評論