無線溫度濕度采集系統的設計_第1頁
無線溫度濕度采集系統的設計_第2頁
無線溫度濕度采集系統的設計_第3頁
無線溫度濕度采集系統的設計_第4頁
無線溫度濕度采集系統的設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢 業 設 計 (論 文)題 目:無線溫度濕度采集系統的設計院 系:專 業:班 級:姓 名:學 號:指導教師:無線溫度濕度采集系統的設計【摘要】隨著工業農業等相關產業的不斷發展,溫度和濕度的測量在實際生活中的應用越來越廣泛。如現代溫室大棚,釀造酒類,微生物發酵,藥物制造等方面均對溫度濕度的要求嚴格。本設計為一個無線溫濕度采集系統。以STC89S52為主要芯片,利用數字式溫濕度傳感器DHT11采集溫濕度,把收集到的數據傳給單片機STC89S52,再用無線發射模塊Nrf24l01將經過處理的數據發射出去。單片機通過模擬SPI口跟NRF24L01之間傳送數據。同時,NRF24L01具有接收功能,接收

2、模塊的NRF24L01將接收到的數據傳給STC89S52,最后用數字顯示屏LCD1602將經過單片機處理后的數據顯示出來。【關鍵詞】STC89S52 數據處理 溫度 濕度Design of wireless temperature humidity acquisition system【Abstract】With the continuous development of industry and agriculture and related industries, the temperature and humidity measurement used more and more wid

3、ely in the practical life. Such as modern greenhouses, brewing wine, microbial fermentation, so on drugs manufacture of temperature humidity requirements strictly. Therefore, to design a wireless temperature and humidity acquisition system. STC89S52 as the main chip, using digital temperature and hu

4、midity sensor DHT11 to collect temperature and humidity. Pass the collected data to MCU STC89S52, reoccupy NRF24L01 wireless transmitting module data will be processed. Single chip microcomputer simulation SPI mouth to transmit data between NRF24L01, meanwhile, has the function of receiving, receivi

5、ng modules NRF24L01 will receives the data to STC89S52 devices, with digital display LCD1602 will finally after dealing with the single chip microcomputer of data displayed.【Key word】STC89S52 data processing Temperature humidity目 錄1 緒論11.1 引言11.2 選題背景及意義11.3 國內外現狀及發展趨勢11.4 研究內容22 系統總體設計方案32.1 溫濕度傳感器

6、的選擇32.2 無線發射模塊的元器件選擇32.2.2 NRF24L01的工作模式42.3 單片機的選擇52.4顯示模塊的選擇63 硬件電路設計73.1 溫濕度采集模塊的設計83.2 無線發射接收模塊設計93.2.1 溫濕度數據的控制發送93.2.2 溫濕度數據的接收103.2.3 模擬SPI口的實現103.3 LCD1602液晶顯示模塊設計113.4 電源模塊設計124 軟件設計124.1 采集模塊軟件設計124.2 發送接收模塊軟件設計134.3顯示模塊軟件設計174.4 調試17結論18附錄A 系統總體電路圖20附錄B 部分程序221 緒論1.1 引言溫度濕度在工農業生產中占有很重要的地位

7、,是工農業生產的重要組成數據。溫濕度過高會造成糧食發霉長芽,還會引起大棚蔬菜一系列的病害。因此,對其適時準確的測量就顯得尤為重要。而一般的測量過程較為復雜繁瑣,誤差還大。比如現在所使用的水銀,酒精溫度計進行溫度檢測和用傳統的物理模擬量的方法進行的濕度檢測,這些溫濕度檢測計的刻度間隔通常都很密,不容易準確分辨,讀數困難,而且他們的熱容量還比較大,達到熱平衡所需的時間較長,因此很難讀準,并且使用非常不方便。本設計以STC89S52為主要芯片,利用數字式溫濕度傳感器DHT10采集溫濕度,把收集到的數據傳給單片機AT89S52,再用無線發射模塊NRF24L01將經過處理的數據發射出去。單片機通過模擬S

