多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)_第1頁(yè)
多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)_第2頁(yè)
多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)_第3頁(yè)
多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)_第4頁(yè)
多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子設(shè)計(jì)自動(dòng)化實(shí)訓(xùn)報(bào)告題目:多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)學(xué)生姓名:宋安邦學(xué)生學(xué)號(hào):2104020685學(xué)院:工學(xué)院專業(yè):電子信息工程班級(jí):2 0 11 級(jí)指 導(dǎo) 教 師 : 林 君 副 教 授一、實(shí)訓(xùn)目的和意義通過(guò)對(duì)多點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì), 可以更深入的了解 MC5.2單片機(jī)的特點(diǎn)以 及應(yīng)用技巧,對(duì)單片機(jī)的應(yīng)用可以溫習(xí)其中的結(jié)構(gòu)以及原理。 而且 proteus 的強(qiáng) 大功能也能通過(guò)此次試驗(yàn)反應(yīng)出來(lái), 熟悉其界面的風(fēng)格以及各種應(yīng)用, 又重新的 認(rèn)識(shí)了 proteus 在單片機(jī)方面的強(qiáng)大功能。二、實(shí)訓(xùn)設(shè)計(jì)內(nèi)容要求1. 實(shí)現(xiàn) 4 點(diǎn)溫度實(shí)時(shí)采集,溫度傳感器采用 DS18B202. 采用 LCD1602顯示 4

2、個(gè)采集點(diǎn)溫度? 3. 具有溫度上下限報(bào)警功能:上限 90C,下限 20 C? 4. 聲音和光報(bào)警 2 種模式:光報(bào)警采用 4 只發(fā)光 LED;聲音報(bào)警采用揚(yáng)聲器,報(bào)警音調(diào)采用 2KHz方波。三、系統(tǒng)設(shè)計(jì)1方案設(shè)計(jì)相應(yīng)的報(bào)警(燈光 或蜂鳴器)( 1)工作原理:( a) 通過(guò)四個(gè)溫度采集器采集數(shù)字溫度輸入到單片機(jī)的 p2.0p2.3 口。(b)初始化 LCD1602使 1602能夠接受數(shù)據(jù),并分配其顯示位置,此處采用兩行 兩列式顯示。(c)單片機(jī)讀取信號(hào)。( d) 單片機(jī)向 LCD1602寫(xiě)信號(hào),并延時(shí)。(e)判斷是否有數(shù)據(jù)高于 90 度或低于 20度,如果有 點(diǎn)亮相應(yīng)的 led ,并啟動(dòng) 蜂鳴器

3、。2)硬件系統(tǒng)組成a)80C52b)晶振電路c)復(fù)位電路d)LED燈電路e) LCD1602(f )溫度檢測(cè) ds18b203. 軟件設(shè)計(jì)(1)時(shí)間的設(shè)定:從此采用中斷 T0方式延時(shí),而且是基本單位,無(wú)論蜂鳴器還是 led ,或是顯示溫 度都用到此延時(shí)程序。延時(shí)程序如下: void tmpDelay(int num)while(num-) ;void Time0(void) interrupt 1 using 0 sound=sound;TH0=(65536-5000)/256;TL0=(65536-5000)%256;(2)信號(hào)的讀入與寫(xiě)出: 讀字節(jié)程序如下 unsigned char Re

4、adOneChar1()/unsigned char i=0;unsigned char dat1 = 0;for (i=8;i0;i-)DQ1 = 0; / 給脈沖信號(hào) dat1=1;DQ1 = 1; / 給脈沖信號(hào) if(DQ1) dat1|=0x80;tmpDelay(4);return(dat1); 一共讀四個(gè)字節(jié),接下來(lái)是寫(xiě)字節(jié)程序如下 void WriteOneChar1(unsigned char dat1)/ unsigned char i=0;for (i=8; i0; i-)DQ1 = 0;DQ1 = dat1&0x01;tmpDelay(5);DQ1 = 1; dat1=

5、1; 注意度字節(jié)的返回值。 讀取溫度unsigned int Readtemp1()/unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0x44);Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0xBE);a=ReadOneChar1();b=ReadOneChar1(); / t=b;t900)|(t1;x-)for(y=z;y1;y-);/ 寫(xiě)命令函數(shù)void

