版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章緒論1.1研究背景在人類社會不斷發(fā)展的今天,科技與生活的融合已成為時代的趨勢。寵物作為家庭的一員,它們的健康和幸福同樣受到了高度重視。貓咪,作為許多家庭中的摯愛伴侶,其生活品質(zhì)的提升也成為了寵物用品設(shè)計的重要考量。傳統(tǒng)的貓咪飲水設(shè)備往往只滿足基本的飲水需求,但在追求更高生活品質(zhì)的今天,這顯然已不足以滿足貓咪和貓奴們的需求。隨著物聯(lián)網(wǎng)、人工智能等技術(shù)的飛速發(fā)展,智能寵物用品逐漸嶄露頭角,它們不僅提供了更為便捷、高效的服務(wù),更為寵物與主人之間建立了更為緊密的連接REF_Ref11649\r\h[1]。1.2研究目的基于這樣的背景和市場需求,提出了定制貓咪智能飲水機(jī)的設(shè)計理念。本設(shè)計希望通過創(chuàng)新的設(shè)計和先進(jìn)的技術(shù),打造出一款真正符合貓咪飲水習(xí)性、能夠智能管理水質(zhì)和飲水量的智能飲水機(jī)。這不僅是對傳統(tǒng)飲水設(shè)備的一次革新,更是對貓咪飲水體驗(yàn)的一次全面升級。在此,本設(shè)計將深入研究貓咪的飲水行為和需求,結(jié)合現(xiàn)代科技,打造一個集便捷、智能、安全于一身的飲水解決方案。本設(shè)計希望這款智能飲水機(jī)不僅能夠滿足貓咪的生理需求,更能夠成為它們生活中的一部分,為它們帶來更為舒適、健康的飲水體驗(yàn)REF_Ref11802\r\h[2]。通過這款定制貓咪智能飲水機(jī)的推出,能夠?yàn)樨堖浜拓埮珎儙砀嗟臍g樂與滿足,共同開啟智能寵物生活的新篇章。在深入研究與探討貓咪智能飲水機(jī)的設(shè)計之前,本設(shè)計對市場上的現(xiàn)有飲水機(jī)進(jìn)行了全面的調(diào)研與分析。這一過程不僅涉及對產(chǎn)品功能、性能的了解,還包括對用戶體驗(yàn)、產(chǎn)品反饋等多方面的考量。首先,市場上現(xiàn)有的飲水機(jī)大致可以分為傳統(tǒng)飲水機(jī)和簡易智能飲水機(jī)兩類。傳統(tǒng)飲水機(jī)多以塑料或不銹鋼材質(zhì)為主,功能相對單一,只提供基本的飲水功能。這類飲水機(jī)在價格上相對親民,但在智能化、水質(zhì)管理等方面存在明顯不足REF_Ref11871\r\h[3]。簡易智能飲水機(jī)則是在傳統(tǒng)飲水機(jī)的基礎(chǔ)上增加了一些智能功能,如水位監(jiān)測、自動斷電等。這類飲水機(jī)在一定程度上提高了用戶的使用體驗(yàn),但在智能化程度上仍有待提升。同時,一些簡易智能飲水機(jī)在設(shè)計上忽略了貓咪的習(xí)性,如水流速度、水嘴高度等,導(dǎo)致貓咪在使用過程中出現(xiàn)不適。其次,在用戶體驗(yàn)方面,現(xiàn)有飲水機(jī)存在一些問題。首先是水質(zhì)管理不足,一些飲水機(jī)無法有效過濾水中的雜質(zhì)和異味,影響貓咪的飲水健康。其次是清潔和維護(hù)的不便,一些飲水機(jī)的結(jié)構(gòu)復(fù)雜,清潔起來非常麻煩,容易滋生細(xì)菌。針對這些問題,本設(shè)計認(rèn)為在設(shè)計貓咪智能飲水機(jī)時,應(yīng)該注重以下幾個方面:水質(zhì)管理:采用高效的過濾技術(shù),確保水源的清潔和安全,同時定期提醒用戶更換濾芯,保持水質(zhì)的穩(wěn)定。智能化設(shè)計:結(jié)合物聯(lián)網(wǎng)和人工智能技術(shù),實(shí)現(xiàn)水位的實(shí)時監(jiān)測、智能控制等功能,提高產(chǎn)品的便捷性和易用性。用戶體驗(yàn):在設(shè)計過程中充分考慮貓咪的習(xí)性,如水流速度、水嘴高度等,確保貓咪在使用過程中能夠舒適地飲水。清潔與維護(hù):簡化產(chǎn)品的結(jié)構(gòu),方便用戶進(jìn)行清潔和維護(hù),減少細(xì)菌滋生的可能性。綜上所述,通過對市場上現(xiàn)有飲水機(jī)的調(diào)研與分析,本設(shè)計可以更加明確貓咪智能飲水機(jī)的設(shè)計方向和優(yōu)化重點(diǎn)。本設(shè)計將以用戶需求為導(dǎo)向,結(jié)合先進(jìn)技術(shù),打造出一款真正符合貓咪飲水需求、提升用戶體驗(yàn)的智能飲水機(jī)。1.3貓咪生理特點(diǎn)與行為習(xí)性在設(shè)計貓咪智能飲水機(jī)時,深入了解貓咪的生理特點(diǎn)和行為習(xí)性至關(guān)重要REF_Ref11972\r\h[4]。這不僅能夠幫助本設(shè)計創(chuàng)建出更符合貓咪需求的產(chǎn)品,還能提升貓咪的使用體驗(yàn),確保它們的健康和幸福。比如說它們的生理特點(diǎn)和行為習(xí)性:1.水分需求:貓咪的身體構(gòu)造使它們對水分的需求較高。然而,與狗等其他寵物相比,貓咪通常不太愿意主動飲水。因此,智能飲水機(jī)需要能夠吸引貓咪的注意力,讓它們愿意主動飲水。2.味覺和嗅覺:貓咪對水的味道和氣味非常敏感。智能飲水機(jī)需要能夠確保水源的清新和純凈,避免異味和雜質(zhì)。3.活動習(xí)性:貓咪是活躍的動物,它們喜歡玩耍和探索。智能飲水機(jī)可以設(shè)計一些互動功能,如流動的水流或水中的玩具,以吸引貓咪的注意力并鼓勵它們飲水。4.領(lǐng)地意識:貓咪具有領(lǐng)地意識,它們喜歡標(biāo)記自己的領(lǐng)地。智能飲水機(jī)的設(shè)計應(yīng)考慮到這一點(diǎn),確保水源的安全和私密性,以滿足貓咪的領(lǐng)地需求。5.清潔習(xí)性:貓咪非常注重清潔,它們不喜歡在臟亂的環(huán)境中飲水。智能飲水機(jī)需要定期清潔和維護(hù),以確保水源的清潔和安全。在設(shè)計貓咪智能飲水機(jī)時,本設(shè)計應(yīng)該充分考慮到貓咪的生理特點(diǎn)和行為習(xí)性。通過結(jié)合這些特點(diǎn),本設(shè)計可以創(chuàng)建出更符合貓咪需求的產(chǎn)品,提升它們的使用體驗(yàn),并確保它們的健康和幸福。例如,本設(shè)計可以設(shè)計一款具有流動水流功能的智能飲水機(jī),以吸引貓咪的注意力并鼓勵它們飲水。同時,本設(shè)計還需要確保水源的清新和純凈,以滿足貓咪對水質(zhì)的高要求REF_Ref12073\r\h[5]。第2章智能飲水機(jī)設(shè)計思路2.1智能飲水機(jī)的總體設(shè)計智能飲水機(jī)的整體設(shè)計包括主控制系統(tǒng)、輸入輸出模塊、傳感器、其他功能電路和電源部分。主控系統(tǒng)采用單片機(jī)控制,負(fù)責(zé)接收和控制鍵盤信息,響應(yīng)ADC0808模數(shù)轉(zhuǎn)換,以及控制其他功能電路。傳感器部分主要用于溫度的檢測和控制,采用智能溫度傳感器DS18B20。其他功能包括進(jìn)出水電路和恒溫控制。電源部分為智能飲水機(jī)提供所需的電能,確保其能夠正常的工作REF_Ref7453\r\h[6]。其他功能電路其他功能電路晶振電路復(fù)位電路溫度檢測電路功能顯示鍵盤單片機(jī)數(shù)碼顯示電源電路圖2-1智能飲水機(jī)電路框圖圖2-2工作流程圖圖2-3整體電路圖2.2主控系統(tǒng)單片機(jī)電路采用了先進(jìn)的ATMEL公司出品的AT89C52,保證了整個電子系統(tǒng)穩(wěn)定、高效運(yùn)行。這款單片機(jī)作為8051微控制器系列的一員,不僅繼承了51單片機(jī)的所有優(yōu)秀特性和功能,更在性能上有所提升,滿足了現(xiàn)代電子系統(tǒng)對高效處理和控制的需求。圖2-4單片機(jī)電路AT89C52單片機(jī)以其低電壓、高性能的特點(diǎn)在業(yè)界廣受好評。它擁有8KB的Flash程序存儲器,足以存儲復(fù)雜的控制邏輯和程序,確保系統(tǒng)運(yùn)行的多樣性和靈活性。同時,256字節(jié)的RAM存儲器為單片機(jī)的數(shù)據(jù)處理和運(yùn)算提供了足夠的空間,保證了數(shù)據(jù)處理的高效性和準(zhǔn)確性。AT89C52單片機(jī)還配備了32個I/O口,這些接口可以與系統(tǒng)中的其他組件進(jìn)行連接,實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出,滿足系統(tǒng)對各種信號的處理需求。三個定時器/計數(shù)器能夠精確控制時間間隔和事件發(fā)生的次數(shù),為系統(tǒng)的時序控制和事件管理提供了強(qiáng)大的支持。AT89C52單片機(jī)還具備一個串行口,這使得它可以與其他單片機(jī)或外部設(shè)備進(jìn)行通信,實(shí)現(xiàn)了數(shù)據(jù)的共享和交換,為系統(tǒng)的擴(kuò)展和升級提供了便利。同時,一個可編程矢量中斷控制器能夠響應(yīng)和處理各種中斷事件,確保系統(tǒng)對突發(fā)事件的及時響應(yīng)和處理。2.3輸入控制輸入控制如圖2-4所示,該部分設(shè)計采用了單片機(jī)控制技術(shù),旨在實(shí)現(xiàn)高效、低成本的輸入信號處理。通過使用ATMEL公司的AT89C52型8位單片機(jī),得以精準(zhǔn)地處理各種輸入信號,并據(jù)此控制其他組件的運(yùn)行REF_Ref12779\r\h[7]。通過的控制,可以實(shí)現(xiàn)對進(jìn)出水口的精確控制。當(dāng)單片機(jī)接收到出水信號時,它會發(fā)送指令給電機(jī),使其進(jìn)行正轉(zhuǎn),從而將水運(yùn)出。同樣地,當(dāng)單片機(jī)接收到收水信號時,它會控制電機(jī)反轉(zhuǎn),將水回收。這種控制方式不僅準(zhǔn)確可靠,而且響應(yīng)迅速,能夠滿足各種實(shí)際應(yīng)用的需求。圖2-5輸入電路2.4顯示部分顯示屏選用的是LM016LREF_Ref12860\r\h[8]。LM016L是一款16x2字符液晶顯示屏,由日本公司JHD生產(chǎn)。這款顯示屏使用ST7066U控制器芯片,每行能夠清晰展示16個字符,共兩行,構(gòu)建出一個緊湊而高效的顯示界面。每個字符由5x8個像素點(diǎn)構(gòu)成,使得顯示內(nèi)容清晰易讀。LM016L不僅具備基本的顯示功能,更在特定的應(yīng)用場景中展現(xiàn)出了其獨(dú)特的優(yōu)勢。在電子電路設(shè)計中,LM016L被用作關(guān)鍵的信息展示窗口。通過接收來自主控制系統(tǒng)的數(shù)據(jù),它能夠?qū)崟r顯示各種信息,如溫度值和距離數(shù)據(jù)等。在圖片中,雖然傳感器組件并未被直接標(biāo)出,但根據(jù)文本中的“溫度獲取”和“Dis1025cM”可以推斷,電路中存在溫度傳感器和可能存在的距離傳感器。這些傳感器收集到的數(shù)據(jù)正是通過主控制系統(tǒng)處理后,傳遞給LM016L進(jìn)行顯示的。LM016L的測溫度范圍廣,能夠適用于絕大部分地區(qū),這使得它在各種環(huán)境條件下都能穩(wěn)定、準(zhǔn)確地顯示溫度信息。無論是在炎熱的夏季還是寒冷的冬季,LM016L都能為人們提供及時、可靠的溫度數(shù)據(jù),方便人們對環(huán)境進(jìn)行溫度調(diào)節(jié)和控制。LM016L在顯示溫度和距離信息時,其高效、清晰的顯示效果能夠讓人們一目了然,快速獲取所需信息。這使得它在工業(yè)自動化、環(huán)境監(jiān)測、智能家居等領(lǐng)域都有著廣泛的應(yīng)用。圖2-6顯示電路2.5溫度控制部分溫度的輸入采用DS18B20芯片。DS18B20是一種數(shù)字溫度傳感器芯片,其設(shè)計使得溫度測量變得更高效更精確REF_Ref12971\r\h[9]。在開始測量溫度之前,需要對DS18B20進(jìn)行初始化,包括發(fā)送復(fù)位信號和讀取傳感器的存在脈沖。復(fù)位信號將傳感器從休眠狀態(tài)喚醒,并準(zhǔn)備接收后續(xù)的指令。通過總線接口電路,微處理器向DS18B20發(fā)送指令,包括讀取溫度、寫入配置寄存器等操作。指令的格式是通過總線上的脈沖來表示的,脈沖的寬度和時間間隔代表不同的二進(jìn)制位。當(dāng)DS18B20接收到讀取溫度的指令后,它會開始進(jìn)行溫度轉(zhuǎn)換REF_Ref13037\r\h[10]。傳感器內(nèi)部的電阻值會隨著溫度的變化而變化,DS18B20將測量到的電阻值轉(zhuǎn)換為相應(yīng)的數(shù)字信號,并將結(jié)果存儲在內(nèi)部的寄存器中。微處理器通過總線接口電路讀取DS18B20內(nèi)部寄存器中存儲的溫度數(shù)據(jù)。DS18B20可以通過配置寄存器來設(shè)置測量的精度和采樣頻率。DS18B20能夠測量的溫度范圍為-55攝氏度到+125攝氏度,適用于各種環(huán)境和應(yīng)用REF_Ref13141\r\h[11]。它的溫度分辨率可調(diào),可選擇為9位、10位、11位或12位。分辨率越高,溫度精度越高。其溫度測量精度在整個溫度范圍內(nèi)為±0.5攝氏度,使得它在需要高精度測量的應(yīng)用中非常有用。DS18B20采用單線數(shù)字接口進(jìn)行通信,布線和連接更為簡便。工作電壓范圍為3V至5.5V,適用于各種電源配置。在工作期間具有低功耗特性,這對于依靠電池供電的應(yīng)用非常重要。圖2-7溫度控制電路2.6其他功能部分出水控制采用了間接控制方式,這種方式在工業(yè)自動化和控制系統(tǒng)中非常常見,具有穩(wěn)定可靠、易于維護(hù)的特點(diǎn)。當(dāng)MT(可能代表某個控制模塊或信號源)輸出低電平時,與之相連的三極管便進(jìn)入截至區(qū)。在截至區(qū)中,三極管內(nèi)部的PN結(jié)阻止了電流的流動,從而實(shí)現(xiàn)了對電流的截斷。此時,雖然三極管的基極與發(fā)射極之間存在電壓差,但由于PN結(jié)的阻擋作用,集電極和發(fā)射極之間并不導(dǎo)通REF_Ref13236\r\h[12]。這種狀態(tài)保證了出水控制不會因誤動作而觸發(fā)。隨著MT輸出低電平,三極管保持截至狀態(tài),與此同時,與三極管集電極相連的接觸器開始動作REF_Ref13282\r\h[13]。接觸器的常開觸點(diǎn)在接收到相應(yīng)的信號后閉合,這一動作是通過機(jī)械結(jié)構(gòu)實(shí)現(xiàn)的,具有響應(yīng)迅速、接觸可靠的特點(diǎn)。常開觸點(diǎn)閉合后,原本斷開的電路得以導(dǎo)通,出水管道中的電磁閥或其他控制元件接收到電流信號,進(jìn)而執(zhí)行開啟動作。這樣,出水管道得以導(dǎo)通,水流得以順利通過。整個間接控制方式通過MT、三極管、接觸器等元件的協(xié)同工作,實(shí)現(xiàn)了對出水管道的精確控制。這種方式不僅提高了控制系統(tǒng)的穩(wěn)定性和可靠性,還降低了因直接控制可能帶來的風(fēng)險,為工業(yè)自動化和智能化管理提供了有力支持。圖2-8出水控制電路圖2-9加熱控制電路第3章智能飲水機(jī)的軟件設(shè)計3.1系統(tǒng)分配方式在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計時,軟件設(shè)計占有重要地位,特別是對于智能飲水機(jī)這樣的系統(tǒng)。單片機(jī)控制系統(tǒng)主要分為數(shù)據(jù)處理和過程控制兩種類型。數(shù)據(jù)處理包括采集、數(shù)字濾波和標(biāo)度變換等,而過程控制則是按照一定的方法進(jìn)行計算并輸出以控制生產(chǎn)。為了完成這些任務(wù),通常將整個過程分成多個部分,每個部分被稱為一個模塊。這種程序設(shè)計方法叫做模塊程序設(shè)計法REF_Ref13360\r\h[14]。模塊程序設(shè)計法的主要優(yōu)點(diǎn)是:單個模塊比起一個完整的程序易編寫及調(diào)試;模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用;模塊程序允許設(shè)計者分割任務(wù)和利用已有程序,為設(shè)計者提供方便REF_Ref13445\r\h[15]。本系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序、溫度檢測程序、顯示子程序、中斷程序服務(wù)和其他相關(guān)程序等組成。3.2主程序設(shè)計主程序設(shè)計包括兩大部分:一是設(shè)置堆棧指針、初始化ADC0808和74LS373芯片、初始化定時器/計數(shù)器0、輸入時鐘初值、開啟中斷和定時器/計數(shù)器;二是實(shí)現(xiàn)溫度顯示和觀測。部分代碼如下:#include<intrins.h>sbitTrig=P1^0;//HC-SR04觸發(fā)信號輸入sbitEcho=P1^1;//HC-SR04回響信號輸出sbitmotor_pinl=P3^1;sbitmotor_pin2=P3^2;floatT,TShow,T_min=25;unsignedintdis,flag,flagl;unsignedintdis_min=20,dis_max=25;unsignedcharkey;voidmain(){DS18B20_ConvertT();//上電先轉(zhuǎn)換一次溫度,防止第一次讀數(shù)據(jù)錯誤LCD_Init();LCD_ShowString(l,1,"T:");LCD_ShowString(2,1,"Dis:");LCD_ShowString(2,9,"cm");P3_2=0;P3_3=0;P3_4=0;while(1){key=Key();InitTimerl();//初始化定時器1EA=0;//關(guān)閉總中斷dis=Read_value();//讀距離值(單位:cm)EA=1;LCD_ShowNum(2,5,dis,3);/*溫度讀取及顯示*/}3.3調(diào)試及性能分析3.3.1硬件調(diào)試硬件調(diào)試相對簡單,首先要檢查印制板和焊接質(zhì)量,然后進(jìn)行通電測試。在實(shí)驗(yàn)室制作時,可以使用示波器測試晶振和P0、P1、P2端口的波形情況,進(jìn)行綜合硬件測試分析。此外,需要對安全性和穩(wěn)定性進(jìn)行測試,以確保相關(guān)部分不會對其他部分造成干擾REF_Ref13530\r\h[16]。3.3.2軟件調(diào)試軟件調(diào)試用KeiluVisin2編譯器,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序?yàn)閱挝话€進(jìn)行,最后可結(jié)合硬件實(shí)時運(yùn)行調(diào)試。圖3-1程序圖3.3.3性能分析本課題研究貓咪智能飲水機(jī),它主要功能是不僅滿足了貓咪日常生活的基本要求,而且滿足了貓咪對于水溫的要求。還有定時關(guān)機(jī)功能可以節(jié)省電能,從而節(jié)省成本。第4章智能飲水機(jī)實(shí)施與測試一、設(shè)計細(xì)化:根據(jù)上述設(shè)計概念,細(xì)化飲水機(jī)的具體尺寸、形狀、顏色等外觀設(shè)計。確定電路板布局、電線走向、傳感器安裝位置等內(nèi)部設(shè)計。選擇適當(dāng)?shù)碾娮釉?、泵、濾芯、傳感器等,以確保性能和耐用性。在制作過程中,對設(shè)計進(jìn)行微調(diào),以確保各部分之間的兼容性。采購所需的電子元件、外殼材料、電線、濾芯等。準(zhǔn)備工具和設(shè)備,如焊臺、螺絲刀、熱熔膠槍等。根據(jù)設(shè)計好的電路板布局,將電子元件焊接到電路板上。測試電路板的各項(xiàng)功能,確保所有元件工作正常。外殼組裝根據(jù)設(shè)計圖紙,將飲水機(jī)的外殼組裝起來。確保外殼結(jié)構(gòu)穩(wěn)定,無銳角或毛刺,防止貓咪受傷。電子元件與外殼集成將裝配好的電路板安裝到外殼內(nèi)部,連接必要的電線。安裝水泵、傳感器、濾芯等部件,確保它們能夠正常工作。二、軟件測試與校準(zhǔn)測試飲水機(jī)的各項(xiàng)功能,如水位檢測、水質(zhì)檢測、自動補(bǔ)水等。確保所有功能按照設(shè)計要求正常工作。性能校準(zhǔn)對飲水機(jī)的性能進(jìn)行校準(zhǔn),如水泵的流量、流速等。根據(jù)測試結(jié)果,對飲水機(jī)的性能進(jìn)行優(yōu)化調(diào)整。根據(jù)測試結(jié)果進(jìn)行調(diào)試針對測試中發(fā)現(xiàn)的問題和不足,對飲水機(jī)進(jìn)行調(diào)試和優(yōu)化。通過上述實(shí)施與測試流程,可以確保貓咪智能飲水機(jī)的設(shè)計符合預(yù)期要求,性能和安全性得到保障,用戶體驗(yàn)良好。在實(shí)際使用中,飲水機(jī)應(yīng)能夠滿足貓咪的飲水需求,為貓咪提供健康、便捷的飲水環(huán)境。第5章總結(jié)首先,在寫論文之前,需要對貓咪飲水習(xí)慣和健康問題進(jìn)行深入了解和研究。只有了解貓咪的飲水需求和習(xí)慣,才能更好地設(shè)計出符合它們需求的智能飲水機(jī)。其次,在設(shè)計過程中,需要考慮到貓咪的安全和健康問題。最后,智能飲水機(jī)的功能也需要考慮到貓咪的需求。自動出水、保持水溫恒定、自動回收水等功能,以滿足貓咪對水的偏好和需求。總之,貓咪智能飲水機(jī)的設(shè)計需要考慮到貓咪的飲水需求、健康和安全問題,以及智能飲水機(jī)的功能和使用體驗(yàn)。只有綜合考慮這些因素,才能設(shè)計出符合貓咪需求的優(yōu)質(zhì)智能飲水機(jī)。附錄Main.c#include<REGX52.H>#include"LCD1602.h"#include"DS18B20.h"#include"Delay.h"#include"Key.h"#include"Srf04.h"#include<intrins.h>sbitTrig=P1^0;//HC-SR04觸發(fā)信號輸入sbitEcho=P1^1;//HC-SR04回響信號輸出sbitmotor_pin1=P3^1;sbitmotor_pin2=P3^2;floatT,TShow,T_min=25;unsignedintdis,flag,flag1;unsignedintdis_min=20,dis_max=25;voidmain(){ unsignedcharkey; DS18B20_ConvertT(); //上電先轉(zhuǎn)換一次溫度,防止第一次讀數(shù)據(jù)錯誤 LCD_Init(); LCD_ShowString(1,1,"T:"); LCD_ShowString(2,1,"Dis:"); LCD_ShowString(2,9,"cm"); P3_2=0; P3_3=0; P3_4=0; while(1) { key=Key(); InitTimer1(); //初始化定時器1 EA=0; //關(guān)閉總中斷 dis=Read_value(); //讀距離值(單位:cm) EA=1; LCD_ShowNum(2,5,dis,3); /*溫度讀取及顯示*/ DS18B20_ConvertT(); //轉(zhuǎn)換溫度 T=DS18B20_ReadT(); //讀取溫度 if(T<0) //如果溫度小于0 { LCD_ShowChar(1,3,'-'); //顯示負(fù)號 TShow=-T; //將溫度變?yōu)檎龜?shù) } else //如果溫度大于等于0 { LCD_ShowChar(1,3,'+'); //顯示正號 TShow=T; } LCD_ShowNum(1,4,TShow,3); //顯示溫度整數(shù)部分 LCD_ShowChar(1,7,'.'); //顯示小數(shù)點(diǎn) LCD_ShowNum(1,8,(unsignedlong)(TShow*100)%100,2);//顯示溫度小數(shù)部分 if(dis<dis_min&&(flag==0||flag1==1)) //出水 { P3_2=1; P3_3=0; flag=1; } if(dis>dis_max&&flag==1) //收水 { P3_2=0; P3_3=1; Delay(3000); P3_2=0; P3_3=0; flag=0; } if(dis_min<=dis&&dis<=dis_max) //停止 { P3_2=0; P3_3=0; flag1=1; } if(TShow<T_min) //溫度太低,加熱 { P3_4=1; } if(TShow>=T_min) //溫度達(dá)到設(shè)定值,關(guān)閉加熱 { P3_4=0; } }}Delay.cvoidDelay(unsignedintxms){ unsignedchari,j; while(xms--) { i=2; j=239; do { while(--j); }while(--i); }}Delay.h#ifndef__DELAY_H__#define__DELAY_H__voidDelay(unsignedintxms);#endifLCD1602.c#include<REGX52.H>//引腳配置:sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EN=P2^2;#defineLCD_DataPortP0//函數(shù)定義:/***@briefLCD1602延時函數(shù),12MHz調(diào)用可延時1ms*@param無*@retval無*/voidLCD_Delay(){ unsignedchari,j; i=2; j=239; do { while(--j); }while(--i);}/***@briefLCD1602寫命令*@paramCommand要寫入的命令*@retval無*/voidLCD_WriteCommand(unsignedcharCommand){ LCD_RS=0; LCD_RW=0; LCD_DataPort=Command; LCD_EN=1; LCD_Delay(); LCD_EN=0; LCD_Delay();}/***@briefLCD1602寫數(shù)據(jù)*@paramData要寫入的數(shù)據(jù)*@retval無*/voidLCD_WriteData(unsignedcharData){ LCD_RS=1; LCD_RW=0; LCD_DataPort=Data; LCD_EN=1; LCD_Delay(); LCD_EN=0; LCD_Delay();}/***@briefLCD1602設(shè)置光標(biāo)位置*@paramLine行位置,范圍:1~2*@paramColumn列位置,范圍:1~16*@retval無*/voidLCD_SetCursor(unsignedcharLine,unsignedcharColumn){ if(Line==1) { LCD_WriteCommand(0x80|(Column-1)); } elseif(Line==2) { LCD_WriteCommand(0x80|(Column-1+0x40)); }}/***@briefLCD1602初始化函數(shù)*@param無*@retval無*/voidLCD_Init(){ LCD_WriteCommand(0x38);//八位數(shù)據(jù)接口,兩行顯示,5*7點(diǎn)陣 LCD_WriteCommand(0x0c);//顯示開,光標(biāo)關(guān),閃爍關(guān) LCD_WriteCommand(0x06);//數(shù)據(jù)讀寫操作后,光標(biāo)自動加一,畫面不動 LCD_WriteCommand(0x01);//光標(biāo)復(fù)位,清屏}/***@brief在LCD1602指定位置上顯示一個字符*@paramLine行位置,范圍:1~2*@paramColumn列位置,范圍:1~16*@paramChar要顯示的字符*@retval無*/voidLCD_ShowChar(unsignedcharLine,unsignedcharColumn,charChar){ LCD_SetCursor(Line,Column); LCD_WriteData(Char);}/***@brief在LCD1602指定位置開始顯示所給字符串*@paramLine起始行位置,范圍:1~2*@paramColumn起始列位置,范圍:1~16*@paramString要顯示的字符串*@retval無*/voidLCD_ShowString(unsignedcharLine,unsignedcharColumn,char*String){ unsignedchari; LCD_SetCursor(Line,Column); for(i=0;String[i]!='\0';i++) { LCD_WriteData(String[i]); }}/***@brief返回值=X的Y次方*/intLCD_Pow(intX,intY){ unsignedchari; intResult=1; for(i=0;i<Y;i++) { Result*=X; } returnResult;}/***@brief在LCD1602指定位置開始顯示所給數(shù)字*@paramLine起始行位置,范圍:1~2*@paramColumn起始列位置,范圍:1~16*@paramNumber要顯示的數(shù)字,范圍:0~65535*@paramLength要顯示數(shù)字的長度,范圍:1~5*@retval無*/voidLCD_ShowNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength){ unsignedchari; LCD_SetCursor(Line,Column); for(i=Length;i>0;i--) { LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0'); }}/***@brief在LCD1602指定位置開始以有符號十進(jìn)制顯示所給數(shù)字*@paramLine起始行位置,范圍:1~2*@paramColumn起始列位置,范圍:1~16*@paramNumber要顯示的數(shù)字,范圍:-32768~32767*@paramLength要顯示數(shù)字的長度,范圍:1~5*@retval無*/voidLCD_ShowSignedNum(unsignedcharLine,unsignedcharColumn,intNumber,unsignedcharLength){ unsignedchari; unsignedintNumber1; LCD_SetCursor(Line,Column); if(Number>=0) { LCD_WriteData('+'); Number1=Number; } else { LCD_WriteData('-'); Number1=-Number; } for(i=Length;i>0;i--) { LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0'); }}/***@brief在LCD1602指定位置開始以十六進(jìn)制顯示所給數(shù)字*@paramLine起始行位置,范圍:1~2*@paramColumn起始列位置,范圍:1~16*@paramNumber要顯示的數(shù)字,范圍:0~0xFFFF*@paramLength要顯示數(shù)字的長度,范圍:1~4*@retval無*/voidLCD_ShowHexNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength){ unsignedchari,SingleNumber; LCD_SetCursor(Line,Column); for(i=Length;i>0;i--) { SingleNumber=Number/LCD_Pow(16,i-1)%16; if(SingleNumber<10) { LCD_WriteData(SingleNumber+'0'); } else { LCD_WriteData(SingleNumber-10+'A'); } }}/***@brief在LCD1602指定位置開始以二進(jìn)制顯示所給數(shù)字*@paramLine起始行位置,范圍:1~2*@paramColumn起始列位置,范圍:1~16*@paramNumber要顯示的數(shù)字,范圍:0~1111111111111111*@paramLength要顯示數(shù)字的長度,范圍:1~16*@retval無*/voidLCD_ShowBinNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength){ unsignedchari; LCD_SetCursor(Line,Column); for(i=Length;i>0;i--) { LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0'); }}LCD1602.h#ifndef__LCD1602_H__#define__LCD1602_H__//用戶調(diào)用函數(shù):voidLCD_Init();voidLCD_ShowChar(unsignedcharLine,unsignedcharColumn,charChar);voidLCD_ShowString(unsignedcharLine,unsignedcharColumn,char*String);voidLCD_ShowNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength);voidLCD_ShowSignedNum(unsignedcharLine,unsignedcharColumn,intNumber,unsignedcharLength);voidLCD_ShowHexNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength);voidLCD_ShowBinNum(unsignedcharLine,unsignedcharColumn,unsignedintNumber,unsignedcharLength);#endifDS18B20.c#include<REGX52.H>#include"OneWire.h"http://DS18B20指令#defineDS18B20_SKIP_ROM 0xCC#defineDS18B20_CONVERT_T 0x44#defineDS18B20_READ_SCRATCHPAD 0xBE/***@briefDS18B20開始溫度變換*@param無*@retval無*/voidDS18B20_ConvertT(void){ OneWire_Init(); OneWire_SendByte(DS18B20_SKIP_ROM); OneWire_SendByte(DS18B20_CONVERT_T);}/***@briefDS18B20讀取溫度*@param無*@retval溫度數(shù)值*/floatDS18B20_ReadT(void){ unsignedcharTLSB,TMSB; intTemp; floatT; OneWire_Init(); OneWire_SendByte(DS18B20_SKIP_ROM); OneWire_SendByte(DS18B20_READ_SCRATCHPAD); TLSB=OneWire_ReceiveByte(); TMSB=OneWire_ReceiveByte(); Temp=(TMSB<<8)|TLSB; T=Temp/16.0; returnT;}DS18B20.h#ifndef__DS18B20_H__#define__DS18B20_H__voidDS18B20_ConvertT(void);floatDS18B20_ReadT(void);#endifOnewire.c#include<REGX52.H>//引腳定義sbitOneWire_DQ=P3^7;/***@brief單總線初始化*@param無*@retval從機(jī)響應(yīng)位,0為響應(yīng),1為未響應(yīng)*/unsignedcharOneWire_Init(void){ unsignedchari; unsignedcharAckBit; EA=0; OneWire_DQ=1; OneWire_DQ=0; i=247;while(--i); //Delay500us OneWire_DQ=1; i=32;while(--i); //Delay70us AckBit=OneWire_DQ; i=247;while(--i); //Delay500us EA=1; returnAckBit;}/***@brief單總線發(fā)送一位*@paramBit要發(fā)送的位*@retval無*/voidOneWire_SendBit(unsignedcharBit){ unsignedchari; EA=0; OneWire_DQ=0; i=4;while(--i); //Delay10us OneWire_DQ=Bit; i=24;while(--i); //Delay50us OneWire_DQ=1; EA=1;}/***@brief單總線接收一位*@param無*@retval讀取的位*/unsignedcharOneWire_ReceiveBit(void){ unsignedchari; unsignedcharBit; EA=0; OneWire_DQ=0; i=2;while(--i); //Delay5us OneWire_DQ=1; i=2;while(--i); //Delay5us Bit=OneWire_DQ; i=24;while(--i); //Delay50us EA=1; returnBit;}/***@brief單總線發(fā)送一個字節(jié)*@paramByte要發(fā)送的字節(jié)*@retval無*/voidOneWire_SendByte(unsignedcharByte){ unsignedchari; for(i=0;i<8;i++) { OneWire_SendBit(Byte&(0x01<<i)); }}/***@brief單總線接收一個字節(jié)*@param無*@retval接收的一個字節(jié)*/unsignedcharOneWire_ReceiveByte(void){ unsignedchari; unsignedcharByte=0x00; for(i=0;i<8;i++) { if(OneWire_ReceiveBit()){Byte|=(0x01<<i);} } returnByte;}Onewire.h#ifndef__ONEWIRE_H__#define__ONEWIRE_H__unsignedcharOneWire_Init(void);voidOneWire_SendBit(unsignedcharBit);unsignedcharOneWire_ReceiveBit(void);voidOneWire_SendByte(unsignedcharByte);unsignedcharOneWire_ReceiveByte(void);#endifSrf04.c#include"Srf04.h"/************************定時器1初始化*****************************/voidInitTimer1(void){ TR1=0; //先關(guān)閉定時器1 TMOD&=0x0F; TMOD|=0x10; TH1=0x00; TL1=0x00;}/***********************10us延時函數(shù)*****************************/voidDelay10us(){ unsignedchari; i=2; while(--i);}/********************讀值函數(shù)***********************/unsignedintRead_value(void){ floattemp; unsignedintresult; TR=0; //先拉低(在proteus仿真里面非常重要) _nop_(); TR=1; //觸發(fā)引腳發(fā)出11us的觸發(fā)信號(至少10us) Delay10us(); _nop_(); TR=0; while(!EC); //
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年可再生能源技術(shù)太陽能與水能利用技術(shù)題庫
- 2026年會計基礎(chǔ)與實(shí)務(wù)考試題庫與解析
- 2026年外語學(xué)習(xí)英文語境與實(shí)踐交際問題解答
- 2026年食品安全法規(guī)知識考試題保障公共健康
- 天文課外知識
- 2026浙江省城建融資租賃有限公司招聘5人參考考試試題及答案解析
- 2026年包頭鋼鐵職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年廣州鐵路職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試備考題庫含詳細(xì)答案解析
- 2026年南京視覺藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026年濰坊理工學(xué)院單招職業(yè)技能考試備考題庫含詳細(xì)答案解析
- 現(xiàn)金日記賬模板(出納版)
- DB34T 1948-2013 建設(shè)工程造價咨詢檔案立卷標(biāo)準(zhǔn)
- 2024中藥藥渣處理協(xié)議
- 心源性暈厥的查房
- 機(jī)械氣道廓清技術(shù)臨床應(yīng)用專家共識(2023版)解讀
- 壓力性損傷風(fēng)險評估與管理護(hù)理課件
- 市域治理現(xiàn)代化的培訓(xùn)課件
- 專家解析:渲染,烘托等的區(qū)別課件
- 廣州花城匯UUPARK招商手冊
- 20S517 排水管道出水口
- (完整word)長沙胡博士工作室公益發(fā)布新加坡SM2考試物理全真模擬試卷(附答案解析)
評論
0/150
提交評論