8、PI口跟NRF24L01之間傳送數據。同時,NRF24L01具有接收功能,接收模塊的NRF24L01將接收到的數據傳給STC89S52,最后用數字顯示屏LCD1602將經過單片機處理后的數據顯示出來。單片機體積小,價格低,且穩定性較強,操作靈活簡單,誤差較小,具有很高的應用價值。1.2 選題背景及意義溫濕度的測量控制在農業生產,工業制造,倉庫管理,科學研究等方面都有廣泛的應用。然而,溫度和濕度卻是最不易保障的指標。由于溫濕度控制不當,可能會導致無法估計的損失。傳統的測量方法是有線測控法,實施起來不僅難度大,成本比較高,系統靈活性較差,而且維護起來也比較困難。針對這一情況,研制可靠且實用的溫度和

9、濕度檢測與控制系統就顯得非常重要。如今,隨著科技的進步,無線通信技術日趨成熟,如果將無線通信技術應用到溫濕度的測量系統中,通過無線傳輸將傳感器收集到的溫濕度信息傳送到控制顯示終端,這樣設計系統具有結構簡單,采樣點可靈活設置,系統適應性強等特點。符合向智能化,小型化方向的發展。另外此系統不需要A/D轉換器將電信號轉換成數字信號,而使用DHT10直接得到數字量,減去了不必要的麻煩。由此為出發點,根據自己所學的專業知識,用新型智能溫度傳感器DHT10,無線發射模塊NRF24L01,單片機STC89S52,數字液晶顯示器件LCD1602等主要元件設計這套無線溫度濕度采集系統。1.3 國內外現狀及發展趨

10、勢隨著科技的飛速發展和普及,高性能設備也越來越多,各行各業對溫濕度的要求也越來越高。 傳統的溫濕度監測模式是以人為基礎,依靠人工輪流值班,人工巡回查看等方式來測量和記錄環境狀況信息。在這種模式下,不僅效率低下,還浪費大量人才資源及財力資源,而且缺乏科學性,許多重大事故都是因為人為因素造成的,人工維護缺乏完整的管理系統。而無線監控系統就可以解決這樣人才資源浪費,管理不及時的問題,這是由于它的智能化設計所決定的。它的工作步驟如下:感應環境溫濕度;單片機判斷感應到的溫濕度是否異常;若感應到的溫濕度異常,實行措施進行調節;判斷異常是否超過預設時間,若超過預設時間,則輸出異常信號報警;判斷異常是否處理完

11、畢,若處理完畢,解除報警。這樣就可以利用控制器對機房溫濕度進行監控,從而實現環境溫濕度管理的實時性和有效性。故本次設計對于類似項目還具有普遍意義智能溫度傳感器(亦稱數字溫度傳感器)在20世紀90年代中期問世。它是微電子技術、計算機技術和自動測試技術(ATE_)的結晶。目前,國際上已開發出多種智能溫度傳感器系列產品。智能溫度傳感器內部包含溫度傳感器、A/D傳感器、信號處理器、存儲器(或寄存器)和接口電路。有的產品還帶多路選擇器、中央控制器(CPU)、隨機存取存儲器(RAM)和只讀存儲器(ROM)。智能溫度傳感器能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU),并且可通過軟件來實現測試

12、功能,溫度計也越來越智能化。跟電子溫度計一樣濕度計隨著濕度傳感器的發展趨于成熟?,F在常用的溫度傳感器AD590,DS18B20濕度傳感器HMxx系列,HS1xx系列,DHT系列隨著溫濕度計的發展溫室監控系統也越來越成熟,更好的為人們服務。對于國內外對溫濕度檢測的研究,從復雜模擬量檢測到現在的數字智能化檢測越發的成熟,現在的對于溫濕度研究,檢測系統向著智能化、小型化、低功耗的方向發展。在發展過程中,以單片機為核心的溫濕度控制系統發展為體積小、操作簡單、量程寬、性能穩定、測量精度高,等諸多優點在生產生活的各個方面實現著至關重要的作用。1.4 研究內容設計以STC89S52基本系統為核心的一套檢測系

13、統。由溫濕度采集、數據分析、數據處理三個部分。包括單片機系統,復位電路,溫度檢測,濕度檢測,顯示部分等模塊。該系統包括了硬件組成和軟件的設計,該系統在硬件設計上主要是通過溫濕度傳感器對溫濕度進行采集,通過A/D轉換器,將模擬信號轉化為對應的數字溫度信號電壓。其硬件設計中最為核心的器件是單片機NRF24L012 系統總體設計方案無線溫度濕度采集系統是基于一種射頻技術的無線溫濕度檢測的裝置。2.1 溫濕度傳感器的選擇溫度檢測采用最基本的熱電偶,熱電偶應用廣泛,雖然其價格便宜而且耐用。種類多,能夠覆蓋非常寬的溫度范圍,但是其非線性、響應速度慢、精度中等、靈敏度低、穩定性低、高溫下容易老化和有線性漂移

