數(shù)字溫度計(jì)的設(shè)計(jì)_第1頁
數(shù)字溫度計(jì)的設(shè)計(jì)_第2頁
數(shù)字溫度計(jì)的設(shè)計(jì)_第3頁
數(shù)字溫度計(jì)的設(shè)計(jì)_第4頁
數(shù)字溫度計(jì)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)字溫度計(jì)的設(shè)計(jì)摘要伴隨中國的不斷發(fā)展、經(jīng)濟(jì)水平的提升、技術(shù)的進(jìn)步,溫度已逐漸轉(zhuǎn)變成了不可或缺的測量參數(shù)。本篇文章仔細(xì)的分析了STC89C51的數(shù)字溫度計(jì)的研發(fā)基礎(chǔ)和整體理論。本篇文章中的數(shù)字溫度計(jì)能夠?qū)崟r(shí)地測定溫度,而且能夠手動(dòng)的調(diào)節(jié)要測定的溫度范圍,依照調(diào)節(jié)的溫度范圍,完成溫度的實(shí)時(shí)測定并報(bào)警。溫度計(jì)主要分為民用以及工業(yè)用兩種,不管民用還是工業(yè)用,精確度逐漸被關(guān)注起來,民用的溫度計(jì)通常是體溫計(jì),工用的大多為工廠周圍環(huán)境溫度的測定,應(yīng)用在較為惡劣的條件下的溫度測定,本篇文章中的單片機(jī)數(shù)字溫度計(jì),可以達(dá)到民用以及工用的標(biāo)準(zhǔn)。本篇文章中的單片機(jī)數(shù)字溫度計(jì),更為精確,并且能夠?qū)崟r(shí)的測定溫度,而且具備報(bào)警的作用,并且能夠手動(dòng)調(diào)節(jié)溫度范圍,達(dá)到工業(yè)社會(huì)的標(biāo)準(zhǔn)。關(guān)鍵詞:STC89C51;DS18B20;報(bào)警電路。目錄TOC\o"1-3"\h\u20598摘要 216868第一章緒論 313610第二章系統(tǒng)設(shè)計(jì)方案 562292.1設(shè)計(jì)任務(wù) 557962.2設(shè)計(jì)方案 5245292.3系統(tǒng)的總體結(jié)構(gòu) 55531第三章硬件電路設(shè)計(jì) 7209143.1單片機(jī)控制電路 7185663.1.1STC89C51單片機(jī)介紹 7298073.1.2復(fù)位電路 8190603.1.3時(shí)鐘電路 8231313.2溫度傳感電路 9223243.2.2溫度傳感電路 10296133.3按鍵電路模塊 10233313.4顯示電路模塊 11195323.5報(bào)警電路模塊 1110145第四章系統(tǒng)軟件設(shè)計(jì) 1322755第五章安裝與調(diào)試 20195345.1實(shí)物安裝 20172085.2調(diào)試與性能測試 206239第六章總結(jié)與展望 2420311參考文獻(xiàn) 2529528附錄 2610251附錄一:電路原理圖 2630075附錄二:元器件清單 278576附錄三:源程序 27第一章緒論伴隨時(shí)代的不斷發(fā)展,大家的生活水平正在逐漸的提升,精準(zhǔn)度逐漸轉(zhuǎn)變成大家追求的標(biāo)準(zhǔn)。本篇文章中單片機(jī)操控的數(shù)字溫度計(jì)已經(jīng)是精度的代表,但是對(duì)研究和生活的要求越來越高,傳統(tǒng)的測量方法不再可行,因此必須朝數(shù)字化方向發(fā)展控制和智能控制。在這個(gè)發(fā)展飛速的科技社會(huì)中,溫度對(duì)我們來說是非常重要的。它也是我國化工、食品、冶金等行業(yè)的主要參數(shù)之一?,F(xiàn)今,大家對(duì)許多數(shù)據(jù)的精準(zhǔn)性要求逐漸提升。怎樣精準(zhǔn)、迅速地得到此類參數(shù),受到目前社會(huì)信息發(fā)展水平的限制。傳感器技術(shù)是屬于信息技術(shù)的高端產(chǎn)品之一,而溫度傳感器技術(shù)又是其中最重要的一種,這些在我國得到了廣泛的應(yīng)用。毫不夸張地說,它已經(jīng)滲透到我生活的方方面面。我們的生活和溫度是分不開的。工業(yè)需要精確的溫度控制,農(nóng)業(yè)也需要精確的溫度測量。因此,研究溫度測量和溫度報(bào)警裝置意義重大。對(duì)于此次的電路設(shè)計(jì),電路難度不大,所用到的硬件設(shè)施也比較簡單易購買,主要的硬件是單片機(jī)STC89C51,溫度傳感器DS18B20,蜂鳴器,以及一些電阻電容,三極管,數(shù)碼管和晶振。本篇文章中STC89C51的數(shù)字溫度計(jì)和民用設(shè)備相對(duì)比,更容易獲取溫度數(shù)值,測定的上下限較大,測定的精準(zhǔn)度較高,測定的溫度以數(shù)字展現(xiàn)出來,主要用于對(duì)溫度有較高要求的溫度測量或用于科研實(shí)驗(yàn)室,本篇文章中的數(shù)字溫度計(jì)選取STC89C51并運(yùn)用數(shù)字來展示溫度,能夠精準(zhǔn)地達(dá)到以上的標(biāo)準(zhǔn)。第二章系統(tǒng)設(shè)計(jì)方案2.1設(shè)計(jì)任務(wù)基于單片機(jī)設(shè)計(jì)一個(gè)數(shù)字溫度計(jì),能實(shí)時(shí)顯示溫度值。具體指標(biāo)如下:

