基于單片機(jī)的溫濕度控制系統(tǒng)課件-大學(xué)課件-_第1頁(yè)
基于單片機(jī)的溫濕度控制系統(tǒng)課件-大學(xué)課件-_第2頁(yè)
基于單片機(jī)的溫濕度控制系統(tǒng)課件-大學(xué)課件-_第3頁(yè)
基于單片機(jī)的溫濕度控制系統(tǒng)課件-大學(xué)課件-_第4頁(yè)
基于單片機(jī)的溫濕度控制系統(tǒng)課件-大學(xué)課件-_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于單片機(jī)的溫濕度控制系統(tǒng)目錄111122233摘要1.緒論1.1課題背景11.2立題的目的和意義11.3植被栽培技術(shù)溫室環(huán)境的調(diào)節(jié)1.4本系統(tǒng)主要研究?jī)?nèi)容 22、系統(tǒng)總體分析與設(shè)計(jì) 22.1系統(tǒng)功能及系統(tǒng)的組成和工作原理 22.1.1.總體方案2.1.2.實(shí)施措施2.1.3.硬件系統(tǒng)設(shè)計(jì)主機(jī)與主要部件的選擇:2.2溫濕度采樣與控制系統(tǒng)2.2.1.溫濕度采樣系統(tǒng) 32.2.2.溫濕度控制系統(tǒng) 32.3鍵盤(pán)顯示系統(tǒng) 42.4報(bào)警系統(tǒng)62.5硬件電路設(shè)計(jì) 62.5.1.系統(tǒng)硬件配置 62.5.2.主要組件簡(jiǎn)介 683

軟件系統(tǒng)設(shè)計(jì)

83.1系統(tǒng)初始化模塊3.2鍵盤(pán)顯示模塊

103.3采樣轉(zhuǎn)換模塊

113.4溫濕度控制模塊113.5報(bào)警模塊 134硬件調(diào)試方案 144.1硬件電路的調(diào)試 144.2功能模塊的調(diào)試方案 14結(jié)論 15致謝 15參考文獻(xiàn) 16附錄: 18基于單片機(jī)的溫濕度控制系統(tǒng)設(shè)計(jì)摘要 本文利用8051單片機(jī)設(shè)計(jì)一個(gè)溫室的溫濕度控制系統(tǒng),對(duì)給定的溫濕度進(jìn)行控制并實(shí)時(shí)顯示,其中溫濕度信號(hào)各有四路,系統(tǒng)采用一定的算法對(duì)信號(hào)處理以確定采取某種控制手段,在本系統(tǒng)中采用溫度優(yōu)先模式,循環(huán)處理。LCD顯示