14、,并且測量需要參考量。濕度檢測采用濕敏元件,其主要分為電阻式和電容式。濕敏電阻的種類多,靈敏度高,但是起線性度和產品的互換性差。濕敏電容靈敏度高,響應速度快,偏于實現產品小型化和集成化,但精度一般比濕敏電阻要低一些。綜合濕敏元件,其線性度可抗污染性差,在濕度的檢測環境中濕敏元件需要時刻在檢測環境中,很容易受到環境污染從而影響其測量精度和持續的穩定性。數字式傳感器DHT10是sensiron公司生產的智能化溫濕度傳感器。體積與火柴頭大小相似。不僅能夠測量溫度,還能同時測量相對濕度。所以能把SHT10作為溫濕度檢測的一個整體。DHT10作為典型的溫濕度傳感器,在測量過程中可對相對溫濕度進行自動校準

15、,準確的測量溫濕度。產品互換性好,相應速度快,抗干擾性強。 由上可知,DHT10與溫濕敏元件的溫濕度測量相比,數字溫濕度傳感器低成本,內部集成復雜,在測量過程中可對相對溫濕度進行自動校準,準確的測量溫濕度。而且能夠提供數字輸出,簡化外部測量電路,精度高,適用廣泛的測量范圍,并且本設計的溫濕度檢測系統相適合。因此,選擇溫度濕度傳感器SHT10作為此次設計中的測量元件。2.2 無線發射模塊的元器件選擇本設計發射模塊采用單片射頻收發芯片NRF24L01,該芯片工作于433MHz的ISM頻段,由一個完全集成的頻率調制器,一個帶解調器的接收器,一個功率放大器,一個晶體震蕩器和一個調節器組成。輸出功率和通

16、信頻道可通過程序進行配置。芯片能耗非常低,以10dBm 的功率發射時工作電流僅有 30mA,接收時工作電流只有 12.5mA,多種低功率工作模式,待機模式下電流僅為12.5A,節能設計更方便。其ShockBurst技術可在通訊時自動生成前導碼和CRC校驗位。nRF905適用于多種無線通信的場合,如無線數據傳輸系統、報警及安全系統、家庭自動化、遙感監測。2.2.1 NRF24L01主要包括三種接口NRF24L01表1 NRF24L01各個引腳的功能及說明管腳名稱管腳功能說明1VCC電源電源+3.33.6V DC2TX_EN數字輸入TX_EN=1 TX模式 TX_EN=0 RX模式3TRX_CE數

17、字輸入使能芯片發射或接收4PWR_UP數字輸入芯片上電5uCLK時鐘輸出本模塊該引腳廢棄不用,向后兼容6CD數字輸出載波檢測7AM數字輸出地址匹配8DR數字輸出接收或發射數據完成9MISOSPI接口SPI輸出10MOSISPI接口SPI輸入11SCKSPI時鐘SPI時鐘12CSNSPI使能SPI使能13GND地接地14GND地接地2.2.2 NRF24L01的工作模式表2 nRF905的工作模式PWR_UPTRX_CETX_EN工作模式0XX掉電和SPI編程10XStandby和SPI編程110ShockBurstEX 111ShockBurst TX2.3 單片機的選擇STC89S52是一種

18、低功耗,高性能CMOS 8位微控制器,具有8K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造。與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器程,亦適于常規編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使得STC89S52在眾多嵌入式控制應用系統中得到廣泛應用。STC89S52具有以下標準功能:8k字節Flash,256字節RAM,看門狗定時器,三個16位定時器/計數器,32 位I/O口線,一個6向量2級中斷結構,2個數據指針,全雙工串行口,片內晶振及時鐘電路??臻e模式下,CPU停止工作,允許RAM、定時器/計數器、串口

19、、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機工作停止,直到下一個中斷或硬件復位為止。STC89S52是片內有ROM/EPROM的單片機,當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。用AT單片機構成最小系統時,只要將單片機接上時鐘電路和復位電路即可,如圖 STC89S52單片機最小系統所示。由于集成度的限制,單片機最小應用系統只能作一些小型的控制單元。其應用特點:有可供用戶使用的大量I/O口線; 內部存儲器容量有限;應用系統開

