項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)_第1頁(yè)
項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)_第2頁(yè)
項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)_第3頁(yè)
項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)_第4頁(yè)
項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩69頁(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、 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) 知識(shí)目標(biāo):1. 1. 掌握獨(dú)立式鍵盤(pán)的編程方法。掌握獨(dú)立式鍵盤(pán)的編程方法。 2. 2. 掌握單片機(jī)定時(shí)器的編程方法。掌握單片機(jī)定時(shí)器的編程方法。 3. 3. 熟練運(yùn)用熟練運(yùn)用C C語(yǔ)言程序中的數(shù)組、指針、字符串等知識(shí)。語(yǔ)言程序中的數(shù)組、指針、字符串等知識(shí)。 能力目標(biāo):1. 1. 培養(yǎng)學(xué)生系統(tǒng)的熟悉單片機(jī)培養(yǎng)學(xué)生系統(tǒng)的熟悉單片機(jī)C C語(yǔ)言體系內(nèi)容,熟悉程序設(shè)計(jì)方法語(yǔ)言體系內(nèi)容,熟悉程序設(shè)計(jì)方法和開(kāi)發(fā)流程。和開(kāi)發(fā)流程。 2. 2. 培養(yǎng)學(xué)生具有綜合運(yùn)用所

2、學(xué)的理論知識(shí)去解決實(shí)際問(wèn)題的能培養(yǎng)學(xué)生具有綜合運(yùn)用所學(xué)的理論知識(shí)去解決實(shí)際問(wèn)題的能力。力。 3. 3. 培養(yǎng)學(xué)生調(diào)查研究、查閱技術(shù)文獻(xiàn)、資料、手冊(cè)的能力。培養(yǎng)學(xué)生調(diào)查研究、查閱技術(shù)文獻(xiàn)、資料、手冊(cè)的能力。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) 隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測(cè)以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,但需后續(xù)信號(hào)處理電路,而且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。為此,我們?cè)O(shè)計(jì)一個(gè)

3、具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,數(shù)字顯示,適用范圍寬等的數(shù)字溫度計(jì)。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)要求:(1)測(cè)量并顯示溫度值, 溫度測(cè)量誤差1。(2)測(cè)量范圍:0100。(3)交替顯示當(dāng)前測(cè)量時(shí)間、溫度。(4)可調(diào)整顯示時(shí)間。(5)測(cè)量溫度超過(guò)設(shè)定的溫度上、下限,啟動(dòng)蜂鳴器和指示燈報(bào)警。(6)連接多個(gè)溫度傳感器,微控制器能夠識(shí)別不同的傳感器,顯示相應(yīng)的溫度值,用于監(jiān)測(cè)多個(gè)區(qū)域的環(huán)境溫度 一、提出任務(wù)一、提出任務(wù) 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何

4、乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) 1系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)硬件電路設(shè)計(jì) 根據(jù)設(shè)計(jì)任務(wù)的方框圖,設(shè)計(jì)出如圖13.1所示的電路原理圖,根據(jù)電路原理圖制作出如圖13.2所示的電路板圖。在電路原理圖中微控制器采用AT89S52單片機(jī),溫度傳感器采用DS18B20,用LCM1602液晶顯示器顯示當(dāng)前時(shí)間和溫度,用獨(dú)立式按鍵來(lái)調(diào)整時(shí)間、設(shè)置最高報(bào)警溫度和最低報(bào)警溫度,當(dāng)前溫度超出預(yù)設(shè)的溫度范圍時(shí)用蜂鳴器和發(fā)光二極管來(lái)作為聲光報(bào)警提示。單片機(jī)的I/O端口分配如表13.1所示。二、分析任務(wù)二、分析任務(wù) 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何

5、乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)表13.1單片機(jī)I/O端口分配表單片機(jī)I/O口外圍硬件電路單片機(jī)I/O口外圍硬件電路P0口液晶顯示器數(shù)據(jù)口P1.3聲光報(bào)警電路P1.0液晶顯示器RS端P3.0P3.5按鍵電路P1.1液晶顯示器RW端P3.7溫度傳感器DS18B20P1.2液晶顯示器E端 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)X112MHZC122pFC222pFGNDX1X2X1X2C322uFRESET R41KGNDD1 R1470RESETRESETP20P21P2

6、2P23P24P25P26P27P00P01P02P03P04P05P06P07123456789RP1VCCP30P31P32P33P34P35P36P37P15RESETP17P16S1電源電路按鍵電路晶振電路ISP下載電路排阻10KEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RX