6、write_com(uchar com) lcdrs=0;P0=com; delay(5); lcden=1;delay(5);/ 寫(xiě)數(shù)據(jù)函數(shù)lcden=0; void write_date(uchar date) lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0; void init_lcd()/ 初始化函數(shù) lcden=0;/默認(rèn)開(kāi)始狀態(tài)為關(guān)使能端,見(jiàn)時(shí)序圖lcdrw=0;/選擇狀態(tài)為 寫(xiě)write_com(0x0f);write_com(0x38);/顯示模式設(shè)置,默認(rèn)為 0x38, 不用變。write_com(0x01);/顯示清屏,將

7、上次的內(nèi)容清除write_com(0x0c);/顯示功能設(shè)置 0x0f 為開(kāi)顯示,顯示光標(biāo),爍; 0x0c 為開(kāi)顯示,不顯光標(biāo),光標(biāo)不閃write_com(0x06); / 設(shè)置光標(biāo)狀態(tài)默認(rèn) 0x06, 為讀一個(gè)字符光標(biāo)加光標(biāo)閃1.write_com(0x80); / 設(shè)置初始化數(shù)據(jù)指針for(i=0;i16;i+) / 顯示 The temperaturewrite_date(t0i);delay(0);write_com(0x80+0x40);for(i=0;i16;i+) / 顯示 is C write_date(t1i); delay(0);( 4)程序流程圖如下圖所示:四、調(diào)試方法及

8、步驟1. 用軟件調(diào)試工具先調(diào)試設(shè)計(jì)好的程序, 項(xiàng)目,設(shè)計(jì)開(kāi)發(fā)環(huán)境,選擇單片機(jī)種類,建立方法是打開(kāi)調(diào)試工具后新建.c ,然后加載到環(huán)境中,編寫(xiě)程序,生成 HEX,把他放虛擬單片機(jī)中,調(diào)試2 出現(xiàn)錯(cuò)誤,就要修改錯(cuò)誤,編譯全部通過(guò)后再接外圍硬件電路,接 上仿真頭,硬件電路供電后再開(kāi)啟仿真頭,然后正確設(shè)置好仿真器,最 后全速運(yùn)行,查看硬件電路顯示結(jié)果是否與原設(shè)計(jì)思想一致。3. 顯示結(jié)果正確后結(jié)束仿真,先停止運(yùn)行程序,再關(guān)掉仿真頭開(kāi)關(guān), 最后斷電,撬開(kāi)仿真器。五、結(jié)果與討論 .查看結(jié)果是否與自己想的一樣,如果不一樣,可以向同學(xué)和老師討教,如果 一樣就記錄下。六、實(shí)訓(xùn)心得通過(guò)本次試驗(yàn)學(xué)會(huì)了如何使用虛擬工具

9、來(lái)進(jìn)行單片機(jī)的編輯, 通過(guò)寫(xiě) c 語(yǔ)言 又溫習(xí)了以前的所學(xué),回味看單片機(jī)和 c 語(yǔ)言的魅力。通過(guò)調(diào)試程序鍛煉了個(gè)人的耐心恒,恒心,毅力,和理論聯(lián)系實(shí)際的能力通過(guò)學(xué)習(xí)使得懂得了開(kāi)發(fā)工具的使用, 多了一門(mén)吃飯的的本領(lǐng), 多了一門(mén)學(xué) 習(xí)其他學(xué)科的實(shí)踐基礎(chǔ)。經(jīng)過(guò)這次實(shí)訓(xùn)課程設(shè)計(jì),我學(xué)到了很多書(shū)本上沒(méi)有的,比較實(shí)際、實(shí)用的東 西,學(xué)會(huì)了怎樣將理論知識(shí)運(yùn)用到實(shí)際設(shè)計(jì)當(dāng)中, 對(duì)實(shí)驗(yàn)設(shè)備和設(shè)計(jì)軟件的使用 和分析問(wèn)題解決問(wèn)題的能力也有了很大的提高。 同時(shí)也明白了電路焊接和作品調(diào) 試時(shí),需要更多的耐心。通過(guò)這次實(shí)訓(xùn)課程設(shè)計(jì), 不僅可以在專業(yè)上可以學(xué)到更 多的知識(shí), 同時(shí)也對(duì)平時(shí)的學(xué)習(xí)和工作中產(chǎn)生了影響, 那就是認(rèn)