20、發具有特殊性。STC89S52的復位是由外部的復位電路實現的。復位引腳RST通過一個斯密特觸發器來抑制噪聲,在每個機器周期的S5P2,斯密特觸發器的輸出電平由復位電路采樣一次,然后才能得到內部復位操作所需要的信號。STC89S52雖然有內部振蕩電路,但要形成時鐘,必須外部附加電路。AT89S52單片機的時鐘產生方法有兩種,一種是內部方式,利用時鐘內部的振蕩電路產生;另一種是外部方式,時鐘信號由外部引入。本設計采用內部時鐘方式,利用芯片內部的振蕩電路,在XTAL1、XTAL2引腳上外接定時元件,內部的振蕩電路便產生自激振蕩。本設計采用最常用的內部時鐘方式,即用外接晶體和電容組成的并聯諧振電路。振

21、蕩晶體可以在1.2MHZ到24MHZ之間選擇,常用的晶振頻率有6MHZ、12MHZ和11.0592MHZ。電容CX1和CX2主要是幫助起振,稱為諧振電容,電容值無嚴格要求,但電容的取值對振蕩頻率輸出的穩定性、大小、振蕩電路起振速度有少許影響,CX1、CX2可在20pF到100pF之間取值,當時鐘頻率為12MHZ時典型值為22pF。所以本設計中振蕩晶體采用12MHZ,電容選擇22pF。圖2 單片機最小系統2.4顯示模塊的選擇顯示器可以選擇數碼管顯示或者液晶顯示。數碼管按段數分為七段數碼管和八段數碼管,起驅動方式分別為靜態驅動和動態驅動,靜態驅動編程簡單,顯示亮度高但是占用I/O端口多,增加了硬件

22、電路的復雜性。動態電路是最廣泛的顯示方式之一,其能夠節省大量的I/O端口,功耗低。但是,針對數碼管,其顯示單調不具備數據的直觀性。LCD1602液晶顯示,具有字符發生器ROM可以顯示192種字符。具有64個字節的自定義字符RAM,可自定義8個5´8點陣字符或四個5´11點陣字符。具有80個字節的RAM,標準的接口特性,適配M6800系列MPU的操作時序。模塊結構緊湊、輕巧、裝配容易,像素尺寸小,分辨率高??紤]到以上情況,顯示終端選擇LCD1602,它能把溫濕度直觀的顯示出來,設計起來簡潔明了,大大降低了系統的復雜性。LCD1602各個引腳的說明及作用為第一腳:VSS為接地電

23、源。第二腳:VDD接5V正電源。第三腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“幻影”,使用時可以通過一個可調電位器調整對比度。第四腳:RS為寄存器選擇,高電平時為數據寄存器、低電平時為指令寄存器。第五腳:R/W為讀寫操作信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。第六腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令第七十四腳:D0D7為8位雙向數據線。第十五腳:背光源正極。第十六腳:

24、背光源負極。表3 LCD1602各個引腳的說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2數據2VDD電源正極10D3數據3VL液晶顯示偏壓11D4數據4RS數據/命令選擇12D5數據5R/W讀/寫選擇13D6數據6E使能信號14D7數據7D0數據15BLA背光源正極8D1數據16BLK背光源負極3 硬件電路設計該采集系統是以STC89S52芯片為主要,利用數字式溫濕度傳感器DHT10進行收集,將收集數據傳給單片機STC89S52,經過處理從無線發送模塊NRF24L01發射出去,單片機與NRF24L01NRF24L01接受模塊通過NRF24L01將數據傳給STC89S52,單片機經處理

25、后,將數據傳給顯示屏LCD1602.完成無線數據采集與發送。本設計的重點在于數據如何在各個模塊之間傳輸。3.1 溫濕度采集模塊的設計DHT11溫濕度檢測模塊采用單總線數據傳輸,DATA引腳與單片機相連,用于MCU與DHTI1之間的數據傳輸。DATA的狀態在串行始終DATA的下降沿之后發生改變,在DATA的上升沿有效。在數據傳輸期間,當DATA為高電平時,DATA數據線上必須保持穩定狀態。為避免數據發生沖突,MCU應該驅動DATA使其處于低電平狀態,而外部接一個上拉電阻,將信號拉至高電平。 “000 00101”為相對濕度(RH)測量,“000 00011”為溫度(T)測量。發送一組測量命令后控