7、D10U1AT89S51GNDVCCVCCVCCD2Q19012R21KR339GND聲光報(bào)警電路P2712345678910111213141516J2GNDGNDVCCVCCGNDP11P12P10LCD1602點(diǎn)陣液晶屏123J18B20a溫度傳感器18B20VCCP00P01P02P03P04P05P06P07123456J1GNDVCCP10P11P12P13P14P15P16P17123J18B20bGNDP36VCCK1K2K3K4K5K6P30P31P32P33P34P35GND電源座ACAC1V+ACAC2V-Vin1GND2Vout37805GND復(fù)位電路圖13.1系統(tǒng)硬件

8、電路原理圖 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)圖13.1系統(tǒng)硬件電路板圖 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) (1)主程序 圖13.2主程序流程圖 主程序主要是對(duì)系統(tǒng)進(jìn)行初始化,包括設(shè)置定時(shí)器、液晶顯示初始化、調(diào)用時(shí)間顯示子程序,根據(jù)按鍵K1還是K2按下來(lái)選擇是顯示1號(hào)溫度傳感器的溫度還是2號(hào)溫度傳感器的溫度。圖13.2是主程序的流程圖。 2.2.系統(tǒng)軟件的設(shè)計(jì)系統(tǒng)軟件的設(shè)計(jì)圖圖13.213.

9、2主程序流程圖主程序流程圖 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) (2)讀取溫度子程序)讀取溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9個(gè)字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖13.3所示。 (3)時(shí)間調(diào)整子函數(shù))時(shí)間調(diào)整子函數(shù) 調(diào)整時(shí)間時(shí),先按下K3進(jìn)入時(shí)間調(diào)整狀態(tài),此時(shí)按下K1則時(shí)間的分加一,K2按下則分減一,K4按下則時(shí)加一,K5按下則時(shí)減一,K6按下則確認(rèn)退出。時(shí)間調(diào)整程序流程圖如圖13.4所示。 (4)設(shè)置報(bào)警溫度子程序)設(shè)置報(bào)警溫度

10、子程序 由于有2個(gè)溫度傳感器DS18B20,每一路都要設(shè)置最高和最低報(bào)警溫度。使得設(shè)置報(bào)警溫度子程序比較復(fù)雜,其程序流程如圖13.5所示。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)圖13.3讀出溫度流程圖圖13.4時(shí)間調(diào)整程序流程圖 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)圖13.5設(shè)置報(bào)警溫度子程序流程圖 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目

11、13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)#includetypedef bit bool;unsigned char bol;typedef unsigned char bl;unsigned char t_1,t_2,t_3,t_4,t_5,t_6;unsigned char th1=20; / 預(yù)置1號(hào)DS18B20最高報(bào)警溫度20unsigned char tl1=10; / 預(yù)置1號(hào)DS18B20最低報(bào)警溫度10unsigned char th2=21; / 預(yù)置2號(hào)DS18B20最高報(bào)警溫度21unsigned char tl2=11; / 預(yù)置2號(hào)DS18B20最低報(bào)警溫度11uns

12、igned char tab_1,tab_2,tab_3,tab_4,n=0;unsigned int t,h,m,s;sbit DQ=P37; / 接DS18B20sbit fm=P13; /接蜂鳴器sbit RS=P10; /接液晶1602RS端sbit RW=P11; / 接液晶1602RWW端sbit E=P12; / 接液晶1602E端3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)sbit k1=P30; /接按鍵K1sbit k2=P31; /接按鍵K2sbit

13、k3=P32; /接按鍵K3sbit k4=P33; /接按鍵K4sbit k5=P34; /接按鍵K2sbit k6=P35; / 接按鍵K6bl code tab_lcd10=0,1,2,3,4,5,6,7,8,9;/顯示字符bl code from1=.;bl code from11= ;unsigned char data temp_alarm2=0 x00,0 x00;/溫度報(bào)警值存放處unsigned char data tab_18b202=0 x00,0 x00;/高低8位溫度存放unsigned char data dip3=0 x00,0 x00,0 x00;/顯示位存放

14、unsigned char code db16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04, 0 x05,0 x06,0 x06,0 x07,0 x08,0 x08,0 x09,0 x09;/小數(shù)轉(zhuǎn)表格3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)unsigned char code Romcode28 = 0 x28,0 x66,0 x92,0 x8c,0 x01,0 x00,0 x00,0 x3b,/18B20的64位R