10、認(rèn)真真的去完成 每一件事。附錄(程序清單)#include /包含 52 單片機(jī)寄存器定義的頭文件/*程序功能: LCD1602 顯示溫度#define uchar unsigned char#define uint unsigned int sbit lcdrs=P26;sbit lcdrw=P25;sbit lcden=P27;sbit LED1=P10;sbit LED2=P11;sbit LED3=P12;sbit LED4=P13;sbit sound=P14;/ 數(shù)據(jù)命令選擇控制/ 讀/ 寫(xiě)選擇控制/ 使能信號(hào)uchar code t0=T1: T2:uchar code t1=T

11、3: T4:uchar code digital=0123456789; sbit DQ1=P20;/sbit DQ2=P21;/sbit DQ3=P22;/sbit DQ4=P23;/定義溫度 DS18B20接口,詳情見(jiàn)原理圖定義溫度 DS18B20接口,詳情見(jiàn)原理圖定義溫度 DS18B20接口,詳情見(jiàn)原理圖定義溫度 DS18B20接口,詳情見(jiàn)原理圖uchar i;函數(shù)功能: DS18B20相關(guān)函數(shù) */ void tmpDelay(int num)/ 延時(shí)函數(shù) while(num-) ;void Time0(void) interrupt 1 using 0 sound=sound;TH0

12、=(65536-5000)/256; /定時(shí)器 T0的高 8 位重新賦初值TL0=(65536-5000)%256; / 定時(shí)器 T0的高 8 位重新賦初值 初始化 ds1820void Init_DS18B201()/ 復(fù)位稍做延時(shí)單片機(jī)將 DS拉低精確延時(shí) 大于 480usunsigned char x=0; DQ1 = 1; /DS tmpDelay(8); / DQ1 = 0; / tmpDelay(80); /初始化 ds1820復(fù)位稍做延時(shí) 單片機(jī)將 DS拉低精確延時(shí)拉高總線大于 480us稍做延時(shí)后如果 x=0 則初始化成功初始化ds1820復(fù)位稍做延時(shí) 單片機(jī)將 DS拉低精確延

13、時(shí)拉高總線DQ1 = 1; / 拉高總線 tmpDelay(14);x=DQ1; / 稍做延時(shí)后 如果 x=0 則初始化成功 tmpDelay(20); void Init_DS18B202()/ unsigned char x=0; DQ2 = 1; /DS tmpDelay(8); / DQ2 = 0; / tmpDelay(80); / DQ2 = 1; / tmpDelay(14); x=DQ2; / tmpDelay(20); void Init_DS18B203()/ unsigned char x=0; DQ3 = 1; /DS tmpDelay(8); / DQ3 = 0; /

14、 tmpDelay(80); / DQ3 = 1; / tmpDelay(14); x=DQ3; / tmpDelay(20); void Init_DS18B204()/x=1則初始化失敗x=1則初始化失敗x=1則初始化失敗x=1則初始化失敗大于 480us稍做延時(shí)后如果 x=0 則初始化成功初始化ds1820復(fù)位稍做延時(shí)單片機(jī)將 DS拉低精確延時(shí) 大于 480us拉高總線稍做延時(shí)后 如果 x=0 則初始化成功 unsigned char x=0; DQ4 = 1; /DS tmpDelay(8); / DQ4 = 0; / tmpDelay(80); / DQ4 = 1; / tmpDel

15、ay(14); x=DQ4; / tmpDelay(20);unsigned char ReadOneChar1()/ 讀一個(gè)字節(jié) unsigned char i=0;unsigned char dat1 = 0;for (i=8;i0;i-)DQ1 = 0; / 給脈沖信號(hào) dat1=1;DQ1 = 1; / 給脈沖信號(hào) if(DQ1) dat1|=0x80;tmpDelay(4);return(dat1);unsigned char ReadOneChar2()/ 讀一個(gè)字節(jié) unsigned char i=0;unsigned char dat2 = 0;for (i=8;i0;i-)D

