基于單片機(jī)的自動(dòng)澆花器設(shè)計(jì) 摘 要:隨著科技的發(fā)展,人們對(duì)生活水平的要求逐漸提高,智能家居也慢慢潛入人們的生活,自動(dòng)化的興起也是對(duì)科技發(fā)展的肯定,F(xiàn)在很多人都住上了高層,為了凈化室內(nèi)空氣便種植盆栽,一方面是為了凈化空氣,另一方面是為了陶冶情操。然而很多人想精心照顧他們的花花草草,但是又不懂方法與技巧甚至有的人沒時(shí)間去照料,所以這就需要設(shè)計(jì)一款自動(dòng)澆花器。 本設(shè)計(jì)用AT89C51單片機(jī)作為控制中心,YL-69作土壤濕度傳感模塊,光敏電阻作為光照量傳感模塊,LCD1602作為顯示數(shù)據(jù)的模塊,按鍵用來設(shè)定數(shù)值。本系統(tǒng)有三種模式的功能,一是可以通過YL-69濕度傳感器進(jìn)行土壤濕度的采集,利用單片機(jī)AT89C51對(duì)信息進(jìn)行處理,輸出控制信號(hào),控制信號(hào)通過控制繼電器控制水泵電源是否通斷,從而完成自動(dòng)澆水。二是利用單片機(jī)精確控制,在設(shè)定時(shí)間內(nèi)實(shí)施澆水。三是在系統(tǒng)中加入一個(gè)光敏電阻,當(dāng)檢測(cè)到有光照的時(shí)候即白天的時(shí)候系統(tǒng)檢測(cè)到土壤濕度低于設(shè)定值時(shí)才運(yùn)行完成澆水,當(dāng)檢測(cè)到無光照即黑夜時(shí)即使檢測(cè)到土壤濕度低于設(shè)定值系統(tǒng)也不會(huì)運(yùn)行。
目 錄 1 緒論 1.1 研究背景 1.3主要設(shè)計(jì)內(nèi)容 2 系統(tǒng)設(shè)計(jì) 2.1 方案論證 2.1.1 總體方案設(shè)計(jì) 2.1.2 土壤濕度測(cè)量方案 2.2 硬件的選擇 2.3 系統(tǒng)結(jié)構(gòu) 3 系統(tǒng)硬件設(shè)計(jì) 3.1 AT89C51主要性能參數(shù) 3.2 時(shí)鐘電路 3.3 AT89C51的復(fù)位電路 3.4 YL-69土壤濕度傳感器 3.5 SRS-05VDC-SL繼電器 3.6 按鍵電路 3.7 DS1302時(shí)鐘芯片 4 系統(tǒng)軟件設(shè)計(jì) 4.1 系統(tǒng)流程圖 4.2 土壤濕度檢測(cè)程序 4.3 按鍵程序 4.4 LCD1602顯示程序 5 仿真設(shè)計(jì)與硬件調(diào)試 5.1 硬件調(diào)試 結(jié)論 參考文獻(xiàn) 致謝 附錄 附錄A:主程序
1緒論 1.1研究背景 如今,對(duì)于澆灌系統(tǒng)而言,微噴技術(shù)被國(guó)際上許多國(guó)家廣泛采用,該項(xiàng)技術(shù)的工作原理為借助低壓管道讓水快速的射出,并在空氣里分散為細(xì)小的水珠,從而讓這些水霧覆蓋于種植物、農(nóng)作物及周圍的土地表面,使得農(nóng)作物不再缺乏水分。此系統(tǒng)主要應(yīng)用于植物種植密度大,植物柔軟細(xì)嫩的場(chǎng)合。 隨著社會(huì)生產(chǎn)力的發(fā)展,人們的生活水平在不斷提高,更加追求生活環(huán)境健康與舒適,如今千家萬戶都會(huì)在自己的余暇功夫里自己栽培花草,栽培花草不僅可以凈化空氣,還可以陶冶情操。植物的生長(zhǎng)需要定期澆水,有些人可能會(huì)因?yàn)槊Χ浗o植物澆水,或者沒有一定的澆花經(jīng)驗(yàn)甚至?xí)䦟?dǎo)致植物死亡等,這都是不利于植物生長(zhǎng)的。 1.2 國(guó)內(nèi)外的發(fā)展現(xiàn)狀 1.2.1國(guó)外研究現(xiàn)狀 在西方的國(guó)家,智能家用電器的技術(shù)已經(jīng)十分先進(jìn),而站在國(guó)際的層面來看,由于我國(guó)的制造及設(shè)計(jì)產(chǎn)業(yè)在國(guó)際上的關(guān)鍵地位,使得中國(guó)已然發(fā)展成國(guó)際上智能家電的主要市場(chǎng)。如今,智能花盆在全球已經(jīng)受到廣大客戶的青睞,雖然它們的控制及工作原理有著較大的差異,可它們?cè)O(shè)計(jì)的目的都是為了服務(wù)于人類平時(shí)生活中的養(yǎng)花種草等方面。 在英國(guó)有這樣的一類智能花盆,它的設(shè)計(jì)者是瑞貝克皮特森。它能夠隨時(shí)觀察記錄盆栽的生長(zhǎng)情況。“Plantroid”是一個(gè)智能花盆機(jī)器人,它是由東京農(nóng)工大學(xué)副教授水內(nèi)郁夫發(fā)明創(chuàng)造的,“Plantroid”與其它的花盆不同的是,除了有六個(gè)晶硅太陽能以外,在他的底部還裝有四個(gè)可以滾動(dòng)的滑輪,這使得其能夠在地面隨處移動(dòng)。其內(nèi)部裝有光線傳感器,當(dāng)它檢測(cè)到盆栽處于背陰處時(shí),或者曬不到陽光的地方,機(jī)器人會(huì)自動(dòng)下達(dá)指令讓滑輪走到有陽光的地方,因而方便了人們的植物培養(yǎng),并且使得植物充分的享有光照進(jìn)行光合作用,加速植物的健康生長(zhǎng)。 在不久前,英國(guó)學(xué)生娜塔莉・金也創(chuàng)造出了一款智能的花盆機(jī)器人,此機(jī)器人的配套設(shè)施較為齊全,在花盆下面裝有檢測(cè)濕度與溫度的傳感裝置,花盆表面設(shè)有光線傳感器。這些裝置的安裝能夠讓植物在處于不適宜的環(huán)境下自動(dòng)報(bào)警,比如在濕度過大或溫度過強(qiáng)時(shí),花盆都會(huì)自動(dòng)閃光提示,讓主人能夠及時(shí)采取相關(guān)措施。 1.2.2 國(guó)內(nèi)研究現(xiàn)狀 對(duì)于中國(guó)而言,已然出現(xiàn)了許多供植物澆水的器具,然而這些都是傳統(tǒng)的澆水設(shè)施,在智能機(jī)械方面的研究成果較少。目前,在中國(guó)市場(chǎng)上普遍存在大量的自動(dòng)澆水裝置,可是這些澆水的器材都是傳統(tǒng)的定量澆水,很難根據(jù)植物的自身需要進(jìn)行適當(dāng)適量的澆水施肥,這也導(dǎo)致了大面積的水資源浪費(fèi),不僅沒有使得植物得到很好的生長(zhǎng),相反卻讓植物的成長(zhǎng)起到了副作用。 由于全球技術(shù)的高速傳播,如今的中國(guó)也有許多關(guān)于智能花盆方面的研究。楊守建等人于2011年,開始了相關(guān)方面的工作,他們研究的主要任務(wù)是利用裝置檢測(cè)土地的濕度及溫度,參照檢測(cè)裝置反饋的數(shù)據(jù)對(duì)植物進(jìn)行適當(dāng)適量的澆水,整個(gè)科研的經(jīng)費(fèi)花費(fèi)較少,且后期維護(hù)的花銷也不高。 與此同時(shí),王薇等學(xué)者在2011年也開始了相關(guān)智能花盆上的研究,此種智能花盆由多個(gè)部分組成,其中包括:放大電路、比較電路、驅(qū)動(dòng)電路、繼電器、電磁閥等等。工作原理也是能夠自主檢測(cè)植物土壤周圍的濕度,從而根據(jù)實(shí)際情況進(jìn)行澆水。 學(xué)者張兆朋在此方面也有著自己的發(fā)面,他一人設(shè)計(jì)創(chuàng)造了小型的職能家庭澆水儀器,同時(shí)更夠依據(jù)植物的不同種類,運(yùn)行不同的控制程序。在工作原理上也是參照上述幾種智能儀器,實(shí)現(xiàn)自主職能澆水。學(xué)者趙麗也發(fā)明了一類高效智能的植物澆水裝置,在儀器底部裝有傳感裝置,用以檢測(cè)相關(guān)環(huán)境的溫度、濕度,在借助單片機(jī)展開數(shù)據(jù)分析,下達(dá)相關(guān)的執(zhí)行指令,對(duì)澆水器進(jìn)行控制,完成相關(guān)的澆水任務(wù)。 隨著科技的發(fā)展,家用電器的智能化也得到了廣大國(guó)民的青睞,所以,對(duì)于智能花盆的相關(guān)研究還是十分有必要的。 1.3主要設(shè)計(jì)內(nèi)容 此論文是立足于單片機(jī)的自動(dòng)澆花器設(shè)計(jì): - 完成整體的規(guī)劃和結(jié)構(gòu)設(shè)計(jì)
- 圍繞著單片機(jī)展開相關(guān)工作,并對(duì)裝置原件展開處理,讓它們有機(jī)的搭配起來。主要的硬件部分涵蓋有:土壤濕度檢測(cè)電路、光亮度檢測(cè)電路、電源電路、按鍵設(shè)置電路、LCD1602顯示電路與繼電器控制水泵電路。以及系統(tǒng)的軟件設(shè)計(jì)及編寫,使其與硬件模塊互相配合。大體涵蓋有以下幾類程序:主要程序、濕度檢測(cè)程序、信息匯總程序、按鍵觸碰程序、運(yùn)行子程序等。
- 完成硬件模塊和軟件模塊的調(diào)試。
2 系統(tǒng)設(shè)計(jì) 2.1方案論證 2.1.1 總體方案設(shè)計(jì) 該方案的系統(tǒng)體系主要由兩部分共同搭建,分別是:硬件方面、軟件方面。硬件模塊方面大體包括了土壤濕度檢測(cè)模塊、光亮度檢測(cè)模塊、按鍵設(shè)置模塊、LCD1602顯示模塊與繼電器控制水泵電路模塊,設(shè)計(jì)了一種智能澆灌的系統(tǒng)。這個(gè)自動(dòng)澆花系統(tǒng)可以根據(jù)土壤干濕程度以及光照的強(qiáng)度,對(duì)植物的澆水進(jìn)行自動(dòng)控制。單片機(jī)是此方案的控制中心,通過環(huán)境濕度檢測(cè)儀展開相關(guān)信息的傳遞,繼而使用智能系統(tǒng)規(guī)定其濕度的最大及最小值,然后再借助單片機(jī)將傳輸來的相關(guān)信息展開分析與整理,從而評(píng)估外界環(huán)境的濕度。一旦反饋的濕度值明顯小于規(guī)定的濕度最小值,那么單片機(jī)將下達(dá)指令至控制水泵,讓其進(jìn)行澆水行為,當(dāng)濕度到達(dá)設(shè)定的最大值時(shí)停止?jié)菜@就是整個(gè)澆花的工作原理;蛟跓o人的情況下,根據(jù)自己的澆灌經(jīng)驗(yàn)通過設(shè)定時(shí)間來進(jìn)行澆灌,當(dāng)?shù)竭_(dá)設(shè)定時(shí)間時(shí)單片機(jī)控制水泵澆水,超過一分鐘后水泵停止?jié)菜。本設(shè)計(jì)可以完成以下功能: 1.借助濕度傳感器采集土壤濕度的相關(guān)信息; 2.顯示測(cè)量的數(shù)據(jù) 3.對(duì)最適宜植物成長(zhǎng)的土壤進(jìn)行分析,并規(guī)定其濕度的最大值和最小值; 4.使用光敏電阻測(cè)量光照量 5.不同模式的選擇。 2.1.2 土壤濕度測(cè)量方案 檢測(cè)土壤濕度的相關(guān)活動(dòng)在眾多的部門中都得到了廣泛的應(yīng)用,其中主要包括:科研單位、工業(yè)制造、氣象監(jiān)測(cè)等,然而在一般的情況中,對(duì)于土壤水分的檢測(cè)并不是唯一的數(shù)據(jù)。因?yàn)橥寥罎穸葧?huì)受到大氣壓強(qiáng)、溫度或人類甚至無法察覺的因素影響。 如今,對(duì)于土壤濕度的測(cè)量我們通常有2種方法,分別是干濕球與電子濕度傳感器。下面是對(duì)兩種方法展開的對(duì)比研究,旨在選擇最佳的檢測(cè)方法。對(duì)于干濕球方法而言,它屬于非直接的檢測(cè)方法,借助對(duì)干球與濕球的兩種測(cè)量從而了解其濕度。所以,如果在溫度較高或者環(huán)境較為惡劣的情況下,我們會(huì)優(yōu)先選擇干濕球法。 隨著科技的不斷進(jìn)步,電子濕度檢測(cè)在這些年得到了廣泛的推崇,由于其測(cè)量數(shù)值較為精確,一般可達(dá)2%一3%RH,同時(shí)在運(yùn)行的階段對(duì)外界的影響有著較強(qiáng)的抗干擾能力。但使用的時(shí)間一長(zhǎng),傳感器的精度就會(huì)有所下降,因此電子式傳感器比較適用于工作在常溫、穩(wěn)定的環(huán)境中。 2.2硬件的選擇 選取yl-69土壤水分傳感器作為土壤傳感系統(tǒng)模塊,靈敏度可調(diào),數(shù)字輸出簡(jiǎn)單,模擬輸出準(zhǔn)確,比較器LM393,工作穩(wěn)定可靠。 (2)主控芯片的選擇: 方案一:使用STC89C52系列的單片機(jī),特點(diǎn)是驅(qū)動(dòng)能力強(qiáng),運(yùn)轉(zhuǎn)比較穩(wěn)定,與AT89C51系列相比擬,性價(jià)比較高,抗干擾能力強(qiáng)。 方案二:AT89C51單片機(jī)由Atmel公司生產(chǎn),主要的特點(diǎn)是低電壓、高性能,同時(shí)價(jià)格也比較便宜,最主要的是AT89C51單片機(jī)和MCS-51系列有很好的兼容性。但缺點(diǎn)是定時(shí)器、ROM較少。 AT89C51單片機(jī)是我們學(xué)習(xí)的主要單片機(jī),它的配置已經(jīng)完全可以滿足系統(tǒng)的需求,所以選擇方案二AT89C51單片機(jī)。 (3)A/D轉(zhuǎn)換芯片選擇: 第一種方案:通過ADC0832芯片轉(zhuǎn)換,ADC0832轉(zhuǎn)換芯片為雙通道8位分辨率的轉(zhuǎn)換芯片。其最高分辯可達(dá)256級(jí)。由于其轉(zhuǎn)換速度快、便宜、體積較小、穩(wěn)定性高等特點(diǎn),因此深受單片機(jī)愛好者喜愛,普及率極高。 第二種方案:ADC0809轉(zhuǎn)換芯片ADC0809芯片的使用,是一種并行轉(zhuǎn)換芯片,相比較ADC0832要快得多,但其引腳電路比較復(fù)雜,并且價(jià)錢是昂貴的。 綜合考慮選用ADC0832可以滿足系統(tǒng)需求,故選用方案一。 (4)繼電器選擇: 在早期設(shè)計(jì)階段,儀器的運(yùn)行需要利用小電流實(shí)施對(duì)大電流的操控,因此我們選擇了繼電器來操控電磁閥。工作電壓在5V左右,并且成本低。綜上所述,本次的系統(tǒng)設(shè)計(jì)中,選用的是松樂SRS-05VDC-SL型號(hào)的繼電器。 (5)顯示器的選擇: 因系統(tǒng)需要必須用到一個(gè)顯示系統(tǒng)模式功能和檢測(cè)數(shù)據(jù)的顯示器。LCD1602可以用來顯示字母、阿拉伯?dāng)?shù)字和符號(hào),按照系統(tǒng)的需求,使用可以同時(shí)顯示出16*02即32個(gè)字符的16腳(帶背光)模塊。 (6)電源選擇: 系統(tǒng)選用5V電源適配器,考慮到水泵的運(yùn)行可能會(huì)導(dǎo)致屏幕顯示不清,所以給水泵配備3節(jié)干電池。 2.3 系統(tǒng)結(jié)構(gòu) 此系統(tǒng)主要由六個(gè)電路組建而成,分別為:土壤濕度檢測(cè)電路、光亮度檢測(cè)電路、電源電路、按鍵設(shè)置電路、LCD1602顯示電路與繼電器控制水泵電路。系統(tǒng)原理圖如圖1所示。
圖1 系統(tǒng)原理圖 3系統(tǒng)硬件設(shè)計(jì) 3.1AT89C51單片機(jī)簡(jiǎn)介及設(shè)計(jì) 3.1.1 AT89C51主要性能參數(shù) AT89C2051是一款極為精簡(jiǎn)的51單片機(jī),將P0口和P2口進(jìn)行了精簡(jiǎn),引腳也僅有20個(gè),然而其內(nèi)部卻安裝了十分實(shí)用的模擬比較器,對(duì)于開發(fā)研究精簡(jiǎn)的51系統(tǒng)而言,其是最好不過的選擇了,因?yàn)樵诖蠖鄶?shù)的情況下,我們開發(fā)根本用不到所有的32個(gè)I/O口,所以選擇AT89C2051較為適宜,不僅芯片體積更小,同時(shí)其工作電壓最低為2.7V,所以用來開發(fā)時(shí)能夠用5號(hào)電池供電的便攜式產(chǎn)品。其引腳圖如圖2所示。 圖2 AT89C51引腳圖 3.1.2 時(shí)鐘電路 單片機(jī)AT89C51的內(nèi)部包含了一個(gè)輸入端與一個(gè)輸出端,分別是以引腳XTAL1與XTAL2的放大器,使其達(dá)到搭建自激式振蕩電路的目的,因此需要在XTAL1及XTAL2引腳中裝設(shè)晶體振蕩器、陶瓷振蕩器,此電路的輸出能夠傳送到程序內(nèi)部的時(shí)序電路。對(duì)于單片機(jī)的時(shí)鐘電路,其重要性不言而喻,它相當(dāng)于人體的大腦,控制著單片機(jī)的運(yùn)行頻率。而連接單片機(jī)的主要形式通常包括以下兩種:外部時(shí)鐘形式、內(nèi)部時(shí)鐘形式。 之所以選用此方案的內(nèi)部時(shí)鐘的理由為:一個(gè)高增益放大器和相位平方芯片內(nèi)部外部跳線晶體,調(diào)諧電容時(shí)鐘電路生成的結(jié)構(gòu)形式,時(shí)鐘電路圖的系統(tǒng)如圖3所示。 圖3 時(shí)鐘電路 3.1.3 AT89C51的復(fù)位電路 51單片機(jī)高電平復(fù)位。就現(xiàn)如今使用比較多的AT89系列得單片機(jī)來講,在復(fù)位腳加上2個(gè)高電平機(jī)器周期(即24個(gè)振蕩周期)就可以使單片機(jī)進(jìn)行復(fù)位。復(fù)位后,單片機(jī)的主要特征是各IO口顯現(xiàn)為高電平,程序計(jì)數(shù)器開始從零運(yùn)行程序。 本系統(tǒng)選用的是手動(dòng)按鍵復(fù)位的模式,采用的措施是接一個(gè)按鈕在復(fù)位RST端和正電源Vcc之間。當(dāng)按鈕被按下時(shí),Vcc的+5V電平就會(huì)被直接加到RST復(fù)位端。由于按鍵閉合的時(shí)間非常短,而我們總可以使按鈕保持最起碼十毫秒的接通時(shí)間,因此,完全可以符合對(duì)復(fù)位的時(shí)段要求。圖4為按鍵電路圖 圖4 按鍵電路圖 3.2YL-69土壤濕度傳感器該系統(tǒng)設(shè)計(jì)采用yl-69是一個(gè)相對(duì)簡(jiǎn)單的土壤水分傳感器,當(dāng)測(cè)試土壤水分變化時(shí),通過濕敏電容所處的空間內(nèi)介質(zhì)發(fā)生變化,這也導(dǎo)致了其電容數(shù)值產(chǎn)生改變,并且電容的數(shù)值和濕度值之間呈正比關(guān)系。YL-69表面經(jīng)過鍍鎳處理,可以很好的提高導(dǎo)電性,保護(hù)傳感器不易被腐蝕。借助電位器掌控有關(guān)的閥值,在探查到環(huán)境濕度在最小值以下,DO隨之產(chǎn)生高電平;相反,在探查到的環(huán)境溫度在最大值以上,DO隨之產(chǎn)生一個(gè)低電平。本次系統(tǒng)的電路設(shè)計(jì)為VCC外接一個(gè)5V電壓,GND外接數(shù)字地,DO"小板數(shù)字量輸出接口(0和1)”接到單片機(jī)。電路原理圖如圖5所示,k1是YL-69探頭。 
圖5 YL-69與AD轉(zhuǎn)化電路 3.3SRS-05VDC-SL繼電器 繼電器(relay)能夠?qū)⒕性變化的輸入量輸出為階躍變化結(jié)果。這種特質(zhì)就可以被利用來起到控制的作用,當(dāng)輸入量達(dá)到了一定程度,就可以通過控制階躍變化的結(jié)果反過來影響整體電路,在整個(gè)電路中,繼電器只需要很小的電流,相當(dāng)于以弱電流來控制大電流的控制器,而且一定程度上繼電器還可以用來保護(hù)電路,防止電壓變化過大,損害電子元件。 當(dāng)前市場(chǎng)上的繼電器種類有很多,但是經(jīng)過一一對(duì)比,本系統(tǒng)選擇電磁繼電器作為整個(gè)電路的控制方式。其原理是通過電流變化來改變電磁效應(yīng)的強(qiáng)弱,從而將電信號(hào)轉(zhuǎn)化為磁性強(qiáng)度變化,最終通過接觸點(diǎn)來影響電流的通路還是斷開。 圖7中三級(jí)管的b基級(jí)處于低電位時(shí),三極管導(dǎo)通,則K1單刀雙擲開關(guān)向右邊偏離,電機(jī)M水泵通電,水泵開始運(yùn)行。 
圖7 繼電器控制水泵
3.4按鍵電路 因本系統(tǒng)設(shè)計(jì)定時(shí)電路,需要用按鍵進(jìn)行設(shè)置,所以加入按鍵模塊按鍵:按鍵設(shè)計(jì)如圖8所示。S1是模式鍵、S2是設(shè)置鍵、S是調(diào)整加鍵、S4是調(diào)整減鍵。 
圖8 按鍵電路 3.5光敏電阻及其控制電路光敏電阻的特點(diǎn)在于能夠?qū)⒐鈱W(xué)物理信息轉(zhuǎn)化為電信號(hào),這種特質(zhì)也是其命名的來源,這種電阻也可以被簡(jiǎn)稱為光電阻,或者可以稱它為光導(dǎo)管。具體來說,這種電阻可以在不同運(yùn)動(dòng)狀態(tài)以及電子的光照強(qiáng)度下表現(xiàn)為不同的電阻值,所以用這種材料制成的電阻器也被稱為光電導(dǎo)探測(cè)器。當(dāng)照射光強(qiáng)緩慢增加時(shí),電阻值不斷減小,變化趨勢(shì)呈現(xiàn)為負(fù)相關(guān),反之亦然。本次系統(tǒng)設(shè)計(jì)將光敏電阻并聯(lián)在濕度傳感器的電路中。電路圖如圖9所示。 
圖9 光敏電阻電路圖 3.6 DS1302時(shí)鐘芯片 DS1302是比日常中比較常用的一種時(shí)鐘芯片,它具有計(jì)時(shí)的功能。在本次系統(tǒng)中,因?yàn)橐由隙〞r(shí)功能,所以選擇在系統(tǒng)在加入DS1302芯片,它能夠?qū)θ掌、時(shí)間等信息作統(tǒng)計(jì),通過設(shè)置鍵來設(shè)定時(shí)間,也可以將時(shí)間顯示在顯示屏上。電路圖如圖10所示。 圖10 DS1302時(shí)鐘芯片電路圖 4 系統(tǒng)軟件設(shè)計(jì) 4.1 系統(tǒng)流程圖 系統(tǒng)軟件設(shè)計(jì)包括對(duì)土壤濕度檢測(cè)程序、對(duì)采集到的數(shù)據(jù)進(jìn)行處理的程序、設(shè)置濕度上下限的程序、按鍵程序、顯示程序等。主程序流程如圖14所示。   圖14 程序流程圖
4.2 土壤濕度檢測(cè) 土壤濕度傳感檢測(cè)模塊對(duì)土壤的濕度變化特別敏銳,日常用來檢測(cè)泥土的濕度。如果土壤濕度傳感器檢測(cè)到土壤濕度低于設(shè)定值時(shí),DO輸出高電平;當(dāng)土壤濕度傳感器檢測(cè)到土壤濕度高于設(shè)定值時(shí),D0輸出低電平。并且D0口能夠與單片機(jī)直接相連接,通過單片機(jī)來反應(yīng)高低電平,所以來檢測(cè)土壤濕度。 4.3 LCD1602顯示流程圖 液晶顯示器LCD1602是利用液晶的物理特性來實(shí)現(xiàn)顯示的,當(dāng)電路通電時(shí),LCD便可以顯示出來數(shù)字、圖像等。LCD1602液晶顯示流程圖如圖所示:         
5 仿真設(shè)計(jì)與硬件調(diào)試 5.1 仿真軟件簡(jiǎn)介 proteus仿真軟件可以提供對(duì)單片機(jī)及外圍電路進(jìn)行仿真,它將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三者合一,是目前唯一一款三合一平臺(tái)。它可以實(shí)現(xiàn)原理布圖、PCB自動(dòng)或人工布線、SPICE電路仿真,最后達(dá)到仿真效果,可以在運(yùn)行后看到輸入輸出的效果。此軟件提供現(xiàn)成元器件、測(cè)試儀器以圖形的方式表示,并可以直接從窗口圖形中調(diào)出,軟件中測(cè)試儀器的圖形與實(shí)物相似,而且可以儲(chǔ)存實(shí)驗(yàn)測(cè)試結(jié)果的數(shù)據(jù)、波形、工作狀態(tài)等,并可以打印輸出。 5.2 仿真流程 (1)打開Proteus軟件,會(huì)彈出如圖5-1所示的窗口,我們可以看到右邊的大區(qū)域是繪圖窗口,左面的小窗口是視圖小窗口,緊挨著下面分別是元器件列表、控制按鈕。 
圖5-1 Proteus打開界面 (2)在界面視圖小窗口的下面有P L按鈕,點(diǎn)擊P按鈕,便可彈出一個(gè)搜素欄,在里面輸入需要的元器件名稱,就會(huì)在右邊的繪圖窗口中彈出,雙擊需要的元器件,選擇好之后關(guān)閉對(duì)話框,之后就可以在剛才的P L按鈕下面點(diǎn)擊最終需要的元器件,用鼠標(biāo)拖動(dòng)移到繪圖窗口即可單擊確定位置即可。如圖5-2所示: 
圖5-2搜索添加元器件 (3)將元器件選擇好之后,系統(tǒng)自動(dòng)布線即可完成電路圖設(shè)計(jì),雙擊電路圖中的單片機(jī)會(huì)出現(xiàn)一個(gè)對(duì)話框,然后把.hex文件加載進(jìn)去,如圖5-3所示 
圖5-3 加載.hex文件 - 最后點(diǎn)擊窗口左下角的運(yùn)行開始鍵,就可以完成仿真過程,如圖5-4所示:

圖5-4 運(yùn)行結(jié)果 5.3 仿真結(jié)果 在參考電路的運(yùn)行圖之后,依照其樣式將實(shí)物制出,然后把程序燒錄至AT89C51單片機(jī)內(nèi)接通電源,將YL-69土壤濕度傳感器探頭放入土壤中,按鍵調(diào)至模式一,調(diào)至濕度值50%,屏幕顯示澆水開始,水泵運(yùn)行,澆灌到設(shè)定濕度值時(shí)停止?jié)菜。按鍵調(diào)至模式二,檢測(cè)到濕度值低于設(shè)定濕度,水泵開始澆水,將光敏電阻遮蓋住,屏幕顯示為夜間模式,停止?jié)菜。將其按鍵轉(zhuǎn)換到第三種模式,規(guī)定時(shí)間并運(yùn)行澆水,在系統(tǒng)檢測(cè)到需要澆水時(shí),水泵便會(huì)自動(dòng)出水,運(yùn)行60秒后便停止灌溉。之后,看實(shí)物能否穩(wěn)定操作。如果一切顯示都正常的話,就無需開展硬件的相關(guān)調(diào)整,如果運(yùn)行的不正常則要分析其原因并開展相關(guān)調(diào)試工作。
結(jié)論 基于單片機(jī)的自動(dòng)澆花器的設(shè)計(jì),利用單片機(jī)控制系統(tǒng)對(duì)各部分進(jìn)行控制,使其澆灌模塊是否進(jìn)行運(yùn)作。土壤濕度測(cè)量的模塊為YL-69,其主要的作用是將測(cè)量的濕度信息傳遞至單片機(jī)的系統(tǒng)內(nèi)部,同時(shí)利用單片機(jī)的處理將I/O傳遞至LCD屏幕上。LCD上顯示的值是土壤的含水值,這是判斷灌水是否的數(shù)值。程序的控制部分由自動(dòng)澆花部分組成,而系統(tǒng)的監(jiān)察部分則是由土壤濕度處理組成。整個(gè)系統(tǒng)的為智能化的自動(dòng)運(yùn)行,程序的控制主要是通過單片機(jī)分析數(shù)據(jù)并處理得來,在濕度監(jiān)測(cè)儀檢測(cè)到土壤濕度低于規(guī)定的數(shù)值后,那么單片機(jī)將下達(dá)指令至控制水泵,讓其進(jìn)行澆水行為,在經(jīng)過一段時(shí)間的澆水過后,當(dāng)濕度達(dá)到規(guī)定的最大值時(shí),儀器又將停止運(yùn)水,這就是整個(gè)澆花的工作原理。單片機(jī)還可以手動(dòng)輸入定時(shí)時(shí)間,時(shí)間會(huì)通過LCD1602進(jìn)行顯示,通過程序設(shè)計(jì)澆灌開始及澆灌結(jié)束時(shí)間。
致謝 時(shí)光即逝,大學(xué)四年將至,在這四年中我收獲頗豐,特別是在這幾個(gè)月的畢業(yè)設(shè)計(jì)期間,我特別感謝老師、同學(xué)、朋友、家人的精心指導(dǎo)與細(xì)心照料。感謝指導(dǎo)老師侯老師對(duì)我這次論題寫作方向的確定的幫助,您對(duì)我的論文寫作思路進(jìn)行啟發(fā),重點(diǎn)要點(diǎn)進(jìn)行指導(dǎo)說明,不厭其煩的幫助對(duì)論文進(jìn)行修改并提出些建議,從論文的選題、開題報(bào)告的撰寫、資料的查找,到結(jié)構(gòu)的完善,都給予悉心指導(dǎo),使我順利成文。授人以魚不如授人以漁,您嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度、精心指導(dǎo)和無私的關(guān)懷都是我們學(xué)習(xí)的榜樣,在此對(duì)幫助和指導(dǎo)過我的老師們表示衷心的感謝。感謝我的同學(xué)和朋友們,在我寫論文的過程中給予了我很多有用的素材,還在論文的撰寫和排版等過程中提供熱情的幫助。最后要感謝家人對(duì)我的支持與鼓勵(lì),有了你們我才可以在不惑之年全身心投入到學(xué)習(xí)中,順利完成學(xué)業(yè)。
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<LCD1602.h>
- #include<ADC0832.h>
- #include<INTERRUPT.h>
- #include<math.h>
- #include<stdio.h>
- #include<EEPROM.h>
- #include<DS1302.h>
- sbit jidainqi = P1^4;//自動(dòng)澆花開關(guān)
- sbit jidainqi_led = P1^3;//自動(dòng)澆花開關(guān)指示燈
- sbit key_mode = P3^2;//模式切換按鍵
- sbit key_set = P3^3;//設(shè)置
- sbit key_jia = P3^4;//加
- sbit key_jian = P2^0;//減
- sbit guang = P2^2;//光
- uchar temp_ad[6];
- double temp;
- uchar f=0;
- uchar wei;
- uchar mode;
- uchar set_time=0;
- uchar jiaohua_num;//澆花濕度值
- uchar set_shidu=0;//按鍵設(shè)置標(biāo)志位
- uchar T0_num;
- uchar ad;
- char naozhong1[]={0x00,0x00,0x00};
- /********************************************************
- 函數(shù)名稱:void delayms(uint ms)
- 函數(shù)作用:毫秒延時(shí)函數(shù)
- 參數(shù)說明:
- ********************************************************/
- void Delay_ms(uint ms)
- {
- unsigned char i=100,j;
- for(;ms;ms--)
- {
- while(--i)
- {
- j=10;
- while(--j);
- }
- }
- }
- void display(void)//選擇頁面
- {
- lcd1602_write_character(0,1,"Watering System "); //初始化顯示的文字
- lcd1602_write_character(0,2," Choice mode"); //初始化顯示的文字
- }
- void display1(void)//白天自動(dòng)檢測(cè)澆花
- {
- ad=ADC0832_read(0);
- Delay_ms(25);
- temp=(1-(double)ad/255)*100;
- if(temp<=jiaohua_num)
- {
- if(f==0)//清屏標(biāo)志位
- {
- LCD_write_command(0x01);
- delay_n40us(100);
- f=1;
- }
- lcd1602_write_character(0,1,"Flower is Dying!");
- lcd1602_write_character(0,2," Auto Watering!");
- jidainqi=0;jidainqi_led=0;//自動(dòng)澆花
- }
- else
- {
- // if(temp<1.5)
- // wei=sprintf(temp_ad,"%0.2f",0);
- // else
- wei=sprintf(temp_ad,"%0.2f",temp);
- if(f==1)
- {
- LCD_write_command(0x01);
- delay_n40us(100);
- f=0;
- }
- lcd1602_write_character(0,1," The mode one:"); //初始化顯示的文字
- lcd1602_write_character(3,2," ");
- lcd1602_write_character(9-wei,2,temp_ad);
- lcd1602_write_character(9,2,"%RH");
- jidainqi=1;jidainqi_led=1;//停止?jié)不?br />
- }
- }
- void display4(void)//澆花濕度設(shè)置
- {
- T0_num++;
- if(T0_num==254)
- T0_num=0;
- lcd1602_write_character(0,1," Set water num"); //初始化顯示的文字
- if(T0_num%2==0) //偶數(shù)次顯示
- {
- LCD_disp_char(9,2,ASCII[jiaohua_num/10]); //
- LCD_disp_char(10,2,ASCII[jiaohua_num%10]);
- // Delay_ms(1);
- }
- else
- {
- LCD_disp_char(9,2,ASCII[jiaohua_num/10]);
- LCD_disp_char(10,2,ASCII[jiaohua_num%10]);
-
- }
- }
- void display2(void)//自動(dòng)澆花加光照
- {
- //lcd1602_write_character(0,1,"mode two:"); //初始化顯示的文字
- ad=ADC0832_read(0);
- Delay_ms(25);
- temp=(1-(double)ad/255)*100;
- if(temp<=jiaohua_num&&guang==1)
- {
- if(f==0)//清屏標(biāo)志位
- {
- LCD_write_command(0x01);
- delay_n40us(100);
- f=1;
- }
- lcd1602_write_character(0,1,"Flower is Dying!");
- lcd1602_write_character(0,2," Auto Watering!");
- jidainqi=0;jidainqi_led=0;//自動(dòng)澆花
- }
- else
- {
- // if(temp<1.5)
- // wei=sprintf(temp_ad,"%0.2f",0);
- // else
- wei=sprintf(temp_ad,"%0.2f",temp);
- if(f==1)
- {
- LCD_write_command(0x01);
- delay_n40us(100);
- f=0;
- }
- if(guang==0)
- {
- lcd1602_write_character(0,2,"Night");
- }
- else
- {
- lcd1602_write_character(0,2,"Day! ");
- }
- lcd1602_write_character(0,1," The mode two:"); //初始化顯示的文字
- lcd1602_write_character(6,2," ");
- lcd1602_write_character(12-wei,2,temp_ad);
- lcd1602_write_character(12,2,"%RH");
- jidainqi=1;jidainqi_led=1;//停止?jié)不?br />
- }
- }
- void display3(void)//定時(shí)模式
- {
- Read_time(); //讀取時(shí)間
- lcd1602_write_character(0,1,"The mode three:"); //初始化顯示的文字
- LCD_disp_char(1,2,ASCII[time[4]/10]);//月
- LCD_disp_char(2,2,ASCII[time[4]%10]);
- LCD_disp_char(3,2,ASCII[11]);
- LCD_disp_char(4,2,ASCII[time[3]/10]);//日
- LCD_disp_char(5,2,ASCII[time[3]%10]);
-
- LCD_disp_char(7,2,ASCII[time[2]/10]);// 時(shí)
- LCD_disp_char(8,2,ASCII[time[2]%10]);
- //LCD_disp_char(9,1,ASCII[11]);
- lcd1602_write_character(9,2,":");
- LCD_disp_char(10,2,ASCII[time[1]/10]);//分
- LCD_disp_char(11,2,ASCII[time[1]%10]);
- //LCD_disp_char(12,1,ASCII[11]);
- lcd1602_write_character(12,2,":");
- LCD_disp_char(13,2,ASCII[time[0]/10]);//秒
- LCD_disp_char(14,2,ASCII[time[0]%10]);
-
- if(time[2]==naozhong1[2]&&time[1]==naozhong1[1]&&time[0]==naozhong1[0])
- {
- jidainqi=0;jidainqi_led=0;//自動(dòng)澆花
- }
- if(time[2]==naozhong1[2]&&(time[1]==(naozhong1[1])+1)&&time[0]==naozhong1[0])
- {
- jidainqi=1;jidainqi_led=1;
- }
- }
- void display5(void)
- {
- T0_num++;
- if(T0_num==254)
- T0_num=0;
-
- LCD_disp_char(3,1,ASCII[11]);
- lcd1602_write_character(9,1,":");
- lcd1602_write_character(12,1,":");
- lcd1602_write_character(7,2,":");
- lcd1602_write_character(10,2,":");
-
- if(T0_num%2==0) //偶數(shù)次顯示
- {
- LCD_disp_char(1,1,ASCII[time[4]/10]);//月
- LCD_disp_char(2,1,ASCII[time[4]%10]);
- LCD_disp_char(4,1,ASCII[time[3]/10]);//日
- LCD_disp_char(5,1,ASCII[time[3]%10]);
-
- LCD_disp_char(7,1,ASCII[time[2]/10]);// 時(shí)
- LCD_disp_char(8,1,ASCII[time[2]%10]);
- LCD_disp_char(10,1,ASCII[time[1]/10]);//分
- LCD_disp_char(11,1,ASCII[time[1]%10]);
- LCD_disp_char(13,1,ASCII[time[0]/10]);//秒
- LCD_disp_char(14,1,ASCII[time[0]%10]);
-
- LCD_disp_char(5,2,ASCII[naozhong1[2]/10]);// 時(shí)
- LCD_disp_char(6,2,ASCII[naozhong1[2]%10]);
- LCD_disp_char(8,2,ASCII[naozhong1[1]/10]);//分
- LCD_disp_char(9,2,ASCII[naozhong1[1]%10]);
- LCD_disp_char(11,2,ASCII[naozhong1[0]/10]);//秒
- LCD_disp_char(12,2,ASCII[naozhong1[0]%10]);
- Delay_ms(1);
- }
- else //奇數(shù)次時(shí)候設(shè)置那個(gè)量的時(shí)候那個(gè)量不顯示,以達(dá)到閃爍的效果
- {
- if(set_time==1)
- {
- LCD_disp_char(1,1,ASCII[13]);
- LCD_disp_char(2,1,ASCII[13]);
- }
- else
- {
- LCD_disp_char(1,1,ASCII[time[4]/10]);
- LCD_disp_char(2,1,ASCII[time[4]%10]);
- }
- if(set_time==2)
- {
- LCD_disp_char(4,1,ASCII[13]);
- LCD_disp_char(5,1,ASCII[13]);
- }
- else
- {
- LCD_disp_char(4,1,ASCII[time[3]/10]);
- LCD_disp_char(5,1,ASCII[time[3]%10]);
- }
- if(set_time==3)
- {
- LCD_disp_char(7,1,ASCII[13]);
- LCD_disp_char(8,1,ASCII[13]);
- }
- else
- {
- LCD_disp_char(7,1,ASCII[time[2]/10]);
- LCD_disp_char(8,1,ASCII[time[2]%10]);
- }
- if(set_time==4)
- {
- LCD_disp_char(10,1,ASCII[13]);
- LCD_disp_char(11,1,ASCII[13]);
- }
- else
- {
- LCD_disp_char(10,1,ASCII[time[1]/10]);
- LCD_disp_char(11,1,ASCII[time[1]%10]);
- }
- if(set_time==5)
- {
- LCD_disp_char(13,1,ASCII[13]);
- LCD_disp_char(14,1,ASCII[13]);
- }
- else
- {
- LCD_disp_char(13,1,ASCII[time[0]/10]);
- LCD_disp_char(14,1,ASCII[time[0]%10]);
- }
- if(set_time==6)
- {
- LCD_disp_char(5,2,ASCII[13]);
- LCD_disp_char(6,2,ASCII[13]);
- }
- else
- {
- LCD_disp_char(5,2,ASCII[naozhong1[2]/10]);
- LCD_disp_char(6,2,ASCII[naozhong1[2]%10]);
- }
- if(set_time==7)
- {
- LCD_disp_char(8,2,ASCII[13]);
- LCD_disp_char(9,2,ASCII[13]);
- }
- else
- {
- LCD_disp_char(8,2,ASCII[naozhong1[1]/10]);
- LCD_disp_char(9,2,ASCII[naozhong1[1]%10]);
- }
- if(set_time==8)
- {
- LCD_disp_char(11,2,ASCII[13]);
- LCD_disp_char(12,2,ASCII[13]);
- }
- else
- {
- LCD_disp_char(11,2,ASCII[naozhong1[0]/10]);
- LCD_disp_char(12,2,ASCII[naozhong1[0]%10]);
- }
-
- }
- }
- /********************************************************
- 函數(shù)名稱:void scan(void)
- 函數(shù)作用:按鍵檢測(cè)函數(shù)
- 參數(shù)說明:
- ********************************************************/
- void scan(void)
- {
- //模式按鍵
- if(key_mode==0)
- {
- Delay_ms(7);
- if(key_mode==0)
- {
- jidainqi=1;jidainqi_led=1;//澆花
- LCD_write_command(0x01);//清除屏幕顯示
- delay_n40us(100); //實(shí)踐證明,我的 LCD1602 上,用 for 循環(huán) 200 次就能可靠完成清屏指令。
- mode++;set_shidu=0;set_time=0;
- jidainqi=1;jidainqi_led=1;//停止?jié)不?br />
- if(mode==4)
- {
- mode=0;
- EEPROM_delete(0x2202); //擦除扇區(qū)
- EEPROM_write(0x2202,naozhong1[2]);//
- EEPROM_delete(0x2402); //擦除扇區(qū)
- EEPROM_write(0x2402,naozhong1[1]);//
- EEPROM_delete(0x2602); //擦除扇區(qū)
- EEPROM_write(0x2602,naozhong1[0]);//
- display();
- }
- if(mode==2)
- {
- EEPROM_delete(0x2002); //擦除扇區(qū)
- EEPROM_write(0x2002,jiaohua_num);//
- }
- }
- while(!key_mode);//檢測(cè)按鍵松開
- }
- //設(shè)置鍵,不支持連按
- if(key_set==0)
- {
- Delay_ms(7);
- if(key_set==0&&mode==1)
- {
- LCD_write_command(0x01);//清除屏幕顯示
- delay_n40us(100); //實(shí)踐證明,我的 LCD1602 上,用 for 循環(huán) 200 次就能可靠完成清屏指令。
- set_shidu++;
- jidainqi=1;jidainqi_led=1;//停止?jié)不?br />
- if(set_shidu==2)
- {
- set_shidu=0;
- EEPROM_delete(0x2002); //擦除扇區(qū)
- EEPROM_write(0x2002,jiaohua_num);//
- display1();
- }
- }
- if(key_set==0&&mode==3)
- {
- set_time++;
- if(set_time==1)
- {
- LCD_write_command(0x01);//清除屏幕顯示
- delay_n40us(100); //實(shí)踐證明,我的 LCD1602 上,用 for 循環(huán) 200 次就能可靠完成清屏指令?
- }
- if(set_time>8)
- {
- set_time=0;
- EEPROM_delete(0x2202); //擦除扇區(qū)
- EEPROM_write(0x2202,naozhong1[2]);//
- EEPROM_delete(0x2402); //擦除扇區(qū)
- EEPROM_write(0x2402,naozhong1[1]);//
- EEPROM_delete(0x2602); //擦除扇區(qū)
- EEPROM_write(0x2602,naozhong1[0]);//
- LCD_write_command(0x01);//清除屏幕顯示
- delay_n40us(100); //實(shí)踐證明,我的 LCD1602 上,用 for 循環(huán) 200 次就能可靠完成清屏指令。
- display3();
- }
- }
- while(!key_set);//檢測(cè)按鍵松開
- }
- //加
- if(key_jia==0&&mode==1)
- {
- Delay_ms(5);
- if(key_jia==0&&mode==1&&set_shidu==1)//設(shè)置上限值
- {
- jiaohua_num++; //上限自加
- if(jiaohua_num==91)
- jiaohua_num=90;
- display4();//顯示
- }
- }
- //減
- if(key_jian==0&&mode==1)
- {
- Delay_ms(5);
- if(key_jian==0&&mode==1&&set_shidu==1)//設(shè)置下限
- {
- jiaohua_num--; //
- if(jiaohua_num<6)
- jiaohua_num=5;
- display4();//顯示
- }
- }
- //加值鍵,支持連按
- if(key_jia==0&&mode==3)
- {
- Delay_ms(7);
- if(key_jia==0&&set_time==1)//設(shè)置月
- {
- time[4]++;
- if(time[4]>12)
- time[4]=1;
- time1[4]=(time[4]/10)*16+time[4]%10;
- if(time1[4]>0x12)
- time1[4]=0x01;
- Writeds1302 (WRITE_MONTH,time1[4]);
- }
- if(key_jia==0&&set_time==2)//設(shè)置日
- {
- time[3]++;
- if(time[4]==1||time[4]==3||time[4]==5||time[4]==7||time[4]==8||time[4]==10||time[4]==12)
- {
- if(time[3]>31)
- time[3]=1;
- }
- else
- {
- if(time[4]==2)
- {
- if(time[6]%4==0)
- {
- if(time[3]>28)
- time[3]=1;
- }
- else
- {
- if(time[3]>29)
- time[3]=1;
- }
- }
- else
- {
- if(time[3]>30)
- time[3]=1;
- }
- }
- time1[3]=(time[3]/10)*16+time[3]%10;
- if(time1[4]==0x01||time1[4]==0x03||time1[4]==0x05||time1[4]==0x07||time1[4]==0x08||time1[4]==0x10||time1[4]==0x12)
- {
- if(time1[3]>0x31)
- time1[3]=0x01;
- }
- else
- {
- if(time1[4]==0x02)
- {
- if(time1[6]%4==0)
- {
- if(time1[3]>0x28)
- time1[3]=0x01;
- }
- else
- {
- if(time1[3]>0x29)
- time1[3]=0x01;
- }
- }
- else
- {
- if(time1[3]>0x30)
- time1[3]=0x01;
- }
- }
- Writeds1302 (WRITE_DAY,time1[3]);
- }
- if(key_jia==0&&set_time==3)//設(shè)置時(shí)
- {
- time[2]++;
- if(time[2]>23)
- time[2]=0;
- time1[2]=(time[2]/10)*16+time[2]%10;
- if(time1[2]>0x23)
- time1[2]=0x00;
- Writeds1302 (WRITE_HOUR,time1[2]);
- }
- if(key_jia==0&&set_time==4)//設(shè)置分
- {
- time[1]++;
- if(time[1]>59)
- time[1]=0;
- time1[1]=(time[1]/10)*16+time[1]%10;
- if(time1[1]>0x59)
- time1[1]=0x00;
- Writeds1302 (WRITE_MINUTE,time1[1]);
- }
- if(key_jia==0&&set_time==5)//設(shè)置秒
- {
- time[0]++;
- if(time[0]>59)
- time[0]=0;
- time1[0]=(time[0]/10)*16+time[0]%10;
- if(time1[0]>0x59)
- time1[0]=0x00;
- Writeds1302 (WRITE_SECOND,time1[0]);
- }
- if(key_jia==0&&set_time==6)
- {
- naozhong1[2]++;
- if(naozhong1[2]>23)
- naozhong1[2]=00;
- }
- if(key_jia==0&&set_time==7)
- {
- naozhong1[1]++;
- if(naozhong1[1]>59)
- naozhong1[1]=00;
- }
- if(key_jia==0&&set_time==8)
- {
- naozhong1[0]++;
- if(naozhong1[0]>59)
- naozhong1[0]=00;
- }
- }
- //減值鍵,支持連按
- if(key_jian==0&&mode==3)
- {
- Delay_ms(7);
- if(key_jian==0&&set_time==1)//設(shè)置月
- {
- time[4]--;
- if(time[4]<1)
- time[4]=12;
- time1[4]=(time[4]/10)*16+time[4]%10;
- if(time1[4]<0x01)
- time1[4]=0x12;
- Writeds1302 (WRITE_MONTH,time1[4]);
- }
- if(key_jian==0&&set_time==2)//設(shè)置日
- {
- time[3]--;
- if(time[4]==1||time[4]==3||time[4]==5||time[4]==7||time[4]==8||time[4]==10||time[4]==12)
- {
- if(time[3]<1)
- time[3]=31;
- }
- else
- {
- if(time[4]==2)
- {
- if(time[6]%4==0)
- {
- if(time[3]<1)
- time[3]=28;
- }
- else
- {
- if(time[3]<1)
- time[3]=29;
- }
- }
- else
- {
- if(time[3]<1)
- time[3]=30;
- }
- }
- time1[3]=(time[3]/10)*16+time[3]%10;
- if(time1[4]==0x01||time1[4]==0x03||time1[4]==0x05||time1[4]==0x07||time1[4]==0x08||time1[4]==0x10||time1[4]==0x12)
- {
- if(time1[3]<0x01)
- time1[3]=0x31;
- }
- else
- {
- if(time1[4]==0x02)
- {
- if(time1[6]%4==0)
- {
- if(time1[3]<0x01)
- time1[3]=0x28;
- }
- else
- {
- if(time1[3]<0x01)
- time1[3]=0x29;
- }
- }
- else
- {
- if(time1[3]<0x01)
- time1[3]=0x30;
- }
- }
- Writeds1302 (WRITE_DAY,time1[3]);
- }
- if(key_jian==0&&set_time==3)//設(shè)置時(shí)
- {
- time[2]--;
- if(time[2]<00)
- time[2]=23;
- time1[2]=(time[2]/10)*16+time[2]%10;
- if(time1[2]<0x00)
- time1[2]=0x23;
- Writeds1302 (WRITE_HOUR,time1[2]);
- }
- if(key_jian==0&&set_time==4)//設(shè)置分
- {
- time[1]--;
- if(time[1]<00)
- time[1]=59;
- time1[1]=(time[1]/10)*16+time[1]%10;
- if(time1[1]<0x00)
- time1[1]=0x59;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
基于單片機(jī)的自動(dòng)澆花設(shè)計(jì).docx
(769.9 KB, 下載次數(shù): 350)
2018-5-13 16:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|