26、制器要等待測量結束,這個過程大約需要2080320 ms,對應其81214位的測量。測量時間隨內部晶振的速度而變化,最多能夠縮短30 %。DHT11下拉DATA至低電平而使其進入空閑模式。重新啟動SCK時鐘讀出數據之前,控制器必須等待這個“數據準備好”信號。接下來傳輸2個字節的測量數據和1個字節的CRC校驗。MCU必須通過拉低DATA來確認每個字節。所有的數據都從MSB開始,至LSB有效。例如對于12位數據,第5個SCK時鐘時的數值作為MSB位;而對于8位數據,第1個字節(高8位)數據無意義。確認CRC數據位之后,通信結束。如果不使用CRC一8校驗,控制器可以在測量數據LSB位之后,通過保持A

27、CK位為高電平來結束本次通信。測量和通信結束后,DHT11自動進入休眠狀態模式。3.2 無線發射接收模塊設計本系統通過數字溫濕度傳感器DHT11實現溫濕度的采集,由單片機STC89S52控制,通過射頻芯片NRF24L01進行無線傳輸和接收NRF24L01提供給應用的微控制器一個SPI接口,速率由微控制器自己設定的接口速度決定。3.2.1 溫濕度數據的控制發送NRF24L01數據的發送過程為自動開啟射頻寄存器;打包數據(加字頭和CRC校驗碼);發送數據包;E.當TRX_CE被置低,NRF24L01發送過程完成,自動進入空閑模式。3.2.2 溫濕度數據的接收A.當TRX_CE為高電平、TX_EN為

28、低電平時NRF24L01進入ShockBurstTM接收模式;B. NRF24L01不斷監測,等待接收數據,當檢測到同一頻段的載波時,載波檢測引腳被置高;C.當接收到一個相匹配的地址時,地址匹配引腳被置高;D.當接收完一個正確的數據包后,NRF24L01自動移去字頭、地址和CRC校驗位,然后把數據準備好引腳置高;E.微控制器將TRX_CE置低,NRF24L01進入空閑模式;F.微控制器通過SPI口,以一定的速率把數據傳送到微控制器內;G.當所有的數據接收完畢,NRF24L01把數據準備好引腳和地址匹配引腳置低。此時NRF24L01此時可以進入ShockBurstTM接收模式、ShockBurs

29、tTM發送模式或關機模式。當NRF24L01正在接收一個數據包時,TRX_CE或TX_EN任意一引腳的狀態發生改變,NRF24L01隨之改變其工作模式,接收的數據包丟失。當微處理器接到地址匹配引腳的信息之后,其就知道NRF24L01正在接收數據包,其可以決定是讓NRF24L01繼續接收該數據包還是進入另一個工作模式。由于接收模塊單片機與NRF24L01的連接電路相同,只是程序不同,這里,不在給出接收模塊單片機與NRF24L01連接圖。詳細連接電路圖見附錄A3.2.3 模擬SPI口的實現圖5 SPI讀操作時序圖6 SPI寫操作時序3.3 LCD1602液晶顯示模塊設計本次設計可以采用的顯示芯片很

30、多,考慮到顯示效果的精確度和成本等方面的因素,本設計采用LCD1602顯示,經過無線傳輸后,溫、濕度數據信息將在1602液晶顯示芯片上進行顯示,1602液晶顯示芯片采用標準的16腳接口。將以上的傳感器電路,用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區的8字節,還要使每字節的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但LCD1602內帶字符發生器,顯示字符就比較簡單了,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字

31、符對應的代碼即可。通過單片機發送不同的指令即可控制LCD使其顯示相應的溫濕度信息。各個引腳的連接圖如下圖7 LCD1602模塊電路圖3.4 電源模塊設計本設計電路采用+5V直流電源供電圖8 電源模塊電路圖4 軟件設計本設計的數據采集系統是由采集模塊和顯示模塊構成,程序設計主要有單片微處理器數據采集程序,NRF24L01發送和接收程序,液晶顯示程序構成4.1 采集模塊軟件設計首先,將DHT11初始化,將采集到的溫度濕度信息傳送到單片機,通過單片機的P1.7腳控制DHT11的數據線DATA。主機通過SPI接口向NRF24L01配置寄存器寫入信息并通過天線發送。表4 DHT11命令集命令代碼預留00