16、Q2 = 0; / 給脈沖信號(hào) dat2=1;DQ2 = 1; / 給脈沖信號(hào) if(DQ2) dat2|=0x80;tmpDelay(4);return(dat2);unsigned char ReadOneChar3()/ 讀一個(gè)字節(jié) unsigned char i=0;unsigned char dat3 = 0;for (i=8;i0;i-)DQ3 = 0; / 給脈沖信號(hào) dat3=1;DQ3 = 1; / 給脈沖信號(hào) if(DQ3) dat3|=0x80;tmpDelay(4);return(dat3); unsigned char ReadOneChar4()/ 讀一個(gè)字節(jié) un

17、signed char i=0; unsigned char dat4 = 0;for (i=8;i0;i-)DQ4 = 0; / 給脈沖信號(hào) dat4=1;DQ4 = 1; / 給脈沖信號(hào) if(DQ4) dat4|=0x80;tmpDelay(4); return(dat4);void WriteOneChar1(unsigned char dat1)/ 寫(xiě)一個(gè)字節(jié) unsigned char i=0;for (i=8; i0; i-)DQ1 = 0;DQ1 = dat1&0x01; tmpDelay(5);DQ1 = 1; dat1=1; void WriteOneChar2(unsig

18、ned char dat2)/ 寫(xiě)一個(gè)字節(jié) unsigned char i=0;for (i=8; i0; i-)DQ2 = 0;DQ2 = dat2&0x01; tmpDelay(5);DQ2 = 1; dat2=1; void WriteOneChar3(unsigned char dat3)/ 寫(xiě)一個(gè)字節(jié) unsigned char i=0;for (i=8; i0; i-)DQ3 = 0;DQ3 = dat3&0x01; tmpDelay(5);DQ3 = 1;dat3=1;寫(xiě)一個(gè)字節(jié)void WriteOneChar4(unsigned char dat4)/unsigned cha

19、r i=0;for (i=8; i0; i-)DQ4 = 0;DQ4 = dat4&0x01;tmpDelay(5); DQ4 = 1; dat4=1;讀取溫度unsigned int Readtemp1()/ unsigned char a=0; unsigned char b=0; unsigned int t=0;float tt=0;Init_DS18B201();WriteOneChar1(0xCC); / WriteOneChar1(0x44); / Init_DS18B201();WriteOneChar1(0xCC); /WriteOneChar1(0xBE); / a=Rea

20、dOneChar1(); / b=ReadOneChar1();跳過(guò)讀序號(hào)列號(hào)的操作啟動(dòng)溫度轉(zhuǎn)換跳過(guò)讀序號(hào)列號(hào)的操作 讀取溫度寄存器 連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù) /讀低 8 位讀高 8 位t=b;t=t|a;tt=t*0.0625;/ 兩字節(jié)合成一個(gè)整型變量。/ 得到真實(shí)十進(jìn)制溫度值, 因?yàn)?DS18B20可以精確到 0.0625 度,t900)|(t200)LED1=0;EA=1;TR0=1;elseLED1=1;EA=0;TR0=0;return(t); unsigned int Readtemp2()/ 讀取溫度unsigned char a=0;unsigned char b=0;unsign

21、ed int t=0;float tt=0;Init_DS18B202();WriteOneChar2(0xCC); / WriteOneChar2(0x44); / Init_DS18B202();WriteOneChar2(0xCC); / WriteOneChar2(0xBE); / a=ReadOneChar2(); / b=ReadOneChar2(); t=b;t900|t200)LED2=0;EA=1;TR0=1;elseLED2=1;EA=0;TR0=0;return(t); 讀取溫度unsigned int Readtemp3()/ unsigned char a=0; un

