【基于51單片機(jī)的恒溫足浴器設(shè)計(jì)10000字(論文)】_第1頁(yè)
【基于51單片機(jī)的恒溫足浴器設(shè)計(jì)10000字(論文)】_第2頁(yè)
【基于51單片機(jī)的恒溫足浴器設(shè)計(jì)10000字(論文)】_第3頁(yè)
【基于51單片機(jī)的恒溫足浴器設(shè)計(jì)10000字(論文)】_第4頁(yè)
【基于51單片機(jī)的恒溫足浴器設(shè)計(jì)10000字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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)介

基于51單片機(jī)的恒溫足浴器設(shè)計(jì)摘要:隨著人們生活質(zhì)量的提高,人們開(kāi)始專注于養(yǎng)生。泡腳這一歷史悠久的養(yǎng)生活動(dòng)以其便捷的操作方式理所應(yīng)當(dāng)?shù)某蔀榧壹覒魬羰走x的養(yǎng)生活動(dòng),應(yīng)運(yùn)而生的還有足浴器這一家電。當(dāng)前市場(chǎng)上從功能單一的傳統(tǒng)足浴器到功能豐富的智能足浴器應(yīng)有盡有,但當(dāng)前足浴器設(shè)計(jì)普遍存在著精確度低、個(gè)性化較差的問(wèn)題,如何提高足浴器的精確度和個(gè)性化便是這次設(shè)計(jì)的目的所在。本文參考國(guó)內(nèi)外的學(xué)者研究,以STC89C51單片機(jī)為主控制器、DS18B20為溫度傳感器、LCD1602為顯示器,設(shè)計(jì)了一款精確度高、個(gè)性化強(qiáng)的智能恒溫足浴器。關(guān)鍵詞:足浴器;STC89C51;DS18B20;單片機(jī)目錄TOC\o"1-3"\h\u30047摘要 I14876一、緒論 131807(一)課題的研究意義 110528(二)課題的研究現(xiàn)狀 130860(三)課題的未來(lái)展望 114413二、總體設(shè)計(jì)方案 27788(一)總體設(shè)計(jì)思路 211677(二)STC89C51主控制器介紹 226190三、硬件系統(tǒng)設(shè)計(jì) 318587(一)電源電路 332523(二)復(fù)位電路 431846(三)晶振電路 514398(四)LED電路 526410(五)LCD1602顯示電路 630845(六)蜂鳴器報(bào)警電路 723020(七)DS18B20溫度傳感器電路 726201(八)按鍵控制電路 87190四、軟件系統(tǒng)設(shè)計(jì) 925157(一)主函數(shù)設(shè)計(jì) 912342(二)LCD1602顯示函數(shù)設(shè)計(jì) 118409(三)DS18B20溫度讀取函數(shù)設(shè)計(jì) 1319391(四)獨(dú)立按鍵掃描函數(shù)設(shè)計(jì) 1428685(五)蜂鳴器報(bào)警函數(shù)設(shè)計(jì) 16469(六)加熱控制函數(shù)設(shè)計(jì) 1718265五、仿真及實(shí)物調(diào)試 1824932六、結(jié)語(yǔ) 22489參考文獻(xiàn) 23一、緒論(一)課題的研究意義隨著人們生活質(zhì)量的提高,人們開(kāi)始專注于養(yǎng)生。泡腳這一有3000多年歷史的養(yǎng)生方法因其便捷的操作方式備受推崇,足浴器這一家電也應(yīng)運(yùn)而生。作為輔助人們泡腳的工具,足浴器的好壞直接影響到人們的泡腳體驗(yàn)。要想提高足浴器的使用體驗(yàn),就不得不了解泡腳這一養(yǎng)生方法的內(nèi)在原理。根據(jù)國(guó)內(nèi)外專家研究泡腳保健的原理,特別要指出的是實(shí)現(xiàn)泡腳保健的精髓在于泡腳水溫度。為了實(shí)現(xiàn)這一目的,本文以STC89C51單片機(jī)為主控制器與DS18B20溫度傳感器,設(shè)計(jì)一款精確度高、個(gè)性化強(qiáng)的智能恒溫足浴器,提升人們的泡腳體驗(yàn)。(二)課題的研究現(xiàn)狀足浴器的除了結(jié)構(gòu)以外,最引人注目就是足浴器的核心——控溫。按照平常人的泡腳習(xí)慣,我們泡腳以38-43℃為宜。為了實(shí)現(xiàn)這一目的,當(dāng)前市面上的足浴器普遍采用模擬電路進(jìn)行控溫,當(dāng)然也有更加高端的足浴器采用51位單片機(jī)控溫[1]。此外,足浴器應(yīng)該配備超溫報(bào)警功能,這一功能在足浴器使用過(guò)程中是非常重要的,例如用戶在使用足浴器控溫時(shí)可能會(huì)自行添加熱水,這樣溫度可能就超出了溫度上限,應(yīng)該給出溫度報(bào)警提醒用戶注意安全。但在調(diào)查中發(fā)現(xiàn),一些足浴器并沒(méi)有加入超溫報(bào)警功能,這樣可能導(dǎo)致用戶在使用過(guò)程中出現(xiàn)危險(xiǎn)。除了控溫和報(bào)警這兩方面,當(dāng)前市面上的足浴器的個(gè)性化程度也不夠高,一些低端的足浴器甚至不能設(shè)定溫度值,用戶體驗(yàn)大打折扣[2]。除了控溫和報(bào)警這兩方面,人機(jī)交互體驗(yàn)也是衡量一款足浴器好壞的重要指標(biāo)。當(dāng)前足浴器通常使用數(shù)碼管為顯示部分,高端的足浴器也有使用彩色液晶屏的設(shè)計(jì)但價(jià)格高昂。一些低端的足浴器甚至取消了屏幕這一設(shè)計(jì),直接使用LED表示加熱或不加熱,用戶體驗(yàn)大打折扣[3]。(三)課題的未來(lái)展望結(jié)合了解到的情況,未來(lái)足浴器將向著改進(jìn)結(jié)構(gòu)和增加功能兩個(gè)方面發(fā)展。其中控溫依然會(huì)是足浴器著重考慮的問(wèn)題,增加的功能將以多種多樣的按摩方式為主。此外,以單片機(jī)為主要控制器的足浴器將逐步取代傳統(tǒng)的模擬電路足浴器。二、總體設(shè)計(jì)方案(一)總體設(shè)計(jì)思路本設(shè)計(jì)采用STC89C51單片機(jī)為主控制器,以DS1820為溫度獲取傳感器。為了實(shí)現(xiàn)溫度報(bào)警功能,加入了一個(gè)3.3V驅(qū)動(dòng)的無(wú)源蜂鳴器,其發(fā)音頻率由單片機(jī)的定時(shí)器中斷產(chǎn)生。紅色LED的亮滅代表加熱的開(kāi)關(guān)。人機(jī)交互方面,采用5個(gè)微動(dòng)按鍵分別作為控制模式切換鍵、加熱模式切換鍵、報(bào)警模式切換鍵、設(shè)定溫度增加鍵、設(shè)定溫度減小鍵,本設(shè)計(jì)的顯示器為L(zhǎng)CD1620液晶顯示屏,顯示實(shí)時(shí)溫度、溫度提醒、控制模式、加熱模式、報(bào)警模式、設(shè)定溫度信息。(二)STC89C51主控制器介紹根據(jù)本次設(shè)計(jì)對(duì)于I/O口數(shù)量、功耗、處理速度的要求,主控制器采用了型號(hào)為STC89C51的51位單片機(jī)。此單片機(jī)工作頻率可以達(dá)到72MHz,本次設(shè)計(jì)所采用的工作頻率便是72MHz,它還具有64K的Flash的存儲(chǔ)器,遠(yuǎn)遠(yuǎn)滿足了此次設(shè)計(jì)對(duì)于Flash存儲(chǔ)器大小的要求。為了實(shí)現(xiàn)無(wú)源蜂鳴器報(bào)警功能,需要單片機(jī)定時(shí)器中斷產(chǎn)生方波信號(hào),這款單片機(jī)還具有多個(gè)定時(shí)器,也滿足了設(shè)計(jì)對(duì)于定時(shí)器中斷數(shù)量的要求[4]。它有著非常成熟的開(kāi)發(fā)環(huán)境,相關(guān)、例程也很之多,極大地降低了開(kāi)發(fā)難度。STC89C51實(shí)物圖如圖1所示:圖1STC89C51實(shí)物圖三、硬件系統(tǒng)設(shè)計(jì)(一)電源電路為了便于本次設(shè)計(jì)的進(jìn)行,本次設(shè)計(jì)的智能恒溫足浴器供電通過(guò)USB接口提供,一般的家用電腦USB接口或是充電適配器的USB接口的供電功率即可滿足本次設(shè)計(jì)的智能恒溫足浴器對(duì)于電能的需求。值得一提的是,請(qǐng)勿使用充電寶的USB口作為供電接口。因?yàn)楸敬卧O(shè)計(jì)的智能恒溫足浴器工作所需電流較小,充電寶在較小電流輸出下會(huì)誤以為是充電充滿,進(jìn)而關(guān)閉輸出。因?yàn)閁SB口提供的電壓為5V,但是STC89C51的工作電壓為3.3V,所以在本次設(shè)計(jì)中加入了5V轉(zhuǎn)3.3V電路,該部分電路如圖2所示:圖25V轉(zhuǎn)3.3V電路圖5V轉(zhuǎn)3.3V電路的核心部件是RT9193低壓差線性穩(wěn)壓器,使用該低壓差線性穩(wěn)壓器實(shí)現(xiàn)5V轉(zhuǎn)3.3V的操作非常簡(jiǎn)單:輸入5V和RT9193的EN腳、VIN腳相連,VIN腳對(duì)地接1μF電容、BP腳對(duì)地接22nF電容、GND腳接地、VOUT腳和3V3輸出相連、VOUT腳對(duì)地接10μF電容和100nF電容,從而實(shí)現(xiàn)5V到3.3V電壓的轉(zhuǎn)換[5]。(二)復(fù)位電路為了方便程序運(yùn)行出現(xiàn)不可預(yù)知的錯(cuò)誤時(shí)進(jìn)行復(fù)位,本次設(shè)計(jì)的智能恒溫足浴器加入了外部復(fù)位電路。用戶按下復(fù)位鍵后便可以重新執(zhí)行程序。構(gòu)建該部分電路只需要使用一個(gè)微動(dòng)按鍵、一個(gè)電容、一個(gè)限流電阻即可。微動(dòng)按鍵兩端并上容值為1μF的電容、電容左右兩端分別和GND和RESET相連、電容右端和10K的限流電阻相連、10K的限流電阻和3V3相連。該部分電路圖如圖3所示:圖3復(fù)位電路圖該部分的工作原理可以分為兩個(gè)方面展開(kāi):微動(dòng)按鍵未按下時(shí),3V3給電容充電直至RESET端電壓為3V3,讓RESET處于高電平狀態(tài),單片機(jī)不進(jìn)行復(fù)位。按下微動(dòng)按鍵時(shí),GND直接和RESET相連,STC89C51的NRST引腳處于低電平超過(guò)1.5ms,單片機(jī)復(fù)位。在這里,電容C2的作用主要為實(shí)現(xiàn)按鍵消抖,防止多次觸發(fā)單片機(jī)復(fù)位[6]。(三)晶振電路就像音樂(lè)必須有節(jié)拍一樣,單片機(jī)工作時(shí)也需要晶振來(lái)協(xié)調(diào)各個(gè)部件正常工作。在本次設(shè)計(jì)的智能恒溫足浴器中,加入了這兩類晶振,其電路圖如圖4所示:圖4晶振電路圖外部低速時(shí)鐘的連接方法為:32.768KHz石英晶振和兩個(gè)20PF串聯(lián)在一起的電容并聯(lián),串聯(lián)的電容連接處接地,再把32.768KHz晶振兩端分別和STC89C51單片機(jī)PC14、PC15腳相連。外部高速時(shí)鐘的連接方法為:8MHz的石英晶振和兩個(gè)20PF串聯(lián)在一起的電容并聯(lián),串聯(lián)的電容連接處接地,再把8MHz晶振兩端分別和STC89C51單片機(jī)的OSCIN、OSCOUT腳相連[7]。(四)LED電路本次設(shè)計(jì)的智能恒溫足浴器通過(guò)LED的亮滅來(lái)模擬加熱的開(kāi)關(guān)。因?yàn)長(zhǎng)ED允許通過(guò)的電流比較小,故該部分電路由LED、510Ω限流電阻兩部分組成。電路圖如圖5所示:圖5LED電路圖該部分工作原理為,當(dāng)STC89C51單片機(jī)的PC13引腳輸出高電平時(shí),LED無(wú)電流通過(guò)處于熄滅狀態(tài)。當(dāng)STC89C51單片機(jī)的PC13引腳輸出低電平時(shí),LED將通過(guò)足夠工作的電流使其處于點(diǎn)亮狀態(tài)。(五)LCD1602顯示電路為了更好的個(gè)性化的顯示效果,本次設(shè)計(jì)采用了LCD1602液晶屏作為顯示器。這是一種能夠支持一些特殊符號(hào)的顯示器。為了滿足用戶的個(gè)性化需求,它還預(yù)留了8個(gè)可自定義的字符位,只需要借助取模工具便能實(shí)現(xiàn)自定義字符的存儲(chǔ)。由于LCD1602液晶屏的對(duì)比度和亮度由兩個(gè)引腳的輸入電壓決定,為了實(shí)現(xiàn)對(duì)亮度與對(duì)比度的調(diào)整,本次設(shè)計(jì)采用兩個(gè)10K電位器與LCD1602液晶屏構(gòu)成顯示部分。該部分電路如圖6所示:圖6LCD1602顯示電路圖兩個(gè)10K電位器的1、3腳分別和5V輸入和GND相連,2腳分別和LCD1602液晶屏的VO腳和A腳相連。旋轉(zhuǎn)電位器時(shí),輸入VO或A腳的電壓將在0-5V范圍內(nèi)變化,進(jìn)而實(shí)現(xiàn)亮度和對(duì)比度調(diào)整。LCD1602液晶屏的VSS腳和GND相連、VDD腳和5V輸入相連、K腳和GND相連,.RS、RW、E引腳分別和STC89C51單片機(jī)的PA10、PA9、PA8引腳相連,D0-D7引腳分別和PA0-PA7引腳相連[8]。(六)蜂鳴器報(bào)警電路本次設(shè)計(jì)的智能恒溫足浴器報(bào)警部分使用無(wú)源蜂鳴器,無(wú)源蜂鳴器需要提供方波使其振動(dòng)頻率處于人耳可聽(tīng)范圍進(jìn)而發(fā)出聲音。該部分電路如圖7所示:圖7蜂鳴器報(bào)警電路圖無(wú)源蜂鳴器模塊由三極管、限流電阻組成,當(dāng)輸入電壓為低電平時(shí)三極管導(dǎo)通,鼓膜在電磁力作用下向外,當(dāng)輸入電壓為高電平時(shí)三極管截止,鼓膜在膜的拉力作用下復(fù)位。輸入一定頻率的方波,如此往復(fù)操作,便能使鼓膜振動(dòng)在人耳可察覺(jué)范圍內(nèi)發(fā)出報(bào)警聲。(七)DS18B20溫度傳感器電路本次設(shè)計(jì)的智能恒溫足浴器采用的溫度傳感器為達(dá)拉斯公司推出的一線制數(shù)字傳感器,它可以進(jìn)行的溫度探測(cè)范圍為-25-125℃,具有速度快、體積小巧且精確度高的特點(diǎn)。使用也非常方便,只需要把它的IO口和單片機(jī)相連,單片機(jī)按照相應(yīng)的規(guī)則發(fā)送、接收數(shù)據(jù)就可以讀取到DS18B20溫度傳感器的相關(guān)數(shù)據(jù)。該部分電路如圖8所示:圖8DS18B20溫度傳感器電路圖DS18B20溫度傳感器的VCC腳和3V3相連、GND腳和單片機(jī)的GND腳相連、IO口和單片機(jī)的PB0口相連。DS18B20的工作原理主要依據(jù)高溫度系數(shù)晶振對(duì)溫度變化敏感,其振蕩頻率會(huì)隨著溫度變化而改變,通過(guò)識(shí)別這一改變便能獲取到環(huán)境溫度。(八)按鍵控制電路為了實(shí)現(xiàn)個(gè)性化設(shè)置的功能,本次設(shè)計(jì)的智能恒溫足浴器加入了按鍵控制電路部分,用戶可以通過(guò)按鍵修改實(shí)現(xiàn)相應(yīng)功能。該部分電路如圖9所示:圖9按鍵控制電路圖該部分電路連接非常簡(jiǎn)單,5個(gè)獨(dú)立按鍵的一端和GND相連,另一端分別和單片機(jī)的PB5-PB9口相連。它的工作原理為:首先預(yù)置PB5-PB9端口為內(nèi)部上拉模式,當(dāng)按鍵未按下時(shí),單片機(jī)引腳處于高電平,按鍵按下時(shí),單片機(jī)引腳處于低電平。通過(guò)識(shí)別高、低電平便能知道用戶按下了哪個(gè)按鍵,從而做出相應(yīng)動(dòng)作。四、軟件系統(tǒng)設(shè)計(jì)(一)主函數(shù)設(shè)計(jì)本次軟件設(shè)計(jì)采用的集成開(kāi)發(fā)環(huán)境為keil5,采用的設(shè)計(jì)語(yǔ)言為C語(yǔ)言。在STC89C51通電后將首先執(zhí)行主函數(shù)中的語(yǔ)句,完成模塊初始化、讀取FLASH數(shù)據(jù)、獲取溫度值等操作,簡(jiǎn)略的流程圖如圖10所示:圖10主函數(shù)流程圖該部分的具體執(zhí)行過(guò)程為:首先是端口的初始化工作和相關(guān)功能語(yǔ)句的執(zhí)行:(1)LCD1602液晶模塊的初始化工作,將自定義的8個(gè)字符存儲(chǔ)到LCD1602液晶屏中,開(kāi)液晶屏顯示。完成LCD1602的初始化工作后,LCD1602液晶屏將顯示程序設(shè)置的數(shù)據(jù);(2)執(zhí)行獨(dú)立按鍵的初始化,設(shè)置獨(dú)立按鍵端口為上拉模式。這樣設(shè)置的原因考慮到微動(dòng)按鍵的硬件設(shè)計(jì),當(dāng)微動(dòng)按鍵按下時(shí)端口電平將被置低電平,當(dāng)微動(dòng)按鍵松開(kāi)時(shí)端口電平將被置高電平;(3)執(zhí)行LED端口的初始化,設(shè)置端口模式為推挽模式。這樣設(shè)置考慮到LED的硬件設(shè)計(jì),能夠供給足夠的功率。端口輸出電平低時(shí)LED燈點(diǎn)亮,端口輸出電平低時(shí)LED燈熄滅;(4)執(zhí)行蜂鳴器端口初始化,設(shè)置為推挽模式??紤]到蜂鳴器模塊的硬件設(shè)計(jì),當(dāng)端口輸出低電平時(shí)鼓膜受到電磁力作用向外突出,當(dāng)端口輸出高電平時(shí)揚(yáng)聲器關(guān)閉,鼓膜復(fù)位;(5)執(zhí)行定時(shí)器初始化,設(shè)置定時(shí)時(shí)間為250us。通過(guò)實(shí)驗(yàn)判斷,500us周期的方波產(chǎn)生的聲音強(qiáng)度較大,故設(shè)置定時(shí)時(shí)間為250us;(6)讀取保存在FLASH中的用戶數(shù)據(jù),包括控制模式、加熱模式、報(bào)警模式、設(shè)定溫度值的讀取和判斷。讀取出FLASH中的數(shù)據(jù)后,將判斷數(shù)據(jù)是否有效,這樣操作的原因在于最初存儲(chǔ)在FLASH中的數(shù)據(jù)可能不在合理范圍內(nèi)。本次設(shè)計(jì)的智能恒溫足浴器所存儲(chǔ)數(shù)據(jù)分別為控制模式、加熱模式、報(bào)警模式、設(shè)定溫度,范圍分別為0-1、0-1、0-1、0-1000,且均為整數(shù)。不在這個(gè)范圍內(nèi)的數(shù)據(jù)將被設(shè)置為在此范圍內(nèi)的數(shù)據(jù):不在范圍內(nèi)的控制模式、加熱模式、報(bào)警模式數(shù)據(jù)將被置為0,不在范圍內(nèi)的設(shè)定溫度數(shù)據(jù)將被設(shè)置為250。在這里,并沒(méi)有對(duì)DS18B20溫度傳感器的端口進(jìn)行初始化,這是因?yàn)镈S18B20溫度傳感器數(shù)據(jù)口既作為輸出也作為輸入,在子.c文件中將多次初始化,故不在主函數(shù)內(nèi)做初始化。執(zhí)行完端口的初始化以及其它功能語(yǔ)句后,由于DS18B20溫度傳感器通電后初次讀取到的溫度數(shù)據(jù)固定為85℃,為了防止開(kāi)機(jī)后讀取到DS18B20溫度傳感器的初始溫度數(shù)據(jù)85℃引發(fā)誤報(bào)警,將讀取一次DS18B20溫度傳感器溫度值,然后顯示加載數(shù)據(jù)字樣并延時(shí)1000ms。在執(zhí)行完上述的這些語(yǔ)句后,單片機(jī)將重復(fù)執(zhí)行死循環(huán)里的語(yǔ)句。死循環(huán)中的執(zhí)行過(guò)程如下:(1)讀取DS18B20溫度傳感器溫度值。為了便于數(shù)據(jù)操作,用int型數(shù)據(jù)存儲(chǔ)溫度,例如12.1℃對(duì)應(yīng)于121的int型數(shù)據(jù)。值得一提的是,存儲(chǔ)溫度的int型數(shù)據(jù)范圍被設(shè)置為0-1000,也就是0-100℃;(2)獨(dú)立按鍵掃描函數(shù),根據(jù)keyflag標(biāo)志位的值,判斷發(fā)生一次按鍵動(dòng)作。通過(guò)這樣的設(shè)置,可以實(shí)現(xiàn)一次按鍵動(dòng)作執(zhí)行一次按鍵操作;(3)執(zhí)行選擇分支語(yǔ)句,這部分語(yǔ)句根據(jù)keyvalue的值用來(lái)執(zhí)行相應(yīng)的操作。當(dāng)keyvalue為1時(shí),將modeflag加1,實(shí)現(xiàn)控制模式的切換。當(dāng)keyvalue為2時(shí),將beepflag加1,實(shí)現(xiàn)報(bào)警模式的切換。當(dāng)keyvalue為3時(shí),將ledflag加1,實(shí)現(xiàn)加熱模式的切換;(4)執(zhí)行設(shè)定溫度值修改和保存函數(shù),根據(jù)鍵值修改設(shè)定溫度值,它同時(shí)實(shí)現(xiàn)按鍵的判斷數(shù)據(jù)操作。當(dāng)只有“減”鍵按下時(shí),設(shè)定溫度值將減0.1℃。當(dāng)只有“加”鍵按下時(shí),設(shè)定溫度值將加0.1℃。當(dāng)“加”、“減”鍵同時(shí)按下時(shí),將保存當(dāng)前設(shè)定的用戶數(shù)據(jù),包括控制模式、加熱模式、報(bào)警模式、設(shè)定的溫度值。值得一提的是,一直按著“加”或“減”鍵可以連續(xù)加或鍵0.1℃,間隔約為300ms;(5)根據(jù)modeflag的值選擇自動(dòng)加熱模式或手動(dòng)控制模式。自動(dòng)加熱模式下,當(dāng)實(shí)時(shí)溫度小于設(shè)定溫度時(shí),將開(kāi)啟加熱,反之則關(guān)閉加熱。手動(dòng)控制模式下。根據(jù)用戶的按鍵動(dòng)作選擇開(kāi)啟或關(guān)閉加熱;(6)根據(jù)beepflag的值以及實(shí)時(shí)溫度值和設(shè)定溫度值大小關(guān)系選擇是否報(bào)警。當(dāng)beepflag的值為1時(shí),判斷實(shí)時(shí)溫度是否大于設(shè)定溫度,大于則開(kāi)啟定時(shí)器,發(fā)出報(bào)警聲。小于則關(guān)閉定時(shí)器置蜂鳴器端口為高電平,不發(fā)聲;(7)執(zhí)行主界面顯示函數(shù),顯示內(nèi)容包括當(dāng)前的實(shí)時(shí)溫度、設(shè)定溫度、控制模式、加熱模式、報(bào)警模式。(二)LCD1602顯示函數(shù)設(shè)計(jì)本次設(shè)計(jì)的智能恒溫足浴器顯示器采用的是LCD1602液晶顯示屏,因此本次顯示函數(shù)的設(shè)計(jì)將根據(jù)LCD1602液晶顯示器的操作指南進(jìn)行。LCD1602顯示函數(shù)的設(shè)計(jì)包括LCD1602液晶顯示器的端口初始化、LCD1602液晶顯示器顯示模式的初始化、LCD1602顯示樣式的設(shè)計(jì)等,簡(jiǎn)略的流程圖如圖11所示:圖11LCD1602顯示函數(shù)流程圖該部分的具體執(zhí)行過(guò)程為:(1)首先使用STC89C51單片機(jī)函數(shù)初始化設(shè)置的引腳。引腳初始化完成后,才能對(duì)硬件進(jìn)行相關(guān)操作,因此端口初始化在LCD1602顯示函數(shù)設(shè)計(jì)中被放在第一個(gè)執(zhí)行。(2)本次設(shè)計(jì)中保存有8個(gè)自定義字符,分別為代表自動(dòng)控制模式、加熱模式、報(bào)警模式、溫度超限、溫度未超限、溫度單位℃、選中、未選中。(3)執(zhí)行完8個(gè)自定義字符的保存之后,將進(jìn)行顯示模式的設(shè)置。根據(jù)本次設(shè)計(jì)的智能恒溫足浴器的顯示需要,該部分的操作過(guò)程為:發(fā)送0X38命令。例如圖12中的C對(duì)應(yīng)最左鍵,上下加減,播放鍵開(kāi)始。圖12紅外遙控圖(三)DS18B20溫度讀取函數(shù)設(shè)計(jì)本次設(shè)計(jì)的智能恒溫足浴器溫度傳感器采用的是達(dá)拉斯公司推出的DS18B20溫度傳感器,它的探測(cè)范圍為-25℃-125℃。根據(jù)本次設(shè)計(jì)的智能恒溫足浴器的應(yīng)用場(chǎng)景,我們將此范圍縮小到0-100℃。此外,由于DS18B20溫度傳感器是一線制數(shù)字傳感器,所以對(duì)于IO口的初始化既包括輸出模式也包括輸入模式,所以沒(méi)有對(duì)主函數(shù)端口進(jìn)行初始化工作。DS18B20溫度傳感器溫度,該部分的流程圖如圖13所示:圖13DS18B20溫度讀取函數(shù)流程圖(1)當(dāng)main.c文件中的語(yǔ)句調(diào)用到DS18B20溫度讀取函數(shù)時(shí),首先要進(jìn)行的是溫度讀取。此部分過(guò)程為:執(zhí)行DS18B20溫度傳感器的初始化,拉低總線并將端口設(shè)置為輸出模式,等一段時(shí)間后把總線拉高,將端口設(shè)置為輸入模式。若DS18B20溫度傳感器正常運(yùn)行,將會(huì)在在幾十us后拉低總線,一旦檢測(cè)時(shí)間超過(guò)5ms則視為初始化失敗,DS18B20溫度傳感器便會(huì)出現(xiàn)故障。完成了初始化任務(wù)后延時(shí)1ms,由于DS18B20溫度傳感器支持多個(gè)IO口連接在一起單個(gè)讀取溫度,應(yīng)當(dāng)進(jìn)行操作命令跳過(guò)ROM,發(fā)送讀取溫度命令。當(dāng)DS18B20溫度傳感器完成溫度的轉(zhuǎn)換時(shí),便可以讀取低字節(jié)與高字節(jié),獲取到DS18B20溫度傳感器溫度賦值給int型變量temp。(2)完成了DS18B20的溫度讀取后還需要進(jìn)行溫度值的轉(zhuǎn)換。首先定義一個(gè)float型數(shù)據(jù)rd,int型數(shù)據(jù)TEMPS。當(dāng)tempdata小于0時(shí)根據(jù)補(bǔ)碼轉(zhuǎn)原碼規(guī)則求出其原碼,隨后將td乘上0.625再加上0.5即可四舍五入到小數(shù)點(diǎn)后一位且可轉(zhuǎn)為int型數(shù)據(jù),例如-12.1轉(zhuǎn)換為-121。當(dāng)tempdata大于0時(shí),直接將td乘上0.625再加上0.5即可四舍五入到小數(shù)點(diǎn)后一位且可轉(zhuǎn)為int型數(shù)據(jù)。例如12.1轉(zhuǎn)換為121。(3)完成了這兩個(gè)主要的子函數(shù)的設(shè)計(jì)之后,通過(guò)在主函數(shù)對(duì)子函數(shù)的調(diào)用,DS18B20溫度傳感器便能讀取溫度值。當(dāng)然,DS18B20溫度讀取函數(shù)功能的實(shí)現(xiàn)不止依靠這兩個(gè)子函數(shù),還包括溫度數(shù)據(jù)端口輸出模式初始化函數(shù)、溫度數(shù)據(jù)端口輸入模式初始化函數(shù)、us級(jí)延時(shí)函數(shù)等。(四)獨(dú)立按鍵掃描函數(shù)設(shè)計(jì)本次設(shè)計(jì)的智能恒溫足浴器人機(jī)交互部分的輸入部分由5個(gè)微動(dòng)按鍵構(gòu)成,5個(gè)微動(dòng)按鍵可以用于實(shí)現(xiàn)控制模式的更改、加熱模式的更改、報(bào)警模式的更改、設(shè)定溫度、保存用戶數(shù)據(jù)功能。為了實(shí)現(xiàn)用戶對(duì)控制模式、加熱模式、報(bào)警模式的更改是一次按鍵動(dòng)作執(zhí)行一次操作,而設(shè)定溫度可以長(zhǎng)按持續(xù)修改,所以三個(gè)用于更改控制模式、加熱模式、報(bào)警模式的微動(dòng)按鍵掃描函數(shù)和用于修改設(shè)定溫度和保存用戶數(shù)據(jù)的兩個(gè)微動(dòng)按鍵的掃描函數(shù)相互獨(dú)立。通過(guò)這樣的設(shè)計(jì)實(shí)現(xiàn)良好的人機(jī)交互體驗(yàn),該部分的流程圖如圖14所示:圖14獨(dú)立按鍵掃描函數(shù)流程圖(1)首先執(zhí)行的是獨(dú)立按鍵的初始化,由于此次設(shè)計(jì)的五個(gè)獨(dú)立微動(dòng)按鍵均作為輸入且一端接地,故五個(gè)獨(dú)立按鍵與STMF103C8T6單片機(jī)相連的端口均設(shè)置為上拉輸入。當(dāng)用戶未按下按鍵時(shí),輸入電平為高電平;當(dāng)用戶按下按鍵時(shí),輸入電平為低電平。依據(jù)電平的高低狀態(tài)便能知道用戶按下的是哪個(gè)鍵。(2)完成了獨(dú)立按鍵的初始化之后將首先對(duì)負(fù)責(zé)控制模式、加熱模式、報(bào)警模式修改的三個(gè)微動(dòng)按鍵進(jìn)行掃描。具體的過(guò)程為:首先預(yù)置keyflag標(biāo)志位為1,當(dāng)keyflag為1時(shí)使用if-else語(yǔ)句檢測(cè)這三個(gè)端口中哪個(gè)按鍵按下。為了防止用戶同時(shí)按下多個(gè)按鍵,我們借助if-else語(yǔ)句構(gòu)建了按鍵的優(yōu)先級(jí),優(yōu)先級(jí)從高到低依次為控制模式按鍵、報(bào)警模式按鍵、加熱模式按鍵。也就是說(shuō),當(dāng)用戶同時(shí)按下報(bào)警模式按鍵和控制模式按鍵時(shí),只有控制模式按鍵的按鍵動(dòng)作被視為有效動(dòng)作。在keyflag為1且有按鍵按下時(shí),將修改keyvalue至相應(yīng)數(shù)值同時(shí)置keyflag為0。當(dāng)keyflag標(biāo)志位為0時(shí),只有當(dāng)控制模式、加熱模式、報(bào)警模式按鍵三個(gè)按鍵均未按下時(shí)才會(huì)置keyflag為1,執(zhí)行上述過(guò)程。(3)為了實(shí)現(xiàn)對(duì)溫度設(shè)定的連續(xù)增減操作,本次設(shè)計(jì)的智能恒溫足浴器對(duì)負(fù)責(zé)溫度設(shè)定和用戶數(shù)據(jù)保存的兩個(gè)微動(dòng)按鍵設(shè)計(jì)有獨(dú)立的掃描函數(shù)。具體過(guò)程為:當(dāng)只有“加”鍵按下時(shí),設(shè)定溫度值增加0.1℃;當(dāng)只有“減”鍵按下時(shí),設(shè)定溫度減少0.1℃;當(dāng)“加”、“減”鍵同時(shí)按下時(shí),將保存當(dāng)前用戶設(shè)定,包括控制模式、加熱模式、報(bào)警模式、設(shè)定溫度。為了防止增減設(shè)定溫度的時(shí)間過(guò)快,在該掃描函數(shù)的尾部延時(shí)300ms。(五)蜂鳴器報(bào)警函數(shù)設(shè)計(jì)本次設(shè)計(jì)的智能恒溫足浴器的報(bào)警模塊采用的是無(wú)源蜂鳴器,為了實(shí)現(xiàn)無(wú)源蜂鳴器的發(fā)聲報(bào)警,必須使用一定頻率的方波去驅(qū)動(dòng)它。為了實(shí)現(xiàn)無(wú)源蜂鳴器的報(bào)警發(fā)聲,設(shè)計(jì)中借助STC89C51的定時(shí)器產(chǎn)生中斷,模擬一定頻率的方波去驅(qū)動(dòng)蜂鳴器發(fā)聲報(bào)警。首先執(zhí)行的是蜂鳴器的初始化工作,為了實(shí)現(xiàn)對(duì)蜂鳴器的驅(qū)動(dòng)設(shè)置端口為推挽輸出模式,隨后置端口為高電平關(guān)閉蜂鳴器。接著進(jìn)行定時(shí)器的初始化,對(duì)應(yīng)產(chǎn)生的方波周期為500us,通過(guò)實(shí)驗(yàn)發(fā)現(xiàn)這一周期的方波驅(qū)動(dòng)該無(wú)源蜂鳴器發(fā)聲效果較好。完成了定時(shí)器的初始化之后,需要先關(guān)閉計(jì)數(shù)器中斷,防止定時(shí)器發(fā)生中斷引起蜂鳴器發(fā)聲。完成了蜂鳴器和定時(shí)器的初始化工作后,便可以在主函數(shù)中調(diào)用二者。在這里,我們?cè)O(shè)置了beepflag標(biāo)志位,當(dāng)beepflag為1時(shí)表示啟用蜂鳴器報(bào)警。當(dāng)蜂鳴器啟動(dòng)報(bào)警時(shí)說(shuō)明實(shí)時(shí)溫度已經(jīng)超過(guò)了設(shè)定溫度,蜂鳴器便會(huì)發(fā)出報(bào)警聲。當(dāng)實(shí)時(shí)溫度沒(méi)有達(dá)到設(shè)定溫度時(shí),蜂鳴器便不會(huì)發(fā)聲。當(dāng)beepflag為0時(shí)表示關(guān)閉蜂鳴器報(bào)警,蜂鳴器將不會(huì)報(bào)警。該部分流程圖如圖15所示:圖15蜂鳴器報(bào)警函數(shù)流程圖(六)加熱控制函數(shù)設(shè)計(jì)本次設(shè)計(jì)的智能恒溫足浴器的加熱模塊使用紅色LED代替,紅色LED點(diǎn)亮代表加熱開(kāi)啟,紅色LED熄滅代表加熱關(guān)閉。該部分的流程圖如圖16所示:圖16加熱控制函數(shù)流程圖首先進(jìn)行的是LED的初始化工作,由于LED的硬件設(shè)計(jì)為一端接地、一端和STC89C51單片機(jī)端口相連,故設(shè)置端口為推挽輸出模式。且輸出為高電平時(shí)熄滅,輸出為低電平時(shí)點(diǎn)亮。為了防止LED誤點(diǎn)亮,完成初始化后預(yù)置LED狀態(tài)為熄滅。完成以上操作后,便可以在主函數(shù)中對(duì)LED進(jìn)行操作。為了實(shí)現(xiàn)對(duì)LED的兩種操作模式,我們?cè)O(shè)置了modeflag標(biāo)志位,當(dāng)modeflag為1時(shí)表示當(dāng)前為自動(dòng)加熱模式,當(dāng)modeflag為0時(shí)表示當(dāng)前為手動(dòng)加熱模式。處于自動(dòng)加熱模式時(shí),會(huì)執(zhí)行自動(dòng)加熱子函數(shù),當(dāng)實(shí)時(shí)溫度大于等于設(shè)定溫度時(shí)LED關(guān)閉,當(dāng)實(shí)時(shí)溫度小于設(shè)定溫度時(shí)LED打開(kāi)。處于自動(dòng)加熱模式時(shí),用戶無(wú)法通過(guò)按鍵更改加熱狀態(tài)。處于手動(dòng)加熱模式時(shí),會(huì)根據(jù)用戶的按鍵操作實(shí)現(xiàn)對(duì)LED的控制,此時(shí)LED的亮滅完全由用戶手動(dòng)控制。五、仿真及實(shí)物調(diào)試在完成了軟件部分的設(shè)計(jì)之后,可以借助Proteus軟件進(jìn)行STC89C51的仿真,進(jìn)一步驗(yàn)證軟件部分可靠性,同時(shí)也能減少一些試錯(cuò)成本。本次設(shè)計(jì)完成的仿真圖如圖17所示:圖17仿真電路圖由于Proteus自帶的仿真元件較少,為了實(shí)現(xiàn)對(duì)軟件功能的測(cè)試,我們使用了工作原理相同的元件進(jìn)行替代。仿真電路圖搭建完成后便可以載入hex文件進(jìn)行仿真,在這里,我們根據(jù)軟件部分的設(shè)計(jì)細(xì)節(jié)對(duì)各個(gè)功能進(jìn)行逐一調(diào)試,測(cè)試結(jié)果和設(shè)計(jì)預(yù)期一致。仿真成功后,進(jìn)行PCB繪制工作。使用AltiumDesigner2013軟件完成電路原理圖的設(shè)計(jì)之后,給原理圖中的元件設(shè)置上對(duì)應(yīng)的封裝,檢查無(wú)誤后通過(guò)原理圖新建PCB圖。新建了PCB圖之后,手動(dòng)調(diào)整布局、修改布線,檢查無(wú)誤后即可進(jìn)行PCB打樣。完成了PCB打樣之后,使用電烙鐵將元器件焊接到相應(yīng)位置即可完成實(shí)物制作。實(shí)物制作完畢后需要燒錄程序,燒錄方法非常簡(jiǎn)單。只需要借助跳線帽將BOOT0置1、BOOT1置0,再把USB-TTL下載器的RX和STC89C51單片機(jī)的PA9引腳相連、TX和STC89C51單片機(jī)的PA10引腳相連,接通電源即可實(shí)現(xiàn)下載功能。制作完成的智能恒溫足浴器實(shí)物如圖18所示:圖18實(shí)物圖可以看到的是屏幕第一行顯示為是當(dāng)前的實(shí)時(shí)溫度,實(shí)時(shí)溫度后面接的向下的箭頭表示當(dāng)前的實(shí)時(shí)溫度小于設(shè)定溫度。向下箭頭后面的三個(gè)符號(hào)分別表示控制模式、加熱模式、報(bào)警模式。屏幕第二行顯示的是當(dāng)前的設(shè)定溫度,后面的三個(gè)符號(hào)代表當(dāng)前是否處于自動(dòng)控制模式、開(kāi)啟加熱狀態(tài)、開(kāi)啟報(bào)警狀態(tài)。在LCD1602的左側(cè)是電源母座和電源開(kāi)關(guān),左下方有兩個(gè)10K電位器,分別用于調(diào)整亮度和對(duì)比度。位于正下方的是STC89C51最小系統(tǒng),上方的紅色LED用于表示加熱開(kāi)啟狀態(tài),圖中所示的LED為開(kāi)啟狀態(tài)對(duì)應(yīng)于LCD1602液晶屏上被選中的加熱模式。位于液晶屏右下方的是蜂鳴器模塊,用于發(fā)出報(bào)警聲。硬件方面都工作正常后,需要檢驗(yàn)軟件設(shè)計(jì)的正確性。為了盡可能檢驗(yàn)軟件設(shè)計(jì)的正確性,調(diào)試時(shí)我們盡量模擬了各種情況(為了便于說(shuō)明,調(diào)試過(guò)程說(shuō)明見(jiàn)圖19):圖19調(diào)試說(shuō)明圖按下C開(kāi)始鍵,即可進(jìn)行紅外遙控。當(dāng)實(shí)時(shí)溫低于設(shè)定溫度將會(huì)開(kāi)啟加熱模式,LED亮。反之關(guān)閉加熱模式,LED滅。上下切換至報(bào)警器模式,按下C開(kāi)始鍵即可開(kāi)啟或關(guān)閉報(bào)警模式。報(bào)警模式開(kāi)啟時(shí),實(shí)時(shí)溫度高于設(shè)定溫度觸發(fā)報(bào)警器開(kāi)啟,發(fā)出報(bào)警聲。報(bào)警模式關(guān)閉時(shí),蜂鳴器將不會(huì)發(fā)出報(bào)警聲?;旧夏M了所有可能出現(xiàn)的情況,調(diào)試結(jié)果和軟件設(shè)計(jì)預(yù)期一致。至此,本次設(shè)計(jì)的智能恒溫足浴器制作完成,溫度可以精確到小數(shù)點(diǎn)后一位,用戶可以自行設(shè)定溫度和保存數(shù)據(jù),實(shí)現(xiàn)了對(duì)足浴器精確度和個(gè)性化方面的改進(jìn)。六、結(jié)語(yǔ)本文使用了型號(hào)為STC89C51的51位單片機(jī),以DS18B20溫度傳感器和LCD1602液晶屏分別作為溫度獲取部分和溫度顯示部分,設(shè)計(jì)完成了一款精確度高、個(gè)性化強(qiáng)的智能恒溫足浴器。詳細(xì)來(lái)說(shuō),完成了以下工作:(1)硬件PCB采用雙面板,實(shí)現(xiàn)了STC89C51最小系統(tǒng)、LCD1602液晶顯示器、DS1820溫度傳感器、蜂鳴器、電位器、微動(dòng)按鍵的協(xié)調(diào)工作。(2)軟件完成了溫度數(shù)據(jù)讀取、界面顯示、按鍵控制、FLASH讀取及保存等函數(shù)的編寫(xiě),設(shè)計(jì)完成的界面簡(jiǎn)潔大方,操作起來(lái)簡(jiǎn)便、快捷。(3)調(diào)試在完成硬件部分的焊接后,只需要借助跳線帽將BOOT0置1、BOOT1置0,再把USB-TTL下載器的RX和STC89C51單片機(jī)的PA9引腳相連、TX和STC89C51單片機(jī)的PA10引腳相連,接通電源即可實(shí)現(xiàn)下載功能。通過(guò)對(duì)自動(dòng)控制模式、加熱模式、報(bào)警模式、溫度設(shè)定值以及保存設(shè)定的操作,完成了對(duì)成品的調(diào)試。成品反映出來(lái)的效果和軟硬件設(shè)計(jì)一致,達(dá)到了設(shè)計(jì)要求。未來(lái),隨著人工智能等技術(shù)的迅猛發(fā)展,一個(gè)小小的智能恒溫足浴器或許都會(huì)變得大不一樣。那時(shí)的足浴器應(yīng)當(dāng)能夠根據(jù)用戶的個(gè)人喜好以及日常使用習(xí)慣,提供極具針對(duì)性的足浴設(shè)置,給人們帶來(lái)極致的足浴體驗(yàn)。參考文獻(xiàn)[1]李玉秋,章曉忠,吳玲玲.基于STC89C51的設(shè)備溫度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].商丘師范學(xué)院學(xué)報(bào),2020,36(06):22-25.[2]楊磊.智能家庭足浴器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)

溫馨提示

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