0.png (67.24 KB, 下載次數(shù): 164)
下載附件
2016-9-3 20:02 上傳
完整的資料下載地址:
溫室大棚溫濕度控制系統(tǒng).rar
(1.8 MB, 下載次數(shù): 286)
2016-9-3 20:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是文檔的部分內(nèi)容預(yù)覽:
緒論
1.1課題來源
1.2國內(nèi)外發(fā)展現(xiàn)狀、趨勢以及面臨的挑戰(zhàn)
1.3研究的目的、意義及主要內(nèi)容
2硬件設(shè)計
2.1系統(tǒng)總體結(jié)構(gòu)設(shè)計
2.2控制模塊的設(shè)計
2.2.1 STC89C51的主要特性
2.2.2 AT89C51的管腳說明
2.2.3震蕩電路
2.2.4 復位電路
2.2.5 單片機的CPU
2.2.6 單片機的中斷系統(tǒng)
2.2.7 單片機最小系統(tǒng)
2.3 傳感器設(shè)計
2.3.1 DHT11的簡介
2.3.2 引腳說明
2.3.3 電源引腳
2.3.4 串行接口(單線雙向)
2.4 無線模塊的設(shè)計
2.4.1 APC220的性能
2.4.2 無線傳輸模塊APC220的接口說明
2.4.3 APC220無線模塊的工作參數(shù)的設(shè)置
2.4.4 APC220無線模塊的技術(shù)指示
2.5鍵盤和顯示模塊的設(shè)計
2.5.1顯示模塊設(shè)計
2.5.2鍵盤模塊設(shè)計
2.6執(zhí)行模塊的設(shè)計
2.6.1調(diào)節(jié)模塊
2.6.2 報警模塊
3.軟件設(shè)計
3.1 初始化子程序
3.2 數(shù)據(jù)采集模塊
3.3 顯示模塊
3.4 無線模塊
3.4.1 無線數(shù)據(jù)接收子程序
3.4.2 無線數(shù)據(jù)接收處理模塊
4.結(jié)束語
參考文獻
致謝
- 國內(nèi)外現(xiàn)狀和發(fā)展趨勢與研究的主攻方向
美國是將計算機應(yīng)用于大棚和管理最早,最多的國家之一。美國開發(fā)的大棚計算
機控制與管理系統(tǒng)可以根據(jù)作物的特點和生長所需要的條件,對大棚內(nèi)的光照,溫度,濕度等諸多因素進行自動控制。這種自動控制系統(tǒng)需要種植者輸入溫室作物生長所需的環(huán)境的目標參數(shù),計算編機根據(jù)傳感器的實際測量值與事先設(shè)定的目標進行比較,以決定大棚溫濕度的控制過程,按照相應(yīng)的機構(gòu)進行加熱,降溫或者是澆水,通風等。目前,我國絕大部分自主開發(fā)的大棚溫濕度控制或者進口的國外設(shè)備都屬于這種系統(tǒng)。 雖然這種自動控制系統(tǒng)實現(xiàn)了自動化,適合規(guī)�;a(chǎn),提高了勞動生產(chǎn)率,通過改變大棚溫室度的設(shè)定目標,可以自動的對大棚內(nèi)溫濕度進行調(diào)節(jié),但是這種調(diào)節(jié)對作物的生長來說還是相對滯后的,難以介入作物生長的內(nèi)在規(guī)律。所以在這種自動控制系統(tǒng)和實踐的基礎(chǔ)上,溫濕度自動控制向著適合不同作物生長的智能化控制發(fā)展。 國外大棚業(yè)正致力于高科技發(fā)展,遙測技術(shù),網(wǎng)絡(luò)技術(shù),控制局域網(wǎng)已逐漸應(yīng)用于大棚的管理和控制中,近幾年各國溫度控制技術(shù)提出建立大棚行業(yè)標準,朝著網(wǎng)絡(luò)化,大眾化,大規(guī)模,無人化的方向發(fā)展的思路。
- 主要研究內(nèi)容,關(guān)鍵問題的解決思路
本系統(tǒng)的設(shè)計的硬件主要包括:主要是單片機AT89C51,檢測系統(tǒng),顯示電路,A|D電路,報警電路等。利用傳感器測量大棚內(nèi)的溫濕度經(jīng)過信號處理,將傳感器測得的數(shù)據(jù)送至控制系統(tǒng)(AT89C51),與預(yù)設(shè)的農(nóng)作物最適合生長的溫濕度值的上下限進行對比,并通過顯示電路將測得的溫濕度進行實時顯示。如果不同作物的適合生長的溫度不一樣,可以通過鍵盤電路修改預(yù)設(shè)值�?刂葡到y(tǒng)根據(jù)比較的結(jié)果對調(diào)節(jié)系統(tǒng)發(fā)出相應(yīng)的指令,啟動相應(yīng)的調(diào)節(jié)設(shè)備如噴水機,吹風機,加熱器,降溫等,調(diào)節(jié)大棚內(nèi)的溫濕度狀態(tài)。如果測得的數(shù)據(jù)超過了預(yù)設(shè)值的上下限,則報警電路會報警。這樣就實現(xiàn)了對大棚溫濕度的自動控制。
本文主要研究內(nèi)容如下:
1.進行溫濕度控制系統(tǒng)的整體研究與設(shè)計。
2.利用鍵盤設(shè)置溫濕度的上下限值。
3.利用數(shù)字溫濕度傳感器測量大棚內(nèi)的溫濕度。
4.利用LCD對溫濕度進行實時顯示。
5.當大棚溫濕度值超出設(shè)定范圍值時,系統(tǒng)可自動報警,并輸出 驅(qū)動信號控制繼電器對大棚溫濕度進行調(diào)節(jié)。
【摘要】在農(nóng)業(yè)生產(chǎn)中,溫室大棚的應(yīng)用越來越廣泛,也能為人們創(chuàng)造更高的經(jīng)濟效益。在溫室大棚中,最關(guān)鍵的是溫濕度控制方法。傳統(tǒng)的溫濕度控制方法完全是人工的,不僅費時費力,而且效率很低。本文旨在論述一鐘溫室大棚溫濕度控制系統(tǒng)的設(shè)計及工作原理。該系統(tǒng)主要由單片機、數(shù)字溫濕度傳感器DHT11、無線通信模塊APC220、液晶顯示LCD1602、鍵盤等組成。采用溫濕度傳感器DHT11來測量溫濕度,它的精確度高,而且DHT11直接是輸出數(shù)字信號,可直接與單片機相連。通過無線傳感器APC220來進行信號傳送,這樣能夠降低布線的麻煩。顯示部分使用的是LCD1602來顯示溫濕度。本系統(tǒng)還有附帶鍵盤,能夠?qū)Υ笈锼枰臏貪穸壬舷孪拗抵苯釉O(shè)定和修改。本系統(tǒng)的核心是單片機AT89C51,接收傳感器所測的數(shù)據(jù)并處理,然后執(zhí)行各種操作,如噴水,吹風等。 本系統(tǒng)智能度高,可靠性高,系統(tǒng)工作穩(wěn)定,且綜合性價比較高,具有較大的市場應(yīng)用前景。
【關(guān)鍵詞】 單片機 數(shù)字溫濕度傳感器DHT11 無線通信模塊APC220
顯示模塊LCD1602
前言
Greenhouse Temperature and Humidity Control System
Student :Taoxiang Lin Electronics & Information College
Tutor: Tangtaobo Electronics & Information College
【Abstract】 In agricultural production, shed greenhouse used more widely, but also can create more economic benefits for the people. In the shed greenhouse ,the most critical factor is the method of temperature and humidity control. The traditional temperature and humidity control method is completely artificial, not only time-consuming, but also inefficient. This paper aims to discusses the design and operating principle of shed greenhouse temperature and humidity control system. The system consist of the microcontroller ,digital temperature and humidity sensor DHT11,wireless sensor APC220,LCD1602,keyboard and other components. Temperature and humidity sensor DHT11 is used for measuring temperature and humidity ,its high precision ,and DHT11 can directly output digital signal, which can be directly connected with the microcontroller .This can reduce the trouble of wiring for signal transmission through wireless sensor APC220.The display selection is LCD1602 which is used for displaying the temperature and humidity. The system also comes with a keyboard ,can set and modify the upper and lower limits on the greenhouse temperature and humidity needed. The core of this system is the microcontroller AT89C51,receiving sensor measured the data and processing, and then carry out various operation ,such as water spray ,warming, cooling and ect. This system intelligent degree is high, high reliability, the system stable work, and comprehensive high cost performance, so it has great application prospect in the market. 【key word】 microcontroller digital temperature and humidity sensor DHT11 wireless sensor APC220 display section LCD1602
前言 在現(xiàn)代的大棚種植技術(shù)中,溫度、濕度是大棚蔬菜能否茁壯成長的重要因素�,F(xiàn)在我國大棚生產(chǎn)規(guī)模雖然空前巨大,但是大棚的設(shè)備比較陳舊,溫度采集方式落后,廣大農(nóng)村采用煤油溫度計的溫度采集方式,不僅溫度采集較為老套,并且費時費力,不利于大棚生產(chǎn)規(guī)模的擴大,也不利于信息化程度的提高,不符合黨中央提出的科技興農(nóng)的戰(zhàn)略目標。 農(nóng)業(yè)是人類社會最古老的行業(yè),是各行各業(yè)的基礎(chǔ),也是人類頓以生存的最重要的行業(yè),由傳統(tǒng)農(nóng)業(yè)向現(xiàn)代化農(nóng)業(yè)轉(zhuǎn)變,由粗放經(jīng)營向集約經(jīng)營轉(zhuǎn)變,必須要求農(nóng)業(yè)科技有一個大的發(fā)展,進行一次新的農(nóng)業(yè)技術(shù)革命�?萍嫉陌l(fā)展促進了農(nóng)業(yè)的發(fā)展,溫室大棚在農(nóng)業(yè)中的應(yīng)用越來越廣泛。傳統(tǒng)的溫室大棚的自動化程度很低,基本是是粗放型的人工操作,即便對于所給定的量,在操作中無法進行有效的控制,很大程度上限制了溫室大棚的經(jīng)濟效益。 現(xiàn)代智能控制系統(tǒng)是進行溫室大棚溫濕度控制的有效手段和工具,它可以提高操作的準確性,有利于控制過程的科學管理,也降低了對操作者本身素質(zhì)的要求和體力勞動強度。除此之外,它還能準確、定時、定量、高效的進行溫濕度控制,可以節(jié)省人力、體力而提高質(zhì)量和產(chǎn)量。智能溫室大棚控制系統(tǒng)在我國農(nóng)業(yè)中的使用為數(shù)不多,與發(fā)達國家相比,有較大的差距,有很多是基本停留在人工操作,即使有些使用的了自動控制系統(tǒng),但是也是以經(jīng)驗來自行設(shè)定很多參數(shù),使得不能物盡其用而又造成浪費。只有提高自動控制系統(tǒng)的智能,使得在農(nóng)業(yè)生產(chǎn)中更加智能和方便并采用廉價的器材使其價格能被廣大農(nóng)業(yè)生產(chǎn)者所接受,才能促進智能溫室大棚溫濕度控制在農(nóng)業(yè)中的廣泛應(yīng)用和提高其經(jīng)濟效益。 隨著微型計算機和傳感器技術(shù)的迅猛發(fā)展,其價格低、可靠性高,給改造農(nóng)業(yè)帶來了很多便利。用高新技術(shù)改造農(nóng)業(yè)生產(chǎn),是我國農(nóng)業(yè)和國民經(jīng)濟持續(xù)發(fā)展的根本大事。本文旨在對溫室大棚溫濕度監(jiān)控系統(tǒng)的設(shè)計,一種基于mcs-51單片機的控制系統(tǒng),通過高靈敏度的溫濕度傳感器檢測大棚內(nèi)的溫濕度,并通過控制系統(tǒng)進行溫室度調(diào)節(jié)。 第1頁(共48頁)
前言
緒論
1.1課題來源 來源于生產(chǎn)/社會實踐
1.2國內(nèi)外發(fā)展現(xiàn)狀、趨勢以及面臨的挑戰(zhàn) 美國是將計算機應(yīng)用于大棚和管理最早,最多的國家之一。美國開發(fā)的大棚計算機控制與管理系統(tǒng)可以根據(jù)作物的特點和生長所需要的條件,對大棚內(nèi)的光照,溫度,濕度等諸多因素進行自動控制。這種自動控制系統(tǒng)需要種植者輸入溫室作物生長所需的環(huán)境的目標參數(shù),計算編機根據(jù)傳感器的實際測量值與事先設(shè)定的目標進行比較,以決定大棚溫濕度的控制過程,按照相應(yīng)的機構(gòu)進行加熱,降溫或者是澆水,通風等。目前,我國絕大部分自主開發(fā)的大棚溫濕度控制或者進口的國外設(shè)備都屬于這種系統(tǒng)。 雖然這種自動控制系統(tǒng)實現(xiàn)了自動化,適合規(guī)�;a(chǎn),提高了勞動生產(chǎn)率,通過改變大棚溫室度的設(shè)定目標,可以自動的對大棚內(nèi)溫濕度進行調(diào)節(jié),但是這種調(diào)節(jié)對作物的生長來說還是相對滯后的,難以介入作物生長的內(nèi)在規(guī)律。所以在這種自動控制系統(tǒng)和實踐的基礎(chǔ)上,溫濕度自動控制向著適合不同作物生長的智能化控制發(fā)展。 國外大棚業(yè)正致力于高科技發(fā)展,遙測技術(shù),網(wǎng)絡(luò)技術(shù),控制局域網(wǎng)已逐漸應(yīng)用于大棚的管理和控制中,近幾年各國溫度控制技術(shù)提出建立大棚行業(yè)標準,朝著網(wǎng)絡(luò)化,大眾化,大規(guī)模,無人化的方向發(fā)展的思路。
前言
1.3研究的目的、意義及主要內(nèi)容 本系統(tǒng)的設(shè)計的硬件主要包括:主要是單片機AT89C51,檢測系統(tǒng),顯示電路,A|D電路,報警電路等。利用傳感器測量大棚內(nèi)的溫濕度經(jīng)過信號處理,將傳感器測得的數(shù)據(jù)送至控制系統(tǒng)(STC89C51),與預(yù)設(shè)的農(nóng)作物最適合生長的溫濕度值的上下限進行對比,并通過顯示電路將測得的溫濕度進行實時顯示。如果不同作物的適合生長的溫度不一樣,可以通過鍵盤電路修改預(yù)設(shè)值�?刂葡到y(tǒng)根據(jù)比較的結(jié)果對調(diào)節(jié)系統(tǒng)發(fā)出相應(yīng)的指令,啟動相應(yīng)的調(diào)節(jié)設(shè)備如噴水機,吹風機,加熱器,降溫等,調(diào)節(jié)大棚內(nèi)的溫濕度狀態(tài)。如果測得的數(shù)據(jù)超過了預(yù)設(shè)值的上下限,則報警電路會報警。這樣就實現(xiàn)了對大棚溫濕度的自動控制。
本文主要研究內(nèi)容如下:
1.進行溫濕度控制系統(tǒng)的整體研究與設(shè)計。
2.利用鍵盤設(shè)置溫濕度的上下限值。
3.利用數(shù)字溫濕度傳感器DHT11測量大棚內(nèi)的溫濕度。
4.利用LCD對溫濕度進行實時顯示。 5.利用315M無線傳輸系統(tǒng)進行農(nóng)田與監(jiān)控室之間的數(shù)據(jù)傳輸。
5.當大棚溫濕度值超出設(shè)定范圍值時,系統(tǒng)可自動報警,并輸出驅(qū)動信號控制繼電器對大棚溫濕度進行調(diào)節(jié)。
2硬件設(shè)計 2.1系統(tǒng)總體結(jié)構(gòu)設(shè)計 根據(jù)題目要求和單片機的工作原理,以AT89c51為控制器,進行主要的信息處理。系統(tǒng)只要由檢測電路、顯示電路、復位電路、報警電路、鍵盤電路以及調(diào)節(jié)電路組成�?傮w結(jié)構(gòu)框圖如圖1:
圖1 總體結(jié)構(gòu)框圖
2.2控制模塊的設(shè)計 從節(jié)約成本和實用的角度考慮,本系統(tǒng)采用51單片機。采用STC89C51作為主控制單片機。單片機算術(shù)運算功能強,軟件編程靈活、自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點,使其在各個領(lǐng)域應(yīng)用廣泛。
單片機STC89C52的簡介及工作原理
2.2.1 STC89C51的主要特性 · 與MCS-51產(chǎn)品指令系統(tǒng)兼容
·4K字節(jié)可重復擦寫閃存儲器
·1000次寫/擦循環(huán),數(shù)據(jù)可保存10年
·全靜態(tài)工作:0HZ-24MHZ
·三級加密程序存儲器
· 128字節(jié)內(nèi)部RAM
·32個可編程I/O口線
第1頁(共48頁)
前言
·2個16位定時/計數(shù)器
·6個中斷源
·可編程UART串行通信口
·低功耗的空閑和掉電模式�?臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。
·片內(nèi)震蕩和時鐘電路
2.2.2 AT89C51的管腳說明
1.029.jpg (26.11 KB, 下載次數(shù): 142)
下載附件
2016-9-3 20:02 上傳
圖2 AT89C51的管腳圖
·VCC:供電電壓。
· GND:接地。
·P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
· P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被
第1頁(共48頁)
前言
外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
·P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
· P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表(表1)所示: 表1 P3口的第二功能
端口引腳
| 第二功能
| P3.0
| RXD(串行口輸入)
| P3.1
| TXD(串行口輸出)
| P3.2
|
1.030.jpg (1.18 KB, 下載次數(shù): 120)
下載附件
2016-9-3 20:02 上傳
(外部中斷0) | P3.3
|
1.031.jpg (1.15 KB, 下載次數(shù): 121)
下載附件
2016-9-3 20:02 上傳
(外部中斷1) | P3.4
| T0(定時/計數(shù)器0外部輸入)
| P3.5
|
1.032.jpg (900 Bytes, 下載次數(shù): 118)
下載附件
2016-9-3 20:02 上傳
(定時/計數(shù)器1外部輸入) | P3.6
|
1.033.jpg (1.07 KB, 下載次數(shù): 134)
下載附件
2016-9-3 20:02 上傳
(外部數(shù)據(jù)存儲器寫選通) | P3.7
|
1.034.jpg (1 KB, 下載次數(shù): 127)
下載附件
2016-9-3 20:02 上傳
(外部數(shù)據(jù)存儲器讀選通) |
·RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。
·ALE/PROG: 當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩
第1頁(共48頁)
前言
頻率的 l/6 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。
·PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當 AT89C51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次
1.035.jpg (1.25 KB, 下載次數(shù): 131)
下載附件
2016-9-3 20:02 上傳
有效,即輸出兩個脈沖。在此期間,當訪問外部數(shù)據(jù)存儲器,這兩次有效的
1.036.jpg (1.25 KB, 下載次數(shù): 143)
下載附件
2016-9-3 20:02 上傳
信號不出現(xiàn)。
·EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。 如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。 Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。 ·XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。
·XTAL2:振蕩器反相放大器的輸出端。
2.2.3震蕩電路 XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。 2.2.4 復位電路 整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。 第1頁(共48頁)
前言
2.2.5 單片機的CPU MCS-51單片機的CPU由運算器、控制器和若干個特殊功能寄存器組成,運算器可以加、減以及各種邏輯運算,還可以進行乘除運算。控制器在單片機內(nèi)部協(xié)調(diào)各功能部件之間的數(shù)據(jù)傳送、數(shù)據(jù)運算等操作,并對單片機外部發(fā)出若干控制信息。
CPU中使用的特殊功能寄存器ACC、B、PSW、SP和DPTR。ACC就是累加器,在指令中一般寫為A。在做乘除運算時,B寄存器用來存放一個操作數(shù),也用來存放運算后的一部分結(jié)果;若不作乘除操作時,則B可用做通用寄存器。
程序狀態(tài)字寄存器PSW相當于一般微處理器中的狀態(tài)寄存器,其中各位的定義如表2所示。
表2 PSW狀態(tài)寄存器
D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| CY
| AC
| F0
| RS1
| RS0
| OV
| -
| P
|
其中各位的意義如下:
CY(PSW.7):高位進位標志位。常用“C”表示。
AC(PSW.6):輔助進位標志。
F0(PSW.5):用戶標志位。
RS1(PSW.4)、RS0(PSW.3):寄存器組選擇控制位。8051共有4個8位工作寄存器,分別命名為R0~R7。用戶通過改變RS1和 RS0的狀態(tài)可以方便地決定R0~R7的實際物理地址。RS1和 RS0與寄存器區(qū)的對應(yīng)關(guān)系如表3所示。
表3 RS1、RS2與工作寄存器組的關(guān)系
RS1
| RS0
| 寄存器組
| RAM中的地址
| 0
0
1
1
| 0
1
0
1
| 0
1
2
3
| 00H-07H
08H-0FH
10H-17H
18H-1FH
| OV(PSW.2):溢出標志位。
-(PSW.1):保留位,無定義。
第1頁(共48頁)
前言
P(PSW.0):奇偶校驗位,在每一個指令周期中,若累加器(A)中的“1”的位個數(shù)是奇數(shù)個則P=1,偶數(shù)個則P=0
單片機的內(nèi)存空間
從物理地址空間看,89C51有4個存儲器地址空間,片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器,其存儲情況如下:
(1)內(nèi)部程序存儲器(ROM)4K字節(jié)。
(2)外部程序存儲器(EPROM)64K字節(jié)。
(3)內(nèi)部數(shù)據(jù)存儲器(RAM)256字節(jié)。
(4)外部數(shù)據(jù)存儲器(EPRAM)64K字節(jié)。
表4 C51單片機的特殊功能寄存器地址及符號表示
特殊功能寄存器符號
| 片內(nèi)RAM地址
| 名稱
| *ACC
| E0H
| 累加器
| *B
| F0H
| 乘法寄存器
| *PSW
| D0H
| 程序狀態(tài)字寄存器
| SP
| 81H
| 堆棧指針
| DPL、DPH
| 82H、83H
| 數(shù)據(jù)指針(低8位和高8位)
| *IE
| A8H
| 中斷允許寄存器
| *IP
| B8H
| 中斷優(yōu)先級寄存器
| *P0
| 80H
| P0口鎖存器
| *P1
| 90H
| P1口鎖存器
| *P2
| A0H
| P2口鎖存器
| *P3
| B0H
| P3口鎖存器
| PCON
| 87H
| 電源控制及波特率選擇寄存器
| *SCON
| 98H
| 串行口控制寄存器
| SBUF
| 99H
| 串行數(shù)據(jù)緩沖器
| *TCON
| 88H
| 定時器控制寄存器
| TMOD
| 89H
| 定時器方式選擇寄存器
| TL0、TH0
| 8AH、8BH
| 定時器0低8位、高8位
| TL1、TH1
| 8CH、8DH
| 定時器1低8位、高8位
| 第1頁(共48頁)
前言
89C51單片機的片內(nèi)RAM雖然字節(jié)數(shù)雖然不很多,但卻起著很重要的作用。256個字節(jié)被分為兩個區(qū)域:11~7FH是真正的RAM區(qū),可以讀寫各種數(shù)據(jù);80~FFH是專用寄存器(SFR)區(qū)。對于51系列單片機安排里21個特殊功能寄存器。每個寄存器均為8位(一個字節(jié)),所以實際上這128個字節(jié)并未全部利用。表4所示為89C51單片機特殊功能寄存器地址及符號表。表中帶*號的為可位尋址的特殊功能寄存器。 2.2.6 單片機的中斷系統(tǒng) 單片機與外部設(shè)備交換信息一般采用兩種方式,即查詢方式和中斷方式。中斷方式具有CPU效率高,適合于實時控制,將從現(xiàn)場采集到的數(shù)據(jù)通過中斷方式及時傳送給CPU,經(jīng)過處理后就可立即做出響應(yīng),實現(xiàn)現(xiàn)場控制。而采用查詢方式就很難做到及時采集、實時控制。從面向用戶的角度來看,8051單片機的中斷系統(tǒng)就是由如下幾個殊功能寄存器組成: ·定時器控制寄存器TCON
·中斷允許寄存器IE
·中斷優(yōu)先級寄存器IP
·串行口控制器SCON
89C51單片機是一個多中斷源系統(tǒng)。有5個中斷源,即兩個外部中斷,兩個外部中斷、兩個定時器/計數(shù)器中斷和一個串行口中斷。
表5 TCON控制位的分布
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| 控制位
| TF1
| TR1
| TF0
| TR0
| IE1
| IT1
| IE0
| IT0
| ·TF1(TCON.7):計時器 1溢出標志,當計時溢出時,由硬件設(shè)定為 1,在執(zhí)行相對的中斷服務(wù)程序后則自動清 0。
·TR1(TCON.6):計時器1啟動控制位,可以由軟件來設(shè)定或清除。TR1時啟動計時器工作,TRl=0 時關(guān)閉。
·TF0(TCON.5):計時器 0溢出標志,當計時溢出時,由硬件設(shè)定為 1,在執(zhí)行相對的中斷服務(wù)程序后則自動清 0。
第1頁(共48頁)
前言
·TR0(TCON.4):計時器 0啟動控制位,可以由軟件來設(shè)定或清除。TR0=1時,啟動計時器工作,TR0=時關(guān)閉。
·IE1(TCON.3):外部中斷 1工作標志,當外部中斷被檢查出來時,硬件自動設(shè)定此位,在執(zhí)行中斷服務(wù)程序后,則清 0。
·IT1 (TCON.2):外部中斷 1工作形式選擇,IT1=1時,由下降緣產(chǎn)生外部中斷,IT1=0時,則為低電位產(chǎn)生中斷。
·IE0(TCON.1):外部中斷 0 工作標志,當外部中斷被檢查出來時,硬件自動設(shè)定此位,在執(zhí)行中斷服務(wù)程序后,則清 0。
·IT0 (TCON.0):外部中斷 0工作形式選擇,IT1=1時,由下降緣產(chǎn)生外部中斷,IT1=0時,則為低電位產(chǎn)生中斷。
表6 SCON控制位的分布
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| 控制位
| SM0
| SM1
| SM2
| REN
| TB8
| RB8
| TI
| RI
| · SM0、SM1為串行口的工作方式選擇位
表7 串行口工作方式
SM0
| SM1
| 工作方式
| 0
| 0
| 方式0:移位寄存器方式
| 0
| 1
| 方式1:8位UART,波特率可變
| 1
| 0
| 方式2:9位UART,波特率為fosc/64或fosc/32
| 1
| 1
| 方式3:9位UART,波特率可變
| ·SM2 (SCON.5):允許方式 2 或方式 3 多機通訊控制位。在方式 2 或方式 3 時,如SM2=1,REN=1,則從機處于只有接收到 RB8=1(地址幀)才激發(fā)中斷請求標志RI=1,向主機請求中斷處理。被確認為尋址的從機復位SM2=0,才能接收 RB8=0 的數(shù)據(jù)幀;在方式 1 時,如 SM2=l,則只有在接收到有效停止位時才置位中斷請求標志位RI=1;在方式0時,SM2應(yīng)為 0。 ·REN(SCON.4):REN,允許/禁止串行接收控制位。由軟件置位REN=1為允許串行接收狀態(tài),可啟動串行接收器RXD,開始接收信息。軟件復位REN=0,則禁止接收。
第1頁(共48頁)
前言
·TB8(SCON.3):在方式2或方式3,它為要發(fā)送的第 9位數(shù)據(jù),按需要由軟件置位。
表8 IE控制字
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| 控制位
| EA
| -
| -
| ES
| ET1
| EX1
| ET0
| EX0
| ·EA(IE.7):EA=0時,所有中斷停用(禁止中斷)。EA=1時,各中斷的產(chǎn)生由個別的允許位決定。
·-(IE.6、IE`5):保留位,無定義。
·ES(IE.4):允許串行端口的中斷(ES=1允許,ES=0禁止)。
·ET1(IE.3):允許計時器 1中斷(ET1=1允許,ET1=0 禁止)。
·EX1(IE.2):允許外部中斷 INT1的中斷(EX1=1允許,EX1=0 禁止)。
·ET0(IE.1):允許計時器 0中斷(ET0=1允許,ET0=0 禁止)。
·EX0(IE.0):允許外部中斷 INT0的中斷(EX0=1允許,EX0=0 禁止)。
表9 IP控制字
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| 控制位
| -
| -
| -
| PS
| PT1
| PX1
| PT0
| PX0
| ·-(IP.7):保留位,無定義。
·-(IP.6):保留位,無定義。
·-(IP.5):保留位,無定義。
·PS(IP.4):設(shè)定串行端口的中斷優(yōu)先次序。
·PT1(IP.3):設(shè)定時/計時器 1的優(yōu)先次序。
·PX1(IP.2):設(shè)定外部中斷 INT1的優(yōu)先次序。
·PT0(IP.1):設(shè)定計時器 0的優(yōu)先次序。
·PX0(IP.0):設(shè)定外部中斷 INT0的優(yōu)先次序。
上述每位IP.*=1時,則定義為高優(yōu)先級中斷,IP.*=0 時,則定義為低優(yōu)先級中斷。如果同時有兩個或兩個以上優(yōu)先級相同的中斷請求時,則由內(nèi)部按查詢優(yōu)
第1頁(共48頁)
前言
先順序來。
表10 TMODE控制字
| D7
| D6
| D5
| D4
| D3
| D2
| D1
| D0
| 控制位
| GATE
| C/T
| M1
| M0
| GATE
| C/T
| M1
| M0
| 低4位為T0的控制字,高4位為T1的控制字。GATE為門控位,對定時器/計數(shù)器的啟動起輔助控制作用。GATE=1時,定時器/計數(shù)器的計數(shù)受外部引腳輸入電平的控制,此時只有P3口的P3.2(或P3.3)引腳即INT0(或INT1)為1才啟動計數(shù);GATE=0時,定時器/計數(shù)器的運行不受外部輸入引腳的控制。 C/T為方式選擇位。C/T=0為定時器方式,采用單片機內(nèi)部振蕩脈沖的12分頻信號人作為時鐘計數(shù)脈沖,若采用12MHz的振蕩器,則定時器的計數(shù)頻率為1MHz,從定時器的計數(shù)值便可得定時時間。
M1、M0二位的狀態(tài)確定定時器的工作方式,詳見下表:
表11 定時器/計數(shù)器的方式選擇
M1
| M0
| 工作方式
| 0
| 0
| 方式0:為13位定時器/計數(shù)器
| 0
| 1
| 方式1:為16位定時器/計數(shù)器
| 1
| 0
| 方式2:為自動重裝常數(shù)的8位定時器/計數(shù)器
| 1
| 1
| 方式3:僅適用于T0,分成兩個8位定時器/計數(shù)器
| 2.2.7 單片機最小系統(tǒng) 要使用單片機工作首先要知道單片機的最小系統(tǒng)。單片機最小系統(tǒng)包括晶體振蕩電路、復位開關(guān)和電源部分,單片機最小系統(tǒng)如圖3
第1頁(共48頁)
前言
1.037.jpg (39.92 KB, 下載次數(shù): 157)
下載附件
2016-9-3 20:02 上傳
圖3 單片機的最小系統(tǒng)
(1) 振蕩電路
單片機是一種時序電路,必須提供脈沖信號才能正常工作,在單片機內(nèi)部已集成了振蕩器,使用晶體振蕩器,接18、19腳。如圖3所示,外部時鐘振蕩電路由晶體振蕩器和電容C1、C2構(gòu)成并聯(lián)諧振電路,連接在XTAL1、XTAL2腳兩端。對外部C1、C2的取值雖然沒有嚴格的要求,但電容的大小會影響到振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振的快速性。C1、C2通常取值C1=C2=30—30PF;8051的晶振最高振蕩頻率為12M,AT89C51的外部晶振最高頻率可到24M。典型的晶振取11.0592MHz(因為可以準確地得到9600波特率和19200波特率,用于有串口通訊的場合)/12MHz(產(chǎn)生精確的us級時歇,方便定時操作)。 (2)電源電路
第1頁(共48頁)
前言
這當然是必不可少的了。單片機使用的是5V電源,其中正極接40引腳,負極(地)接20引腳。
(3) 復位電路
由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合“電容電壓不能突變”的性質(zhì),可以知道,當系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,并且,這個高電平持續(xù)的時間由電路的RC值來決定。典型的51單片機當RST腳的高電平持續(xù)兩個機器周期以上就將復位,所以,適當組合RC的取值就可以保證可靠的復位。一般教科書推薦C 取10u,R取10K。當然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個機周期 的高電平。至于如何具體定量計算,可以參考電路分析相關(guān)書籍。 (4) EA
訪問程序存儲器控制信號,當EA為低電平時,對ROM的讀操作限制在外部程序存儲器;當EA為高電平時,則對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延至外部程序存儲器。高電平就是選用內(nèi)部ROM,低電平就是不選用內(nèi)部ROM,8031內(nèi)部根本沒有ROM,需接外接ROM,所以要低電平。 2.3 傳感器設(shè)計 測量溫濕度所用的傳感器為數(shù)字溫濕度傳感器DHT11.DHT11是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為 4 針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。
第1頁(共48頁)
前言
2.3.1 DHT11的簡介 ·相對濕度和溫度測量
1.038.jpg (7.95 KB, 下載次數(shù): 124)
下載附件
2016-9-3 20:02 上傳
·全部校準,數(shù)字輸出 ·卓越的長期穩(wěn)定性
·無需外加器件
·超長的信號傳輸距離
·超低能耗
·4引腳安裝
·完全互換 圖4 DHT11
2.3.2 引腳說明 建議接線長度短于20米時,用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻。
引腳1:VDD供電3-5.5V
引腳2:DATA串行數(shù)據(jù),單總線
引腳3:NC空腳,懸空
引腳4:GND接地,電源負極
1.039.jpg (9.8 KB, 下載次數(shù): 117)
下載附件
2016-9-3 20:02 上傳
圖5 典型應(yīng)用電路
第1頁(共48頁)
前言
2.3.3 電源引腳 DHT11的供電電壓為3-5.5V。傳感器上電后,要等待 1s 以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。
2.3.4 串行接口(單線雙向) 1.單總線傳送數(shù)據(jù)位定義
DATA 用于微處理器與 DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下:
一次完整的數(shù)據(jù)傳輸為40bit,高位先出。
數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)
+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)
+8bit校驗和
數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
2.數(shù)據(jù)時序圖
用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。
1.040.jpg (17.75 KB, 下載次數(shù): 135)
下載附件
2016-9-3 20:02 上傳
第1頁(共48頁)
前言
圖6 數(shù)據(jù)時序圖
(1)DHT11上電后,測試環(huán)境溫濕度數(shù)據(jù),并記錄數(shù)據(jù),同時DHT11的DATA數(shù)據(jù)線由上拉電阻拉高一直保持高電平;此時DHT11的DATA引腳處于輸入狀態(tài),時刻檢測外部信號。
(2)微處理器的I/O設(shè)置為輸出同時輸出低電平,且低電平保持時間不能小于18ms,然后微處理器的I/O設(shè)置位輸入狀態(tài),由于上拉電阻,微處理器的I/O即DHT11的DATA數(shù)據(jù)線也隨之變高,等待DHT11作出回答信號,
1.041.jpg (9.21 KB, 下載次數(shù): 112)
下載附件
2016-9-3 20:02 上傳
圖7 主機發(fā)送起始信號
(3)DHT11的DATA引腳檢測到外部信號有低電平時,等待外部信號低電平結(jié)束,延遲后DHT11的DATA 引腳處于輸出狀態(tài),輸出80us的低電平作為應(yīng)答信號,緊接著輸出80us的高電平通知外設(shè)準備接受數(shù)據(jù),微處理器的I/O此時處于輸入狀態(tài),檢測到I/O有低電平(DHT11回應(yīng)信號)后 ,等待80us 的高電平后的數(shù)據(jù)接收。
1.042.jpg (9.81 KB, 下載次數(shù): 122)
下載附件
2016-9-3 20:02 上傳
圖8 發(fā)送信號
(4)由DHT11的DATA引腳輸出40位數(shù)據(jù),微處理器根據(jù)I/O電平的變化接收40位數(shù)據(jù),位數(shù)據(jù)“0”的格式為:50us的低電平和26-28us的高電平;位數(shù)據(jù)
第1頁(共48頁)
前言
“1”的格式為:50us的低電平加70us的高電平。
1.043.jpg (10.31 KB, 下載次數(shù): 140)
下載附件
2016-9-3 20:02 上傳
圖9 位數(shù)據(jù)“0”的格式
1.044.jpg (8.8 KB, 下載次數(shù): 120)
下載附件
2016-9-3 20:02 上傳
圖10 位數(shù)據(jù)“1”的格式
2.4 無線模塊的設(shè)計 進入21世紀以來,無線通訊技術(shù)有了突飛猛進的發(fā)展,包括各種無線模塊的設(shè)計制作,目前應(yīng)用于無線數(shù)據(jù)傳輸?shù)募夹g(shù)非常多,如紅外技術(shù),藍牙技術(shù),RF技術(shù),GPRS,CDMA等。本系統(tǒng)采用微功率短距離無線通訊技術(shù),采用APC220-43。
APC220-43模塊是高度集成微功率半雙工無線數(shù)據(jù)傳輸模塊,其嵌入了高速單片機及高性能射頻芯片,最大可以糾24bits連續(xù)突發(fā)錯誤。APC220模塊可以提供多個頻道的選擇,可在線修改串口速度,射頻速率,發(fā)射功率等各種工作參數(shù)。
2.4.1 APC220的性能 ·1000米傳感距離(2400bps)
第1頁(共48頁)
前言
·工作頻率418-455MHZ( 1KHZ步進)
·靈活的軟件編程選項設(shè)置
·內(nèi)置看門狗,保證長期可靠運行
2.4.2 無線傳輸模塊APC220的接口說明 APC220-43模塊內(nèi)設(shè)256B的緩沖區(qū),在緩沖區(qū)為空的情況下,用戶可以不用考慮空中波特率與串口波特率的大小關(guān)系1次傳輸256B的數(shù)據(jù),當空中波特率大于設(shè)置的串口波特率時,可1次傳輸無限長度的數(shù)據(jù)。APC220模塊有UART和USB兩種接口類型可供選擇,支持7種串口波特率設(shè)置。最重要的是它采用透明的數(shù)據(jù)傳輸模式,寫發(fā)送模塊什么,接收模塊就可以讀到什么。收發(fā)模塊采用默認的工作參數(shù)就可以正常的進行數(shù)據(jù)的收發(fā)。 APC220-43模塊共有9個接腳,具體定義如下表:
APC220引腳定義
| 引腳
| 定義
| 說明
| 1
| GND
| 地0V
| 2
| VCC
| 3.3V-5.5V
| 3
| EN
| 電源是能端,>=1.6v或者懸空使能,<=0.5v休眠
| 4
| RXD
| URAT輸入口,TTL電平
| 5
| TXD
| UART輸出口,TTL電平
| 6
| AUX
| UART口的收發(fā)指示輸出,低接收,高輸出
| 7
| SET
| 參數(shù)設(shè)置,低有效
| 8
| NC
| 空腳
| 9
| NC
| 空腳
|
表12 APC220無線模塊引腳定義
第1頁(共48頁)
前言
1.045.jpg (13.53 KB, 下載次數(shù): 119)
下載附件
2016-9-3 20:02 上傳
圖6 APC220與單片機的連接
2.4.3 APC220無線模塊的工作參數(shù)的設(shè)置 通過SET腳進行在線修改。在線軟件設(shè)置是通過模塊的UART/TTL口完成的(4,5PIN)和SET腳完成的,時序圖見圖7.當EN腳置高50ms后,模塊即可正常工作(T1)。設(shè)置時首先將SET腳置低,此時無論UART口是何狀態(tài),模塊自動將UART口轉(zhuǎn)變?yōu)?600bps,無校驗?zāi)J�,約1ms后模塊進入設(shè)置狀態(tài)(T2).用戶可以通過向RXD口發(fā)送設(shè)置命令,模塊校驗后,在200ms內(nèi)TXD腳將開始返回參數(shù)信息(T3),用戶在確定設(shè)置信息無誤后置高SET腳,模塊在10ms內(nèi)切換至用戶設(shè)置的參數(shù)模式運行(T4)。需注意的是當模塊進入設(shè)置狀態(tài)(SET腳為低),用戶只能發(fā)送一次設(shè)置命令 ,如發(fā)送設(shè)置命令出錯,或已經(jīng)完成設(shè)置,若需再次設(shè)置必須將SET腳置高,后重新進入設(shè)置狀態(tài)。 第1頁(共48頁)
前言
1.046.jpg (22.22 KB, 下載次數(shù): 119)
下載附件
2016-9-3 20:02 上傳
圖7 APC220在線設(shè)置工作參數(shù)時序圖
APC220-43設(shè)置時采用的編碼為ASCII碼,采用的波特率為9600bps,無校驗?zāi)J�,設(shè)置命令有讀寫各一個,用大寫字母表示,參數(shù)之間用空格間隔開,回車表示換行結(jié)束,格式如下:
- 讀命令設(shè)置:RD PARA-頻率-空中速率-發(fā)射功率-串口速率-串口校驗
- 寫命令設(shè)置:WR PARA-頻率-空中速率-發(fā)射功率-串口速率-串口校驗
表13 APC220設(shè)置參數(shù)表示方法
參數(shù)表示方法
| 參數(shù)
| 字節(jié)數(shù)
| 說明
| 頻率
| 6
| 單位KHZ,如434MHZ表示為434000
| 空中速率
| 6
| 2400,4800,9600,19200bps用1,2,3,4表示
| 發(fā)射功率
| 1
| 0至9,設(shè)置0為-1dBm,9為13dBm(20mW)
| 串口速率
| 1
| 1200,2400,4800,9600,19200,38400,57600bps用0,1,2,3,4,5,6表示
| 串口校驗
| 1
| 串口校驗0為無效校驗,1為偶校驗,2為奇校驗
| 第1頁(共48頁)
前言
2.4.4 APC220無線模塊的技術(shù)指示 表14 APC220無線模塊的技術(shù)指示
APC220-43技術(shù)指示
| 工作方式
| 418MHZ to 455MHZ(1MHZ步進)
| 調(diào)制方式
| GFSK
| 頻率間隔
| 200KHZ
| 發(fā)射功率
| 20mw(10級可調(diào))
| 接收靈敏度
| -118dBm@1200bps
| 空中傳輸速率
| 2400-9600bps
| 接口速率
| 1200-57600bps
| 接口校驗方式
| 8E1/8N1/801
| 接口緩沖空間
| 256bytes
| 工作濕度
| 10%-90%
| 工作溫度
| -30 -85
| 電源
| 3.3- 5.5V(50mv紋波)
| 發(fā)射電流
| <=35mV@20mW
| 接收電源
| <=28mA
| 休眠電源
| <=5uA
| 傳輸距離
| 1200米傳輸距離(1200bps開闊的可視距離)
| 尺寸
| 37.5mm×18.3mm×7.0mm
|
2.5鍵盤和顯示模塊的設(shè)計 2.5.1顯示模塊設(shè)計 考慮到整個應(yīng)用系統(tǒng)的工作環(huán)境特別是對亮度的要求等因素,我們選擇了
第1頁(共48頁)
前言
LCD1602液晶顯示器進行溫濕度數(shù)據(jù)的顯示。液晶顯示器LCD體積小,質(zhì)量輕,功耗極低。
1.047.jpg (50.38 KB, 下載次數(shù): 136)
下載附件
2016-9-3 20:02 上傳
圖8 顯示電路原理圖
2.5.2鍵盤模塊設(shè)計 鍵盤是數(shù)據(jù)輸入、參數(shù)設(shè)定和手動控制的輸入設(shè)備,它的作用是進行十六進制字符的輸入。本文采用4×4式鍵盤陣列通過8各I/O口線識別16各按鍵。該按鍵需要兩組信號線,一組作為輸出信號線(稱為行線),另一組作為輸入信號線(稱為列線)。
第1頁(共48頁)
前言
1.048.jpg (12.48 KB, 下載次數(shù): 118)
下載附件
2016-9-3 20:02 上傳
圖9 鍵盤接線電路
1.049.jpg (48.73 KB, 下載次數(shù): 106)
下載附件
2016-9-3 20:02 上傳
圖10 鍵盤電路
按鍵識別有兩種方法:一是行掃描法,另一種是線反轉(zhuǎn)法。本系統(tǒng)采用行掃描法,CPU通過輸出鎖存器在某一行線上送出0,通過輸入緩沖器檢查列線是否有0,進行按鍵識別。若有按鍵壓下,則轉(zhuǎn)入逐行掃描,同時檢測列線狀態(tài)。
第1頁(共48頁)
前言
2.6執(zhí)行模塊的設(shè)計 執(zhí)行模塊包括調(diào)節(jié)設(shè)備如噴水機,吹風機,加熱器,降溫等,調(diào)節(jié)大棚內(nèi)的溫濕度狀態(tài),還有報警裝置。
2.6.1調(diào)節(jié)模塊 考慮到單片機的引腳的驅(qū)動能力有限,在本系統(tǒng)中采用了單片機的I/O口連接三極管的基集控制三極管的通斷,用三極管的集電極電流Ic來驅(qū)動控制5V繼電器的吸合,從而控制12V電磁閥的開關(guān),實現(xiàn)對植物滴灌的控制,以調(diào)節(jié)濕度。電路中,因為單片機輸出口的電流很小,無法驅(qū)動繼電器,所以在繼電器輸入端應(yīng)該接一個PNP三極管,用來放大電流,驅(qū)動繼電器工作。而為了保護此三極管的正常工作,還應(yīng)在三極管的輸出端(集電極)加上一個二極管用來保護三極管不被過流擊穿。在protuse仿真中找不到電磁閥,用電燈泡代替表示電磁閥。下圖為單片機的I/O口通過繼電器驅(qū)動電磁閥噴水:
1.050.jpg (15.11 KB, 下載次數(shù): 128)
下載附件
2016-9-3 20:02 上傳
圖11 單片機通過繼電器驅(qū)動電磁閥
第1頁(共48頁)
前言
當濕度過高時,單片機I/O口通過繼電器驅(qū)動風扇的電動機使風扇運轉(zhuǎn)來降低濕度。
2.6.2 報警模塊 當所測溫度或濕度超過設(shè)定值的上下限,就會報警。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。
1.051.jpg (6.66 KB, 下載次數(shù): 119)
下載附件
2016-9-3 20:02 上傳
圖12 電磁式蜂鳴器
蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。S51增強型單片機實驗板通過一個三極管來放大驅(qū)動蜂鳴器,原理圖見下面圖12: 第1頁(共48頁)
前言
1.052.jpg (14.9 KB, 下載次數(shù): 125)
下載附件
2016-9-3 20:02 上傳
圖13 單片機驅(qū)動蜂鳴器
如圖所示,蜂鳴器的正極接到VCC(+5V)電源上面,蜂鳴器的負極接到三極管的發(fā)射極E,三極管的基級B經(jīng)過限流電阻R1后由單片機的I/O口控制,當該I/O輸出高電平時,三極管T1截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當I/O口輸出低電平時,三極管導通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制I/O口的電平來使蜂鳴器發(fā)出聲音和關(guān)閉。程序中改變單片機I/O口輸出波形的頻率,就可以調(diào)整控制蜂鳴器音調(diào),產(chǎn)生各種不同音色、音調(diào)的聲音。另外,改變單片機I/O口輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小。
第1頁(共48頁)
前言
3.軟件設(shè)計 與硬件設(shè)計相對應(yīng),軟件設(shè)計也采用模塊化程序設(shè)計的方式,包括主程序模塊,初始化參數(shù)設(shè)置模塊,無線通訊發(fā)送模塊,無線通訊接收模塊,數(shù)據(jù)采集程序模塊,顯示模塊。
3.1 初始化子程序 初始化程序主要完成以下功能:當系統(tǒng)啟動時確定電磁閥關(guān)閉、程序設(shè)置溫濕度的上下限值的初始值、用于定時器T1、TO的初始化、串口中斷的初始化。
/*------------------------------------------------
定時器0初始化
------------------------------------------------*/
void TIM0init(void)//定時器0初始化
{
TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
TH0=0x00; //重載值
TL0=0x00; //初始化值
ET0=1; //開中斷
TR0=1;
}
/*------------------------------------------------
外部中斷0初始化
------------------------------------------------*/
void EX0init(void)
{
IT0 = 1; //指定外部中斷0下降沿觸發(fā),INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開總中斷
}
第1頁(共48頁)
前言
3.2 數(shù)據(jù)采集模塊 軟件流程
準備開始標志:
當?shù)碗娖降陀?8ms后,單片機將輸出端口改為輸入,開始讀取DHT11的數(shù)據(jù)。然后將電平拉高,等待DHT11響應(yīng),DHT11將電平信號拉低以示響應(yīng)單片機信號,而后將電平拉高準備發(fā)送數(shù)據(jù)信息。
讀取數(shù)據(jù)過程:
DHT11先發(fā)送12—14us的低電平信號,然后緊跟高電平,如果在116—118us左右,將自動識別為1,如果在26—28us左右將識別為0。這樣循環(huán)40次,共40位二進制數(shù),每八位為一組,其中包括八位濕度整數(shù)位、八位濕度小數(shù)位、八位溫度整數(shù)位,八位溫度小數(shù)位、八位較檢位。由于設(shè)計的需要,現(xiàn)只讀取八位濕度整數(shù)值,將讀取的濕度值傳給單片機。 程序如下:
#include"DHT11.h"
unsigned char wendu,shidu;
void delay_us() // 延時子程序
{
unsigned char i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void delayms(unsigned int x) // 根據(jù)給定值進行延時子程序
第1頁(共48頁)
前言
{
unsigned char n;
while((x--)!=0)
{
for(n=0;n<115;n++){;}
}
}
char receive()
{
unsigned int i;
unsigned char temp,respond;
unsigned char com_data=0;
for(i=0;i<=7;i++)
{
respond=2;
while((!TRH)&&respond++);
delay_us();
delay_us();
delay_us();
if(TRH)
第1頁(共48頁)
前言
{
temp=1;
respond=2;
while((TRH)&&respond++);
}
else
temp=0;
com_data<<=1;
com_data|=temp;
}
return(com_data);
}
//濕度讀取子程序
//溫度高8位== TL_data
//溫度低8位== TH_data
//濕度高8位== RH_data
//濕度低8位== RH_data
//校驗 8位 == CK_data
//調(diào)用的程序有 delay();, Delay_5us();,RECEIVE();
void read()
{
unsigned int respond;
unsigned int RH_temp,RL_temp,TH_temp,TL_temp,CK_temp,untemp,
RH_data,RL_data,TH_data,TL_data,CK_data;
//主機拉低18ms
TRH=0;
delayms(18);
TRH=1;
第1頁(共48頁)
前言
//DATA總線由上拉電阻拉高 主機延時20us
delay_us();
delay_us();
delay_us();
delay_us();
TRH=1;
//判斷DHT11是否有低電平響應(yīng)信號 如不響應(yīng)則跳出,響應(yīng)則向下運行
if(!TRH)
{
respond=2;
//判斷DHT11發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束
while((!TRH)&&respond++);
respond=2;
//判斷從機是否發(fā)出 80us 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài)
while((TRH)&&respond++);
//數(shù)據(jù)接收
RH_temp=receive();
RL_temp=receive();
TH_temp=receive();
TL_temp=receive();
CK_temp=receive();
TRH=1;
untemp=(RH_temp+RL_temp+TH_temp+TL_temp);
//數(shù)據(jù)校驗
if(CK_temp==untemp)
{
RH_data=RH_temp;
RL_data=RL_temp;
TH_data=TH_temp;
第1頁(共48頁)
前言
TL_data=TL_temp;
CK_data=CK_temp;
}
}
//x是溫度值 y是濕度值
wendu=(unsigned char) (TH_data );
shidu=(unsigned char) (RH_data );
}
3.3 顯示模塊 初始化LCD1602顯示模塊,設(shè)置8位格式,2行,5*7矩陣顯示,整體顯示,關(guān)光標,不閃爍設(shè)定輸入方式,增量不移位,清除屏幕顯示,延時等待,將采集到的溫濕度數(shù)據(jù)進行轉(zhuǎn)換,十六進制轉(zhuǎn)換成十進制,輸入相應(yīng)的地址數(shù)據(jù),延時等待,輸入需要顯示的數(shù)據(jù)。
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
void main(void)
{
EX0init(); //初始化外部中斷
TIM0init();//初始化定時器
LCD_Init(); //初始化液晶
delayms(20); //延時有助于穩(wěn)定
LCD_Clear(); //清屏
LCD_Write_String(5,0,"RECEIVE");
LCD_Write_Char(9,1,0xdf);//右上角點
LCD_Write_Char(10,1,'C');//
LCD_Write_Char(15,1,'%');//用于顯示溫度濕度單位
while(1)//主循環(huán)
{
第1頁(共48頁)
前言
if(irok) //如果接收好了進行數(shù)據(jù)處理
{
Ircordpro();
irok=0;
}
if(irpro_ok) //如果處理好后進行工作處理
{
LCD_Write_Char(1,1,display[adres1]); //寫地址位
LCD_Write_Char(2,1,display[adres2]);
LCD_Write_Char(7,1,display[dat1]); //寫數(shù)據(jù)1
LCD_Write_Char(8,1,display[dat2]);
LCD_Write_Char(13,1,display[dat3]); //寫數(shù)據(jù)2
LCD_Write_Char(14,1,display[dat4]);
irpro_ok=0; //處理完成標志
delay500ms(); delay500ms();
}
}
}
終端液晶顯示程序
#include "1602.h"
#include "delay.h"
sbit RS = P2^4; //定義端口
sbit RW = P2^5;
sbit EN = P2^6;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P0
第1頁(共48頁)
前言
/*------------------------------------------------
判忙函數(shù)
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
寫入命令函數(shù)
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy()); //忙則等待
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
寫入數(shù)據(jù)函數(shù)
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //忙則等待
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}
/*------------------------------------------------
清屏函數(shù)
第1頁(共48頁)
前言
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
delayms(5);
}
/*------------------------------------------------
寫入字符串函數(shù)
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
while (*s)
{
LCD_Write_Data( *s);
s ++;
}
}
/*------------------------------------------------
寫入字符函數(shù)
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函數(shù)
第1頁(共48頁)
前言
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*顯示模式設(shè)置*/
delayms(5);
LCD_Write_Com(0x38);
delayms(5);
LCD_Write_Com(0x38);
delayms(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*顯示關(guān)閉*/
LCD_Write_Com(0x01); /*顯示清屏*/
LCD_Write_Com(0x06); /*顯示光標移動設(shè)置*/
delayms(5);
LCD_Write_Com(0x0C); /*顯示開及光標設(shè)置*/
}
3.4 無線模塊 3.4.1 無線數(shù)據(jù)接收子程序 /*****************************************************
發(fā)送8位地址和溫度濕度
地址位定為0x01
******************************************************/
//#include
#include
sbit send0=P1^0;
sbit send1=P1^1;//接LED用于顯示P1.0,P1.1的電位
unsigned char temp,n;
unsigned char Adress=0x01;//定義地址
unsigned char check=0;
第1頁(共48頁)
前言
void Send(unsigned char x)// 發(fā)送數(shù)據(jù)函數(shù)
{
unsigned char i;
temp=0x80; //temp用于取位
for(i=0;i<8;i++)
{
if(temp&x)//如果對應(yīng)位為1,則發(fā)送011
{
send0=0;send1=send0;
delayms(1);
send0=1;send1=send0;
delayms(2);
check++; // 校驗位生成
}
else //否則發(fā)送01
{
send0=0;send1=send0;
delayms(1);
send0=1;send1=send0;
delayms(1);
}
temp>>=1; //將對應(yīng)位右移,取下一位
}
}
第1頁(共48頁)
前言
void Send_check(unsigned char x)// 發(fā)送數(shù)據(jù)函數(shù)
{
unsigned char i;
temp=0x80; //temp用于取位
for(i=0;i<8;i++)
{
if(temp&x)//如果對應(yīng)位為1,則發(fā)送011
{
send0=0;send1=send0;
delayms(1);
send0=1;send1=send0;
delayms(2);
}
else //否則發(fā)送01
{
send0=0;send1=send0;
delayms(1);
send0=1;send1=send0;
delayms(1);
}
temp>>=1; //將對應(yīng)位右移,取下一位
}
}
void main()
第1頁(共48頁)
前言
{
while(1)
{
read(); //讀取溫度濕度函數(shù)
n=2;
while(n)
{
//頭碼發(fā)送
check=0; //校驗碼數(shù)據(jù)
send0=1;
send1=1;
delayms(20);//間隔
Send(Adress);//發(fā)送地址
Send(wendu);//發(fā)送數(shù)據(jù)1
Send(shidu);//發(fā)送數(shù)據(jù)2
/**********發(fā)送校驗位************校驗碼值為 地址 溫度 濕度 所有1的個數(shù)*/
Send_check(check); //發(fā)送校驗位一共發(fā)送了1 8 8 8 8=33位
/***************************************************************/
send0=0;
send1=0;
第1頁(共48頁)
前言
delayms(20);
--n; //循環(huán)2次
}
delayms(1000);// delayms(4000); 2S鐘發(fā)送一次
}
}
3.4.2 無線數(shù)據(jù)接收處理模塊 /*-----------------------------------------------
接收1個頭碼 8位地址碼 2個8位數(shù)據(jù) 25位
液晶分別顯示 地址數(shù),數(shù)據(jù)1,數(shù)據(jù)2
------------------------------------------------*/
//#include //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<1602.h>
sbit IR=P3^2; //無線接口標志
/*------------------------------------------------
全局變量聲明
------------------------------------------------*/
unsigned char irtime;//紅外用全局變量
bit irpro_ok,irok;
unsigned char adres1,adres2,dat1,dat2,dat3,dat4;//顯示變量,地
址,數(shù)據(jù)1,數(shù)據(jù)2 的個位和十位
unsigned char irdata[25];//存儲變量
Unsigned char display[10]={'0','1','2','3','4','5','6','7','8','9'};//顯示字符數(shù)組
unsigned char recv_data[3];
第1頁(共48頁)
前言
/*------------------------------------------------
函數(shù)聲明
------------------------------------------------*/
//void Ir_work(void);
void Ircordpro(void);
/*------------------------------------------------
定時器0中斷處理
------------------------------------------------*/
void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用于計數(shù)2個下降沿之間的時間
}
/*------------------------------------------------
外部中斷0中斷處理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中斷0服務(wù)函數(shù)
{
static unsigned char i; //接收無線信號處理
static bit startflag; //是否開始處理標志位
if(startflag)
{
if(irtime<160&&irtime>=140)//引導碼 TC9012的頭碼,2*19ms/0.256ms
i=0;
irdata=irtime;//存儲每個電平的持續(xù)時間,用于以后判斷是0還是1
irtime=0;
i++;
if(i==25) //接收完頭碼和24位數(shù)據(jù),數(shù)據(jù)自加到25
{
irok=1;
i=0;
}
}
else
第1頁(共48頁)
前言
{
irtime=0;
startflag=1;
}
}
/*------------------------------------------------
無線碼值處理
------------------------------------------------*/
void Ircordpro(void)//無線碼值處理函數(shù)
{
unsigned char i, j, k ;
unsigned char cord,value;
if(irdata[0]>140&&irdata[0]<160)
{
k=1;
for(i=0;i<=2;i++)
{
for(j=1;j<=8;j++) //處理1個字節(jié)8位
{
cord=irdata[k];
if(cord>10) //大于某值為1,這個和晶振有絕對關(guān)系,這里使用12M計算,此值可以有一定誤差 3ms-/0.256
value|=0x01;
if(j<8)
{
value<<=1;
}
k++;
}
recv_data=value;[ i]
value=0;
}
adres1=recv_data[0]/10;//地址個位十位
adres2=recv_data[0]%10;
dat1=recv_data[1]/10;//數(shù)據(jù)1個位十位
dat2=recv_data[1]%10;
dat3=recv_data[2]/10;//數(shù)據(jù)2個位十位
dat4=recv_data[2]%10;
irpro_ok=1;//處理完畢標志位置1
}
}
4.結(jié)束語 到此為止,我的《溫室大棚溫濕度控制》已經(jīng)完成了。在這幾個月的時間里,先后完成了資料的收集、設(shè)計方案的擬訂、畫圖等多方面的工作。首先,通過這次應(yīng)用系統(tǒng)設(shè)計,在很大程度上提高了自己的獨立思考能力和單片機的專業(yè)知識,其次,我也深刻了解寫一篇應(yīng)用系統(tǒng)的步驟和格式,有過這樣的一次訓練,相信在接下來的日子我們都會了,而且會做得更好。
我所寫的系統(tǒng)主要根據(jù)目前溫室大棚技術(shù)的發(fā)展趨勢和國內(nèi)實際的應(yīng)用特點和要求,采用了自動化的結(jié)構(gòu)形式,實現(xiàn)對土壤濕度的自動檢測和控制。
系統(tǒng)以單片機AT89C51為核心部件,單片機系統(tǒng)完成對溫濕度信號的采集、處理、顯示等功能;用Protuse軟件繪制電路原理圖。該系統(tǒng)的主要特點是:
1)適用性強,用戶只需對界面參數(shù)進行設(shè)置并啟動系統(tǒng)正常運行便可實現(xiàn)對濕度大棚溫濕度的實時監(jiān)控。
2)可對作物的生產(chǎn)環(huán)境進行適時、適當?shù)目刂疲粌H有利于作物的生長發(fā)育,而且避免了了資源的浪費,起到了提高作物產(chǎn)量的作用。
由于水平有限,我的設(shè)計還存在許多不足之處,有許多地方需要完善,還望各位老師多加批評指點。
|