22、signed char b=0; unsigned int t=0;float tt=0;Init_DS18B203();WriteOneChar3(0xCC); / WriteOneChar3(0x44); / Init_DS18B203();WriteOneChar3(0xCC); /WriteOneChar3(0xBE); / a=ReadOneChar3(); / b=ReadOneChar3();跳過(guò)讀序號(hào)列號(hào)的操作啟動(dòng)溫度轉(zhuǎn)換跳過(guò)讀序號(hào)列號(hào)的操作 讀取溫度寄存器 連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù) /讀低 8 位讀高 8 位t900|t200)LED3=0;EA=1;TR0=1;elseLED3=

23、1;EA=0;TR0=0;return(t); unsigned int Readtemp4()/unsigned char a=0; unsigned char b=0; unsigned int t=0;float tt=0; Init_DS18B204();WriteOneChar4(0xCC); /讀取溫度WriteOneChar4(0x44); /跳過(guò)讀序號(hào)列號(hào)的操作啟動(dòng)溫度轉(zhuǎn)換Init_DS18B204();WriteOneChar4(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar4(0xBE); /讀取溫度寄存器a=ReadOneChar4(); /連續(xù)讀兩個(gè)字節(jié)數(shù)

24、據(jù) /讀低 8 位b=ReadOneChar4();/讀高 8 位t=b;t900|t1;x-) for(y=z;y1;y-);void write_com(uchar com)/ 寫(xiě)命令函數(shù) lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0; void write_date(uchar date)/ 寫(xiě)數(shù)據(jù)函數(shù) lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0; void init_lcd() lcden=0; lcdrw=0;/ 初始化函數(shù)/ 默認(rèn)開(kāi)始狀態(tài)為關(guān)使能端,見(jiàn)時(shí)序圖/ 選擇狀態(tài)為 寫(xiě)

25、write_com(0x0f); write_com(0x38); write_com(0x01); write_com(0x0c);/ 顯示模式設(shè)置,默認(rèn)為 0x38, 不用變。/ 顯示清屏,將上次的內(nèi)容清除/ 顯示功能設(shè)置 0x0f 為開(kāi)顯示, 顯示光標(biāo), 光標(biāo)閃爍;write_com(0x06);write_com(0x80);/ 設(shè)置光標(biāo)狀態(tài)默認(rèn) 0x06, 為讀一個(gè)字符光標(biāo)加 1. / 設(shè)置初始化數(shù)據(jù)指針0x0c 為開(kāi)顯示,不顯光標(biāo),光標(biāo)不閃for(i=0;i16;i+) / 顯示 The temperaturewrite_date(t0i); delay(0); write_com

26、(0x80+0x40); for(i=0;i16;i+) / 顯示 is C write_date(t1i); delay(0);void display1() uint num; / uint shi,ge,xiaoshu; / num=Readtemp1(); shi=num/100; ge=num/10%10; xiaoshu=num%10; write_com(0x80+3); write_date(digitalshi);write_com(0x80+4); write_date(digitalge);/ 顯示函數(shù)定義的時(shí)候用 uchar 宏定義就會(huì)出錯(cuò) 定義的時(shí)候用 uchar 宏

27、定義就會(huì)出錯(cuò)/ 顯示溫度十位/ 顯示溫度個(gè)位write_com(0x80+5);write_date(0x2e);/ 顯示“ . ”這個(gè)符號(hào)write_com(0x80+6);write_date(digitalxiaoshu); /顯示溫度小數(shù)位/ 顯示函數(shù)定義的時(shí)候用 uchar 宏定義就會(huì)出錯(cuò) 定義的時(shí)候用 uchar 宏定義就會(huì)出錯(cuò)void display2() uint num;/ 顯示溫度十位uint shi,ge,xiaoshu; / num=Readtemp2(); shi=num/100; ge=num/10%10; xiaoshu=num%10; write_com(0x80+12); write_date(digitalshi);write_com(0x80+13); write_date(digitalge);write_com(0x80+14);write_date(0x2e);/ 顯示溫度個(gè)位/ 顯示“ . ”這個(gè)符號(hào)write_com(0x80+15);write_date(digitalxiaoshu); /顯示溫度小數(shù)位void display3() uint num; / uint shi,ge,xiaoshu; / num=Readtemp3();

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論