15、OM(1號(hào)傳感器ROM) 0 x28,0 x5c,0 xd2,0 xb7,0 x01,0 x00,0 x00,0 x2c; /2號(hào)傳感器ROM /*延時(shí)程序*/void delay_us(unsigned int num) while( -num );/*MS級(jí)延時(shí)子程序*/void delay_ms(int ms) int i; while(ms-) for(i=0;i0;i-) DQ=0; adat=1;/將數(shù)據(jù)從18B20移出 DQ=1; if(DQ=1) adat|=0 x80;/提取移出的數(shù)據(jù) delay_us(4); return adat;/將提取數(shù)值返回給adat變量吸收/*向

16、DS18B20寫(xiě)字節(jié)函數(shù)*/winchar(unsigned char bdat)/定義寫(xiě)入變量為bdat unsigned char x=0; for(x=8;x0;x-) DQ=0; DQ=bdat&0 x01;/取出數(shù)據(jù)低位 delay_us(5); DQ=1; bdat=1;/將數(shù)據(jù)按位移入18B20 3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)/*從DS18B20讀取溫度函數(shù)*/read_18b20 (unsigned char x) unsigned c

17、har i; init_18B20();/初始化18B20 winchar(0 xcc); winchar(0 x44);/啟動(dòng)溫度轉(zhuǎn)換 init_18B20(); /初始化18B20 winchar(0 x55); for(i=0;i4)|(tab_18b201&0 x0f)4);/提取整數(shù)部分 tab_1=dip0;/小數(shù)位 tab_2=dip1%10;/個(gè)位 tab_3=dip1%100/10;/十位 tab_4=dip1/100;/百位 if(y=1) /1號(hào)傳感器溫度顯示 write(0 x8b); /液晶顯示地址 date(T); delay_ms(1); write(0

18、x8c); date(H); delay_ms(1); write(0 x8d); date(tab_lcd(th2/100);/百位 delay_ms(1); write(0 x8e); date(tab_lcd(th2%100/10);/十位 delay_ms(1); write(0 x8f);3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) date(tab_lcd(th2%10);/個(gè)位 delay_ms(1); write(0 xc0); date(t); write

19、(0 xc1);date(1); if(dip1/100=0)/百位為0不顯示 write(0 xc2); date(from10); /百位 else write(0 xc2);date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1000)/百位,十位都為0;則百位,十位都不顯示 write(0 xc3); date(from10);delay_ms(1); 3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)else write(0 xc

20、3); date(tab_lcdtab_3);/十位 delay_ms(1); write(0 xc4); date(tab_lcdtab_2);/個(gè)位 delay_ms(1);write(0 xc5); date(from0);/小數(shù)點(diǎn)位 write(0 xc6); date(tab_lcdtab_1);/小數(shù)位 delay_ms(1); write(0 xc7); date(0 xdf);/顯示 delay_ms(1); write(0 xc8); date(C);/顯示C delay_ms(1); write(0 xcb); date(T); delay_ms(1); write(0 x

21、cc); date(L);3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) delay_ms(1); write(0 xcd); date(tab_lcd(tl2/100);/百位 delay_ms(1); write(0 xce); date(tab_lcd(tl2%100/10);/十位 delay_ms(1); write(0 xcf); date(tab_lcd(tl2%10);/個(gè)位 delay_ms(1); else/2號(hào)傳感器溫度顯示 write(0 x8b);

22、date(T); delay_ms(1); write(0 x8c); date(H); delay_ms(1); write(0 x8d); date(tab_lcd(th1/100);/百位 delay_ms(1); write(0 x8e); date(tab_lcd(th1%100/10);/十位3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) delay_ms(1); write(0 x8f); date(tab_lcd(th1%10);/個(gè)位 delay_ms(1)

23、; write(0 xc0); date(t); write(0 xc1); date(2); if(dip1/100=0)/百位為0不顯示 write(0 xc2); date(from10); /百位 elsewrite(0 xc2); date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1004)|(tab_18b201&0 x0f)4);/提取整數(shù)部分 tab_1=dip0;/小數(shù)位 tab_2=dip1%10;/個(gè)位 tab_3=dip1%100/10;/十位 tab_4=dip1/100;/百位 write(0 xc0); date(

24、T); delay_ms(1); write(0 xc1); date(1); delay_ms(1); write(0 xc2); date(:); delay_ms(1); if(dip1/100=0)/百位為0不顯示 3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) write(0 xc3); date(from10); /百位 else write(0 xc3); date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1004)|(

25、tab_18b201&0 x0f)4);/提取整數(shù)部分 tab_1=dip0;/小數(shù)位3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) tab_2=dip1%10;/個(gè)位 tab_3=dip1%100/10;/十位 tab_4=dip1/100;/百位 write(0 xc0); date(T); delay_ms(1); write(0 xc1); date(1); delay_ms(1); write(0 xc2); date(:); delay_ms(1); if