32、00x溫度測量00011濕度測量00101讀狀態寄存器00111寫狀態寄存器00110接口復位111104.2 發送接收模塊軟件設計接收模塊主要包括nRF24L01接收程序和液晶顯示程序。與發送模塊相同,在接收模塊軟件設計中,同樣要先將NRF24L01設置為接收狀態,TRX_CE=1,TX_EN=0,這樣主機才能NRF24L01讀取數據。圖10 發送模塊流程圖NRF24L01NRF24L01NRF24L01NRF24L01NRF24L01NRF24L01圖11 接收模塊主程序當NRF24L01正在接收一個數據包時,TRX_CE或TX_EN任意一引腳的狀態發生改變,NRF24L01隨之改變其工作

33、模式,接收的數據包丟失。當微處理器接到地址匹配引腳的信息之后,其就知道NRF24L01正在接收數據包,其可以決定是讓NRF24L01繼續接收該數據包還是進入另一個工作模式。4.3顯示模塊軟件設計圖13 LCD1602顯示數據流程圖顯示模塊軟件設計過程為,先將LCD1602初始化,初始化程序見附錄。單片機通過數據傳輸端口P0.0P0.6向顯示器傳送溫濕度數據信息。若LCD1602正確接收到數據信息,顯示收到溫濕度信息。延時0.8S后,重新開始讀取下一個時間段溫濕度數據,進入循環。若LCD1602讀取數據錯誤,則直接返回,重新讀取。4.4 調試軟件調試主要使用Proteus軟件和Keil C51軟

34、件。在軟件調試中,首先在Proteusz中繪制電路圖,并設置各元器件的參數。然后在Keil C51軟件編寫程序。在元器件的布局方面,把相互有關的元件放得比較近,例如:晶振、單片機的時鐘輸入端都容易產生噪音,在放置元件時的時候把它們放的靠近些。地線應構成閉環形式,提高電路的抗干擾能力,電路提供的電源是具有穩壓作用的+5V電源。單片機選用12MHZ的晶振,因為這樣有利于得到沒有誤差的波特率。特別是當與單片機進行通信的話,選用這種晶振比較好。由于單線數字溫度傳感器DHT11,測溫相當準確,我們主要時間要花在單片機軟件程序的編輯和調試以及電路模塊的制作方面。結論通過這次設計,使我們更加深入的了解了溫度

35、傳感器,無線傳輸模塊,以及單片機的結構功能和具體應用,也使我們對電路PCB板有了更深的認識。在老師和同學們的幫助下,我完成了本次設計,本設計可以實現溫度的無線采集和實時顯示,并且相當精確。我們的電路板雖然簡單,沒有運放等元件,但可以基本上完成此系統的任務,在電源的穩定等方面,我也相應的補充改進了我的設計方案。附錄A:總體原理圖附錄B:部分程序#include"reg52.h"#include"Allhead.h"sbit CE = P10;sbit CSN= P11;sbit SCLK= P12;sbit MOSI= P13;sbit MISO= P14

36、;sbit IRQ = P15;unchar RevTempDate5;/最后一位用來存放結束標志#include"reg52.h"#include"Allhead.h"#define uint unsigned int #define uchar unsigned char#define DBPort P0sbit rs = P25 ; sbit rw = P26 ;sbit ep = P27 ;typedef bit BOOL ; uchar data_byte;void delay(uchar ms) / 延時子程序 uchar i ; while