ADC0809關(guān)鍵字:89C518729鍵盤(pán)顯示1.緒論1.1課題背景? 改革開(kāi)放以來(lái),人們對(duì)生活質(zhì)量要求顯著提高,對(duì)美麗的植被和花卉的需求量也急劇上升,這對(duì)以種植植被為生計(jì)的園林工人是一個(gè)機(jī)遇,同時(shí)也對(duì)傳統(tǒng)的手工植被種植是一個(gè)挑戰(zhàn),而基于單片機(jī)的溫濕度控制系統(tǒng)對(duì)解決這些問(wèn)題有著非常重大的意義。前種植植被一般都用溫室栽培,為了充分的利用好溫室栽培這一高效技術(shù),就必需有一套科學(xué)的,先進(jìn)的管理方法,用以對(duì)不同種類(lèi)植被生長(zhǎng)的各個(gè)時(shí)期所需的溫度及濕度等進(jìn)行實(shí)時(shí)的監(jiān)控。溫濕度控制對(duì)于單片機(jī)的應(yīng)用具有一定的實(shí)際意義,它代表了一類(lèi)自動(dòng)控制的方法。而且其應(yīng)用十分廣泛。?? 8051單片機(jī)是常用于控制的芯片,在智能儀器儀表、工業(yè)檢測(cè)控制、機(jī)電一體化等方面取得了令人矚目的成果,用其作為溫濕度控制系統(tǒng)的實(shí)例也很多。使用8051單片機(jī)能夠?qū)崿F(xiàn)溫濕度全程的自動(dòng)控制,而且8051單片機(jī)易于學(xué)習(xí)、掌握,性?xún)r(jià)比高。使用8051型單片機(jī)設(shè)計(jì)溫濕度控制系統(tǒng),可以及時(shí)、精確的反映室內(nèi)的溫度以及濕度的變化。完成諸如升溫到特定溫度、降溫到特定溫度、在溫度上下限范圍內(nèi)保持恒溫等多種控制方式,在濕度控制方面也是如此。將此系統(tǒng)應(yīng)用到溫室當(dāng)中無(wú)疑為植被的生長(zhǎng)提供了更加適宜的環(huán)境。1.3植被栽培技術(shù) 植被“設(shè)施栽培”,即“保護(hù)地栽培”。它是指在某種類(lèi)型的保護(hù)設(shè)施內(nèi)(如陽(yáng)畦、溫室、大棚等),人為地創(chuàng)造適宜植被生長(zhǎng)發(fā)育的最佳環(huán)境條件,在不同季節(jié)內(nèi),尤其是不利于植被生長(zhǎng)的季節(jié)內(nèi)進(jìn)行植被栽培的一種措施[1]。設(shè)施栽培是人類(lèi)利用自然、改造自然的一種創(chuàng)造。由于設(shè)施內(nèi)的條件是可以人為控制的,使得植被調(diào)節(jié)的周年生產(chǎn)得以實(shí)現(xiàn)。玻璃溫室和塑料薄膜溫室出現(xiàn)后,植被生產(chǎn)出現(xiàn)了劃時(shí)代的變化?,F(xiàn)在人們可以根據(jù)自己的意愿,隨時(shí)生產(chǎn)出所需要的各種植被??梢哉f(shuō),這是“設(shè)施栽培”的功勞。在不利于植被生長(zhǎng)的自然環(huán)境中,溫室能夠創(chuàng)造適宜植被生長(zhǎng)發(fā)育的條件溫室環(huán)境的調(diào)節(jié)主要包括日光、溫度、濕度三個(gè)方面。 ·溫度:根據(jù)植被生長(zhǎng)的適宜溫度進(jìn)行溫室溫度調(diào)節(jié),若低于下限溫度則采取升溫措施,通常采取電熱增溫和火力增溫等,火力增溫比較方便。若高于上限溫度則采取降溫措施,通常通過(guò)水管降溫和風(fēng)扇降溫,風(fēng)扇降溫比較方便。 日光:遮蔭是調(diào)節(jié)日照強(qiáng)度最好的辦法,其具體做法是加蓋遮陽(yáng)網(wǎng)或草席,這種方法兼有降低溫度的效果。 ·濕度:為滿足溫室植被對(duì)濕度的要求,可以在地上、臺(tái)階、盆壁灑水,還可以在空中懸掛濕布,以增加水分的蒸發(fā),最好的辦法是設(shè)置自動(dòng)噴霧裝置,自動(dòng)調(diào)節(jié)濕度[9]。如果濕度過(guò)大,容易導(dǎo)致植被病害,可以采用通風(fēng)的辦法來(lái)降低濕度,而且最好在室溫與氣溫相差不大的時(shí)候進(jìn)行。本系統(tǒng)注重溫度和濕度的調(diào)節(jié),光照強(qiáng)度沒(méi)有考慮其中。1.4本系統(tǒng)主要研究?jī)?nèi)容本系統(tǒng)所要完成的任務(wù)是: 1.4.1人性化的設(shè)計(jì)。界限溫度值及濕度值能夠由用戶(hù)根據(jù)不同植被的各種生長(zhǎng)需求由鍵盤(pán)輸入并通過(guò)顯示器顯示。1.4.2能夠?qū)崟r(shí)、準(zhǔn)確的顯示采樣溫度值與濕度值。 1.4.3通過(guò)采集溫度及濕度值,準(zhǔn)確的判斷標(biāo)準(zhǔn)值與當(dāng)前值之間的差異,及時(shí)的啟動(dòng)報(bào)警裝置(包括警報(bào)燈的提示功能以及提示音等)進(jìn)行報(bào)警,并采取相應(yīng)的方案。 1.4.4能夠根據(jù)植被在不同時(shí)間段內(nèi)對(duì)溫濕度的不同要求,用戶(hù)可隨機(jī)更改溫度及濕度值,以滿足用戶(hù)不同的需求。2、系統(tǒng)總體分析與設(shè)計(jì)2.1系統(tǒng)功能及系統(tǒng)的組成和工作原理2.1.1.總體方案·溫度監(jiān)控:對(duì)溫室溫度進(jìn)行測(cè)量,并通過(guò)升溫或降溫達(dá)到植被的最佳溫·濕度監(jiān)控:對(duì)溫室濕度進(jìn)行測(cè)量,并通過(guò)噴霧或去濕達(dá)到植被的最佳濕 ·控制處理:當(dāng)溫度、濕度越限時(shí)報(bào)警,并根據(jù)報(bào)警信號(hào)提示采取一定手控制。 ·顯示:LCD就地顯示輸入值和相應(yīng)的溫濕度,數(shù)碼管擺放在生產(chǎn)現(xiàn)場(chǎng)用顯示當(dāng)前的溫濕度。2.1.2.實(shí)施措施·實(shí)際環(huán)境溫度與給定界限比較,執(zhí)行加熱/制冷措施?!?shí)際環(huán)境濕度與給定界限比較,執(zhí)行加濕/去濕措施。·越限報(bào)警:當(dāng)溫濕度越限時(shí)聲光報(bào)警?!ゆI盤(pán)顯示:負(fù)責(zé)用戶(hù)的輸入及相關(guān)數(shù)據(jù)的顯示,其中包括LED和LCD顯示。2.1.3.硬件系統(tǒng)設(shè)計(jì) 經(jīng)過(guò)上面的總體方案和實(shí)施措施的討論后可以開(kāi)始著手硬件系統(tǒng)的設(shè)計(jì),硬件系統(tǒng)是應(yīng)用系統(tǒng)的基礎(chǔ)、軟件系統(tǒng)設(shè)計(jì)的依據(jù)主機(jī)與主要部件的選擇: 根據(jù)總體功能和性?xún)r(jià)比及其運(yùn)行速度等因素的考慮,選用MCS-51系列的89C51為主機(jī),滿足上面的要求而且設(shè)計(jì)方便,不需要再存儲(chǔ)擴(kuò)展。 數(shù)據(jù)存儲(chǔ)片內(nèi)設(shè)有128B,外部有8279的256B,而由于存入的數(shù)據(jù)是隨時(shí)更新的且不計(jì)小數(shù)位,存入8個(gè)16進(jìn)制數(shù)字,其總共需要的容量只有16B,已經(jīng)夠?用。對(duì)外部模擬量(溫度、濕度)采樣,選用ADC0809能夠滿足要求。 ·溫室溫濕度控制系統(tǒng)是以89C51單片機(jī)作為中央控制裝置,模數(shù)轉(zhuǎn)換器ADC0809,風(fēng)扇,加熱設(shè)備,加濕設(shè)備,排潮設(shè)備,鍵盤(pán)顯示芯片等,其功能和原理如下: ·89C51作為中央控制裝置,負(fù)責(zé)中心運(yùn)算和控制,協(xié)調(diào)系統(tǒng)各個(gè)模塊的工作?!に穆凡蓸訙囟刃盘?hào)采樣簡(jiǎn)單平均處理,溫度保存為整數(shù)?!に穆凡蓸訚穸刃盘?hào)采樣簡(jiǎn)單平均處理,溫度保存為整數(shù)。 ·模數(shù)轉(zhuǎn)換器ADC0809:即由模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。它共有8個(gè)模數(shù)轉(zhuǎn)換通道。模數(shù)的轉(zhuǎn)換共有2種方法。一種是利用INT0中斷,當(dāng)一次轉(zhuǎn)換結(jié)束后,ADC0809使INT0產(chǎn)生中斷,通知系統(tǒng)轉(zhuǎn)換完畢;另一種使用延時(shí)方法,開(kāi)始轉(zhuǎn)換后系統(tǒng)延時(shí)100微秒等待轉(zhuǎn)換完成。本方案采用延時(shí)轉(zhuǎn)換的方法。 ·鍵盤(pán)顯示芯片:用8729識(shí)別鍵盤(pán),負(fù)責(zé)用戶(hù)的輸入及相關(guān)的數(shù)據(jù)的LED顯示。例如選擇系統(tǒng)的工作模式,用戶(hù)輸入溫度及濕度的界限數(shù)據(jù),顯示實(shí)時(shí)的溫度及濕度值等等?!わL(fēng)扇:負(fù)責(zé)系統(tǒng)的降溫工作?!ぜ訜嵩O(shè)備:負(fù)責(zé)系統(tǒng)的加熱工作?!婌F設(shè)備:負(fù)責(zé)系統(tǒng)的加濕工作?!づ懦痹O(shè)備:負(fù)責(zé)系統(tǒng)的去濕工作。 雙色燈,音效模塊:負(fù)責(zé)系統(tǒng)的報(bào)警功能。如果當(dāng)前的溫度超過(guò)用戶(hù)設(shè)定的界限值時(shí)系統(tǒng)將自動(dòng)報(bào)警,雙色燈在74LS273的控制下有規(guī)律的閃爍,同時(shí)音效模塊發(fā)出報(bào)警聲,通知用戶(hù)采取相應(yīng)的措施。2.2溫濕度采樣與控制系統(tǒng)2.2.1.溫濕度采樣系統(tǒng) 為了更精確的反映溫室的溫度和濕度,取溫濕度各4路信號(hào)采樣簡(jiǎn)單平均處理作為溫室的溫度和濕度。在分辨率達(dá)到的前提下,溫濕度的精度為1%2.2.2.溫濕度控制系統(tǒng) 首先,系統(tǒng)啟動(dòng)后,提示用戶(hù)輸入溫度的上限與下限的溫度值。用戶(hù)輸入之后,系統(tǒng)自動(dòng)求出中間值,根據(jù)實(shí)際溫度的情況采取相應(yīng)的方案。如下圖2-2-1所示。下限溫度中間溫度

上限溫度36圖2-2-128

----

32

----??如果該時(shí)刻的實(shí)際溫度值低于用戶(hù)給定的下限溫度值時(shí),系統(tǒng)立即啟動(dòng)報(bào)警裝置,且系統(tǒng)處于升溫狀態(tài),直到實(shí)際溫度達(dá)到用戶(hù)輸入的上下限溫度的中間值一定區(qū)間內(nèi)時(shí)停止升溫。反之,如果實(shí)際溫度值高于用戶(hù)設(shè)定的上限值時(shí),系統(tǒng)也會(huì)立即啟動(dòng)報(bào)警裝置,且系統(tǒng)處于降溫狀態(tài),直到實(shí)際溫度達(dá)到用戶(hù)輸入的上下限溫度的中間值一定區(qū)間內(nèi)時(shí)停止降溫。? 選擇中間值作為控制參數(shù),防止升溫——降溫——升溫的死循環(huán),因?yàn)闇囟鹊陀谙孪迺r(shí)會(huì)一直升溫,可能導(dǎo)致溫度高于上限系統(tǒng)又開(kāi)始降溫,這樣系統(tǒng)便一直重復(fù)升溫——降溫——升溫過(guò)程,導(dǎo)致設(shè)備在某一個(gè)溫濕度點(diǎn)附近頻繁的啟停,使設(shè)備壽命下降,而且沒(méi)有實(shí)際意義。選擇中間值的一定區(qū)間,是防止達(dá)到中間值時(shí),采取了停止升溫或者降溫措施,溫度還是會(huì)持續(xù)上升或下降一會(huì)兒,這時(shí)候溫度可能不是正好在中間值處,系統(tǒng)便還是采取升溫或者降溫的措施,而此時(shí)的溫度值可能已經(jīng)是很適合植被生長(zhǎng)的需要的溫度值。所以本方案選在中間值的正負(fù)一度區(qū)間內(nèi),認(rèn)為此區(qū)間內(nèi)都是適合的,不產(chǎn)生任何控制動(dòng)作變化,這樣就能解決設(shè)備頻繁啟停問(wèn)題。2.3鍵盤(pán)顯示系統(tǒng) 鍵盤(pán)顯示系統(tǒng)采用8279芯片控制16鍵的鍵盤(pán)和8個(gè)七段數(shù)碼管,以實(shí)現(xiàn)用戶(hù)的輸入與數(shù)據(jù)輸出。16個(gè)鍵分別是“0”到“F”,對(duì)應(yīng)的鍵值是0到15不需要鍵值的轉(zhuǎn)換。七段數(shù)碼管采用共陰極,系統(tǒng)中使用的段碼如下表2-3-1所示。7顯示