26、(dip1/100=0)/百位為0不顯示 write(0 xc3); date(from10); /百位 else write(0 xc3); date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1004)|(tab_18b201&0 x0f)4);/提取整數(shù)部分 tab_1=dip0;/小數(shù)位 tab_2=dip1%10;/個(gè)位 tab_3=dip1%100/10;/十位 tab_4=dip1/100;/百位 write(0 xc0); date(T); delay_ms(1); write(0 xc1); date(2); delay_ms(

27、1); write(0 xc2); date(:); delay_ms(1); if(dip1/100=0)/百位為0不顯示 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) write(0 xc3); date(from10); /百位 else write(0 xc3); date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1004)|(tab_18b201&0 x0f)4);/提取整數(shù)部分 tab_1=dip0;/小數(shù)位 tab_2=dip1%10;/個(gè)

28、位 tab_3=dip1%100/10;/十位 tab_4=dip1/100;/百位3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)write(0 xc0); date(T); delay_ms(1); write(0 xc1); date(2); delay_ms(1); write(0 xc2); date(:); delay_ms(1); if(dip1/100=0)/百位為0不顯示 write(0 xc3); date(from10); /百位 else write(0

29、 xc3); date(tab_lcdtab_4); /百位 if(dip1/1000) if(dip1/1004)|(tab_18b201&0 x0f)th2) delay_ms(10); if(dip1th2) while(dip1th2) read_18b20(1); time_alarm_show(); 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) TH1_temp(); feng(); write(0 x01); /清屏 /TL1比較報(bào)警 if(dip1tl2) delay_ms(10

30、); if(dip1tl2) while(dip14)|(tab_18b201&0 x0f)th1) delay_ms(10); if(dip1th1) while(dip1th1) read_18b20(0); time_alarm_show(); TH2_temp(); feng(); write(0 x01); /清屏 3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)/TL2比較報(bào)警 if(dip1tl1) delay_ms(10); if(dip1tl1) wh

31、ile(dip1tl1) read_18b20(0); time_alarm_show(); TL2_temp(); feng(); write(0 x01); /清屏 /*選擇溫度顯示函數(shù)*/void weng_disp() if(k1=0) feng();3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) while(1) write_tempere_alarm(); time_temp_alarm(); time_display(); read_18b20(1); lcd(

32、1); delay_ms(1); if(k2=0) break; else if(k2=0) feng(); while(1) write_tempere_alarm(); time_temp_alarm(); time_display(); read_18b20(0); lcd(0); delay_ms(1); if(k1=0) break;3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) /*定時(shí)器0初始化函數(shù)*/void TIMER0_init()TMOD=0 x02;T

33、H0=0 x06;TL0=0 x06;EA=1;ET0=1;TR0=1;/*定時(shí)器0中斷函數(shù)*/時(shí)間void time(void)interrupt 1 t+; if(t=4000) t=0; s+;/秒加1 if(s=60) s=0; m+;/分加13.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)if(m=60) m=0; h+;/ 時(shí)加1 if(h=24) h=0; /時(shí)清0 /*主函數(shù)*/main() TIMER0_init(); init_1602(); while(1

34、) time_display();shijian_taozheng(); write_tempere_alarm(); weng_disp();3.3.參考源程序參考源程序 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 項(xiàng)目項(xiàng)目13 數(shù)字溫度計(jì)的設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì) 系統(tǒng)硬件電路調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后用萬(wàn)用表測(cè)試或通電檢測(cè)。系統(tǒng)軟件調(diào)試可以先編寫(xiě)液晶顯示程序,再編寫(xiě)定時(shí)器中斷函數(shù),在液晶上顯示出正確的時(shí)間,隨后編寫(xiě)時(shí)間調(diào)整函數(shù)。接下來(lái)分別進(jìn)行DS18B20復(fù)位函數(shù)、DS18B20寫(xiě)字節(jié)函數(shù)、DS18B20讀字節(jié)函數(shù)、溫度計(jì)算轉(zhuǎn)

