管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器_第1頁
管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器_第2頁
管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器_第3頁
管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器_第4頁
管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

管理信息化物聯(lián)網(wǎng)溫度采集智能家居熱水器溫度采集智能家居熱水器溫度采集智能家居熱水器摘要隨著社會(huì)的發(fā)展,人類科技的進(jìn)步,各行各業(yè)都在使自己的產(chǎn)品智能化、數(shù)字化,因老式的熱水器使用煤氣或天然氣對(duì)水進(jìn)行燃燒加熱,用手動(dòng)的方式調(diào)節(jié)溫度,不僅不能夠精確的確定使用者需要的水溫,而且還存在一定的危險(xiǎn)性。電熱水器是一種可供浴室、洗手間及廚房使用的家用電器,隨著人們生活質(zhì)量的提高,現(xiàn)代的家用電熱水器已經(jīng)摒棄了以前的做法,而采用一種更加精確、安全的實(shí)施方案。C語言對(duì)單片機(jī)編程有諸多優(yōu)點(diǎn),例如:便于移植、句法檢查時(shí)錯(cuò)誤少、堅(jiān)固性好、頭文件種類諸多,能夠方便快捷使用各種函數(shù)等。本文采用STC89C52單片機(jī)作為控制器,使用C語言編寫程序,設(shè)計(jì)了一款智能家用電熱水器。使用按鍵鍵盤設(shè)定溫度,溫度可以精確到0.1攝氏度,并使用LED燈顯示,能夠精確提供用戶所需溫度的溫水。采用DS18B20采集溫度,使用LED燈顯示,精確的顯示出采集的水溫。當(dāng)所需溫度高于當(dāng)前采集的水溫時(shí),使用繼電器控制外接加熱源,當(dāng)所需溫度低于當(dāng)前采集的水溫時(shí),繼電器斷開不加熱。當(dāng)所需溫度高于采集溫度時(shí),繼電器吸合開始加熱?;緦?shí)現(xiàn)了智能控制功能。關(guān)鍵字:18B20、STC89C52、熱水器II溫度采集智能家居熱水器ABSTRACTWiththedevelopmentofsociety,theprogressofhumanscienceandtechnology,inallwalksoflifetomaketheirproductsintelligent,digital,becausethewaterheaterusingold-fashionedgasornaturalgasisburnedtoheatwater,adjustthetemperaturemanually,notonlycantheuserneedstobeaccuratelydetermined,andthereissomerisk.Electricwaterheaterisakindofhouseholdappliancesforbathroomandkitchen,restroomuse,alongwiththeimprovementofpeople'slivingquality,householdelectricwaterheatermodernhaverejectedthepreviouspractice,andbyusingamoreaccurate,safeimplementationplan.TheClanguagehasmanyadvantages,suchas:microputerprogrammingfortransplantation,syntaxcheckerrorless,robust,headfiletypemany,canbeconvenienttouseavarietyoffunctions.ThispaperadoptsSTC89C52MCUasthecontroller,theuseofCprogramminglanguage,designedaintelligenthomeelectricwaterheater.Usethekeyboardtosetthetemperature,thetemperaturecanbeaccurateto0.1degreesCelsius,andtheuseofLEDlightsdisplay,canaccuratelyprovidetherequiredtemperatureofwarmwater.TheDS18B20collectiontemperature,theuseofLEDlightsdisplay,displaythetemperaturepreciseacquisition.Whentherequiredtemperatureishigherthantheacquisitionoftemperature,usetherelaytocontroltheexternalheatiIII溫度采集智能家居熱水器ngsource,whentherequiredtemperatureislowerthanthecurrentcollectingwater,relayoffwithoutheating.Whentherequiredtemperatureishigherthantheacquisitionoftemperature,relaystartsheating.Thebasicrealizationoftheintelligentcontrolfunction.Keywords:18B20、STC89C52、目錄1引言12設(shè)計(jì)內(nèi)容及性能指標(biāo)13系統(tǒng)方案比較、設(shè)計(jì)與論證23.1主控制器模塊23.2溫度測(cè)量23.3設(shè)置溫度33.4顯示模塊43.5電源選取44系統(tǒng)器件選擇55硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)65.1主控制模塊65.2顯示模塊電路65.3數(shù)碼管顯示驅(qū)動(dòng)電路7IV溫度采集智能家居熱水器5.4溫度傳感器(DS18B20)電路75.4.1DS18B20基本介紹75.4.2DS18B20控制方法85.4.3DS18B20供電方式85.5繼電器加熱控制電路96系統(tǒng)軟件設(shè)計(jì)106.1程序結(jié)構(gòu)分析106.2系統(tǒng)程序流圖106.2.1DS18B20初始化程序流程圖126.2.2讀溫度子程序流程圖126.3程序編寫與調(diào)試136.6.1Keil編譯器軟件簡(jiǎn)介136.3.2使用Keil軟件建立一個(gè)工程136.3.3使用Debug進(jìn)行調(diào)試177系統(tǒng)的安裝與調(diào)試197.1安裝步驟197.2電路的調(diào)試197.3本章小結(jié)19結(jié)論19V溫度采集智能家居熱水器參考文獻(xiàn)20附錄1整體電路原理圖21附錄2部分源程序22VI溫度采集智能家居熱水器1引言水器造成的爆炸、中毒等事故也屢有所聞。消費(fèi)者對(duì)燃?xì)鉄崴鲬延幸欢ǖ膽峙赂?,所以燃?xì)鉄崴鳚u漸淡出市場(chǎng)。而智能電熱水器越來越受到人們的認(rèn)可。電熱水器在中國(guó)的歷史已經(jīng)有10多年了,期間也經(jīng)歷了數(shù)次起落的過程,在上個(gè)世我國(guó)在對(duì)電熱水器水溫水位系統(tǒng)的研究已取得很大的成就,并在不斷地完善之中。測(cè)器是以STC89C52單片機(jī)作為主控制元件來能實(shí)現(xiàn)熱水器里的水溫顯示在數(shù)碼管。更進(jìn)一步的采用繼電器實(shí)現(xiàn)自動(dòng)控制加熱裝置,是單片機(jī)應(yīng)用在工業(yè)、農(nóng)業(yè)、國(guó)防、溫度采集智能家居熱水器操作也是不可缺少的。在本設(shè)計(jì)中,研究智能電熱水器的水溫檢測(cè)器非常有意義。2設(shè)計(jì)內(nèi)容及性能指標(biāo)本設(shè)計(jì)采用51單片機(jī)+DS18B20溫度傳感器+數(shù)碼管顯示+繼電器+功能按鍵組成。DS18B20測(cè)精確到0.1EEPOM有連加、減功能。3系統(tǒng)方案比較、設(shè)計(jì)與論證系統(tǒng)功能的方案。3.1主控制器模塊方案1:采用可編程邏輯器件CPLD作為控制器。CPLD密度高、體積小、穩(wěn)定性高、IO資源豐富、易于進(jìn)行功能擴(kuò)展。采用并行的輸入輸度考慮我們放棄了此方案。方案2:溫度采集智能家居熱水器采用STC89C52單片機(jī)作為整個(gè)系統(tǒng)的核心,用其控制水溫測(cè)量控制系統(tǒng),以實(shí)現(xiàn)其——優(yōu)點(diǎn)。STC89C52I/O多達(dá)8K,對(duì)于本設(shè)計(jì)也綽綽有余,更可貴的是STC89C52單片機(jī)價(jià)格非常低廉。3.2溫度測(cè)量方案1:采用數(shù)字溫度芯片DS18B20工業(yè)測(cè)溫元件,此元件線形較好。在0—100攝氏度時(shí),最大線形偏差小于1攝氏度。DS18B20DS18B20和微控制器STC89C52構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡(jiǎn)單,體積也不大。采用51單片機(jī)控制,軟件編程的自單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC機(jī)通信上傳數(shù)據(jù),另外STC89C52在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。方案2:溫度采集智能家居熱水器A/DA/D的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。圖1熱電偶電路圖故本次設(shè)計(jì)采用了方案一。3.3設(shè)置溫度方案1:44個(gè)接口。方案2:可采用4*4矩陣鍵盤,該鍵盤需要8個(gè)接口,而我們不需這么多鍵。綜上所述,我們選擇第一種方案。3.4顯示模塊方案1:溫度采集智能家居熱水器廣泛應(yīng)用。方案2:用LCDLCD內(nèi)容,而且LCD液晶價(jià)格貴,因此我們放棄了此方案。綜上所述我們選擇方案13.5電源選取由于本系統(tǒng)采用電池供電,我們考慮了如下幾種方案為系統(tǒng)供電。方案1:采用5V蓄電池為系統(tǒng)供電。蓄電池具有較強(qiáng)的電流驅(qū)動(dòng)能力以及穩(wěn)定的電壓輸棄了此方案。方案2:采用3節(jié)1.5V干電池共4.5V器的工作電壓穩(wěn)定能夠滿足系統(tǒng)的要求,而且電池更換方便。綜上所述采用方案24系統(tǒng)器件選擇1.溫度傳感器的選擇較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對(duì)較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測(cè)溫元件。溫度采集智能家居熱水器圖2外部封裝形式圖3傳感器電路圖5硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)5.1主控制模塊主控制最系統(tǒng)電路如圖4所示。圖4單片主控電路5.2顯示模塊電路顯示采用四位數(shù)碼管顯示,當(dāng)位選打開時(shí),送入相應(yīng)的段碼,則相應(yīng)的數(shù)碼管打開,的位選時(shí),時(shí)間間隔低于20ms,從人類視覺的角度上看,就仿佛是全部數(shù)碼管同時(shí)顯示的一樣。顯示電路如圖5圖5數(shù)碼管顯示5.3數(shù)碼管顯示驅(qū)動(dòng)電路三極管8550來驅(qū)動(dòng)4位數(shù)碼管,不僅簡(jiǎn)單,而且價(jià)格便宜。圖6驅(qū)動(dòng)電路5.4溫度傳感器(DS18B20)電路5.4.1DS18B20基本介紹DS18B20是美國(guó)DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)處理器處理。DS18B20進(jìn)行精確的溫度轉(zhuǎn)換,I/O線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個(gè)DS18B20在溫度轉(zhuǎn)換期間工作電流達(dá)到1mA溫度采集智能家居熱水器I/O線上進(jìn)行多點(diǎn)測(cè)溫時(shí),只靠4.7K上拉電阻就無法提供足夠的能量,會(huì)造成無法轉(zhuǎn)換溫度或溫度誤差極大。系統(tǒng)中。并且工作電源VCC必須保證在5V,當(dāng)電源電壓下降時(shí),寄生電源能夠汲取的能量也降低,會(huì)使溫度誤差變大。圖7溫度傳感器電路引腳圖5.4.2DS18B20控制方法DS18B20有六條控制命令:溫度轉(zhuǎn)換44H啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換讀暫存器BEH讀暫存器9個(gè)字節(jié)內(nèi)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH、TL字節(jié)復(fù)制暫存器48H把暫存器的TH、TL字節(jié)寫到E2RAM中重新調(diào)E2RAMB8H把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié)讀電源供電方式B4H啟動(dòng)DS18B20發(fā)送電源供電方式的信號(hào)給主CPU5.4.3DS18B20供電方式DS18B20DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖3.1所示DS18B20一個(gè)三極管來完成對(duì)總線的上拉。本設(shè)計(jì)采用電源供電方式,P2.2口接單線總線為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)上拉電阻和STC89C52的P2.2來完成對(duì)總線的上拉。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),溫度采集智能家居熱水器總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10μs。采用寄生電源供電方式是VDD和GND制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個(gè)步驟:初始化。ROM操作指令。存儲(chǔ)器操作指令。5.5繼電器加熱控制電路電路如圖8主要是用來給外部加熱源加熱的。圖8繼電器加熱電路6系統(tǒng)軟件設(shè)計(jì)6.1程序結(jié)構(gòu)分析36.2系統(tǒng)程序流圖DS18B209通過調(diào)用讀溫度子程序把存入內(nèi)存儲(chǔ)中的整數(shù)部分與小數(shù)部分開分存放在不的的兩個(gè)溫度采集智能家居熱水器單元中,然后通過調(diào)用顯示子程序顯示出來。圖6.2.1DS18B20初始化程序流程圖在DS18B20工作之前需要進(jìn)行初始化,流程圖如下:圖10初始化程序流程圖6.2.2讀溫度子程序流程圖讀溫度子程序的主要功能是從DS18B20序流程圖如下:圖11溫度子程序流程圖6.3程序編寫與調(diào)試6.6.1Keil編譯器軟件簡(jiǎn)介KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),CCKeilC51軟件提供豐富的WindowsKeilC51溫度采集智能家居熱水器勢(shì)。下面詳細(xì)介紹KeilC51開發(fā)系統(tǒng)各部分功能和使用。圖15C51工具包整體結(jié)構(gòu)圖KeilC51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)C513.1中uVision與Ishell分別是C51forWindows和forDOS的集成開發(fā)環(huán)境(IDE),可以IDE本身或其它編輯器編輯CC51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的HexdScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。6.3.2使用Keil軟件建立一個(gè)工程Keil是目前進(jìn)行51單片機(jī)開發(fā)最常用的編譯軟件。關(guān)于Keil的使用,有很多的資料介紹,這里只介紹其整個(gè)編譯過程,在最短時(shí)間內(nèi)開始使用Easy51DP-2開發(fā)板。對(duì)于KeilKeil序,都是以一個(gè)工程的形式建立的。一個(gè)工程里可以有一個(gè)或多個(gè)*.c文件和*.h文件,但只可以有一個(gè)main()函數(shù)。一般的做法是將包含main()函數(shù)的C文件加入到工程中,其他文件以#include頭文件的形式加到這個(gè)C文件里。這樣,在編譯的時(shí)候,其他的文件會(huì)被自動(dòng)的導(dǎo)入到工程里來。打開Keil軟件后,出現(xiàn)(圖16)所示界面。當(dāng)然,如果Keil在上次關(guān)閉時(shí)有打開的工程,再一次打開時(shí)它會(huì)自動(dòng)加載上一次的工程文件。圖16Keil軟件主界面溫度采集智能家居熱水器首先點(diǎn)擊Project->NewProject…(Project->OpenProject…為打開一個(gè)已經(jīng)存在的工程),如圖17所示。圖17Keil軟件打開新工程界面點(diǎn)開后,在出現(xiàn)的對(duì)話框中選擇工程存在路徑,單擊“保存”后,出現(xiàn)(如圖18所示)界面。在此界面上選擇電路板上所用的單片機(jī)型號(hào):AtmelSTC89C52(或者是AT89S52,視開發(fā)板上具體型號(hào)而定),單擊“確定”。圖18選擇電路板上所用的單片機(jī)型號(hào)“是否將8051上電初始化程序添加入工程?如圖19所示,這個(gè)一般選擇“否”。(關(guān)于STARTUP.A51的相關(guān)內(nèi)容可查閱相應(yīng)資料)圖19是否將8051上電初始化程序添加入工程這樣,就建立了一個(gè)空的51工程。File->New建立了一個(gè)空的文本框?,F(xiàn)在,就可以開始在里面輸入你的代碼了。保存時(shí)注意:如果是用C語言寫的程序,則將文本保存成*.c,如果是用匯編寫的程序,則將文本存成*.asm。譯。因?yàn)檫€沒有將程序代碼添加到工程里面去。20ProjectWorkspace里的SourceGroup1上右擊,選擇AddFilestoGroup’SourceGroup1’。在打開的對(duì)話框中,選擇剛存的文件路徑和對(duì)應(yīng)的擴(kuò)展名。這樣,程序就添加進(jìn)了這個(gè)工程。圖20添加文件到工程中溫度采集智能家居熱水器下一步,就開始編譯剛輸入進(jìn)去的代碼。點(diǎn)擊工具欄中的按鈕。接著,Keil會(huì)打出下面的提示:Buildtarget'Target1'assembling...linking...ProgramSize:data=8.0xdata=0code=100"first"-0Error(s),0Warning(s).“"first"-0Error(s),0Warning(s).”0個(gè)錯(cuò)誤和0個(gè)警告。建立工程的時(shí)候,默認(rèn)是不生成HEX文件的,得在編譯做如下設(shè)置:?jiǎn)螕簦蛘咴赑rojectWorkspace里Target1上右擊,選擇“OptionsforTarget‘Target1’”21選框勾上,點(diǎn)“確定”?,F(xiàn)在再點(diǎn)擊重新編譯,系統(tǒng)提示:“creatinghexfilefrom"first"...”。便會(huì)在工程所在文件夾里生成HEX文件。圖21生成HEX文件6.3.3使用Debug進(jìn)行調(diào)試Keil有很強(qiáng)大的調(diào)試功能,可以顯示C程序的反匯編代碼、可以計(jì)算代碼運(yùn)行的時(shí)Debug參看相關(guān)書籍資料。圖22調(diào)試前設(shè)置窗口溫度采集智能家居熱水器22Target不用作修改。設(shè)置完成后,單擊,進(jìn)入調(diào)試界面(如圖23所示)。圖23Keil調(diào)試界面點(diǎn)擊中對(duì)應(yīng)的工具按鈕則可以開始調(diào)試。另外,“View”下的三個(gè)工具在調(diào)試中會(huì)經(jīng)常用到如.圖24所示,“DisassemblyWindow”顯示C“Watch&CallStackWindow”可以顯示程序中某一變量的值;“MemoryWindow”可以顯示內(nèi)存中某一地址的值。圖24三個(gè)常用的調(diào)試工具7系統(tǒng)的安裝與調(diào)試7.1安裝步驟1.檢查元件的好壞防止出現(xiàn)錯(cuò)誤焊件后不便改正。2.放置、焊接各元件間不要超過10s,注意芯片的安裝方向。7.2電路的調(diào)試溫度采集智能家居熱水器象還有很多就不一一列舉了。7.3本章小結(jié)本章的主要內(nèi)容是電路的測(cè)試和調(diào)試注意事項(xiàng)結(jié)論本設(shè)計(jì)采用51單片機(jī)+DS18B20溫度傳感器+繼電器加熱+數(shù)碼管顯示+功能按鍵組成。DS18B20測(cè)精確到0.1EEPOM有連加、減功能。方案正確、可行,各項(xiàng)指標(biāo)穩(wěn)定、可靠。參考文獻(xiàn)1曹巧媛主編.單片機(jī)原理及應(yīng)用(第二版).北京:電子工業(yè)出版社,20022全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽組委會(huì)編.第五屆全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品選編(2001),北京:北京理工大學(xué)出版社,20033何力民編.單片機(jī)高級(jí)教程.北京:北京航空大學(xué)出版社,20004金發(fā)慶等編.傳感器技術(shù)與應(yīng)用.北京機(jī)械工業(yè)出版社,2002551單片機(jī)C20086譚浩強(qiáng)著.C程序設(shè)計(jì).北京:清華大學(xué)出版社,2007;溫度采集智能家居熱水器7王忠飛,胥芳.MCS-51單片機(jī)原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.P268-2738PeterVanDerLinden著,徐波譯.C專家編程,人民郵電出版社,2003附錄1整體電路原理圖附錄2部分源程序#include<reg52.h>#include"eepom52.h"#defineucharunsignedchar#defineuintunsignedint/***********************************本設(shè)計(jì)系統(tǒng)是18b20溫度報(bào)警系統(tǒng)數(shù)碼管顯示,可設(shè)置溫度上限高溫報(bào)警和下限低溫報(bào)警,報(bào)警溫度可精確到0.1度,并具有掉電保存功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM中,進(jìn)入設(shè)置界面后如果沒有鍵按下系統(tǒng)會(huì)在30秒后自動(dòng)退出設(shè)置界面,人性化的按鍵設(shè)置,按鍵還具有連加、減功能。**********************************///數(shù)碼管段選定義789ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};ucharsmg_i=3;//顯示數(shù)碼管的個(gè)位數(shù)sbitdq=P2^4;//18b20IO口的定義sbitrelay=P2^5;//繼電器IO口定義sbitbeep=P2^3;//蜂鳴器IO口定義uchara_a;uinttemperature;//bitflag_300ms;溫度采集智能家居熱水器ucharkey_can;//按鍵值的變量ucharmenu_1;//菜單設(shè)計(jì)的變量uintt_high=300,t_low=100;bitflag_lj_en;//按鍵連加使能bitflag_lj_3_en;//按鍵連3次連加后使能加的數(shù)就越大了ucharkey_time,flag_value;//用做連加的中間變量bitkey_500ms;ucharflag_clock;ucharzd_break_en,zd_break_value;//自動(dòng)退出設(shè)置界面/***********************1ms延時(shí)函數(shù)*****************************/voiddelay_1ms(uintq){uinti,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/***********************小延時(shí)函數(shù)*****************************/voiddelay_uint(uintq){while(q--);}/***********************數(shù)碼顯示函數(shù)*****************************/voiddisplay(){uchari;for(i=0;i<smg_i;i++){P3=smg_we[i];//位選P1=dis_smg[i];//段選delay_1ms(1);P3=0xff;//位選P1=0xff;//消隱}溫度采集智能家居熱水器}/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eepom中******************/voidwrite_eepom(){SectorErase(0x2000);byte_write(0x2000,t_high%256);byte_write(0x2001,t_high/256);byte_write(0x2002,t_low%256);byte_write(0x2003,t_low/256);byte_write(0x2055,a_a);}/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來*****************/voidread_eepom(){t_high=byte_read(0x2001);t_high<<=8;t_high|=byte_read(0x2000);t_low=byte_read(0x2003);t_low<<=8;t_low|=byte_read(0x2002);a_a=byte_read(0x2055);}/***********************18b20初始化函數(shù)*****************************/voidinit_18b20(){bitq;dq=1;//把總線拿高delay_uint(1);//15usdq=0;//給復(fù)位脈沖delay_uint(80);//750usdq=1;//把總線拿高等待delay_uint(10);//110usq=dq;//讀取18b20初始化信號(hào)溫度采集智能家居熱水器delay_uint(20);//200usdq=1;//把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){uchari;for(i=0;i<8;i++){//寫數(shù)據(jù)是低位開始dq=0;//把總線拿低寫時(shí)間隙開始dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了delay_uint(5);//60usdq=1;//釋放總線dat>>=1;}}/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){uchari,value;for(i=0;i<8;i++){dq=0;//把總線拿低讀時(shí)間隙開始value>>=1;//讀數(shù)據(jù)是低位開始dq=1;//釋放總線if(dq==1)//開始讀寫數(shù)據(jù)value|=0x80;delay_uint(5);//60us讀一個(gè)時(shí)間隙最少要保持60us的時(shí)間}returnvalue;//返回?cái)?shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp()溫度采集智能家居熱水器{uintvalue;ucharlow;//18b20的時(shí)序init_18b20();//初始化18b20write_18b20(0xcc);//跳過64位ROMwrite_18b20(0x44);//啟動(dòng)一次溫度轉(zhuǎn)換命令delay_uint(50);//500usinit_18b20();//初始化18b20write_18b20(0xcc);//跳過64位ROMwrite_18b20(0xbe);//發(fā)出讀取暫存器命令EA=0;low=read_18b20();//讀溫度低字節(jié)value=read_18b20();//讀溫度高字節(jié)EA=1;value<<=8;//把溫度的高位左移8位value|=low;//把讀出的溫度低位放到value的低八位中value*=0.625;//轉(zhuǎn)換到溫度值小數(shù)returnvalue;//返回讀出的溫度帶小數(shù)}/*************定時(shí)器0初始化程序***************/voidtime_init(){EA=1;//開總中斷TMOD=0X01;//定時(shí)器0、定時(shí)器1工作方式1ET0=1;//開定時(shí)器0中斷TR0=1;//允許定時(shí)器0定時(shí)}/****************獨(dú)立按鍵處理函數(shù)************************/voidkey(){staticucharkey_new=0,key_old=0,key_value=0;if(key_new==0)溫度采集智能家居熱水器{//按鍵松開的時(shí)候做松手檢測(cè)if((P2&0x0f)==0x0f)key_value++;elsekey_value=0;if(key_value>=10){write_eepom();key_value=0;key_new=1;flag_lj_en=0;//關(guān)閉連加使能flag_lj_3_en=0;//關(guān)閉3秒后使能flag_value=0;//清零}}else{if((P2&0x0f)!=0x0f)key_value++;//按鍵按下的時(shí)候elsekey_value=0;if(key_value>=7){key_value=0;key_new=0;flag_lj_en=1;//連加使能zd_break_en=1;//自動(dòng)退出設(shè)置界使能zd_break_value=0;//自動(dòng)退出設(shè)置界變量清零}}key_can=20;if(key_500ms==1){溫度采集智能家居熱水器key_500ms=0;zd_break_en=1;//自動(dòng)退出設(shè)置界使能zd_break_value=0;//自動(dòng)退出設(shè)置界變量清零key_new=0;key_old=1;}if((key_new==0)&&(key_old==1)){switch(P2&0x0f){case0x0e:key_can=4;break;//得到k1鍵值case0x0d:key_can=3;break;//得到k2鍵值case0x0b:key_can=2;break;//得到k3鍵值case0x07:key_can=1;break;//得到k4鍵值}}key_old=key_new;}/****************按鍵處理數(shù)碼管顯示函數(shù)***************/voidkey_with(){if(key_can==4){menu_1++;if(menu_1>=3){menu_1=0;}if(menu_1==0){dis_smg[0]=smg_du[temperature%10];//取溫度的小數(shù)顯示dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取溫度的個(gè)位顯示dis_smg[2]=smg_du[temperature/100%10];//取溫度的十位顯示溫度采集智能家居熱水器smg_i=3;}if(menu_1==1){dis_smg[0]=smg_du[t_high%10];//取小數(shù)顯示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個(gè)位顯示dis_smg[2]=smg_du[t_high/100%10];//取low十位顯示dis_smg[3]=0x89;smg_i=4;}if(menu_1==2){dis_smg[0]=smg_du[t_low%10];//取low小數(shù)顯示dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個(gè)位顯示dis_smg[2]=smg_du[t_low/100%10];//取十位顯示dis_smg[3]=0xc7;smg_i=4;}}if(menu_1==1)//設(shè)置高溫報(bào)警{if(key_can==3){if(flag_lj_3_en==0)t_high++;//按鍵按下未松開自動(dòng)加三次elset_high+=10;//按鍵按下未松開自動(dòng)加三次之后每次自動(dòng)加10if(t_high>990)t_high=990;dis_smg[0]=smg_du[t_high%10];//取小數(shù)顯示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個(gè)位顯示dis_smg[2]=smg_du[t_high/100%10];//取十位顯示dis_smg[3]=0x89;//H溫度采集智能家居熱水器}if(key_can==2){if(flag_lj_3_en==0)t_high--;//按鍵按下未松開自動(dòng)加三次elset_high-=10;//按鍵按下未松開自動(dòng)減三次之后每次自動(dòng)減10if(t_high<=t_low)t_high=t_low+1;dis_smg[0]=smg_du[t_high%10];//取小數(shù)顯示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個(gè)位顯示dis_smg[2]=smg_du[t_high/100%10];//取十位顯示dis_smg[3]=0x89;//H}}if(menu_1==2)//設(shè)置低溫報(bào)警{if(key_can==3){if(flag_lj_3_en==0)t_low++;elset_low+=10;if(t_low>=t_high)t_low=t_high-1;dis_smg[0]=smg_du[t_low%10];//取小數(shù)顯示dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個(gè)位顯示dis_smg[2]=smg_du[t_low/100%10];//取十位顯示dis_smg[3]=0xc7;//L}if(key_can==2){if(flag_lj_3_en==0)溫度采集智能家居熱水器t_low--;elset_low-=10;if(t_low<=10)t_low=10;dis_smg[0]=smg_du[t_low%10];//取小數(shù)顯示

溫馨提示

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