0

1段碼3FH

06H顯示

8

92

3

4

5

65BH

4FH

66H

6DH

7DH

07HA

B

C

D

E

F5EH

79H

71H段碼7FH

6FH

77H

7CH

39H表2-3-18279初始化時(shí),設(shè)定的相關(guān)命令字如下:Z8279EQU08701H

;8279狀態(tài)/命令口地址D8279EQU08700H

;8279數(shù)據(jù)口地址LEDMODEQU00H

;左邊輸入八位字符顯示?;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQLEDCLSEQUEQU38H0D1H;掃描速率;清除顯示RAMLEDWR0址EQU80H;設(shè)定的將要寫(xiě)入的顯示RAM地系統(tǒng)的連接圖如下圖2-3-2所示。?圖2-3-2AD0809與89C51連接圖:2.4報(bào)警系統(tǒng) 報(bào)警系統(tǒng)由聲音報(bào)警和警報(bào)燈報(bào)警組成。聲音報(bào)警通過(guò)P1.0口接SD口控制系統(tǒng)的音效模塊發(fā)聲,用CPU控制P1.0產(chǎn)生一定頻率的方波就可以實(shí)現(xiàn)音效模塊的發(fā)聲。音效模塊是一個(gè)帶有揚(yáng)聲器的放大電路。如圖2-4-1所示。2.5硬件電路設(shè)計(jì)2.5.1.系統(tǒng)硬件配置采用總線型結(jié)構(gòu)的設(shè)計(jì)。由P0口作數(shù)據(jù)線,P0口和P2口共同作地址。2.5.2. 主要組件簡(jiǎn)介?(1)89C51芯片 89C51是Intel公司于80年代初推出的8位嵌入式微控制器(內(nèi)部數(shù)據(jù)總線為8位,外部數(shù)據(jù)總線為8位),它與MCS-96系統(tǒng)中的其它芯片相比,具有性能高、功能全、售價(jià)低廉、使用方便(48PINDIP)等優(yōu)點(diǎn)。89C51在工業(yè)應(yīng)用方面有許多明顯的特點(diǎn),它具有靈活方便的8位總線外圍支持器擴(kuò)展功能,而在數(shù)據(jù)處理方面又有8位微機(jī)的快速功能。由于大的高度集成化已把許多常駐用的輸入檢測(cè)輸出控制通道都制作在同一塊硅片上,大大地靈活了外部連線,增強(qiáng)了系統(tǒng)的穩(wěn)定性并且速度快(時(shí)鐘12MHz),非常適合于工業(yè)環(huán)境下安裝使用。因此本系統(tǒng)CPU選用89C51芯片。89C51單片機(jī)引腳采用40雙列直插式封裝結(jié)構(gòu)。89C51系統(tǒng)CPU中的主要組件有:高速寄存器陣列、特殊功能寄存器(SFR)、寄存器控制器和算術(shù)邏輯單元(RALU)。它與外部通訊是通過(guò)特殊功能寄存器SFR或存儲(chǔ)器,控制器進(jìn)行的。8051系統(tǒng)的CPU的主要特色是體積小,重量輕,抗干擾能力強(qiáng),售價(jià)低,使用方便。此外,通過(guò)SFR還可以直接控制I/O、A/D.PWM、串行口等部件的有效運(yùn)行。?CPU內(nèi)部的一個(gè)控制單元和兩條總線寄存器陣列和EALU連接起來(lái)。這兩條總線是:16位地址總線(A-BUS)和8位數(shù)據(jù)總線(D-BUS)。數(shù)據(jù)總線僅在RALU與寄存器陣列或SFR之間傳送數(shù)據(jù),地址總線用作上述數(shù)據(jù)傳送的地址總線或用作與寄存器控制器連接的多路復(fù)用地址/數(shù)據(jù)總線[7]。?CPU對(duì)片內(nèi)RAM訪問(wèn)是直接訪問(wèn)和通過(guò)寄存器R0,R1間接訪問(wèn)的。89C51工作時(shí)所需的時(shí)鐘可通過(guò)其XTALL輸入引腳由外部輸入,也可采用芯片內(nèi)部的振蕩器。其工作頻率為6~12MHz。在本系統(tǒng)中采用11.0592MHz頻率。(2)74LS273地址鎖存器74LS273是帶有三態(tài)緩沖輸出的8D鎖存器74LS273;·D7~D0:三態(tài)門(mén)輸入端?!7~Q0:三態(tài)門(mén)輸出端。·GND:接地端?!cc:電源端?!E:三態(tài)門(mén)使能端?!(STB):8D鎖存器控制端(3)8279可編程鍵盤(pán)/顯示器接口芯片 8279使Intel公司為8位微處理器設(shè)計(jì)的通用鍵盤(pán)/顯示器接口芯片,其功能主要體現(xiàn)在二個(gè)方面:接收來(lái)自鍵盤(pán)的輸入數(shù)據(jù)并作預(yù)處理;數(shù)據(jù)顯示的管理和數(shù)據(jù)顯示器的控制。單片機(jī)采用8279管理鍵盤(pán)和顯示器,可減少軟件程序,減輕負(fù)擔(dān),且顯示穩(wěn)定,程序簡(jiǎn)單。8279的引腳功能(采用40線雙列直插式封裝): ·DB0~DB7:雙向外部數(shù)據(jù)總線。用于傳送8279與CPU之間的命令、數(shù)據(jù)和狀態(tài)?!S:片選信號(hào)線,低電平有效。 ·A0:區(qū)分信息的特征位。當(dāng)A0位置1時(shí),CPU寫(xiě)入8279的信息位命令,CPU從8279讀出的信息為8279的狀態(tài);當(dāng)A0為0時(shí),I/O信息都為數(shù)據(jù)。·RD,WR:讀和寫(xiě)選通信號(hào)線,均為低電平有效?!RQ:中斷請(qǐng)求輸出線,高電平有效。 ·RL7~RL0:鍵盤(pán)回送線,平時(shí)為高電平,只有當(dāng)某一鍵閉合時(shí),其中一條線才變低?!L7~SL0:掃描輸出線,用于對(duì)鍵盤(pán)和顯示器進(jìn)行掃描。·OUTB3~OUTB0OUTA3~OUTA0:顯示段輸出線?!D:顯示熄滅控制線,低電平有效?!ESET:復(fù)位輸入線,高電平有效。 ·SHIFT,CNTL/STB:控制輸入線,由內(nèi)部拉高電陰拉成高電平,也可由外部控制按鍵拉成低電平?!LK:外部時(shí)鐘輸入線,其信號(hào)由外部振蕩器提供?!cc,GND:分別為+5V電源和地。(4)七段LED顯示器 LED是單片機(jī)應(yīng)用系統(tǒng)中一種常見(jiàn)的輸出設(shè)備,通常使用的是七段顯示。這種顯示塊有共陰極與共陽(yáng)極兩種。[4]以共陰極為例:顯示個(gè)位“4”a送0d,e送0b,c,f,g則送1gnd送0則立刻顯示4。 它由8個(gè)發(fā)光二極管(7段和一個(gè)小數(shù)點(diǎn))構(gòu)成,可用來(lái)顯示0~9,A、B、C、D.E、F、G(小數(shù)點(diǎn))。在數(shù)碼管中,若把各二極管的陰極連在一起稱(chēng)為共陰極數(shù)碼管;若把各二極管的陰極連接在一起稱(chēng)為共陰極數(shù)碼管;若把各二極管的陽(yáng)極連接在一起,則稱(chēng)為共陽(yáng)極數(shù)碼管。在本系統(tǒng)中采用共陰極數(shù)碼管。(5)ADC0809芯片[3]ADC0809是28腳雙列直插式封裝?!7~D0:8位數(shù)字量輸出引腳?!N0~I(xiàn)N7:8路模擬量輸入引腳?!cc:+5V工作電壓?!ND:地。(6)LCD顯示引腳功能[7]: ·D0~D7雙向數(shù)據(jù)總線。LCD數(shù)據(jù)讀寫(xiě)方式可以分為8位和4位兩種,以8位數(shù)據(jù)進(jìn)行讀寫(xiě)操作則D0~D7都有效,若以4位方式進(jìn)行讀寫(xiě)操作,則只用到D4~D7 ·RS:寄存器選擇控制位。當(dāng)RS=0時(shí),并且做寫(xiě)入的動(dòng)作時(shí),可以寫(xiě)入指令寄存器,若RS=0,且做讀取操作時(shí),可以讀取忙標(biāo)準(zhǔn)及地址記數(shù)器的內(nèi)容。若RS=1,責(zé)用于讀取數(shù)據(jù)寄存器[7]。 ·R/W:LCD讀寫(xiě)控制線。R/W=0時(shí),LCD執(zhí)行寫(xiě)入操作,R/W=1時(shí),LCD執(zhí)行讀取操作?!N:?jiǎn)?dòng)控制線。高電平有效?!CC:電源端?!O:亮度調(diào)整電壓輸入控制器。當(dāng)輸入0V時(shí)字符顯示最亮?!ND:接地。3.軟件系統(tǒng)設(shè)計(jì)3.1系統(tǒng)初始化模塊 系統(tǒng)初始化模塊的主要功能是完成系統(tǒng)的初始化以及設(shè)定系統(tǒng)的工作狀態(tài)初始化部分包括以下方面的內(nèi)容: 3.1.1 系統(tǒng)啟動(dòng)后,顯示器上顯示兩行,第一行為“WELCOMETOTHESYSTEM”,第二行顯示為“STARTWORK” 3.1.2等待用戶(hù)輸入溫度及濕度值。按“B”鍵表示開(kāi)始輸入,這時(shí)可按溫度下限、上限,濕度下限、上限的順序依次輸入,如果輸入的順序錯(cuò)可按“B”鍵可重新進(jìn)行輸入,直到輸入正確;輸入完畢后按“C”鍵確定。3.1.3系統(tǒng)進(jìn)入正常工作狀態(tài)。系統(tǒng)整體的工作方式如下框圖所示?圖3-1-1初始化程序部分的流程圖如下圖3-1-2所示。?圖3-1-23.2鍵盤(pán)顯示模塊??本系統(tǒng)中使用8279芯片完成有關(guān)鍵盤(pán)輸入和溫濕度顯示工作。溫度濕度是依次輸入的并且依次以下限、上限輸入,并且將溫濕度的中間數(shù)值存入單片機(jī)中,在將LED清零后顯示(分別在0123位),并依次顯示實(shí)時(shí)的溫度濕度數(shù)值(顯示在4567位)實(shí)際上,在系統(tǒng)初始化的過(guò)程中,除了初始化鍵盤(pán)和顯示器之外,其中還包括著調(diào)用8279鍵盤(pán)顯示模塊,8279鍵盤(pán)顯示模塊部分的基本流程如下圖3-2-1所示。?圖3-2-1其中顯示鍵值的程序流程圖如下:?圖3-2-23.3采樣轉(zhuǎn)換模塊 采樣轉(zhuǎn)換模塊是本系統(tǒng)中的核心模塊之一,它負(fù)責(zé)完成溫度和濕的測(cè)量及模擬量轉(zhuǎn)換為數(shù)字量的全過(guò)程,這也是它為什么重要的原因。系統(tǒng)每次轉(zhuǎn)換前ADC0809的IN0~IN7送個(gè)任意數(shù),表示開(kāi)始轉(zhuǎn)換,結(jié)果是一個(gè)數(shù)字量,將其轉(zhuǎn)化為#BCD碼,。送顯示程序顯示,并將數(shù)值返回給主函數(shù)。濕度也可以通過(guò)此種方法觀察變化,得出相應(yīng)的結(jié)論。 為了更精確的反映系統(tǒng)的溫度和濕度,本系統(tǒng)對(duì)四路采樣信號(hào)作簡(jiǎn)單平均處理,并將處理后的數(shù)值作為溫室的溫濕度,其過(guò)程如下圖。圖3-3-1 實(shí)時(shí)溫濕度顯示和溫濕度中間數(shù)值顯示便于我們實(shí)時(shí)比較和掌握系統(tǒng)工作狀況,實(shí)時(shí)的溫度濕度不在要求的區(qū)間內(nèi)則進(jìn)行升溫降溫處理。??圖3-3-23.4溫濕度控制模塊? 溫濕度判斷控制模塊也是系統(tǒng)的核心模塊之一,所謂判斷控制模塊,就是對(duì)用戶(hù)輸入的溫度和濕度與當(dāng)前溫室內(nèi)的實(shí)際溫濕度進(jìn)行比較,先進(jìn)行判斷,然后再進(jìn)行控制,控制模塊是決定系統(tǒng)將要進(jìn)行什么工作的。如溫度高于上限時(shí)需要降溫,低于下限時(shí)需要升溫,同時(shí)還要啟動(dòng)警報(bào)等等。溫度判斷控制部分的程序整體思路如下如所示:????圖3-4-1 上面已經(jīng)討論了采取中間值作為控制參數(shù),采取中間值一定區(qū)間作為控制區(qū)間的原因,那么按照(2.2)的思想,控制程序流程圖如下:??圖3-4-2?濕度判斷控制部分與溫度判斷控制部分的功能及流程是相同的,便不再贅述了。3.5報(bào)警模塊?????? 報(bào)警模塊具備兩項(xiàng)功能,即為報(bào)警燈和聲音報(bào)警。報(bào)警燈模塊是完成LED有規(guī)律的閃爍,以便從視覺(jué)上提醒用戶(hù)。LED是由74LS273控制4個(gè)雙色LED燈組成的,其閃爍規(guī)律為:向74LS273發(fā)送的數(shù)據(jù)0F0H,則雙色LED燈發(fā)綠光。向74LS273發(fā)送的數(shù)據(jù)0FH,則雙色LED燈發(fā)紅光。向74LS273發(fā)送的數(shù)據(jù)0FFH,則雙色LED燈熄滅。向74LS273交替發(fā)送0F0H、0FFH,或0FH、0FFH,以實(shí)現(xiàn)LED燈紅/滅交替或綠/滅交替,這時(shí)我們就看到了閃爍的效果。在LED燈閃爍的同時(shí),聲音報(bào)警也會(huì)同時(shí)啟動(dòng),可采用延時(shí)的方式來(lái)延長(zhǎng)聲音報(bào)警的聲音。警報(bào)燈由4個(gè)雙色的LED燈組成,一共需要8根數(shù)據(jù)線,使用74LS273芯片控制。要實(shí)現(xiàn)的功能是使4個(gè)雙色LED燈有規(guī)律的閃爍,當(dāng)用戶(hù)輸入溫度的上下限值后,系統(tǒng)進(jìn)行實(shí)時(shí)的采樣,并判斷出當(dāng)前溫度與用戶(hù)輸入溫度之間的差異,如果當(dāng)前溫度低于用戶(hù)輸入的下限溫度值,則說(shuō)明當(dāng)前溫度過(guò)低,系統(tǒng)自動(dòng)啟動(dòng)警報(bào)燈,此時(shí)警報(bào)燈發(fā)出綠光并進(jìn)行有規(guī)律的閃爍,同時(shí)開(kāi)始加溫,直至加到所需溫度值時(shí)警報(bào)燈熄滅。反之,如果當(dāng)前溫度高于用戶(hù)輸入的上限溫度值,則說(shuō)明當(dāng)前溫度過(guò)高,系統(tǒng)也會(huì)自動(dòng)啟動(dòng)警報(bào)燈,但此時(shí)警報(bào)燈會(huì)發(fā)出紅光并進(jìn)行有規(guī)律的閃爍,同時(shí)開(kāi)始降溫,直至降到所需溫度值時(shí)警報(bào)燈熄滅。?圖3-5-14硬件調(diào)試方案4.1硬件電路的調(diào)試 此部分的任務(wù)是在系統(tǒng)連接好后,調(diào)試各個(gè)組件能否正常工作,能否實(shí)現(xiàn)軟件設(shè)計(jì)的預(yù)期目標(biāo)。其步驟如下:4.1.1按照系統(tǒng)設(shè)計(jì),將系統(tǒng)需要的各個(gè)組件連接好。4.1.2根據(jù)實(shí)驗(yàn)說(shuō)明書(shū),了解各個(gè)組件的工作原理,開(kāi)始著手調(diào)試芯片。 4.1.3調(diào)試8279芯片。按照說(shuō)明書(shū)調(diào)用8279.ASM匯編程序,運(yùn)行,觀察現(xiàn)象。現(xiàn)象正確,說(shuō)明8279芯片正常,可以使用。 4.1.4調(diào)試ADC0809芯片。按照說(shuō)明書(shū)調(diào)用CON_W.ASM匯編程序,運(yùn)行,觀察現(xiàn)象?,F(xiàn)象正確,說(shuō)明ADC0809芯片正常,可以使用。 4.1.5調(diào)試直流電機(jī),按照說(shuō)明書(shū)調(diào)用直流電機(jī)相應(yīng)的匯編程序,運(yùn)行,觀察現(xiàn)象?,F(xiàn)象正確,說(shuō)明直流電機(jī)正常,可以使用。4.2 功能模塊的調(diào)試方案? 把各個(gè)功能模塊編寫(xiě)成單獨(dú)的源文件進(jìn)行調(diào)試,調(diào)試成功以后,再將各部分聯(lián)合在一起。 整個(gè)系統(tǒng)的編寫(xiě)、調(diào)試是從8279開(kāi)始的??刂?279原理雖然簡(jiǎn)單,但需要細(xì)節(jié)卻很多,如選擇顯示寄存器與送段碼的順序,8279的初始化等待時(shí)間等。用戶(hù)溫度輸入數(shù)據(jù)時(shí)上限、下限分別在七段數(shù)碼管的0、1、2、3位置顯示,濕度輸入數(shù)據(jù)時(shí)上限、下限分別在七段數(shù)碼管的4、5、6.7位置顯示。讀鍵存儲(chǔ)的過(guò)程是循環(huán)程序??裳h(huán)等待直到用戶(hù)輸入正確并確認(rèn)為止。?? 采樣轉(zhuǎn)換模塊是一個(gè)比較重要的模塊,在調(diào)試的階段遇到的問(wèn)題較多,由于它是程序運(yùn)行的瓶頸,如果這一部分通不過(guò)的話,那么程序就無(wú)法執(zhí)行下去,本系統(tǒng)采用的是延時(shí)的方法。溫濕度判斷控制模塊也一個(gè)非常重要的模塊,由于溫濕度對(duì)于植被的生長(zhǎng)起著決定性的作用,因此,如果這兩個(gè)因素控制不好,這個(gè)系統(tǒng)就失敗了,這就需要我認(rèn)真的考慮這一模塊的控制方式,調(diào)試階段比較順利。除了以上所提到的模塊之外,還有一些模塊也很重要,也都需要認(rèn)真的調(diào)試,如報(bào)警模塊等。調(diào)試了各模塊之后,接下來(lái)的工作就是將各源程序段連接起來(lái),進(jìn)行綜合調(diào)試了,綜合調(diào)試需要我們特別注意細(xì)節(jié)部分,這樣才能盡可能的減少錯(cuò)誤的產(chǎn)生。結(jié)論 雖然這個(gè)設(shè)計(jì)做的比較簡(jiǎn)單,很多東西都考慮的不是很細(xì),也有一些特別情況沒(méi)有做,但是用了很多精力用來(lái)完成這個(gè)論文,鑒于個(gè)人水平和時(shí)間的關(guān)系所以并沒(méi)有把自己當(dāng)初設(shè)想的所有情況都考慮進(jìn)去,這兩個(gè)月的畢業(yè)論文讓我學(xué)會(huì)的很多,覺(jué)得自己學(xué)的太少還有很多需要認(rèn)真學(xué)習(xí),學(xué)無(wú)止境,所以要更努力。致 謝 此次畢業(yè)設(shè)計(jì)是在我的導(dǎo)師陳勉老師的精心指導(dǎo)及全力支持下完成的。本系統(tǒng)的設(shè)計(jì)成功與陳老師的幫助是密不可分的,再加上自身的努力才能圓滿地完成預(yù)期的目標(biāo)。陳老師對(duì)新知識(shí),新事物都有自己獨(dú)到的理解,這深深的影響了我對(duì)學(xué)習(xí)的態(tài)度,將使我終生難忘。他們一絲不茍的工作態(tài)度和認(rèn)真負(fù)責(zé)的敬業(yè)精神同樣給了我巨大的收益和鼓舞。這些都將使我受益匪淺,同時(shí)也要感謝我的父母,不是你們我就不可能在大學(xué)校園里,也就不可能有這個(gè)畢業(yè)設(shè)計(jì)! 最后,我要以最真摯的感情來(lái)感謝指導(dǎo)本次畢業(yè)設(shè)計(jì)中的導(dǎo)師,是您們用辛勤的勞動(dòng)、無(wú)私的奉獻(xiàn)和淵博的知識(shí)換來(lái)了我的畢業(yè)設(shè)計(jì)。同時(shí)感謝各位同學(xué)對(duì)我的幫助,只有我們不斷的努力學(xué)習(xí),明天才會(huì)更加美好,因?yàn)闄C(jī)會(huì)永遠(yuǎn)屬于那些有準(zhǔn)備的人。參考文獻(xiàn)[1]/product/9160/9160128.shtml[Z].[2]周堅(jiān),單片機(jī)輕松入門(mén)[M].北京:北京航空航天出版社,2002. [3]孫育才.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用[M].南京:東南大學(xué)出版社,2004.P231 [4]公孫茂,馬寶匍,孫晨.單片機(jī)入口接口實(shí)例集[M].北京:北京航空航天出版社,2002.P120 [5]求是科技.PIC單片機(jī)典型模塊設(shè)計(jì)和實(shí)例導(dǎo)航[M].北京:人民郵電出版社2005. [6]龍澤明,顧立志,王桂蓮,陳光軍.MCS-51單片機(jī)原理及工程應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2005. [7]胡輝.王曉,戴永成.單片機(jī)原理及應(yīng)用設(shè)計(jì)[M].北京:中國(guó)水利水電出版社,2005.P6,P181[8]蔡菲娜.單片微型計(jì)算機(jī)原理和應(yīng)用[M]。杭州:浙江大學(xué)出版社,2003[9]/Article/ShowArticle.asp?ArticleID=113[Z] BasedonmonolithicintegratedcircuittemperatureAndhumiditycontrolsystemdesignAbstract: Thisarticleuses8051monolithicintegratedcircuitstodesignagreenhousethetemperatureandhumiditycontrolsystem,totemperaturandhumiditycontrolandrealtimedisplaywhichassigns,temperaturehumiditysignalhasfourgroupsrespectively,thesystemusesthecertalgorithmtothesignalprocessingbytodetermineusessomecontrolmethod,usesthetemperaturefirstpatterninthissystem,circulatioprocessing.Keywords:The89C518729keyboardsLCD ADC0809附錄:IN0 EQU 7FF8HIN1 EQU 7FF9HIN2 EQU 7FFAHIN3 EQU 7FFBHIN4 EQU 7FFCHIN5 EQU 7FFDHIN6 EQU 7FFEHIN7 EQU 7FFFHEQU