37、(ms-) for(i = 0 ; i<250;i+) ; void delay1()/延時10usuchar i;i-;i-;i-;i-;i-;i-;void longdelay(uchar s) /長延時 while(s-) delay(10) ; /*LCD模塊*/BOOL lcd_bz()/測試LCD忙碌狀態 BOOL result ; rs = 0 ; rw = 1 ; ep = 1 ; result = (BOOL)(P0 & 0x80) ; ep = 0 ; return result ; void write_cmd(uchar cmd)/ 寫指令 while(l

38、cd_bz() ;rs = 0 ;rw = 0 ;ep = 0 ;P0 = cmd ;ep = 1 ;ep = 0 ; void write_addr(uchar addr)/寫地址 write_cmd(addr|0x80) ;void write_byte(uchar dat)/寫字節 while(lcd_bz() ; rs = 1 ; rw = 0 ; ep = 0 ; P0 = dat ; ep = 1 ; ep = 0 ; void lcd_init()/ 初始化 write_cmd(0x38) ; delay(1); write_cmd(0x08) ; delay(1); write

39、_cmd(0x01) ; delay(1); write_cmd(0x06) ; delay(1); write_cmd(0x0c) ; delay(1); display(uchar addr, uchar q)/在某一地址上顯示一字節 delay(1) ; write_addr(addr) ; write_byte(q) ; longdelay(1) ; void show1() lcd_init();/ 初始化 / Welcome display(0x03,'W'); display(0x04,'e'); display(0x05,'l')

40、; display(0x06,'c'); display(0x07,'o'); display(0x08,'m'); display(0x09,'e'); NRFDelay(1000);/短暫延時 /* display(0x42,'G'); display(0x43,'u'); display(0x44,'a'); display(0x45,'n'); display(0x46,'g'); display(0x48,'M'); disp

41、lay(0x49,'i'); display(0x4a,'n'); display(0x4b,'g'); NRFDelay(800);/短暫延時*/ lcd_init();/ 初始化/"The Humi: %RH" display(0x00,'T'); display(0x01,'h'); display(0x02,'e'); display(0x04,'H'); display(0x05,'u'); display(0x06,'m'

42、;); display(0x07,'i'); display(0x08,':'); display(0x0c,'%'); display(0x0d,'R'); display(0x0e,'H');/"The Temp: C" display(0x40,'T'); display(0x41,'h'); display(0x42,'e'); display(0x44,'T'); display(0x45,'e'); di

43、splay(0x46,'m'); display(0x47,'P'); display(0x48,':'); display(0x4c,0xdf); display(0x4d,'C'); unchar code TxAddr=0x34,0x43,0x10,0x10,0x01;/發送地址/*狀態標志*/unchar bdata sta; /狀態標志sbit RX_DR=sta6;sbit TX_DS=sta5;sbit MAX_RT=sta4;/*SPI時序函數*/unchar NRFSPI(unchar date) unchar

44、i; for(i=0;i<8;i+) / 循環8次 if(date&0x80) MOSI=1; else MOSI=0; / byte最高位輸出到MOSI date<<=1; / 低一位移位到最高位 SCLK=1; if(MISO) / 拉高SCK,nRF24L01從MOSI讀入1位數據,同時從MISO輸出1位數據 date|=0x01; / 讀MISO到byte最低位 SCLK=0; / SCK置低 return(date); / 返回讀出的一字節/*NRF24L01初始化函數*/void NRF24L01Int()NRFDelay(2);/讓系統什么都不干CE=0

45、;CSN=1; SCLK=0;IRQ=1; /*SPI讀寄存器一字節函數*/unchar NRFReadReg(unchar RegAddr) unchar BackDate; CSN=0;/啟動時序 NRFSPI(RegAddr);/寫寄存器地址 BackDate=NRFSPI(0x00);/寫入讀寄存器指令 CSN=1; return(BackDate); /返回狀態/*SPI寫寄存器一字節函數*/unchar NRFWriteReg(unchar RegAddr,unchar date) unchar BackDate; CSN=0;/啟動時序 BackDate=NRFSPI(RegAd

46、dr);/寫入地址 NRFSPI(date);/寫入值 CSN=1; return(BackDate);/*SPI讀取RXFIFO寄存器的值*/unchar NRFReadRxDate(unchar RegAddr,unchar *RxDate,unchar DateLen) /寄存器地址/讀取數據存放變量/讀取數據長度/用于接收 unchar BackDate,i;CSN=0;/啟動時序BackDate=NRFSPI(RegAddr);/寫入要讀取的寄存器地址for(i=0;i<DateLen;i+) /讀取數據 RxDatei=NRFSPI(0); CSN=1; return(Bac

47、kDate); /*SPI寫入TXFIFO寄存器的值*/unchar NRFWriteTxDate(unchar RegAddr,unchar *TxDate,unchar DateLen) /寄存器地址/寫入數據存放變量/讀取數據長度/用于發送 unchar BackDate,i; CSN=0; BackDate=NRFSPI(RegAddr);/寫入要寫入寄存器的地址 for(i=0;i<DateLen;i+)/寫入數據 NRFSPI(*TxDate+); CSN=1; return(BackDate);/*NRF設置為發送模式并發送數據*/void NRFSetTxMode(unchar *TxDate) /發送模式 CE=0; NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH);/寫寄存器指令+P0地址使能指令+發送地址+地址寬度NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);/為了應答接收設備,接收通道0地址和發送地址相同NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論