版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 學(xué)生姓名: 學(xué) 號(hào): </p><p> 專(zhuān)業(yè)班級(jí): 信息學(xué)院電信102 </p><p> 課程名稱(chēng): 傳感器課程設(shè)計(jì) </p><p> 學(xué)年學(xué)期: 2 0
2、12 —2 013 學(xué)年第 1 學(xué)期 </p><p> 指導(dǎo)教師: </p><p> 2012年 12 月</p><p><b> 目錄</b></p><p> 概述--------------------------------------1</
3、p><p> 設(shè)計(jì)目的----------------------------------1</p><p> 基本要求----------------------------------1</p><p> 電路設(shè)計(jì)----------------------------------2</p><p> 程序設(shè)計(jì)原理圖---------
4、---------------------2</p><p> 硬件電路設(shè)計(jì)圖------------------------------2</p><p> 程序設(shè)計(jì)----------------------------------3</p><p> 主程序設(shè)計(jì)流程圖----------------------------3</p><
5、;p> 初始化程序流程圖----------------------------3</p><p> 讀取溫度子程序------------------------------3</p><p> 寫(xiě)流程圖------------------------------------4</p><p> 讀流程圖-----------------------
6、-------------5</p><p> 程序--------------------------------------6</p><p> 七、結(jié)果驗(yàn)證與仿真----------------------------11</p><p> 八、心得體會(huì)----------------------------------11</p><
7、;p> 九、參考文獻(xiàn)----------------------------------12</p><p> 十、焊接實(shí)物----------------------------------12</p><p> 孵化室控溫控制電路設(shè)計(jì)</p><p><b> 一、概述</b></p><p> 傳感
8、器技術(shù)與通信技術(shù)、計(jì)算機(jī)技術(shù)構(gòu)成了現(xiàn)代信息技術(shù)的三大支柱,傳感器技術(shù)已經(jīng)深入我們生活中各個(gè)方面,作為信息采集的主要手段,其應(yīng)用非常廣泛,所以掌握傳感器的基本原理與使用是非重要。本設(shè)計(jì)選用51單片機(jī)作為主控制器件,DS18B20作為測(cè)溫傳感器,通過(guò)數(shù)碼管實(shí)現(xiàn)溫度顯示。通過(guò)DS18B20直接讀取被測(cè)溫度值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該器件的物理化學(xué)性能穩(wěn)定,在0℃~100℃最大線性偏差小于0.01℃。該器件可直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控
9、制。</p><p><b> 二、設(shè)計(jì)目的</b></p><p> 1、了解溫度檢測(cè)和控制技術(shù)的基本知識(shí)以及單片機(jī)、傳感器等相關(guān)技術(shù)。 </p><p> 2、熟練使用相關(guān)的EDA軟件進(jìn)行硬件電路的設(shè)計(jì)與仿真 </p><p> 3、具體掌握DS18B20溫度傳感器的使用方法。</p>
10、<p> 4、畫(huà)出電路原理圖,說(shuō)明設(shè)計(jì)思想。</p><p> 5、按照電路原理圖在實(shí)驗(yàn)板上安裝、試調(diào)電路。</p><p> 6、寫(xiě)出設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p><b> 三、基本要求</b></p><p> 本學(xué)期自學(xué)了51系列單片機(jī)的部分相關(guān)內(nèi)容,但一直沒(méi)有機(jī)會(huì)進(jìn)行實(shí)踐練習(xí),希望利用傳感
11、器課程設(shè)計(jì)這個(gè)機(jī)會(huì),去運(yùn)用一下學(xué)習(xí)到的知識(shí)</p><p> 1、孵化室對(duì)溫度有一定要求,溫度是否合適直接影響孵化效果,為此需要對(duì)溫度進(jìn)行嚴(yán)格控制,主要指標(biāo)如下:</p><p> 孵化室溫控制在36.5±0.5℃,溫度低時(shí)啟動(dòng)電熱器加熱,用紅燈報(bào)警;溫度高時(shí),啟動(dòng)空調(diào)冷卻,用綠燈報(bào)警。</p><p> 2、要求設(shè)計(jì)相關(guān)的硬件電路,選擇合適的傳感器
12、、控制系統(tǒng)和顯示系統(tǒng)。</p><p><b> 四、電路設(shè)計(jì):</b></p><p> 4.1 系統(tǒng)設(shè)計(jì)原理框圖: </p><p> 圖1 DS18B20溫度測(cè)溫系統(tǒng)框圖</p><p> 通過(guò)單片機(jī)控制溫度傳感器,讀出DS18B20的溫度,并用數(shù)碼管顯示,當(dāng)溫度超過(guò)37℃時(shí),啟動(dòng)空調(diào)冷卻,用綠燈報(bào)警,當(dāng)溫
13、度低于36℃時(shí),啟動(dòng)電熱器加熱,用紅燈報(bào)警。所以根據(jù)設(shè)計(jì)要求確定了系統(tǒng)的總體方案,整個(gè)系統(tǒng)由控制模塊、濕度檢測(cè)模塊、顯示模塊、報(bào)警器等構(gòu)成。</p><p> 4.2 硬件電路設(shè)計(jì)圖</p><p> 圖2 硬件電路設(shè)計(jì)圖</p><p><b> 五、程序設(shè)計(jì)</b></p><p> 系統(tǒng)程序主要包括主程序、
14、讀取溫度子程序、數(shù)據(jù)轉(zhuǎn)換子程序、顯示數(shù)據(jù)子程序等。</p><p> 5.1 主程序設(shè)計(jì)流程圖</p><p><b> 圖3 主程序流程圖</b></p><p> 5.2 初始化程序流程圖</p><p><b> 圖4 初始化流程圖</b></p><p>
15、5.3 讀取溫度子程序</p><p> 讀取溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。主要包括以下三個(gè)命令:</p><p> (1)寫(xiě)暫存器命令 【4EH】</p><p> 這個(gè)命令為由TH寄存器開(kāi)始向DS18B20暫存器寫(xiě)入數(shù)據(jù),4EH命令后的3字節(jié)數(shù)據(jù)將被保存到暫存器的地址2、3、4(TH
16、、TL、CONFIG)三個(gè)字節(jié)。所有數(shù)據(jù)必須在復(fù)位脈沖前寫(xiě)完。即如果只想寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)到地址2,可按如下流程:</p><p><b> 初始化;</b></p><p> 寫(xiě)0CCH,跳過(guò)ROM檢測(cè);</p><p> 寫(xiě)4EH; </p><p><b> 寫(xiě)1字節(jié)數(shù)據(jù);</b&g
17、t;</p><p> 復(fù)位,即向DQ輸出480~960us低電平</p><p> ?。?)讀暫存命令【BEH】</p><p> 這個(gè)命令由字節(jié)0讀取9個(gè)暫存器內(nèi)容,如果不需要讀取所有暫存內(nèi)容,可隨時(shí)輸出復(fù)位脈沖終止讀取過(guò)程</p><p> ?。?)轉(zhuǎn)換溫度命令【44H】</p><p> 這個(gè)命令啟動(dòng)溫度
18、轉(zhuǎn)換過(guò)程。轉(zhuǎn)換溫度時(shí)DS18B20保持空閑狀態(tài),此時(shí)如果單片機(jī)發(fā)出讀命令, DS18B20將輸出0直到轉(zhuǎn)換完成,轉(zhuǎn)換完成后將輸出1。</p><p> 圖5 讀取溫度子程序</p><p><b> 5.4 寫(xiě)流程圖</b></p><p> 寫(xiě)時(shí)隙:寫(xiě)時(shí)隙由DQ引腳的下降沿引起。18B20有寫(xiě)1和寫(xiě)0兩種寫(xiě)時(shí)隙。所有寫(xiě)時(shí)隙必須持續(xù)至少6
19、0μs,兩個(gè)時(shí)隙之間至少有1μs的恢復(fù)時(shí)間。DS18B20在DQ下降沿后15μs~60μs間采樣DQ引腳,若此時(shí)DQ為高電平,則寫(xiě)入一位1,若此時(shí)DQ為低電平,則寫(xiě)入一位0,如圖9所示。所以,若想寫(xiě)入1,則單片機(jī)應(yīng)先將DQ置低電平,15us后再將DQ置高電平,持續(xù)45μs;若要寫(xiě)入0,則將DQ置低電平,持續(xù)60μs。</p><p><b> 圖6 寫(xiě)流程圖</b></p>
20、<p><b> 5.5讀流程圖</b></p><p> 讀時(shí)隙:讀時(shí)隙由DQ下降沿引起,持續(xù)至少1μs的低電平后釋放總線(DQ置1)DS18B20的輸出數(shù)據(jù)將在下降沿15μs后輸出,此時(shí)單片機(jī)可讀取1位數(shù)據(jù)。讀時(shí)隙結(jié)束時(shí)要將DQ置1。所有讀時(shí)隙必須持續(xù)至少60μs,兩個(gè)時(shí)隙之間至少有1μs的恢復(fù)時(shí)間。</p><p><b> 圖7讀流程
21、圖</b></p><p><b> 六、程序</b></p><p> #include <reg52.h></p><p> #include <intrins.h></p><p> #define uchar unsigned char</p><p
22、> #define uint unsigned int</p><p> sbit DQ = P1^3; </p><p> sbit K1 = P1^0;</p><p> sbit K2 = P1^1; //數(shù)據(jù)口define interface</p><p> uint tem
23、p; //溫度值 variable of temperature</p><p><b> //不帶小數(shù)點(diǎn)</b></p><p> unsigned char code table[] = ~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,</p><p&g
24、t; ~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71};</p><p> unsigned char code d[]={0x20,0x40,0x80};</p><p> /*************精確延時(shí)函數(shù)*****************/</p><p> void delay(uns
25、igned char i) </p><p> {while(--i); }</p><p> /******************************************</p><p> 此延時(shí)函數(shù)針對(duì)的是12Mhz的晶振</p><p> delay(0):延時(shí)518us 誤差:518-2*256=6</p>
26、;<p> delay(1):延時(shí)7us (原帖寫(xiě)"5us"是錯(cuò)的)</p><p> delay(10):延時(shí)25us 誤差:25-20=5</p><p> delay(20):延時(shí)45us 誤差:45-40=5</p><p> delay(100):延時(shí)205us 誤差:205-200=5</p
27、><p> delay(200):延時(shí)405us 誤差:405-400=5</p><p> ********************************************/</p><p> /*****************DS18B20******************/</p><p> void Init_Ds18
28、b20(void) //DS18B20初始化send reset and initialization command</p><p><b> {</b></p><p> DQ = 1; //DQ復(fù)位,不要也可行。</p><p> delay(1);
29、//稍做延時(shí)</p><p> DQ = 0; //單片機(jī)拉低總線</p><p> delay(250); //精確延時(shí),維持至少480us</p><p> DQ = 1; //釋放總線,即拉高了總線</p><p> del
30、ay(100); //此處延時(shí)有足夠,確保能讓DS18B20發(fā)出存在脈沖。</p><p><b> }</b></p><p> uchar Read_One_Byte() //讀取一個(gè)字節(jié)的數(shù)據(jù)read a byte date</p><p> //讀數(shù)據(jù)時(shí),數(shù)據(jù)以字節(jié)的最低有效位先從總線移出
31、</p><p><b> {</b></p><p> uchar i = 0;</p><p> uchar dat = 0;</p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p&
32、gt; DQ = 0; //將總線拉低,要在1us之后釋放總線</p><p> //單片機(jī)要在此下降沿后的15us內(nèi)讀數(shù)據(jù)才會(huì)有效。</p><p> _nop_(); //至少維持了1us,表示讀時(shí)序開(kāi)始</p><p> dat >>= 1; //
33、讓從總線上讀到的位數(shù)據(jù),依次從高位移動(dòng)到低位。</p><p> DQ = 1; //釋放總線,此后DS18B20會(huì)控制總線,把數(shù)據(jù)傳輸?shù)娇偩€上</p><p> delay(1); //延時(shí)7us,此處參照推薦的讀時(shí)序圖,盡量把控制器采樣時(shí)間放到讀時(shí)序后的15us內(nèi)的最后部分</p><p>
34、 if(DQ) //控制器進(jìn)行采樣</p><p><b> {</b></p><p> dat |= 0x80; //若總線為1,即DQ為1,那就把dat的最高位置1;若為0,則不進(jìn)行處理,保持為0</p><p><b> } </b>&l
35、t;/p><p> delay(10); //此延時(shí)不能少,確保讀時(shí)序的長(zhǎng)度60us。</p><p><b> }</b></p><p> return (dat);</p><p><b> }</b></p><p> void Wr
36、ite_One_Byte(uchar dat)</p><p><b> {</b></p><p> uchar i = 0;</p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> DQ = 0;
37、 //拉低總線</p><p> _nop_(); //至少維持了1us,表示寫(xiě)時(shí)序(包括寫(xiě)0時(shí)序或?qū)?時(shí)序)開(kāi)始</p><p> DQ = dat&0x01; //從字節(jié)的最低位開(kāi)始傳輸</p><p> //指令dat的最低位賦予給總
38、線,必須在拉低總線后的15us內(nèi),</p><p> //因?yàn)?5us后DS18B20會(huì)對(duì)總線采樣。</p><p> delay(10); //必須讓寫(xiě)時(shí)序持續(xù)至少60us</p><p> DQ = 1; //寫(xiě)完后,必須釋放總線,</p><p>
39、; dat >>= 1;</p><p><b> delay(1);</b></p><p><b> }</b></p><p><b> }</b></p><p> uint Get_Tmp() //獲取溫度ge
40、t the temperature</p><p><b> {</b></p><p><b> float tt;</b></p><p> uchar a,b;</p><p> Init_Ds18b20(); //初始化</p><p
41、> Write_One_Byte(0xcc); //忽略ROM指令</p><p> Write_One_Byte(0x44); //溫度轉(zhuǎn)換指令</p><p> Init_Ds18b20(); //初始化</p><p> Write_One_Byte(0xcc);
42、 //忽略ROM指令</p><p> Write_One_Byte(0xbe); //讀暫存器指令</p><p> a = Read_One_Byte(); //讀取到的第一個(gè)字節(jié)為溫度LSB</p><p> b = Read_One_Byte(); //讀取到的第一個(gè)字節(jié)為溫度MSB</
43、p><p> temp = b; //先把高八位有效數(shù)據(jù)賦于temp</p><p> temp <<= 8; //把以上8位數(shù)據(jù)從temp低八位移到高八位</p><p> temp = temp|a; //兩字節(jié)合成一個(gè)整型變量</p
44、><p> tt = temp*0.0625; //得到真實(shí)十進(jìn)制溫度值</p><p> //因?yàn)镈S18B20可以精確到0.0625度</p><p> //所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度</p><p> temp = tt*10+0.5; //放大十倍</p&
45、gt;<p> //這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字</p><p> //同時(shí)進(jìn)行一個(gè)四舍五入操作。</p><p> return temp;</p><p><b> }</b></p><p> /****************數(shù)碼碼動(dòng)態(tài)顯示函數(shù)**************
46、/</p><p> void Display(uint temp) //顯示程序</p><p><b> {</b></p><p> uint N[3],i,k;</p><p> N[0]=table[temp/100];</p><p> N[1]=table[temp%1
47、00/10]&0x7f;</p><p> N[2]=table[temp%10];</p><p> for(k=0;k<200;k++)</p><p><b> {</b></p><p> for( i=0; i<3; i++) </p><p><b&g
48、t; { </b></p><p> P0 = N[i];</p><p> P2 = d[i]; //使用查表法進(jìn)行位選 </p><p> delay(3000); //掃描間隔時(shí)間太長(zhǎng)數(shù)碼管會(huì)有閃爍感</p><p><b> }</b></p><
49、p><b> } }</b></p><p> void main()</p><p><b> {</b></p><p> K1=1;K2=1;</p><p><b> while(1)</b></p><p><b>
50、; {</b></p><p> Display(Get_Tmp());</p><p> if(Get_Tmp()<360)</p><p><b> {K1=0;</b></p><p><b> K2=1;</b></p><p><
51、b> }</b></p><p> if(Get_Tmp()>360&& Get_Tmp()<370)</p><p><b> {K1=1;</b></p><p><b> K2=1;</b></p><p><b> }<
52、;/b></p><p> if(Get_Tmp()>370)</p><p><b> {K2=0;</b></p><p><b> K1=1;</b></p><p><b> }</b></p><p><b>
53、 }</b></p><p><b> }</b></p><p><b> 七、結(jié)果驗(yàn)證與仿真</b></p><p><b> 仿真如圖:</b></p><p><b> 圖8仿真圖</b></p><p>
54、;<b> 八、心得體會(huì)</b></p><p> 從一開(kāi)始上傳感器的課,老師就通知有課程設(shè)計(jì),我就開(kāi)始想要做個(gè)什么出來(lái),經(jīng)過(guò)兩個(gè)星期的查閱資料決定做溫度傳感器。</p><p> 這次課設(shè)不同于以往的課程設(shè)計(jì),它需要自己規(guī)劃一切過(guò)程。自己買(mǎi)元器件,自己焊接和調(diào)試,全都是自己獨(dú)立完成。在這次的課程設(shè)計(jì)我懂得了如何去挑選自己需要的元器件,如何判斷元器件的好壞。這次
55、課設(shè)我用到了單片機(jī),我也深深理解了單片機(jī)的強(qiáng)大,用C語(yǔ)言去編程序,真正知道了C語(yǔ)言在我們專(zhuān)業(yè)的作用,和他對(duì)于我們的重要性。</p><p> 從這次的設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,這就是我在這次課程設(shè)計(jì)中的最大收獲。隨著電子技術(shù)的不斷發(fā)展,按著此思路設(shè)計(jì)的溫度傳感器的性能也一定會(huì)越來(lái)越好。</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳感器與測(cè)控電路課程設(shè)計(jì)---自動(dòng)調(diào)光臺(tái)燈控制電路設(shè)計(jì)
- 恒溫控制電路設(shè)計(jì)
- 課程設(shè)計(jì)---彩燈控制電路設(shè)計(jì)
- 恒溫控制課程設(shè)計(jì)---恒溫控制電路的設(shè)計(jì)
- 傳感器課程設(shè)計(jì)--稱(chēng)重傳感器應(yīng)用電路設(shè)計(jì)
- 傳感器課程設(shè)計(jì)---稱(chēng)重傳感器應(yīng)用電路設(shè)計(jì)
- 傳感器課程設(shè)計(jì)---稱(chēng)重傳感器應(yīng)用電路設(shè)計(jì)
- 舵機(jī)角度控制電路設(shè)計(jì)課程設(shè)計(jì)
- 電阻傳感器課程設(shè)計(jì)--電阻式傳感器應(yīng)用電路設(shè)計(jì)
- CMOS圖像傳感器控制電路設(shè)計(jì)與實(shí)現(xiàn).pdf
- 課程設(shè)計(jì)---彩燈循環(huán)控制電路設(shè)計(jì)
- 傳感器課程設(shè)計(jì)--紫外線傳感器應(yīng)用電路設(shè)計(jì)
- 橫梁自動(dòng)升降控制電路設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--- 洗衣機(jī)控制電路設(shè)計(jì)
- 課程設(shè)計(jì)--節(jié)日彩燈控制電路設(shè)計(jì)報(bào)告
- 傳感器課程設(shè)計(jì)--應(yīng)變式荷重傳感器及轉(zhuǎn)換電路設(shè)計(jì)
- 課程設(shè)計(jì)---切削加工刀架控制電路設(shè)計(jì)
- 傳感器課程設(shè)計(jì)報(bào)告--光控照明電路
- CMOS圖像傳感器控制電路設(shè)計(jì)及曝光控制研究.pdf
- 熱敏電阻傳感器溫度檢測(cè)電路設(shè)計(jì)-課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論