50HEQU

51HSET_WLSET_WHSET_W EQU

52HCURTM_W

EQU

53H54H55H?SET_SL

EQUSET_SH

EQUSET_SEQU

56HCURTM_S

EQU57HZ8279

EQU08701H;8279狀態(tài)/命令口地址D8279

EQU08700H;8279數(shù)據(jù)口地址LEDMOD

EQU00H;左邊輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQEQU38H;掃描速率LEDCLSEQU0D1H;清除顯示

RAMREADKBEQU40H;讀FIFO

RAM地址

0的命令字ORG0000H?LJMPSTART?ORG0040H?START:?MOVSP,#60H?LCALLINIT?MOVR0,#00HMOV

R1,#00HMOV

R2,#00HMOV

R3,#00HMOV

R4,#00HMOV

R5,#00HMOV

R6,#00HMOV

R7,#00HMOV

40H,#00HP0.0P0.1P1.0???????LCALLDISPLAY_1液晶顯示程序:DISPLAY_ST:RS EQUEN EQUWLED EQUCLR ENLCALL LED_BLLCALL SET_LCDMOVMOVLCALLA,

#’1’B,

#15LCDP1;LCD

RC引腳定義;LCD

EN引腳定義;工作指示燈引腳定義;LCD被禁用;LCD閃爍;LCD做顯示測(cè)試;設(shè)置所要顯示的字符;設(shè)置所要顯示的位置;在LCD第一行顯示字符MOVA,#’2’;設(shè)置所要顯示的字符MOVB,#15;設(shè)置所要顯示的位置;在LCD第二行顯示字符;循環(huán);LCD初試化并做測(cè)試;LCD被禁用;LCD初試化;延時(shí);指針指到消息第一行;顯示在第一行;顯示執(zhí)行消息于LCD第一行;指針指到消息第二行;顯示在第二行;顯示執(zhí)行消息于LCD第二行;4位I/O初試化;雙列顯示字符使用5×7點(diǎn)陣;光標(biāo)出現(xiàn)不閃爍;每次向右移動(dòng)一位,顯示屏不動(dòng)LCALL