1.溫度檢測范圍-55℃-125℃,報(bào)警值設(shè)置范圍0℃-99℃

;

2.精度誤差小于

0.5℃

;

3.數(shù)碼管直讀顯示;

4.具有電源指示燈和蜂鳴器同時(shí)報(bào)警功能。2.2設(shè)計(jì)方案在該體系中選取溫度測定體系。體系包括溫度傳感設(shè)備以及單片機(jī)。獲取溫度的設(shè)施——溫度傳感器采集不同位置的環(huán)境溫度。它能夠把測定的溫度信號(hào)轉(zhuǎn)化到電路信號(hào)中,顯示體系能夠識(shí)別電路信號(hào)并展現(xiàn)出其測定出來的溫度數(shù)值。我使用DS18B20作為溫度傳感器。DS18B20它具有出色的性能和低廉的價(jià)格,因此在教師和學(xué)生中非常受歡迎。DS18B20的精準(zhǔn)性較高,最小單位可達(dá)0.5攝氏度,最長運(yùn)行周期為750ms,并且它具有獨(dú)立的接口,這意味著只需一個(gè)接線端口即可完成兩個(gè)設(shè)備之間的雙向通信。微控制器及其本身。此研究所需的攝氏度大約0℃-99℃。DS18B20的溫度測定范圍已容納在其中,能夠達(dá)到本次研究的標(biāo)準(zhǔn)。2.3系統(tǒng)的總體結(jié)構(gòu)本研究的體系中的模塊通常能夠劃分成4個(gè)部分組成,依次是STC89C51,溫度傳感線路,數(shù)碼管顯示線路以及警報(bào)線路電路。圖2-1為整體圖紙,如下。圖3-1系統(tǒng)總體結(jié)構(gòu)圖第三章硬件電路設(shè)計(jì)3.1單片機(jī)控制電路采用STC89C51單片機(jī)作為控制電路的核心硬件,采用了12MHz的晶振時(shí)鐘電路和復(fù)位電路組成了整個(gè)主控制電路。3.1.1STC89C51單片機(jī)介紹STC89C51是以8051為核心的系統(tǒng)可編程芯片的單片機(jī)。最大運(yùn)行時(shí)鐘頻率是80MHz。此芯片包括4KB閃存只讀存儲(chǔ)設(shè)備,能夠反復(fù)重寫一千次。兼容標(biāo)準(zhǔn)MCS-51指令體系以及80C51引腳結(jié)構(gòu)。此芯片和一般的八位中央處理器集成,ISP閃存單元具有系統(tǒng)內(nèi)可編程(ISP)的特點(diǎn),省去了一般編程器的購買,速度更快。特點(diǎn):1.工作頻率范圍:0至40MHz,等同于一般8051的0至80MHz?,F(xiàn)實(shí)的運(yùn)行頻率達(dá)到了48MHz.2.集成五百一十二字節(jié)RAM3.I/O接口(27/23個(gè)),每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不得超過55mA4.有2個(gè)16位定時(shí)器/計(jì)數(shù)器5.ISP:在系統(tǒng)可編程/IAP:在應(yīng)用可編程,不需要專用的編程器。6.工作溫度范圍:0

