基于單片機(jī)的智能化熱水壺設(shè)計_第1頁
基于單片機(jī)的智能化熱水壺設(shè)計_第2頁
基于單片機(jī)的智能化熱水壺設(shè)計_第3頁
基于單片機(jī)的智能化熱水壺設(shè)計_第4頁
基于單片機(jī)的智能化熱水壺設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./目錄內(nèi)容摘要1關(guān)鍵詞1第1章緒論21.1研究背景21.2研究目的與意義21.3熱水壺發(fā)展現(xiàn)狀3第2章系統(tǒng)總體設(shè)計42.1設(shè)計總體思路42.2系統(tǒng)總設(shè)計框圖42.3主要模塊功能簡介42.4外部配件材料的選擇5第3章硬件模塊電路設(shè)計63.1硬件組成部分63.2主要模塊電路設(shè)計6單片機(jī)模塊6溫度檢測模塊7液晶顯示模塊8按鍵控制模塊83.2總系統(tǒng)電路9第4章軟件模塊電路設(shè)計104.1設(shè)計總體思路104.2燒開水功能設(shè)計特點(diǎn)104.3控制程序工作流圖104.4系統(tǒng)主程序11第5章系統(tǒng)測試125.1硬件部分測試125.1.1熱水壺功能測試125.1.2系統(tǒng)誤差分析125.2軟件部分測試125.3結(jié)果分析12結(jié)論14致謝15參考文獻(xiàn)16附錄1電路原理圖與PCB圖17附錄2系統(tǒng)總程序代碼19附錄3元器件清單30附錄4設(shè)計實物圖31[Abstract] 32基于單片機(jī)的智能熱水壺系統(tǒng)設(shè)計[內(nèi)容摘要]在日常生活中,熱水壺有著十分廣泛的應(yīng)用領(lǐng)域。熱水壺是結(jié)合用戶的實際需求和現(xiàn)代社會需要的一種智能產(chǎn)品,于是本次設(shè)計了以單片機(jī)為核心器件,結(jié)合人性化的理念,最終實現(xiàn)智能的控制電路和程序設(shè)計的智能熱水壺。本設(shè)計實現(xiàn)了日常燒開水功能,以及通過按鍵設(shè)定溫度加熱冷水,達(dá)到設(shè)定溫度后,通過蜂鳴器提醒用戶并自動斷電,同時液晶顯示屏顯示即時溫度等拓展功能。本設(shè)計硬件部分由單片機(jī)芯片、溫度檢測,蜂鳴報警、液晶顯示等模塊,同時利用了單片機(jī)的智能性,軟件部分在keiluvision開發(fā)環(huán)境中使用C語言編寫軟件程序,實現(xiàn)了對水溫的智能控制,其具有生活化、實用性強(qiáng)的特點(diǎn)。[關(guān)鍵詞]單片機(jī);智能;熱水壺;DS18B20;燒水;.第1章緒論1.1研究背景近年來,隨著單片機(jī)技術(shù)的發(fā)展,單片機(jī)的應(yīng)用研究不斷深入,傳統(tǒng)控制檢測快速更新。在實時檢測和自動控制的系統(tǒng)中,單片機(jī)通常是作為一個核心部件,基于具體的硬件結(jié)構(gòu)和應(yīng)用對象的應(yīng)用特點(diǎn),并結(jié)合軟件改進(jìn)控制系統(tǒng),代替復(fù)雜的電子電路或數(shù)字電路,通過軟件控制外圍電路,確保智能化能夠?qū)崿F(xiàn)。單片機(jī)應(yīng)用于范圍廣泛的智能產(chǎn)品中,如智能儀表、實時工業(yè)控制、通信設(shè)備、導(dǎo)航系統(tǒng)、家用電器等,單片機(jī)應(yīng)用在生產(chǎn)中時,其可以使產(chǎn)品升級換代,常在產(chǎn)品名前端冠名——"智能"。熱水壺是在日常生活中需要的實際需求和用戶相關(guān)的現(xiàn)代社會的產(chǎn)物,是一種單片機(jī)控制的智能產(chǎn)品。隨著科技的發(fā)展和社會的進(jìn)步,人們的生活質(zhì)量在逐步增加。近年來,各種智能設(shè)備不斷更新,如智能手機(jī)、智能水壺走進(jìn)我們的生活。由于其自身的優(yōu)點(diǎn),安全、智能電水壺在生活中有著廣泛的應(yīng)用。1.2研究目的與意義目前市場上品種繁多的開水壺存在著功能比較單一、不夠完善等不足,所以我們在普通的燒水壺基礎(chǔ)上利用所學(xué)單片機(jī)知識添加了一些方便實用的功能,如設(shè)溫加熱、蜂鳴提示、顯示即時溫度的功能,使產(chǎn)品更加人性化,日常使用更加方便。隨著社會的快速發(fā)展,智能新產(chǎn)品相繼出現(xiàn),比如數(shù)碼相機(jī)、平板電腦等一系列的新鮮的事物,人們的日常生活中也發(fā)生了極大的變化。本設(shè)計以探究智能新產(chǎn)品工作原理為出發(fā)點(diǎn),基于單片機(jī)設(shè)計了一款智能熱水壺,設(shè)計過程考查了我們綜合運(yùn)用所學(xué)知識的能力,包括以前學(xué)過的關(guān)于單片機(jī)編程與應(yīng)用、電裝實習(xí)等的知識,同時我對當(dāng)前的電子產(chǎn)業(yè)發(fā)展的新趨勢有了一定的了解,實際動手能力和模擬實際產(chǎn)品的開發(fā)能力也得到了鍛煉,對應(yīng)屆大學(xué)生日后工作能力的培養(yǎng)具有重要的意義。本次設(shè)計也培養(yǎng)了我理解工程技術(shù)的工作中需要的整體觀和經(jīng)濟(jì)觀,同時提高掌握設(shè)計的各種方案以及技術(shù)指標(biāo)、資料收集、技術(shù)文獻(xiàn),分析計算,描繪電路圖及撰寫論文等能力。1.3熱水壺發(fā)展現(xiàn)狀電熱水壺在中國的發(fā)展史上雖然短暫,發(fā)展速度卻很快。在早期的中國,電熱水壺很早就開始了工業(yè)生產(chǎn),但其主要面向出口。電熱水壺具有結(jié)構(gòu)簡單、加熱快、節(jié)約能源、操作方便、安全實用、使用壽命長等優(yōu)點(diǎn)。近年來,國內(nèi)市場占有率開始快速增長,市場增長率超過50%。隨著電熱水壺產(chǎn)品消費(fèi)者的意識不斷提高,在國內(nèi)市場電熱水壺的容量有明顯的提升。其次,雖然飲水機(jī)在我國的普及率很高,但由于飲水機(jī)體積大,重復(fù)加熱,存在二次污染的問題,于是提供了電水壺產(chǎn)業(yè)發(fā)展的機(jī)會[1]。第2章設(shè)計方案概述2.1總體設(shè)計思路本次智能熱水壺的設(shè)計方案利用單片機(jī)軟件系統(tǒng)為工作環(huán)境,不僅實現(xiàn)基本的燒開水以及燒開后斷電功能,并且結(jié)合按鍵控制溫度的設(shè)定,可加熱冷水至指定溫度,蜂鳴器報警,隨后熱水壺斷電,同時液晶顯示屏顯示即時溫度。2.2系統(tǒng)總設(shè)計框圖初步確定電路系統(tǒng)由以下模塊組成,電路系統(tǒng)框圖如圖2-1所示。加熱裝置-繼電器蜂鳴報警器液晶顯示-LM160L溫度檢測-DS18B20電源供電按鍵控制ST89C52RC單片機(jī)加熱裝置-繼電器蜂鳴報警器液晶顯示-LM160L溫度檢測-DS18B20電源供電按鍵控制ST89C52RC單片機(jī)圖2-1電路系統(tǒng)框圖2.3主要模塊電路功能簡介1、單片機(jī)模塊作為智能熱水壺設(shè)計的控制中心,單片機(jī)用于驅(qū)動整個熱水壺系統(tǒng)的運(yùn)作,如液晶屏上的溫度顯示、接收傳感器中的溫度信號以及按鍵信號、LED上顯示溫度等[2]。2、溫度檢測模塊周期性采集溫度信號,判斷是否達(dá)到預(yù)設(shè)溫度,傳送至單片機(jī)內(nèi)處理。3、液晶顯示模塊顯示水壺內(nèi)熱水的即時溫度,便于用戶隨時掌控溫度變化。4、控制按鍵模塊三個獨(dú)立按鍵組成一個獨(dú)立鍵盤,連接單片機(jī)的I/O端口,對單片機(jī)輸入控制信號,用于設(shè)溫加熱模式時控制設(shè)定溫度的加或減,以及單片機(jī)的啟動與停止。模式設(shè)定由一個獨(dú)立按鍵組成,當(dāng)按下按鍵,液晶顯示屏右下角顯示"1",即為燒開水模式;再次按下按鍵,液晶顯示屏右下角顯示"2",即為設(shè)溫加熱模式;顯示"0"為停止加熱狀態(tài)。5、加熱裝置模塊用于加熱水壺中的水,使水達(dá)到設(shè)定的溫度。6、蜂鳴器模塊當(dāng)冷水加熱到指定溫度時發(fā)出報警聲提示用戶。7、電源模塊用于給整個設(shè)計系統(tǒng)提供電。2.4外部配件材料的選擇本熱水壺采用220V200W的制式,水壺的選用優(yōu)先考慮耐高溫的合金材料,繼電器連接加熱片來加熱壺底來實現(xiàn)燒水。在水壺底部和加熱片上都涂上一層導(dǎo)熱膠,使冷水受熱均勻、加熱的速度更快,減少等待時間。水壺蓋上開孔一個邊長約為40mm的方洞,便于放入測溫探頭、散去蒸汽,避免暴沸。硬件模塊電路設(shè)計3.1硬件組成部分確定了本次設(shè)計需要實現(xiàn)的功能后,針對燒開水、加熱冷水、顯示溫度的功能,設(shè)計的硬件部分主要由單片機(jī)模塊、溫度控制模塊、液晶顯示模塊、按鍵控制模塊構(gòu)成。3.2主要模塊電路設(shè)計3.2.1單片機(jī)模塊相比于普通的微型計算機(jī),單片機(jī)具有以下特點(diǎn):體積小,結(jié)構(gòu)簡單,控制能力強(qiáng),可靠性高,集成度高,抗干擾能力強(qiáng),磁屏蔽能力強(qiáng),適合在惡劣環(huán)境下工作,以及低電壓,低功耗,性價比較高,開發(fā)周期短等。其中,STC89C52是STC公司生產(chǎn)的一種CMOS8位微控制器。STC89C52使用MCS-51內(nèi)核,但做了許多改進(jìn)使芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,由于靈巧的8位CPU和在系統(tǒng)可編程Flash,STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供靈活、有效的解決方案[3]。STC89C52RC芯片如圖3-1所示。圖3-1STC89C52RC芯片STC89C52單片機(jī)系統(tǒng)由單片機(jī)、時鐘電路、復(fù)位電路組成,其具有以下功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,定時器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)〔兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu),全雙工串行口。STC89C52也可降至0Hz靜態(tài)邏輯操作,支持2種軟件,還可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選[4]。本次設(shè)計采用STC89C52RC型號單片機(jī),且單片機(jī)采用內(nèi)部時鐘方式,在MCS-51電路外接晶體以及電容C4和C5組成并聯(lián)諧振電路且構(gòu)成一個自激振蕩器,接在放大器的反饋回路中,向內(nèi)部電路提供震蕩時鐘。在本次設(shè)計中晶體選擇1.2MHz頻率,而電容C4和C5的選擇為30pF的典型值。單片機(jī)中的復(fù)位電路采用上電自動復(fù)位和按鍵復(fù)位的方式。3.2.2溫度控制模塊比較熱電偶溫度傳感器,它的實現(xiàn)過程為:靠光敏電阻檢測光照的大小,光照的大小改變電阻的大小,再給電阻一個外加電壓,就改變了電壓的大小,再用轉(zhuǎn)換器件檢測電壓的變化并轉(zhuǎn)換為數(shù)字信號,隨后傳到單片機(jī)上作一定的處理后去控制相應(yīng)的數(shù)碼管來顯示當(dāng)時的溫度。而對DS18B20來說過程則簡單許多,熱電偶電阻傳感器一直到單片機(jī)之前的部分都可以用一個DS18B20來代替,從而真正的實現(xiàn)了數(shù)字化[5]。本設(shè)計系統(tǒng)采用的是DS18B20溫度傳感器,DS18B20是美國達(dá)拉斯公司生產(chǎn)的一款產(chǎn)品,是一線式數(shù)字化傳感器。工作電源可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。低功耗、微型化、抗干擾能力很強(qiáng),可根據(jù)實際要求通過簡單的編程實現(xiàn)數(shù)字讀數(shù)方式,便于與微處理器進(jìn)行接口。電路簡單,實現(xiàn)起來比較容易,幾乎適用于所有類型的單片機(jī)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。[6]DS18B20引腳圖以及內(nèi)部系統(tǒng)框圖如圖3-2、3-3所示。圖3-2DS18B20引腳圖圖3-3DS18B20內(nèi)部系統(tǒng)框圖3.2.3液晶顯示模塊本次設(shè)計采用的液晶顯示屏為LM016L,除了PROTEUS中016沒有顯示調(diào)亮度的兩個端口,它與LCD1602具有相同的原理。它可以顯示兩行,每行16個字符,因此可相當(dāng)于32個LED數(shù)碼管,而且比數(shù)碼管顯示的信息還多。采用單+5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比[7]。在單片機(jī)系統(tǒng)中應(yīng)用液晶顯示屏具有以下優(yōu)點(diǎn):顯示質(zhì)量高、數(shù)字式接口、體積小、重量輕、功耗低,在嵌入式應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用。液晶顯示屏、LCD1602管腳分布圖如圖3-4、3-5所示。圖3-4液晶顯示屏圖3-5LCD1602管腳分布圖3.2.4按鍵控制電路三個按鍵構(gòu)成一個獨(dú)立鍵盤,一端分別接單片機(jī)的P0.5、P0.6和P0.7口,另一端接地。通過單片機(jī)的掃描查詢,判斷按鍵是否按下,當(dāng)沒有按鍵按下時,P0口輸入為高電平,反之則為低電平[8]。3.2.5電源供電電路由于本設(shè)計的模塊都采用直流+5V供電,于是直接采用三端穩(wěn)壓器供電,省去了復(fù)雜的電源變壓電路。再考慮到單片機(jī)和液晶顯示屏的功耗,使用電池供電比較費(fèi)電,并且電流也達(dá)不到要求,所以也直接用三端穩(wěn)壓器供電,電流大、電壓穩(wěn)定。3.3總系統(tǒng)電路總系統(tǒng)電路原理圖以及PCB圖詳見附錄1。第四章軟件模塊電路設(shè)計4.1設(shè)計總體思路本設(shè)計采用51單片機(jī)系統(tǒng)固件,基于keiluVision4開發(fā)環(huán)境,使用C語言編寫程序[9]。程序需要實現(xiàn)以下需求:1、一般熱水壺都具有的燒開水功能。2、指定溫度加熱冷水。切換模式后,按下加或減按鍵調(diào)節(jié)需要設(shè)定的溫度,到水溫到達(dá)指定溫度后熱水壺自動斷電。3、LM016L液晶顯示屏上顯示即時溫度、設(shè)定溫度以及工作模式。4.2燒開水功能設(shè)計特點(diǎn)由于不同的地域氣壓差異,當(dāng)溫度達(dá)到100度時,水不一定能燒開,甚至在海拔較高的地區(qū)水不能加熱到100度。于是本設(shè)計中相應(yīng)的在溫度控制模塊中采用周期性采樣溫度的方式,每10s保存一次溫度值,通過每次的采樣進(jìn)行比較進(jìn)而尋找水溫的最大值,如果沒有更大的水溫值,則水達(dá)到沸點(diǎn),若溫度穩(wěn)定持續(xù)超過3分鐘,并且水溫超過80度,此時可判斷水燒開了,隨后熱水壺自動斷開電源。程序執(zhí)行采用定時器中斷方式,提高了系統(tǒng)的響應(yīng)速度[10]。4.3控制程序工作流圖根據(jù)設(shè)計的思路和目標(biāo)功能,確立了軟件的工作流圖。控制程序工作流圖如圖4-1所示。圖4-1控制程序工作流圖4.4系統(tǒng)主程序系統(tǒng)主程序代碼詳見附錄2。第5章系統(tǒng)測試5.1硬件部分測試本設(shè)計首先在ProtelAltiumDesignerSummer09軟件上繪制出原理圖,并且完成PCB的設(shè)計,之后送至電路板制版工廠完成主控雙面電路板的制作,自行動手完成元器件的焊接和測試。焊接過程需要謹(jǐn)慎認(rèn)真的態(tài)度,先焊好主控芯片,最后焊接其它元器件,焊接結(jié)束后用萬用表歐姆檔對照原理圖進(jìn)行電路檢測,檢測其導(dǎo)通情況以及是否有短路或虛焊現(xiàn)象并及時修正。確保一切正常后,下載測試程序檢測主控核心板是否能正常工作,經(jīng)檢測,主控核心板能達(dá)到預(yù)期的工作效果,可以作為本系統(tǒng)的主控部件。5.1.1熱水壺功能測試在水壺內(nèi)盛上大約100ml的冷水,放置在涂上一層導(dǎo)熱膠的加熱板上,將1個DS18B20溫度傳感器探頭放進(jìn)水中用于檢測實時溫度,再將程序下載至主控板內(nèi)后接通電源,選擇"1"模式開始燒水,觀察并記錄如下:1.獨(dú)立按鍵設(shè)定工作模式,在液晶顯示屏上正常顯示實時水溫和工作模式。2.大約10分鐘后,水燒開,蜂鳴器報警,顯示屏上顯示"Boiling",隨后斷電。重復(fù)測燒開水時的溫度和所用時間5次,得到的結(jié)果如表5-1所示:12345開水溫度/度99.5199.4999.5299.5199.50所用時間9分58秒9分56秒9分58秒9分57秒9分58秒重新在水壺內(nèi)盛上大約100ml的冷水,重復(fù)燒開水前的準(zhǔn)備步驟,接通電源,按兩下模式按鍵,選擇"2"模式,起始水溫為26.41度,再通過溫度加減按鍵調(diào)節(jié)設(shè)定溫度,設(shè)定50度后,等待大約5分鐘后到達(dá)設(shè)定溫度,蜂鳴器報警,隨后斷電。重復(fù)測設(shè)定溫度50度時的實際斷電溫度和所用時間5次,得到的結(jié)果如表5-2所示:12345實際溫度/度51.2250.9951.1851.2351.21所用時間4分44秒4分40秒4分41秒4分42秒4分45秒5.1.2系統(tǒng)誤差分析分析整個測試過程,總結(jié)出有幾點(diǎn)誤差:1.溫度檢測引起的誤差。本設(shè)計溫度檢測中存在的誤差是在可以接受的范圍內(nèi)的,由于DS18B20本身存在一定的系統(tǒng)誤差,以及檢測過程中溫度環(huán)境不均勻、水流滾動影響等因素,因此設(shè)計采用周期采樣溫度的方法測定溫度。2.繼電器引起的誤差。隨著繼電器對電熱管的加熱,水溫升高,電流流經(jīng)SSR減小,因此交流的負(fù)載增加干擾信號也就不足為奇,SSR誤導(dǎo)通。3.電壓波動引起的誤差。5.2軟件部分測試本設(shè)計使用C語言在keiluvision開發(fā)環(huán)境下進(jìn)行編程,該軟件兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),編譯過程中對于出錯的地方給出清楚的位置,方便開發(fā)者改進(jìn)錯誤。在編程的基礎(chǔ)上,整個調(diào)試的工作包括工程的建立和函數(shù)的調(diào)用,檢查包含的頭文件是否正確,分模塊檢查,根據(jù)設(shè)計的要求檢查初始化程序,以及優(yōu)化程序結(jié)構(gòu)。經(jīng)過反復(fù)的測試后,確定系統(tǒng)能夠正常工作,系統(tǒng)功能得到了良好的實現(xiàn),設(shè)計的軟件部分測試完成。5.3結(jié)果分析經(jīng)過對系統(tǒng)的硬件以及軟件部分的反復(fù)測試,在兩種功能模式下,系統(tǒng)各模塊都能夠正常工作??傮w來說,這些功能的實現(xiàn)達(dá)到了畢業(yè)設(shè)計題目上的要求,并且本設(shè)計的外形設(shè)計提高了安全性和靈活性,具有操作簡單、實用等特點(diǎn)。本設(shè)計的成本較低,便于進(jìn)行工業(yè)生產(chǎn),投入日常生活中使用,從這個角度來說,本設(shè)計具有一定的實用意義。結(jié)論通過硬件和軟件的設(shè)計,我制作了智能熱水壺,本次設(shè)計的各項目標(biāo)功能都已實現(xiàn),包括用燒開水、按鍵設(shè)置溫度、指定溫度加熱冷水、達(dá)到設(shè)定溫度時自動斷電等。通過這次設(shè)計,自己努力學(xué)習(xí)、認(rèn)真設(shè)計,從搜集資料、分析和確定方案,我學(xué)習(xí)到了電路板的制作與程序的編寫等操作技能,通過單片機(jī)編程和焊接電路板等實踐方面的學(xué)習(xí)積累了自己的動手經(jīng)驗。在此期間,我充分的鍛煉了我的自學(xué)能力,明白了學(xué)習(xí)生活中要有不輕言放棄的毅力。同時也領(lǐng)悟到不要在乎作品完成得是否完美,重要的是自己所學(xué)的在實踐中如何應(yīng)用以及怎樣應(yīng)用到最好。本次設(shè)計的硬件模塊電路部分比較簡單,大部分熱水壺功能是由軟件程序?qū)崿F(xiàn)。在編程過程中,我重新復(fù)習(xí)了許多匯編語言的編程技巧,最終編寫的程序更加靈活;另外我還學(xué)習(xí)了代碼的優(yōu)化技巧,逐漸養(yǎng)成了良好的編程習(xí)慣,寫出了高質(zhì)量的程序代碼,為今后的學(xué)習(xí)工作打下了良好的基礎(chǔ)。致謝經(jīng)過三個月的忙碌和工作,我的畢業(yè)設(shè)計已經(jīng)接近尾聲。由于經(jīng)驗的匱乏,本次畢業(yè)設(shè)計難免有許多考慮不周和制作不好的地方,如果沒有導(dǎo)師的指導(dǎo)與督促,以及一起制作設(shè)計的同學(xué)們支持,要去完成這個設(shè)計是難上加難的。在這里首先要感謝我的導(dǎo)師。她平日里工作繁多,但在我做畢業(yè)設(shè)計的過程中,從設(shè)計方案的確定和修改、中期檢查指導(dǎo)、后期完善修改、論文的規(guī)范修改等方面都給予了我耐心的指導(dǎo)。其次還要感謝所有幫助過我的老師,感謝電子工程學(xué)院所提供的實驗室,在焊接和調(diào)試電路時給我們帶來了極大的方便。在這里,我要再一次對我的導(dǎo)師以及電子工程學(xué)院的全體老師們表示深深的謝意,在你們的支持與幫助下我順利的完成了此次畢業(yè)設(shè)計。參考文獻(xiàn)[1]中國行業(yè)研究網(wǎng).電水壺發(fā)展的三大趨勢,2007.[2]XX工程技術(shù)師范學(xué)院.智能水壺.2009.[3]周鵬.基于STC89C52單片機(jī)的溫度檢測系統(tǒng)設(shè)計.現(xiàn)代電子技術(shù),2012.[4]STC89C51RC單片機(jī)官方技術(shù)資料.STC官網(wǎng)[5]XX航空航天大學(xué)金城學(xué)院.一個單片機(jī)實現(xiàn)溫度傳感網(wǎng)絡(luò)并用數(shù)碼管顯示的設(shè)計,2013.[6]王歡,王忠慶,岳利維.基于STC89C52RC單片機(jī)的溫度報警系統(tǒng)的設(shè)計與實現(xiàn).XX職業(yè)技術(shù)學(xué)院學(xué)報,2011.[7]趙亮.跟我學(xué)51單片機(jī)<七>——LCD1602液晶顯示模塊.2011.[8]吉小輝,陳育中.電水壺自動斷電控制器的研究與設(shè)計.電子設(shè)計工程,2013.[9]譚浩強(qiáng).C語言程序設(shè)計<第二版>.清華大學(xué)出版社,1999.[10]薛江玉,張鵬,冀鵬,宋玉倩.基于單片機(jī)的智能燒水壺,2011..附錄1電路原理圖、PCB圖附錄2系統(tǒng)主程序代碼[main.c]include<reg52.h>#include"STC89C52RC.h"#include"Lm016l.h"#include"DS18B20.h"#defineTIMER0TIMEH 0x3C#defineTIMER0TIMEL 0xB0#defineHEATON 0#defineHEATOFF 1#defineBUZZERON 0#defineBUZZEROFF 1#defineSETTEMPUPLMT 100#defineSETTEMPDOWNLMT 30sbitBuzzer=P3^7;sbitKeyMode=P0^5;sbitKeyUp=P0^6;sbitKeyDown=P0^7;sbitHeat=P3^6; //加熱控制sbitReserve=P2^3;sbitBackLight=P4^3;//測試用sbitTest1=P3^2;sbitTest2=P3^3;sbitTest3=P3^4;sbitTest4=P3^5;//定義幾個全局變量unsignedchartimeflag;intRlTemp; //這里定義為int比較時也用int型比較intsvRlTemp; //保存一次溫度值intpvTemp; //前兩秒的溫度值intMaxTemp; //用于尋找最大溫度值//*************************************************************//*初始化定時器0這里設(shè)置50ms定時//*************************************************************voidConfigTimer0<>{ TMOD|=0x01; TH0=TIMER0TIMEH; // TL0=TIMER0TIMEL; ET0=1; // TR0=1; // EA=1;}voidSysInit<>{ InitLCDLm016l<>; InitDs18b20<>; ConfigTimer0<>;}voiddelay<unsignedintx>{ unsignedinty; for<;x>0;x--> for<y=110;y>0;y-->;}/*voidGetAndDisplay<>{ stt=GetDs18b20Temperature<&temp>; if<stt> WriteLm016lString<0,0,"error">; else { Integer2String<temp,str>; WriteLm016lString<0,0,str>; fttp=Ds18b20Convert2Temperature<temp>; n=Float2String<fttp,2,str>; WriteLm016lString<0,1,str>; WriteLm016lChar<n,1,0x08>; //這里0x08為第一個自造字符 }}*/unsignedintabs<inta,intb>{ unsignedintrlt; if<a>=b>rlt=a-b; elserlt=b-a; returnrlt;}//*************************************************************//*判斷水是否開了//*************************************************************unsignedcharIsWaterBoiling<>{ staticunsignedcharstb=0;// if<abs<RlTemp,pvTemp><=4> //小于+-0.25度// {// stb++;// }// else// {// stb=0;// } //換種方式判斷:找最大值如果沒有更大的值則到達(dá)沸點(diǎn) if<RlTemp>MaxTemp>{MaxTemp=RlTemp;stb=0;} else{stb++;} //判斷 if<<stb>=120>&&<RlTemp>1280>> { //如果溫度穩(wěn)定持續(xù)超過3min,并且水溫超過80度,則認(rèn)為水開了 stb=0; return1; } else return0;}voidBuzzerLight<unsignedcharn>{ for<;n>0;n--> { Buzzer=BUZZERON; delay<50>; Buzzer=BUZZEROFF; delay<30>; }}//*************************************************************//*初始化定時器0這里設(shè)置50ms定時//*************************************************************voidmain<>{ inttemp; floatfttp; unsignedcharstt; unsignedcharstr[16]; unsignedchari,n; unsignedcharmode; unsignedcharsettp; intsettpint; unsignedcharblflag=0; SysInit<>; // i=0; settp=50; settpint=settp; settpint<<=4; WriteLm016lChar<15,1,mode+'0'>; GetDs18b20Temperature<&temp>; while<1> { //采集溫度 if<timeflag&0x01> { timeflag&=0xfe; Test1=~Test1; stt=GetDs18b20Temperature<&temp>; if<stt> { //WriteLm016lString<0,0,"NoDs18b20">; } else { //保存溫度 i++; if<i>=10>//每10s保存一次溫度值 { i=0; pvTemp=temp; } svRlTemp=RlTemp; //這里不需要了 RlTemp=temp; } } //顯示 if<stt> WriteLm016lString<0,0,"NoDs18b20">; else { n=String2StringArray<"T=\0",str>; fttp=Ds18b20Convert2Temperature<temp>; n+=Float2String<fttp,2,&str[n]>; str[n]=0x08;n+=1; n+=String2StringArray<"\0",&str[n]>; //清除后面字符 WriteLm016lString<0,0,str>; // WriteLm016lChar<n,0,0x08>; //這里0x08為第一個自造字符 } // if<mode==0x02> { //顯示設(shè)定溫度值 n=String2StringArray<"Set=",str>; n+=Integer2String<settp,&str[n]>; str[n]=0x08;n+=1; n+=String2StringArray<"\0",&str[n]>; //清除后面字符 WriteLm016lString<0,1,str>; // WriteLm016lChar<n,1,0x08>; } //模式切換 switch<mode> { case0x00: //關(guān)閉模式 Heat=HEATOFF;Buzzer=BUZZEROFF; blflag=0;MaxTemp=0; break; case0x01: //燒開水模式 if<timeflag&0x02> //共用1s定時 { timeflag&=0xfd; Test2=~Test2; if<blflag> { // Buzzer=BUZZERON; Heat=HEATOFF; BuzzerLight<3>; WriteLm016lString<0,1,"Boiling">; } else { Heat=HEATON; blflag=IsWaterBoiling<>; } } break; case0x02: //指定加熱模式 if<timeflag&0x04> { timeflag&=0xfb; Test3=~Test3; if<RlTemp>settpint> { Heat=HEATOFF; // Buzzer=BUZZERON; BuzzerLight<3>; } else { Heat=HEATON; Buzzer=BUZZEROFF; } } break; default: mode=0; break; } //按鍵監(jiān)測 if<!KeyMode> { delay<10>; while<!KeyMode>; //等待釋放 if<!stt> mode++; //如果18b20不存在則不能切換模式 if<mode>2>mode=0; // String2StringArray<"",str>; WriteLm016lString<0,1,str>; // WriteLm016lChar<15,1,mode+'0'>; } if<!KeyUp> { delay<10>; while<!KeyUp>; //等待釋放 settp++; if<settp>SETTEMPUPLMT>settp=SETTEMPDOWNLMT; settpint=settp; settpint<<=4; } if<!KeyDown> { delay<10>; while<!KeyDown>; //等待釋放 settp--; if<settp<SETTEMPD

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論