LCDP2JMP

$SET_LCD:CLR

ENLCALL

INIT_LCDLCALL

DELAYMOV

DPTR,#LMESS1MOV

A,#1LCALL

LCD_PRINTMOV

DPTR,#LMESS2MOV

A,#2LCALL

LCD_PRINTRETINIT_LCD1:MOV

A,#28HLCALL

WCOMMOV

A,#0EHLCALL

WCOMMOV

A,#06HLCALL

WCOMMOV

A,#01H;清除LCD顯示屏;清除LCD的第一行,設(shè)置第一行字符;設(shè)置記數(shù)值;載入空格到LCD;輸出字符到LCD;記數(shù)結(jié)束;在LCD第一行或第二行顯示字符;設(shè)置第一行地址WCOMCLR_LINE;設(shè)置第一行地址LCALL

WCOMRETCLR_LINE1:MOV

A,80HLCALL

WCOMMOV

R0,#24CL:MOV

A,#’’LCALL

WDATADJNZ

R0,CLRETLCD_PRINT:CJNE

A,#1,LINE2LINE1:MOV

A,#80HLCALLLCALLMOV

A,80HLCALL

WCOMJMP

FILLLINE2:MOV A,

#0C0HLCALL

WCOM?LCALL

CLR_LINE?MOV