-75℃/

-40

-+85℃下圖3-1為STC89C51單片機(jī)的引腳圖圖3-1STC89C51引腳圖引腳功能介紹:VCC/GND:供電電源。P0口:8位漏極開路型雙向I/O口。P1-P3口:帶內(nèi)部上拉電阻的8位雙向I/O口。RST:復(fù)位輸入。EA/VPP:內(nèi)部ROM選擇/片內(nèi)EPROM編程電源。XTAL1:反向振蕩器的輸入以及內(nèi)部時(shí)鐘電路的輸入。XTAL2:來自反向振蕩器的輸出3.1.2復(fù)位電路復(fù)位電路是硬件研究中的最基礎(chǔ)的內(nèi)容,選取按鍵復(fù)位,閉合按鈕后,RST端出現(xiàn)高電平,從而讓單片機(jī)線路復(fù)位。圖3-2屬于復(fù)位電路的線路圖紙圖3-2復(fù)位電路圖3.1.3時(shí)鐘電路采用內(nèi)部方式時(shí)鐘電路,在XTAL1和XTAL2引腳兩端跨接12MHz晶振和兩個(gè)30pf微調(diào)電容構(gòu)成時(shí)鐘振蕩電路。下圖3-3為時(shí)鐘電路圖3-3時(shí)鐘電路3.2溫度傳感電路3.2.1DS18B20簡介DS18B20是如今世界溫度測定領(lǐng)域中最為常用的溫度傳感設(shè)備。這和它的布線思路存在較大的關(guān)系,其的布線思路能夠應(yīng)用在許多的場合,一般的布線思路包括:管道布線等;特殊的布線思路包括:不銹鋼封裝式等。其更改外觀具體決定于應(yīng)用程序。耐磨、抗壓、空間小、易操作、許多包裝,能夠應(yīng)用在許多小型對(duì)溫度測定精準(zhǔn)度要求高的區(qū)域的溫度測定。下圖3-4為DBS18B20實(shí)物圖與引腳圖圖3-4DBS18B20實(shí)物圖與引腳圖DS18B20引腳參數(shù)GND:電壓地DQ:單數(shù)據(jù)總線VDD:電源電壓NC:空引腳DS18B20運(yùn)行中的注意內(nèi)容即使DS18B20具備測定精準(zhǔn)性高、連接簡單等特征,不過在現(xiàn)實(shí)應(yīng)用中也具備下列問題,必須特別關(guān)注:1、DS18B20和微處理設(shè)備間的傳導(dǎo)形式是串行傳輸。所以在對(duì)DS18B20讀寫的時(shí)候,必須完全同時(shí)讀取,2、數(shù)據(jù)DS18B20并沒有包含DS18B20的懸掛數(shù)量,通常以為可以懸掛許多個(gè),不過現(xiàn)實(shí)操作中懸掛達(dá)到八個(gè)時(shí),就必須處理總線的問題,所以研究時(shí)要關(guān)注這一內(nèi)容。3、連接DS18B20的電纜長度較短。此類情況是因?yàn)榭偩€電容分布不平衡而導(dǎo)致的信號(hào)失真。選取DS18B20長距離測定的時(shí)候,必須分析長度的問題。3.2.2溫度傳感電路本研究中選取DS18B20。主要是因?yàn)榇诵酒M裝較為簡單,操作方便,很適合新手使用。溫度傳感器的1腳連接電源,2腳DQ端與單片機(jī)的P3.6端口相連,3腳接地。下圖3-5為溫度傳感電路圖3-5溫度傳感電路3.3按鍵電路模塊按鍵電路,就是指用來調(diào)整溫度的范圍,按鍵電路中,S3為減小按鍵,S4為增加按鍵,按一下只能增加或減小一位。S5為菜單鍵,主要是設(shè)置溫度上下限,按一下顯示溫度上限值,再按一下顯示溫度下限值,按第三下回到溫度顯示界面。圖3-6按鍵電路3.4顯示電路模塊顯示電路模塊是本研究中最關(guān)鍵的原件,因?yàn)闇囟榷急仨氾@示線路來展示測定的溫度,而單片機(jī)應(yīng)用體系中的七段LED數(shù)碼管一般被應(yīng)用為顯示設(shè)備。單片機(jī)的段碼的輸出端口為P0端口,單片機(jī)中的位碼的輸出端口為P2.0,P2.1,P2.2,P2.3口。原理圖如3-7:圖3-7顯示電路原理圖3.5報(bào)警電路模塊報(bào)警電路是當(dāng)周圍溫度超出預(yù)設(shè)的溫度范圍后可以報(bào)警的線路,本研究中報(bào)警所選取的是閃光燈以及蜂鳴設(shè)備的組合。P2.5口是報(bào)警線路的傳輸接口,當(dāng)輸入低電平時(shí),蜂鳴設(shè)備進(jìn)行警報(bào)。驅(qū)動(dòng)三極管選取PNP,由于單片機(jī)開始上電時(shí)全部的IO接口會(huì)存在暫時(shí)的高電平。加入選取NPN,加入程序上把IO端口拉低,蜂鳴設(shè)備同樣會(huì)響一小下或著進(jìn)行吸合,為了防止此類情況的出現(xiàn),就選取PNP。報(bào)警電路如下圖3-8所示:圖3-8報(bào)警電路第四章系統(tǒng)軟件設(shè)計(jì)

