




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、恒溫控制系統(tǒng)設(shè)計(jì)摘 要本設(shè)計(jì)基于AT89C51和DB18B20來實(shí)現(xiàn)溫度控制器的制作,它以89C51單片機(jī)為核心,配以DS18B20(數(shù)字溫度傳感器),LED燈(模擬對溫度的控制系統(tǒng)),數(shù)碼管來作為實(shí)時(shí)問的的顯示。系統(tǒng)的設(shè)計(jì)思路比較簡單,且易于實(shí)施。在硬件設(shè)計(jì)方面,由AT89C51、DS18B20(數(shù)字溫度傳感器)、數(shù)碼管,小風(fēng)扇,金屬膜電阻構(gòu)成的電路,在軟件方面,以單片機(jī)和DS18B20數(shù)字溫度傳感器為中心,詳細(xì)的闡述了系軟件設(shè)計(jì)的思想,主流程圖以及相應(yīng)電路模塊的流程圖。關(guān)鍵詞:DS18B20傳感器,AT89C51,溫度處理,程序目錄1 緒論12 相關(guān)芯片的介紹22.1 AT89C51芯片2
2、2.2 DS18B20數(shù)字溫度傳感器32.2.1 DS18B20的基本介紹32.2.2 DS18B20指令以及讀寫43 硬件電路設(shè)計(jì)63.1主控制電路設(shè)計(jì)63.2外圍接口電路74 軟件系統(tǒng)軟件設(shè)計(jì)84.1軟件系統(tǒng)設(shè)計(jì)84.2 程序組成84.3 總程序115 實(shí)時(shí)仿真18總結(jié)21致謝22參考文獻(xiàn)231 緒論隨著電子技術(shù),特別是隨大規(guī)模集成電路的產(chǎn)生而出現(xiàn)的微型計(jì)算機(jī)技術(shù)的飛速發(fā)展,人類生活發(fā)生了根本性的改變。如果說微型計(jì)算機(jī)的出現(xiàn)使現(xiàn)代科學(xué)研究得到了質(zhì)的飛躍,那么可以毫不夸張地說,單片機(jī)技術(shù)的出現(xiàn)則是給現(xiàn)代工業(yè)測控領(lǐng)域帶來了一次新的技術(shù)革命。目前,單片機(jī)以其體積小、重量輕、抗干擾能力強(qiáng)、對環(huán)境要
3、求不高、高可靠性、高性能價(jià)格比、開發(fā)較為容易,在工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、辦公自動化等諸多領(lǐng)域得到極為廣泛的應(yīng)用,并已走人家庭,從洗衣機(jī)、微波爐到音響、汽車,到處都可見到單片機(jī)的蹤影。因此,單片機(jī)技術(shù)開發(fā)和應(yīng)用水平已逐步成為一個(gè)國家工業(yè)發(fā)展水平的標(biāo)志之一。本課題研究的內(nèi)容就是以單片機(jī)為主要控制元件,通過溫度傳感器,實(shí)現(xiàn)對溫度的測量,并通過數(shù)碼管直接顯示所測溫度。由于使用模擬溫度傳感器來讀取溫度的話操作比較麻煩,因此本課程設(shè)計(jì)恒溫控制系統(tǒng)是由數(shù)字溫度傳感器、單片機(jī)系統(tǒng)、溫度顯示系統(tǒng)、溫控電路構(gòu)成。其基本工作原理:單片機(jī)通過程序處理和數(shù)字溫度傳感器進(jìn)行通訊,從而讀取其中的溫度,然
4、后同過程序處理實(shí)現(xiàn)數(shù)碼管的控制顯示出當(dāng)前的溫度,當(dāng)溫度超出所要求的溫度范圍后,通過程序處理實(shí)現(xiàn)單片機(jī)對溫控電路的控制,當(dāng)溫度達(dá)到要求的范圍之后停止溫控電路的工作,從而實(shí)現(xiàn)恒溫控制。基本工作原理框圖如圖1所示。數(shù)碼管顯示信號采集溫度顯示89C52單片機(jī)數(shù)字溫度傳感器溫度控制編寫控制程序用數(shù)字溫度傳感器進(jìn)行溫度的采集用數(shù)字溫度傳感器進(jìn)行溫度的采集用數(shù)字溫度傳感器進(jìn)行溫度的采集用數(shù)字溫度傳感器進(jìn)行溫度的采集用數(shù)字溫度傳感器進(jìn)行溫度的采集用數(shù)字溫度傳感器進(jìn)行溫度的采集啟動溫控溫控電路處理程序圖1 電路整體框圖2 相關(guān)芯片的介紹2.1 AT89C51芯片AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高
5、性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大AT89C51單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。AT89C51引腳圖如圖2所示。圖2 AT89C51引腳圖AT89C51的功能特性AT89C51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)十六位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全
6、雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。2.2 DS18B20數(shù)字溫度傳感器 DS18B20的基本介紹數(shù)字化溫度傳感器DS18B20芯片是世界上第一片采用單總線方式的溫度傳感器。如圖2為芯片的外形圖和引腳圖。圖中顯示了該芯片的兩種封裝形式,SOIC為小外形集成電路封裝,另一種為三極管外形封裝。圖 2 DS18B20芯片外形及引腳該芯片測量物體的溫度
7、,并在單總線上傳送測量數(shù)據(jù)。和傳統(tǒng)的模擬信號測量方式相比,它提高了抗御干擾的能力,適用于環(huán)境控制、設(shè)備控制、過程控制以及測溫類消費(fèi)電子產(chǎn)品等領(lǐng)域。1)三極管外形封裝的DS18B20,外形如同一只小功率三極管,其引腳定義是:1、GND 接地2、DQ 單總線接口3、VDD 電源2) DS18B20芯片的主要特點(diǎn) 工作電壓3.0V5.5V溫度測量范圍 -55C125C在10C +85C范圍內(nèi),測量精度為0.5C。待機(jī)狀態(tài)下無功率消耗。可編程分辨率912位,每位分別代表0.5C、0.25C、0.125C和0.0625C。溫度測量時(shí)間200ms。溫度傳感器是芯片的核心部分,它連續(xù)地對物體溫度進(jìn)行測量,并
8、連續(xù)地將新測量結(jié)果存放在高速暫存器RAM中,存放形式如表1:表1 溫度傳感器的溫度表低字節(jié)(LS Byte)Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 02322212 02 -12 -22 -32 -4高字節(jié)(MS Byte)Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0SSSSS26252 4測量溫度值被放在兩個(gè)字節(jié)中,高字節(jié)的高5位是符號位,代表一位符號。若這5位均為“0”,表示符號為正,測量溫度為正值;若這5位均為“1”,則表示符號為負(fù),測量的溫度為負(fù)值。高字節(jié)的低3位和低字節(jié)的8位,共11位,是測量的數(shù)值部分。測量值
9、為正時(shí),將數(shù)值乘以0.0625即可得到實(shí)際測量溫度數(shù);測量值為負(fù)時(shí),將數(shù)值其變補(bǔ)再乘以0.0625即可得到實(shí)際測量溫度的絕對值。比如溫度+125C對應(yīng)的轉(zhuǎn)換數(shù)字為07D0H,溫度55C對應(yīng)的轉(zhuǎn)換數(shù)字為FC90H。 DS18B20指令以及讀寫1)DS18B20的ROM指令和RAM指令 ROM指令用來確認(rèn)DS18B20的身份,即在眾多的單總線芯片或多個(gè)DS18B20中指定某一個(gè)芯片作為操作對象。確定的基本方式是核對各芯片的64位的序列號代碼,該過程比較復(fù)雜,需要若干條ROM指令的配合;在僅用1個(gè)DS18B20芯片的場合,只需用“跳過”指令(CCH),就可省略確認(rèn)身份的過程。 DS18B20的RAM
10、指令見表2。RAM指令用來對已經(jīng)確認(rèn)身份、被指定為操作對象的DS18B20芯片進(jìn)行具體的讀寫操作。表2 DS18B20的RAM指令指令代 碼功能溫度變換44H啟動溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長為750ms。結(jié)果存入內(nèi)部9字節(jié)RAM中指令代 碼功能讀暫存器BEH讀DS18B20RAM中9字節(jié)內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的2、3、4字節(jié)寫上、下限溫度數(shù)據(jù)和配置寄存器命令,緊跟該命令之后,是傳送三字節(jié)的數(shù)據(jù)復(fù)制暫存器48H將RAM中2、3字節(jié)的內(nèi)容復(fù)制到E2PROM中重調(diào)E2PROMB8H將E2PROM中內(nèi)容恢復(fù)到RAM中的第2、3字節(jié)讀供電方式B4H讀供電模式。寄生供電模式時(shí)發(fā)送“0”, 外接電
11、源供電發(fā)“1”2) DS18B20的讀寫操作過程1、DS18B20的初始化:(1) 先將數(shù)據(jù)線置高電平“1”。(2) 延時(shí)(該時(shí)間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn))(3) 數(shù)據(jù)線拉到低電平“0”。(4) 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。(5) 數(shù)據(jù)線拉到高電平“1”。(6) 延時(shí)等待(如果初始化成功則在15到60毫秒時(shí)間之內(nèi)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制)。(7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(
12、第(5)步的時(shí)間算起)最少要480微秒。(8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。2、DS18B20的寫操作:(1) 數(shù)據(jù)線先置低電平“0”。(2) 延時(shí)確定的時(shí)間為15微秒。(3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。(4) 延時(shí)時(shí)間為45微秒。(5) 將數(shù)據(jù)線拉到高電平。(6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。(7) 最后將數(shù)據(jù)線拉高。3、DS18B20的讀操作:(1)將數(shù)據(jù)線拉高“1”。(2)延時(shí)2微秒(3)將數(shù)據(jù)線拉低“0”。(4)延時(shí)15微秒。(5)將數(shù)據(jù)線拉高“1”。(6)延時(shí)15微秒。(7)讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。(8
13、)延時(shí)30微秒。根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:每一次讀寫之前都要對DS18B20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)DS18B20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。3 硬件電路設(shè)計(jì)3.1主控制電路設(shè)計(jì)由于本系統(tǒng)是利用AT89C51單片機(jī)設(shè)計(jì)的,因此,首先應(yīng)該構(gòu)建以51單片機(jī)為核心的最小系統(tǒng),然后在此最小系統(tǒng)的基礎(chǔ)上進(jìn)行擴(kuò)展外圍接口從而實(shí)現(xiàn)不同功能的
14、控制。單片機(jī)的最基本的電路,由復(fù)位電路(RST)和晶振電路(為系統(tǒng)工作提供時(shí)鐘脈沖)兩部分組成,電路圖如圖3所示。圖3 單片機(jī)最基本電路通過此最基本電路可以在外圍加上顯示電路、和溫控電路以及DS18B20的溫度讀取電路再加上程序的控制就可以工程一個(gè)恒溫控制系統(tǒng)。3.2外圍接口電路1、DS18B20電路這個(gè)芯片是單總線設(shè)計(jì)模式,因此電路的連接非常簡單,僅僅有數(shù)據(jù)口DQ和單片機(jī)的P1.1口相連接,然后就是電源線和地線,如下圖所示:圖4 DS18B20電路2、數(shù)碼管顯示電路圖5 數(shù)碼顯示電路數(shù)碼顯示電路(共陽數(shù)碼管)是單片機(jī)的P2、P3口來控制的。P2口接的是數(shù)碼管的段選地址,用以顯示不同的數(shù)字;P
15、3口接的是數(shù)碼管的為選,用不同的位選以控制不同的數(shù)碼管的顯示情況。3、溫度控制電路圖6 溫度控制電路溫度控制電路是由單片機(jī)的P1口輸出高低電平控制三極管Q1的導(dǎo)通與不導(dǎo)通來控制繼電器開關(guān)的閉合情況,這里用兩個(gè)發(fā)光二極管作為溫度控制的模擬實(shí)現(xiàn)溫度的控制。4軟件系統(tǒng)軟件設(shè)計(jì)4.1軟件系統(tǒng)設(shè)計(jì)一個(gè)應(yīng)用系統(tǒng)要完成各項(xiàng)功能,首先必須有較完善的硬件作保證。同時(shí)還必須得到相應(yīng)設(shè)計(jì)合理的軟件的支持,尤其是微機(jī)應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編程有時(shí)會變得很簡單,如數(shù)字濾波,信號處理等。因此充分利用其內(nèi)部豐富的硬件資源和軟件
16、資源,采用與C51系列單片機(jī)相對應(yīng)的C51語言和結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行軟件編程。本裝置的軟件包括主程序、讀出溫度子程序、復(fù)位應(yīng)答子程序、寫入子程序、以及有關(guān)DS18B20的程序(初始化子程序、寫程序和讀程序)。4.2 程序組成系統(tǒng)程序主要包括主程序,讀出溫度子程序,寫入子程序,門限調(diào)節(jié)子程序等。1)主程序主程序的主要功能是負(fù)責(zé)對DS18B20傳感器測量溫度的讀取,然后再通過C51的程序?qū)ψx出的溫度進(jìn)行轉(zhuǎn)化處理,最后在對溫度的要求對環(huán)境進(jìn)行控制并通過顯示設(shè)備顯示出來。溫度的讀取顯示與控制要相隔相當(dāng)短的時(shí)間重復(fù)操作,以實(shí)現(xiàn)對溫度的準(zhǔn)確控制。通過調(diào)用讀溫度子程序把從溫度傳感器中讀出的整數(shù)部分與小數(shù)部
17、分存放在一個(gè)字符串中,然后通過調(diào)用顯示子程序顯示出來,主程序的流程圖如下圖7所示。開始調(diào)用讀溫度子程序溫度處理并顯示溫度是否超出規(guī)定范圍NY/NY繼電器工作圖7 主程序流程圖2)讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫,程序流程圖如圖8所示。 DS18B20的各個(gè)命令對時(shí)序的要求特別嚴(yán)格,所以必須按照所要求的時(shí)序才能達(dá)到預(yù)期的目的,同時(shí),要注意讀進(jìn)來的是高位在后低位在前,共有16位數(shù),小數(shù)4位,整數(shù)7位,還有5位符號位,具體的參數(shù)見DS18B20溫度傳感器的介紹(表1)。DS18B20復(fù)位、應(yīng)答子程序跳過ROM匹配命
18、令寫入子程序溫度轉(zhuǎn)換命令寫入子程序顯示子程序(延時(shí))DS18B20復(fù)位、應(yīng)答子程序跳過ROM匹配命令寫入子程序讀溫度命令子程序終 止圖8 讀出溫度子程序流程圖3)溫度處理并顯示程序由于單片機(jī)從DS18B20中讀取道德溫度是兩個(gè)字節(jié)的數(shù)據(jù),在這兩個(gè)字節(jié)的數(shù)據(jù)中高字節(jié)的8為數(shù)據(jù)中,高5位數(shù)據(jù)代表著符號位,當(dāng)這5位全部為1時(shí),表示這時(shí)所讀取的溫度是負(fù)值;低3位和低字節(jié)中的8位數(shù)據(jù)分別代表著實(shí)時(shí)的溫度,所以并不能直接將溫度通過顯示設(shè)備顯示出來,而是需要通過相應(yīng)的程序作為處理才能作為最終的溫度顯示出來如圖8所示。判斷溫度的正負(fù)(高字節(jié)數(shù) 127?)Y/NNY溫度為負(fù)數(shù),求出溫度的補(bǔ)碼對溫度進(jìn)行處理保存小
19、數(shù)部分、百位、十位和個(gè)位把處理后的數(shù)據(jù)顯示出來圖8 溫度處理并顯示程序流程圖4.3 總程序#include /包含單片機(jī)寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件#include #include sbit DQ=P11; /定義數(shù)據(jù)口sbit jdq=P10; /定義繼電器控制口sbit dot=P27; /定義顯示小數(shù)點(diǎn) unsignedcharcode xiaoshu=0xc0,0xc0,0xf9,0xf9,0xa4,0xb0,0xb0,0x99,0x92,0x92,0x82,0xf8,0xf8,0x80,0x80,0x90;char duan4=0,0,0,0
20、;/存放段控的數(shù)據(jù) unsigned char code weikong=0x01,0x02,0x04,0x08,0x10,0x20;/存放數(shù)碼管的位控?cái)?shù)據(jù) unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/數(shù)碼管顯示字符 int bai,shi,ge,flag=0,i; unsigned char temp; unsigned char TL; /儲存暫存器的溫度低位 unsigned char TH; /儲存暫存器的溫度高位 un
21、signed char TN; /儲存溫度的整數(shù)部分 unsigned int TD; /儲存溫度的小數(shù)部分/*-1ms的延時(shí)程序-*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+); /*-帶參數(shù)nms的延時(shí)程序-*/void delaynms(int n) unsigned char i;for(i=0;in;i+) delay1ms();unsigned char time_DS18B20; /設(shè)置全局變量,專門用于嚴(yán)格延時(shí)/*-DS18B20的初始化-*/bit Init_DS18B20(void)
22、bit flag_DS18B20; /儲存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先將數(shù)據(jù)線拉高 for(time_DS18B20=0;time_DS18B202;time_DS18B20+) ;/略微延時(shí)約6微秒DQ = 0; /再將數(shù)據(jù)線從高拉低,要求保持480960us for(time_DS18B20=0;time_DS18B20200;time_DS18B20+); /略微延時(shí)約600微秒以向DS18B20發(fā)出一持續(xù)480960us的低電平復(fù)位脈沖 DQ = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time_DS18B20
23、=0;time_DS18B2010;time_DS18B20+);/延時(shí)約30us(釋放總線后需等待1560us讓DS18B20輸出存在脈沖) flag_DS18B20=DQ; /讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在) for(time_DS18B20=0;time_DS18B20200;time_DS18B20+); /延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢return (flag_DS18B20); /返回檢測成功標(biāo)志/*-讀一個(gè)字節(jié)的程序- */unsigned char ReadOneChar( ) unsigned char i=0;unsigned char dat; /
24、儲存讀出的一個(gè)字節(jié)數(shù)據(jù)for (i=0;i=1; _nop_(); /等待一個(gè)機(jī)器周期 DQ = 1; /將數(shù)據(jù)線人為拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備 for(time_DS18B20=0;time_DS18B203;time_DS18B20+); /延時(shí)約6us,使主機(jī)在15us內(nèi)采樣 if(DQ=1) dat|=0x80; /如果讀到的數(shù)據(jù)是1,則將1存入datelsedat|=0x00;/如果讀到的數(shù)據(jù)是0,則將0存入dat將單片機(jī)檢測到的電平信號DQ存入ri for(time_DS18B20=0;time_DS18B208;time_DS18B20+);/延時(shí)3us,兩
25、個(gè)讀時(shí)序之間必須有大于1us的恢復(fù)期 return(dat); /返回讀出的十進(jìn)制數(shù)據(jù)/*-寫一個(gè)字節(jié)的程序- */WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一個(gè)機(jī)器周期 DQ=0; /將數(shù)據(jù)線從高拉低時(shí)即啟動寫時(shí)序 DQ=dat&0x01; /利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù),并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time_DS18B20=0;time_DS18B2010;time_DS18B20+);/延時(shí)約30us,DS18B
26、20在拉低后的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; /釋放數(shù)據(jù)線 for(time_DS18B20=0;time_DS18B20=1; /將dat中的各二進(jìn)制位數(shù)據(jù)右移1位 for(time_DS18B20=0;time_DS18B204;time_DS18B20+) ; /稍作延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間void ReadyReadTemp(void) Init_DS18B20(); /將DS18B20初始化WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換 for(time_DS18B20=0;time_DS18B2
27、0=8) TH=TH; /當(dāng)溫度為負(fù)數(shù)時(shí)求負(fù)數(shù)的補(bǔ)碼 TL=TL; TL=TL+1; flag=1; /當(dāng)溫度為負(fù)值時(shí)標(biāo)志置1 if(TL=0) TH+=1; duan0=TL&0X0f; /保存小數(shù)部分的值temp=(TH4); /將高8位的低3位和低8位的高4位合并構(gòu)成溫度的整數(shù)部分duan3=temp/100; /取百位duan2=temp%100/10; /取十位duan1=temp%10; /取個(gè)位P2=xiaoshuduan0;/顯示小數(shù)部分P3=0x01;delaynms(3);P3=0; if(duan3) /顯示百位P3=weikong3;P2=tableduan3;dela
28、ynms(3);P3=0; if(duan3)/顯示十位 P3=weikong2;P2=tableduan2;delaynms(3);P3=0; else if(duan2) /顯示十位P3=weikong2;P2=tableduan2;delaynms(3);P3=0; P3=weikong1; /顯示個(gè)位P2=tableduan1;dot=0; /顯示小數(shù)點(diǎn)delaynms(3);P3=0; if(flag) /當(dāng)溫度為負(fù)數(shù)時(shí)顯示符號位P2=0xbf;if(!duan3)P3=0x08;if(!duan2)P3=0x04; else P3=0x10; delaynms(1);P3=0;fl
29、ag=0; delaynms(25); /延時(shí)一段時(shí)間/*-主程序- */void main() while(1) /不斷檢測并顯示溫度 ReadyReadTemp(); /讀溫度準(zhǔn)備display();if(temp35)/如果溫度超出范圍繼電器工作控制溫度 jdq=1;elsejdq=0; /*-總程序結(jié)束-*/5 實(shí)時(shí)仿真通過硬件電路的設(shè)計(jì)之后,根據(jù)對系統(tǒng)的不同的要求實(shí)時(shí)設(shè)計(jì)出與要求相對應(yīng)的軟件程序,總體電路圖如圖8所示。 圖9系統(tǒng)總體電路圖通過kell軟件進(jìn)行軟件編寫和編譯,然后用protues繪制完電路圖并把編譯生成的xxx.hex文件添加到51單片機(jī)內(nèi),然后運(yùn)行。當(dāng)溫度在正常的溫度范圍之內(nèi)時(shí),綠燈D1處于常亮狀態(tài),運(yùn)行的具體情況如圖10所示。圖10 正常溫度范圍狀態(tài)當(dāng)溫度超出正常的溫度狀態(tài)時(shí),用通過p1.0口控制繼電器來控制D1、D2的工作狀態(tài),來模擬對溫度的恒溫控制,狀態(tài)如圖11所示圖11 超出正常溫度的范圍顯示狀態(tài)總結(jié)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社會熱點(diǎn)事件在初中歷史教學(xué)中的應(yīng)用策略與實(shí)踐研究
- 海洋調(diào)查設(shè)備項(xiàng)目風(fēng)險(xiǎn)評估報(bào)告
- 中國集成顯卡行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報(bào)告
- 2025年 滄州市人民醫(yī)院招聘考試筆試試題附答案
- 2025年中國全銅紅沖三角閥行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 2022-2027年中國瓜子行業(yè)市場供需現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2025年中國網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略研究報(bào)告
- 2024-2030全球RJ11連接器行業(yè)調(diào)研及趨勢分析報(bào)告
- 小河口水電站環(huán)境影響評價(jià)報(bào)告書【專業(yè)版】
- 老年三輪車項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 有限空間作業(yè)及應(yīng)急物資清單
- DB13(J)∕T 8060-2019 城鎮(zhèn)供熱管道及設(shè)備安裝工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 《國際商務(wù)》課程
- 壓力容器設(shè)計(jì)管理制度
- 比亞迪員工手冊54
- 國際經(jīng)濟(jì)學(xué)期末考試試題庫含答案
- 應(yīng)力波理論復(fù)習(xí)資料
- 基于PLC的音樂噴泉控制系統(tǒng)的設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 體育場地與設(shè)施
- 五年級部編版語文下學(xué)期修改病句專項(xiàng)強(qiáng)化練習(xí)題
- 民辦非企業(yè)單位清算報(bào)告
評論
0/150
提交評論