A,0C0H?LCALL

WCOM?FILL:?CLR

A?MOVC

A,

@A+DPTR?CJNE A,

#0,L1?RET?L1:LCALL

WDATA?INC

DOTR?JMP

FILL?RET?CLR_LINE:MOV

R0,#24;清除LCD該行字符?C1:MOV

A,#’’;載入空格符到LCD?LCALL

WDATA;輸出字符到LCD?DJNZ

R0,C1;記數(shù)結(jié)束?RET?DE:;短暫延時(shí)?MOV

R7,#5?DJNZ

R7,$?RET?EN1:?SET

EN?LCALL

DE?CLR

EN?LCALL

DE?RET?INIT_LCD:?MOV

P0,#30H;LCD四位接口指令重置?LCALL

EN1;RS=0,R/W=0,D4~D7=0011?MOV

P0,#30H?LCALL

EN1?MOV

P0,#30H?LCALL

EN1?MOV

P0,#20H;啟動(dòng)四位接口指令?LCALL

EN1;RS=0,R/W=0,D4~D7=0010?LCALL

INIT_LCD1;LCD指令設(shè)置初試化?RET?WCOM:?MOV

P0,A;先寫(xiě)入高四位命令?CLR

RS;RS=0寫(xiě)入命令?LCALL

EN1;產(chǎn)生高電平起用脈沖?RLC

A;向左移四位?RLC

A?RLC

A?RLC

AMOVP0,A;先寫(xiě)入低四位命令CLRRS;RS=0寫(xiě)入命令LCALL

EN1;產(chǎn)生高電平起用脈沖RETWDATA:MOVP0,

A;先寫(xiě)入高四位命令SETBRS;;RS=1寫(xiě)入數(shù)據(jù);產(chǎn)生高電平起用脈沖;向左移四位;寫(xiě)入低四位命令;RS=1寫(xiě)入數(shù)據(jù);產(chǎn)生高電平起用脈沖;LCD閃動(dòng)控制程序WLEDR5,#10LCALL

EN1RLC

ARLC

ARLC

ARLC

AMOV

P0,ASETB

RSLCALL

EN1RETLED_BL:MOV

R4,#4LE1:CPLMOVLCALL

DELAYDJNZ

R4,

LE1RETLEMSS:字符消息DB

WELCOME

TO

LCD

SYSTEM”;需要顯示的?DB“

START

WORK”LCDP1:PUSH

ACC;在LCD第一行特定位置顯示字符?MOV

A,

B;A=ACC,DATA所要顯示的字符;設(shè)置第一行地址;由堆棧取出A寄存器值;寫(xiě)入所要顯示的字符;在LCD第一行特定位置顯示字符;A=ACC,DATA所要顯示的字符;設(shè)置第一行地址ADD

A,

#80HLACLL

WCOMPOP

ACCLCALL

WDATARETLCDP2:PUSH

ACCMOV

A,BADD

A,

#0C0HLACLL

WCOMPOP

ACCLCALL

WDATARETEND?;鍵識(shí)別LCALL

GETKEY;調(diào)用GETKEY;判斷是否有鍵入,無(wú)則再讀CJNE

A,#0FFH,SET_TMOV

A,BCJNE

A,#3CH,TTCJNE

R0,#00H,SET_1;判斷鍵入是否3CH;判斷是否有鍵入并鍵入完成SJMP

SET_TLCALL

DISPLAY_NOR;置8279工作方式MOV

DPTR

,#Z8279MOV

A,#LEDMODMOVX

@DPTR,AMOV

A,#LEDFEQ;置鍵盤(pán)掃描速率;清除LED顯示MOVX

@DPTR,AMOV

A,#LEDCLSMOVX

@DPTR,A;判斷是否鍵入B;作為標(biāo)志位,判斷是否數(shù)據(jù)輸入確定SET_T:??????SET_1:????????LCALL

L1TT:

CJNE

A,#3BH,KSINCR0MOV

R4,#0LCALL

GETWORDMOV

A,BLCALL

GETWORD

MOV

A,BMOV

SET_WH,AMOV

A,SET_WLADD

A,SET_WHMOV

B,#02HDIV

ABMOV

SET_W,ALCALL

GETWORD

MOV

A,BMOV

SET_SH,AMOV

A,SET_SLADD

A,SET_SHMOV

B,#02HDIV

ABMOV

SET_S,AMOV

SET_WL,AMOV

R4,#2????????MOV

R4,#4LCALL

GETWORDMOV

A,BMOV

SET_SL,AMOV

R4,#6????????KS:

SJMP

SET_TSET_T1:;判斷輸入是否正確;若正確則無(wú)需再讀;若錯(cuò)誤則調(diào)用SET_T再鍵入數(shù)據(jù)MOV

R1,#0AHSET_T2:

LCALL

GETKEYCJNE

A,#0FFH,RINGMOV

A,BCJNE

A,#3BH,RINGLJMP

SET_TRING:DJNZ

R1,SET_T2RET?GETKEY:

PUSH

DPH;保存現(xiàn)場(chǎng)PUSHDPLPUSHPSWMOVDPTR,#Z8279MOVXA,@DPTR;讀8279狀態(tài)ANLA,#07H;屏蔽D7-D3JNZGETVAL;判斷是否有鍵輸入MOVA,#0H;置標(biāo)志(無(wú)鍵輸入)SJMPNKBHIT;讀FIFO

RAM命令GETVAL:

MOV

A,#READKBMOVX

@DPTR,A?MOV

DPTR,#D8279?MOVX

A,@DPTR

;讀鍵?ANL

A,#3FH

;屏蔽SHIFT和CTRL鍵?MOV

DPTR,#KEYCODE

;鍵碼表起始地址?MOVC

A,@A+DPTR

;查表?MOV

B,A

;置返回鍵值?MOV

A,#0FFH

;置標(biāo)志(有鍵輸入)?NKBHIT:

POP

PSW?POP

DPL?POP

DPH?RET?GETWORD:

;讀數(shù)子程序?WKEY1:

LCALL

GETKEY

;讀鍵盤(pán)CJNEA,#0FFH,WKEY1;無(wú)鍵輸入,則再讀MOVA,BADDA,#0C6HJCERROR1;判斷輸入是否大于9MOVA,BSUBBA,#30HJCERROR1;判斷輸入是否小于0MOVR5,ALCALLDISLED;顯示輸入的字符?MOV

B,#10MUL

ABPUSH

ACC;保存輸入的值;讀鍵盤(pán)A,#016H

;判斷輸入是否大于9ERROR2;判斷輸入是否小于0;顯示輸入的字符;把得到的值存在B;置合法輸入標(biāo)志??WKEY2:

LCALL

GETKEYCJNE

A,#0FFH,WKEY2

;無(wú)鍵輸入則再讀MOV

A,BADDJCMOV

A,BSUBBJCINCMOVLCALLMOVPOPADDMOVMOVAJMPA,#30HERROR2R4R5,ADISLEDB,AACCA,BB,AA,#0FFHKEYOK;置非法輸入標(biāo)志ERROR2:SJMP

WKEY2ERROR1:SIMP

WKEY1KEYOK:

RET?INIT_TRF:MOV

DPTR,#8100HMOV

A,#0FFHMOVX

@DPTR,ARETINIT8279:;8279初始化子程序PUSHDPH;保存現(xiàn)場(chǎng)PUSHDPLPUSHACCLCALLDELAY;延時(shí)MOVDPTR

,#Z8279MOVA,#LEDMOD;置8279工作方式MOVX@DPTR,AMOVA,#LEDFEQ;置鍵盤(pán)掃描速率MOVX@DPTR,AMOVA,#LEDCLS;清除LED顯示MOVX@DPTR,A?;保存現(xiàn)場(chǎng);置顯示起始地址;加位置偏移量;設(shè)定顯示位置;置顯示常數(shù)表起始位置DPTR,#Z8279@DPTR,ADPTR,#LEDSEGA,R5;查表A,@A+DPTRDPTR,#D8279@DPTR,A;顯示數(shù)據(jù);恢復(fù)現(xiàn)場(chǎng)LCALL

DELAY

;延時(shí)DISLED:

PUSH

DPHPUSH

DPLPUSH

ACCMOV

A,#LEDWR0ADD

A,R4MOVMOVXMOVMOVMOVCMOVMOVXPOP

ACCPOP

DPLPOP

DPHRETDELAY:PUSH

0;延時(shí)子程序;保存現(xiàn)場(chǎng)MOV

0,#0H;恢復(fù)現(xiàn)場(chǎng)DJNZ

1,$DJNZ

0,DELAY1POP

1POP

0RET將鍵入下限于實(shí)時(shí)值比較PUSH 1?DELAY1:MOV 1,#0H?????L1:LCALL SET_T1LCALL A_D_WLCALL A_D_SLCALL CON_WLCALL A_D_WLCALL A_D_SLCALL CON_SSJMP L1溫度控制:CON_W:?MOV A,SET_WLCJNEA,CURTM_W,CON0_W若實(shí)時(shí)值在下限以下,則調(diào)用升溫若在下限以上則再判斷實(shí)時(shí)值與上限比較END_CON_W

DOWN_W若在上限下限以?xún)?nèi)則返回否則調(diào)用降溫SETB

P1.1;中間實(shí)時(shí)溫濕度顯示CLR

P1.1MOV

DPTR,#8100HMOV

A,#0FFHLJMPEND_CON_WCON0_W:JNCRISE_WJC CON1_WCON1_W:MOV A,SET_WHCJNE A,CURTM_W,CON2_WLJMP END_CON_WCON2_W:JNCJCEND_CON_W:RET降溫處理:DOWN_W:?LCALL DIS_WSLCALL REDLCALL TEST1_W????MOVX

@DPTR,ACLR

P1.2;中間實(shí)時(shí)溫濕度顯示LCALL

DIS_WSLCALL

GREENLCALL

TEST2_WSETB

P1.2測(cè)試降濕判斷是否降溫到中間值+1,無(wú)則繼測(cè)試升濕LJMPEND_CON_W升溫處理:RISE_W:?????MOVDPTR,#8100HMOVA,#0FFHMOVX@DPTR,ATEST1_W:LCALLA_D_WCLRCMOVA,CURTM_WMOVA,SET_WADDCA,#01HCJNEA,CURTM_S,TEST1_W續(xù)降濕RETTEST2_W:LCALLA_D_WCLRCMOV

A,

CURTM_WMOV

A,SET_WSUBB

A,#01HCJNE

A,CURTM_W,TEST_W判斷是否降溫到中間值-1,無(wú)則繼續(xù)升濕R1,00H,AD04MOVSJMPDPTR,#IN0TRANCJNE?四路溫度平均:A_D_W: MOV A,R1RL ARL AMOV R0,AMOV R1,AMOV A,@R0INC R0MOV R5,00HMOV R6,04HSTART:CJNE??AD04:??R3,01H,

AD05MOV

DPTR,#IN1SJMP

TRANSJMPTRANDPTR,#IN3AD05:

CJNE R3,02H,

AD06MOV

DPTR,#IN2?AD06:

MOVTRAN:?NOPNOPMOVX@DPTR,A

;啟動(dòng)A_D?JBP3.3,$?MOVXA,@DPTRLCALLDELAYMOVXA,@DPTRADDA,R5MOVR5,ADJNZR6,TRANMOVA,R5ADDCA,

#0F2H;四舍五入ANDA,#0F6HCLRCRRCACLRCRRCAMOVCURTM_S,A;初始采樣0809一次@DPTR,A將鍵入下限于實(shí)時(shí)值比較;若實(shí)時(shí)值在下限以下,則調(diào)用升溫;若在下限以上則再判斷;實(shí)時(shí)值與上限比較A,SET_SHA,CURTM_S,CON2_SEND_CON_S;若在上限下限以?xún)?nèi)則返MOVXPOPDPLPOPDPHPOPACCPOPPSWRET濕度控制:CON_S:MOV A,SET_SLCJNEA,CURTM_S,CON0_SLJMPEND_CON_SCON0_S:JNCRISE_SJC CON1_SCON1_S:MOVCJNELJMPCON2_S:JNC END_CON_S回???JC

DOWN_S

;否則調(diào)用降溫END_CON_S:

LCALL

DISPLAY_END去濕處理:?DOWN_S:??SETB

P1.1?LCALL

DIS_WS

;中間實(shí)時(shí)溫濕度顯示?LCALL

RED?LCALL

TEST1_S?CLR

P1.1?MOV

DPTR,#8100H?MOV

A,#0FFH?MOVX

@DPTR,A?LJMP

END_CON_S?噴霧處理:?RISE_S:?CLR

P1.2?LCALL

DIS_WS

;中間實(shí)時(shí)溫濕度顯示?LCALL

GREEN?LCALL

TEST?SETB

P1.2?MOV

DPTR,#8100H;測(cè)試降濕;判斷是否降溫到中間值+1,無(wú)則繼;測(cè)試升濕;判斷是否降溫到中間值-1,無(wú)則繼續(xù)升MOV A,#0FFHMOVX@DPTR,ATEST1_S:LCALLA_D_SCLRCMOV A,CURTM_SMOV A,SET_SADDC A,#01HCJNEA,CURTM_S,TEST1_S續(xù)降濕RETTEST2_S:LCALLA_D_SCLRCMOV A,CURTM_SMOV A,SET_SSUBB A,#01HCJNEA,CURTM_S,TEST_S濕四路濕度輸入平均:A_D_S: MOV A,R1SJMP

TRANR3,01H,

AD02MOV

DPTR,#IN5SJMP

TRANR3,02H,

AD03TRANDPTR,#IN7@DPTR,A;啟動(dòng)A_DRL

ARL

AMOV

R0,AMOV

R1,AMOV

A

,@R0INC

R0MOV

R5,00HMOV

R6,04HSTART:CJNE

R1,00H,AD01MOV

DPTR,#IN4?AD01:CJNE??AD02:CJNEMOV

DPTR,#IN6SJMPAD03:MOVTRAN:MOVXNOPNOPJB

P3.3,$MOVX

A,@DPTR;四舍五入;初始采樣0809一次??LCALLMOVXADDMOVDJNZMOVADDCANDCLRRRCCLRRRCMOVMOVXPOPPOPDELAYA,@DPTRA,R5R5,AR6,TRANA,R5A,

#0F2HA,#0F6HCA

C

ACURTM_W,A@DPTR,ADPLDPHACC