35、換函數(shù)等程序的編寫(xiě)調(diào)試,調(diào)試到液晶能顯示溫度值,在環(huán)境溫度有變化時(shí),顯示溫度能改變就說(shuō)明已能正確讀取溫度數(shù)據(jù)。此時(shí)可以把制作出的溫度計(jì)與已有的成品溫度計(jì)進(jìn)行測(cè)量比較。最后編寫(xiě)報(bào)警溫度設(shè)置函數(shù),直到實(shí)現(xiàn)設(shè)計(jì)任務(wù)的要求為止。三、程序調(diào)試三、程序調(diào)試 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 知識(shí)鏈接知識(shí)鏈接 DS18B20使用基本知識(shí)使用基本知識(shí) DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。 1.DS

36、18B20產(chǎn)品的特點(diǎn) : (1)只要求一個(gè)端口即可實(shí)現(xiàn)通信。 (2)在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。 (3)實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。 (4)測(cè)量溫度范圍在55到125之間。 (5)數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。 (6)內(nèi)部有溫度上、下限告警設(shè)置。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 知識(shí)鏈接知識(shí)鏈接DS18B20DS18B20內(nèi)部結(jié)構(gòu)如圖內(nèi)部結(jié)構(gòu)如圖13.613.6所示。所示。圖13.6DS18B20內(nèi)部結(jié)構(gòu) 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何

37、乃味主編主編 知識(shí)鏈接知識(shí)鏈接 2DS18B20的寄存器的控制命令 DS18B20的總線訪問(wèn)協(xié)議如下: 初始化 ROM 操作命令 存儲(chǔ)器操作命令 執(zhí)行/數(shù)據(jù) Read ROM 33h 這個(gè)命令允許總線控制器讀到DS1820 的8 位系列編碼、唯一的序列號(hào)和8 位CRC 碼。只有在總線上存在單只DS1820 的時(shí)候才能使用這個(gè)命令。如果總上有不止一個(gè)從機(jī),當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路連在一起形成相與的效果)。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 知識(shí)鏈接知識(shí)鏈接Match ROM 55h匹配ROM 命令,后跟64 位

38、ROM 序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS1820。只有和64 位ROM 序列完全匹配的DS1820 才能響應(yīng)隨后的存儲(chǔ)器操作命令。所有和64 位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖。這條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用。Skip ROM CCh這條命令允許總線控制器不用提供64 位ROM 編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下可以節(jié)省時(shí)間。如果總線上不止一個(gè)從機(jī),在Skip ROM 命令之后跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳送信號(hào),總線上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路下拉效果相當(dāng)于相與)。Search ROM F0h當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總

39、線上有多少器件或它們的64 位ROM編碼。搜索ROM 命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64 位編碼。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 知識(shí)鏈接知識(shí)鏈接Alarm Search ECh這條命令的流程圖和Search ROM 相同。然而,只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況,DS1820 才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH 或低于TL。只要DS1820 不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。I/O 信號(hào)信號(hào)DS1820 需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括幾種單總線信號(hào)類(lèi)型:

40、復(fù)位脈沖、存在脈沖、寫(xiě)0、寫(xiě)1、讀0 和讀1。所有這些信號(hào),除存在脈沖外,都是由總線控制器發(fā)出的。和DS1820 間的任何通訊都需要以初始化序列開(kāi)始,初始化序列見(jiàn)圖13.1.4。一個(gè)復(fù)位脈沖跟著一個(gè)存在脈沖表明DS1820 已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)(適當(dāng)?shù)腞OM 命令和存儲(chǔ)器操作命令)。Write Scratchpad 4E這個(gè)命令向DS1820 的暫存器中寫(xiě)入數(shù)據(jù),開(kāi)始位置在地址2。接下來(lái)寫(xiě)入的兩個(gè)字節(jié)將被存到暫存器中的地址位置2 和3??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來(lái)中止寫(xiě)入。 單片機(jī)單片機(jī)C C語(yǔ)言應(yīng)用技術(shù)與實(shí)踐語(yǔ)言應(yīng)用技術(shù)與實(shí)踐張永格張永格 何乃味何乃味主編主編 知識(shí)鏈接知識(shí)鏈接Read

溫馨提示

  • 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)論