4.1系統(tǒng)主程序設(shè)計(jì)主程序是本研究中的關(guān)鍵部分。首先當(dāng)體系連接電源后,系統(tǒng)轉(zhuǎn)變到溫度運(yùn)行階段并運(yùn)行溫度測定系統(tǒng),測定出的電信號(hào)轉(zhuǎn)變成數(shù)字信號(hào),之后展現(xiàn)在數(shù)碼管中,并依照提前設(shè)計(jì)的溫度范圍實(shí)現(xiàn)溫度控制。本體系軟件研究的整體圖紙如下。開始開始器件正常?測量溫度DS18B20初始化將器件調(diào)整正常蜂鳴器鳴叫進(jìn)入按鍵掃描子程序測量溫度DS18B20初始化顯示溫度測量溫度將溫度與設(shè)定值比較是否超限按鍵按下YYNYNY圖4-1系統(tǒng)主程序框圖主程序:4.2DS18B20初始化子程序設(shè)計(jì)初始化程序是為了DS18B20在開始階段的識(shí)別,獲取或傳輸數(shù)據(jù)。初始化程序圖紙如4-2:開始開始DQ復(fù)位,DQ=1單片機(jī)將DQ拉低延遲大于480us拉低總線初始化成功結(jié)束DQ=0?YN