PSWPOPPOPRET中間數(shù)值的顯示和適時(shí)數(shù)值顯示:DIS_WS:LCALL LED-CLRMOV A,CURTM_WMOV B,#0AHDIV ABMOV R5,AMOV R4,#0LCALL DIS_LEDMOV R5,BMOV R4,#1LCALL DIS_LEDMOV A,CURTM_SMOV B,#0AHDIV ABMOV R5,AMOV R4,#2LCALL DIS_LEDMOV R5,BMOV R4,#3LCALL DIS_LEDMOV A,SET_SMOV B,#0AHDIV ABMOV R5,AMOV R4,#4LCALL DIS_LEDMOV R5,BMOV R4,#5LCALL DIS_LEDMOV A,SET_WMOV B,#0AHDIV ABMOV R5,AMOV R4,#6LCALL DIS_LEDMOV R5,BMOV R4,#7LCALL DIS_LEDLED_CLR:?MOVA,#0D1H?MOV@DPTR,A?RET液晶顯示程序如下:DISPLAY_NOR:RS

EQUP0.0;LCD

RC引腳定義EN

EQUP0.1;LCD

EN引腳定義WLED

EQUP1.0;工作指示燈引腳定義CLR

EN;LCD被禁用LCALL

LED_BL;LCD閃爍LCALL

SET_LCD;LCD做顯示測(cè)試MOV

A,

#’1’;設(shè)置所要顯示的字符MOV

B,

#15;設(shè)置所要顯示的位置LCALL

LCDP1;在LCD第一行顯示字符MOV

A,

#’2’;設(shè)置所要顯示的字符MOV

B,

#15;設(shè)置所要顯示的位置LCALL

LCDP2;在LCD第二行顯示字符JMP

$;循環(huán)SET_LCD:;LCD初試化并做測(cè)試CLR

EN;LCD被禁用LCALL

INIT_LCD;LCD初試化LCALL

DELAY;延時(shí)MOVDPTR,#LMESS1;指針指到消息第一行MOVA,#1;顯示在第一行LCALLLCD_PRINT;顯示執(zhí)行消息于LCD第一行MOVDPTR,#LMESS2;指針指到消息第二行MOVA,#2;顯示在第二行LCALLLCD_PRINT;顯示執(zhí)行消息于LCD第二行RETINIT_LCD1:;4位I/O初試化MOVA,#28HLCALLWCOM;雙列顯示字符使用5×7點(diǎn)陣MOVA,#0EHLCALLWCOM;光標(biāo)出現(xiàn)不閃爍MOVA,#06HLCALLWCOM;每次向右移動(dòng)一位,顯示屏不動(dòng)MOVA,#01HLCALLWCOM;清除LCD顯示屏RETCLR_LINE1:MOVA,80H;清除LCD的第一行,設(shè)置第一行字符LCALLWCOMMOVR0,#24;設(shè)置記數(shù)值CL:MOV

A,#’’;載入空格到LCD;輸出字符到LCD;記數(shù)結(jié)束;在LCD第一行或第二行顯示字符;設(shè)置第一行地址WCOMCLR_LINE;設(shè)置第一行地址A,

#0C0HWCOMCLR_LINEA,0C0HWCOMLCALL

WDATADJNZ

R0,CLRETLCD_PRINT:CJNE

A,#1,LINE2LINE1:MOV

A,#80HLCALLLCALLMOV

A,80HLCALL

WCOMJMP

FILLLINE2:MOVLCALLLCALLMOVLCALLFILL:CLR

AMOVC

A,

@A+DPTRCJNE

A,

#0,L1RET;清除LCD該行字符;載入空格符到LCD;輸出字符到LCD;記數(shù)結(jié)束;短暫延時(shí)R7,$L1:LCALL

WDATAINC

DOTRJMP

FILLRETCLR_LINE:MOV

R0,#24C1:MOV

A,#’’LCALL

WDATADJNZ

R0,C1RETDE:MOV

R7,#5DJNZRETEN1:SET

ENLCALL

DECLR

ENLCALL

DERET?INIT_LCD:MOVP0,#30H;LCD四位接口指令重置LCALLEN1;RS=0,R/W=0,D4~D7=0011MOVP0,#30HLCALLEN1MOVP0,#30HLCALLEN1MOVP0,#20H;啟動(dòng)四位接口指令LCALLEN1;RS=0,R/W=0,D4~D7=0010;LCD指令設(shè)置初試化;先寫(xiě)入高四位命令;RS=0寫(xiě)入命令;產(chǎn)生高電平起用脈沖;向左移四位;先寫(xiě)入低四位命令;RS=0寫(xiě)入命令;產(chǎn)生高電平起用脈沖LCALL

INIT_LCD1RETWCOM:MOV

P0,ACLR

RSLCALL

EN1RLC

ARLC

ARLC

ARLC

AMOV

P0,ACLR

RSLCALL

EN1RET;先寫(xiě)入高四位命令;RS=1寫(xiě)入數(shù)據(jù);產(chǎn)生高電平起用脈沖;向左移四位;寫(xiě)入低四位命令;RS=1寫(xiě)入數(shù)據(jù);產(chǎn)生高電平起用脈沖R4,#4;LCD閃動(dòng)控制程序WLEDR5,#10WDATA:MOV

P0,

ASETB

RSLCALL

EN1RLC

ARLC

ARLC

ARLC

AMOV

P0,ASETB

RSLCALL

EN1RETLED_BL:MOVLE1:CPLMOVLCALL

DELAYDJNZ

R4,

LE1RETDB

“THE

SYSTEM

WORK”;需要顯示的字符消息DB

“NOFMALLY”;A=ACC,DATA所要顯示的字符;設(shè)置第一行地址A,

#80HWCOM

ACCWDATA;由堆棧取出A寄存器值;寫(xiě)入所要顯示的字符;在LCD第一行特定位置顯示字符;A=ACC,DATA所要顯示的字符;設(shè)置第一行地址LEMSS:?LCDP1:MOV

A,

BADDLACLLPOPLCALLRETLCDP2:PUSH

ACCMOV

A,BADD

A,

#0C0HLACLL

WCOMPOP

ACCLCALL

WDATARETENDDISPLAY_END:RSENWLEDCLREQU

P0.0EQU

P0.1EQU

P1.0EN;LCD

RC引腳定義;LCD

EN引腳定義;工作指示燈引腳定義;LCD被禁用A,

#’2’B,

#15;LCD閃爍;LCD做顯示測(cè)試;設(shè)置所要顯示的字符;設(shè)置所要顯示的位置;在LCD第一行顯示字符;設(shè)置所要顯示的字符;設(shè)置所要顯示的位置;在LCD第二行顯示字符;循環(huán);LCD初試化并做測(cè)試;LCD被禁用;LCD初試化;延時(shí);指針指到消息第一行;顯示在第一行;顯示執(zhí)行消息于LCD第一行;指針指到消息第二行;顯示在第二行;顯示執(zhí)行消息于LCD第二行;4位I/O初試化LCALL

LED_BLLCALL

SET_LCDMOV

A,

#’1’MOV

B,

#15LCALL

LCDP1MOVMOVLCALL

LCDP2JMP

$SET_LCD:CLR

ENLCALL

INIT_LCDLCALL

DELAYMOV

DPTR,#LMESS1MOV

A,#1LCALL

LCD_PRINTMOV

DPTR,#LMESS2MOV

A,#2LCALL

LCD_PRINTRETINIT_LCD1:MOV

A,#28HLCALLWCOM;雙列顯示字符使用5×7點(diǎn)陣MOVA,#0EHLCALLWCOM;光標(biāo)出現(xiàn)不閃爍MOVA,#06HLCALLWCOM;每次向右移動(dòng)一位,顯示屏不動(dòng)MOVA,#01HLCALLWCOM;清除LCD顯示屏RETCLR_LINE1:MOVA,80H;清除LCD的第一行,設(shè)置第一行字符LCALLWCOMMOVR0,#24;設(shè)置記數(shù)值CL:MOV

A,#’’;載入空格到LCDLCALLWDATA;輸出字符到LCD?DJNZ

R0,CL;記數(shù)結(jié)束?RET?LCD_PRINT:?CJNE

A,#1,LINE2;在LCD第一行或第二行顯示字符?LINE1:;設(shè)置第一行地址?MOV

A,#80H?LCALL

WCOM;設(shè)置第一行地址A,

#0C0HWCOMCLR_LINEA,0C0HWCOMLCALL

CLR_LINEMOV

A,80HLCALL

WCOMJMP

FILLLINE2:MOVLCALLLCALLMOVLCALLFILL:CLR

AMOVC

A,

@A+DPTRCJNE

A,

#0,L1RETL1:LCALL

WDATAINC

DOTRJMP

FILLRETCLR_LINE:MOV

R0,#24;清除LCD該行字符;載入空格符到LCD;輸出字符到LCD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論