圖4-2DS18B20初始化程序流程圖初始化程序4.3DS18B20讀取溫度子程序溫度讀取程序是為了可以直接測定出研究中的周圍溫度而研發(fā)的,而我們獲取溫度子程序的主要作用是為了獲取其RAM的字節(jié)。DSl8B20的電源較為靈活方便,外部電源能夠提升該體系的運(yùn)行壽命。4-3是具體的數(shù)據(jù)流程圖。開始開始結(jié)束跳過讀序號(hào)的操作啟動(dòng)溫度轉(zhuǎn)換跳過讀序號(hào)操作讀取溫度寄存器LOW-低八位,HIGH-高八位DS18B20初始化成功?NY圖4-3DS18B20讀取溫度子程序流程圖讀取溫度子程序:4.4數(shù)據(jù)顯示處理子程序依照上述中的溫度獲取到數(shù)據(jù)顯示程序。顯示設(shè)備會(huì)展現(xiàn)出數(shù)字,假如要獲取最終的結(jié)果,必須進(jìn)一步的分析,辦法是,獲取的數(shù)字主要包括LOW以及HIGH兩部分,而LOW的四位數(shù)字是最終結(jié)果的小數(shù)區(qū)域,HIGH的四位數(shù)字是結(jié)果的整數(shù)區(qū)域,而整數(shù)區(qū)域也需要進(jìn)行區(qū)分:負(fù)數(shù)或0.加入數(shù)據(jù)為負(fù)的時(shí)候,數(shù)據(jù)在展現(xiàn)前被轉(zhuǎn)換,并且整數(shù)區(qū)域被反轉(zhuǎn)。整數(shù)區(qū)域是“-”,代表為負(fù)數(shù)。溫度數(shù)據(jù)處理的圖紙如4-4:開始開始提取整數(shù)部分存入HTLT>5?結(jié)束提取小數(shù)部分存入HTLT右移三位,精度0.5攝氏度小數(shù)部分整數(shù)化HT++提取符號(hào)部分存圖sign負(fù)數(shù)標(biāo)志flag=1是負(fù)數(shù)?NYNY圖4-4溫度數(shù)據(jù)處理程序的流程圖第五章安裝與調(diào)試5.1實(shí)物安裝下圖為安裝實(shí)物圖:圖5-1電路實(shí)物圖5.2調(diào)試與性能測試步驟:將程序通過STC-ISP寫入實(shí)體電路,進(jìn)行仿真。寫入的程序中規(guī)定,初始的最高溫度設(shè)定為30攝氏度,最低溫度為10攝氏度。打開電源開關(guān)后,電路中電源顯示的紅燈會(huì)亮,數(shù)碼管顯示當(dāng)前環(huán)境下的溫度,通過MENU按鍵可以對(duì)溫度上下限進(jìn)行調(diào)節(jié)。下圖5-2為打開電源開關(guān)后電路顯示的溫度,與實(shí)際溫度的誤差為0.1,在誤差范圍之內(nèi)。圖5-2溫度顯示實(shí)測一:讓電路在低于下限溫度進(jìn)行報(bào)警,通過MENU對(duì)溫度上下限進(jìn)行設(shè)置,設(shè)置最高溫度為40攝氏度,最低溫度為25攝氏度,單片機(jī)實(shí)測溫度為20.5攝氏度,溫度計(jì)顯示為20.5,沒有誤差,蜂鳴器報(bào)警。下圖5-3為實(shí)物演示圖片圖5-3低于下限溫度報(bào)警實(shí)測二:讓電路高于上限溫度報(bào)警。通過MENU設(shè)置溫度上限為18攝氏度,溫度下限為10攝氏度,單片機(jī)實(shí)測溫度20攝氏度,與溫度計(jì)實(shí)際溫度相差0.1度,屬于誤差范圍內(nèi),蜂鳴器報(bào)警。下圖5-4為實(shí)物演示圖片圖5-4高于上限溫度報(bào)警結(jié)果分析:本研究介紹和分析的數(shù)字溫度計(jì)的測量限度大致為0℃至99℃,具備自動(dòng)警報(bào)的作用和基礎(chǔ)的范圍(10℃~30℃)。能夠手動(dòng)調(diào)節(jié)溫度的范圍。4位數(shù)字集成數(shù)碼管顯示設(shè)定溫度和當(dāng)前測量溫度的上下限。假如目前周圍環(huán)境溫度在默認(rèn)范圍內(nèi),則主功能不會(huì)運(yùn)行警報(bào)程序,就是指警報(bào)電路不運(yùn)行,蜂鳴設(shè)備不工作;假如目前周圍環(huán)境溫度超出了默認(rèn)范圍,則啟動(dòng)警報(bào)程序。此時(shí),單片機(jī)出現(xiàn)警報(bào),蜂鳴器位于低電平,蜂鳴設(shè)備鳴響,直到環(huán)境溫度恢復(fù)到上下限之間的默認(rèn)溫度。從實(shí)驗(yàn)結(jié)果以及研究要求所實(shí)現(xiàn)的指標(biāo)能夠發(fā)現(xiàn),設(shè)計(jì)基本達(dá)到了標(biāo)準(zhǔn)。第六章總結(jié)與展望在工業(yè)制造以及平常生活中,大家通常被溫度所圍繞著。外出旅游時(shí)必須觀察溫度的情況,季節(jié)溫度逐漸地改變,大家對(duì)溫度的要求逐漸嚴(yán)格。此類嚴(yán)格性具體是為了保證溫度在選定范圍內(nèi)浮動(dòng)并具備較高的精準(zhǔn)性。假如溫度不精準(zhǔn),會(huì)導(dǎo)致無數(shù)的問題。本篇文章研究了STC89C51為主的溫度測定系統(tǒng)的設(shè)計(jì)過程和思路。合理選取STC89C51以及DS18B20能夠給本研究提供實(shí)現(xiàn)線路功能的前提基礎(chǔ),并實(shí)現(xiàn)事半功倍的作用。并且,因?yàn)檐浖腴T標(biāo)準(zhǔn)低并且可操作性強(qiáng),極大程度的提升了系統(tǒng)的研究和開發(fā)速度。非常感謝我的導(dǎo)師。老師的耐心指導(dǎo),使我的設(shè)計(jì)可以按計(jì)劃完成。老師為我提供了很大的幫助,給了我很多很好的建議,這些建議對(duì)于撰寫本文非常重要。真誠的感謝您。參考文獻(xiàn)[1]陳權(quán)昌,李興富.單片機(jī)原理及應(yīng)用[M].廣州:華南理工大學(xué)出版社,2007.84~102[2]李慶亮.C語言程序設(shè)計(jì)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2005.32~58[3]楊志忠.數(shù)字電子技術(shù)[M].北京:高等教育出版社,2003.125~132[4]及力.Protel99SE原理圖與PCB設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2007.89~150[5]徐江海.單片機(jī)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2006.128~156[6]胡宴如.模擬電子技術(shù)[M].北京:高等教育出版社,2008.60~104[7]汪文,陳林.單片機(jī)原理及應(yīng)用[M].湖北:華中科技大學(xué)出版社,2007.36~68[8]康華光.電子技術(shù)基礎(chǔ)數(shù)字部分[M].北京:高等教育出版社,2008.203~209[9]楊欣.電子設(shè)計(jì)從零開始[M].北京:清華大學(xué)出版社,2005.28~102附錄附錄一:電路原理圖附錄二:元器件清單名稱型號(hào)對(duì)應(yīng)原理圖編號(hào)數(shù)量PNP三極管9012Q111電容10ufC11電容30PC2,C32排阻1kD11溫度傳感器DS18B20DS11DC電源接口DC電源接口J113MM發(fā)光二極管紅redL11電阻10kR1,R22電阻2KR31電阻1kR41微動(dòng)開關(guān)SW-PBS1,S3,S4,S54有源蜂鳴器SPEAKERS214位數(shù)碼管共陰數(shù)碼管SMG11自鎖開關(guān)電源開關(guān)SW1151單片機(jī)89C51/C52U11晶振12MY11附錄三:源程序//****************************************/* 18B20溫度傳感器*///****************************************#ifndefuint#defineuintunsignedint#endif#ifndeful#defineulunsignedlong#endif#ifndefuchar#defineucharunsignedchar#endif//******************************************sbitDQ=P3^6; //ds18b20端口bittflag;/******************************************************************//*延時(shí)函數(shù)*//******************************************************************/voidDS18B20_delay(uinti)//延時(shí)函數(shù){ while(i--);}/******************************************************************//*初始化*//******************************************************************/voidInit_DS18B20(void){ ucharx=0; DQ=1; //DQ復(fù)位 DS18B20_delay(8);//稍做延時(shí) DQ=0; //單片機(jī)將DQ拉低 DS18B20_delay(80);//精確延時(shí)大于480us DQ=1; //拉高總線 DS18B20_delay(10); x=DQ; //稍做延時(shí)后如果x=0則初始化成功x=1則初始化失敗 DS18B20_delay(5);}/******************************************************************//*讀一個(gè)字節(jié)*//******************************************************************/ucharDS18B20_ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) { DQ=0; //給脈沖信號(hào) dat>>=1; DQ=1; //給脈沖信號(hào) if(DQ) dat|=0x80; DS18B20_delay(5); } return(dat);}/******************************************************************//*寫一個(gè)字節(jié)*//******************************************************************/voidDS18B20_WriteOneChar(uchardat){ uchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; DS18B20_delay(5); DQ=1; dat>>=1; } DS18B20_delay(5);}/******************************************************************//*讀取溫度*//******************************************************************/uintReadTemperature(void){ uchara=0; uintb=0; uintt=0; Init_DS18B20(); DS18B20_WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作 DS18B20_WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換 DS18B20_delay(200); Init_DS18B20(); DS18B20_WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作 DS18B20_WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個(gè)寄存器)前兩個(gè)就是溫度 a=DS18B20_ReadOneChar();//低位 b=DS18B20_ReadOneChar();//高位 b<<=8; t=a+b; if(t<0x0fff) tflag=0;else { t=~t+1; tflag=1; } t=t*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù) return(t); } #include<reg51.h>#include<intrins.h>#include<DS18B20.h>#defineucharunsignedchar#defineuintunsignedint#defineSMGIOP0sbitSET=P1^0; //定義設(shè)定上下限鍵sbitADD=P1^1; //定義增加鍵sbitDEC=P1^2; //定義減小限鍵 sbitSMG1=P2^0; //定義數(shù)碼管第一位sbitSMG2=P2^1; //定義數(shù)碼管第二位sbitSMG3=P2^2; //定義數(shù)碼管第三位sbitSMG4=P2^3; //定義數(shù)碼管第四位sbitBEEP=P2^5; //定義蜂鳴器報(bào)警uinttempValue; //變量存儲(chǔ)當(dāng)前溫度值uintHI_Alarm=30; //初始上限uintLO_Alarm=10; //初始下限ucharSMG_CC[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7}; //共陰極數(shù)碼管0-9編碼ucharSMG_CC_DOT[]={0x7f,0x64,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7}; //共陰極數(shù)碼管0-9編碼帶小數(shù)點(diǎn)/********************************************************************//* 1ms延時(shí) *//********************************************************************/voiddelayms(uintx){uchari;while(x--){for(i=150;i>0;i--);}}voidDisplay_Temperature() //顯示溫度{ charsmg1,smg2,smg3,smg4; smg1=tempValue/1000; //以下表示將溫度值拆分開 smg2=(tempValue-smg1*1000)/100; smg3=(tempValue%100)/10; smg4=tempValue%10; if(tflag==1) //負(fù)數(shù)顯示 { SMGIO=SMG_CC[smg4]; //顯示小數(shù)位 SMG4=0; delayms(1); SMG4=1; SMGIO=SMG_CC_DOT[smg3]; //顯示個(gè)數(shù)位 SMG3=0; delayms(1); SMG3=1; if(smg2==0) { SMGIO=0x80; //顯示十?dāng)?shù)位 SMG2=0; delayms(1); SMG2=1; SMGIO=0x00; //顯示百數(shù)位 SMG1=0; delayms(1); SMG1=1; } else { SMGIO=SMG_CC[smg2]; //顯示十?dāng)?shù)位 SMG2=0; delayms(1); SMG2=1; SMGIO=0x80; //顯示十?dāng)?shù)位 SMG1=0; delayms(1); SMG1=1; } } else //正數(shù)顯示 { SMGIO=SMG_CC[smg4]; //顯示小數(shù)位 SMG4=0; delayms(1); SMG4=1; SMGIO=SMG_CC_DOT[smg3]; //顯示個(gè)數(shù)位 SMG3=0; delayms(1); SMG3=1; if(smg1==0) { SMGIO=0x00; SMG1=0; delayms(1); SMG1=1; if(smg2==0) { SMGIO=0x00; SMG1=0; delayms(1); SMG1=1; } else { SMGIO=SMG_CC[smg2]; SMG2=0; delayms(1); SMG2=1; } } else { SMGIO=SMG_CC[smg1]; SMG1=0; delayms(1); SMG1=1; SMGIO=SMG_CC[smg2]; SMG2=0; delayms(1); SMG2=1; } }}voidDisplay_HI_Alarm(){ SMGIO=0xce; //顯示H SMG1=0; delayms(1); SMG1=1; SMGIO=0x80; //顯示- SMG2=0; delayms(1); SMG2=1; SMGIO=SMG_CC[HI_Alarm/10]; //顯示報(bào)警高值十位 SMG3=0; delayms(1); SMG3=1; SMGIO=SMG_CC[HI_Alarm%10]; //顯示報(bào)警高值個(gè)數(shù)位 SMG4=0; delayms(1); SMG4=1; }voidDisplay_LO_Alarm(){ SMGIO=0x1a; //顯示L SMG1=0; delayms(1); SMG1=1; SMGIO=0x80; //顯示- SMG2=0; delayms(1); SMG2=1; SMGIO=SMG_CC[LO_Alarm/10]; //顯示報(bào)警高值十位 SMG3=0; delayms(1); SMG3=1; SMGIO=SMG_CC[LO_Alarm%10]; //顯示報(bào)警高值個(gè)數(shù)位 SMG4=0; delayms(1); SMG4=1; }voidSET_KEY(){ bitSET_FLAG=1; if(SET==0) //設(shè)定按鍵按下 { delayms(40); if(SET==1) //延時(shí)去除抖動(dòng)再次判斷是否按下按鍵 { while(SET_FLAG==1) { Di

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論