基于nRF24L01的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)_第1頁
基于nRF24L01的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)_第2頁
基于nRF24L01的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)_第3頁
基于nRF24L01的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)_第4頁
基于nRF24L01的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 第3頁 共 3頁摘 要隨著信息領(lǐng)域各種技術(shù)的發(fā)展,我們?cè)跀?shù)據(jù)采集方面的技術(shù)也取得了很大的進(jìn)步,采集數(shù)據(jù)的信息化是目前社會(huì)的主要發(fā)展方向。各種領(lǐng)域都用到了數(shù)據(jù)采集,比如石油勘探、地震數(shù)據(jù)采集領(lǐng)域。隨著工農(nóng)業(yè)生產(chǎn)對(duì)溫濕度的要求越來越高,準(zhǔn)確測(cè)量溫度變得非常重要。本課題提出一種基于單片機(jī)的無線多點(diǎn)溫度采集電路設(shè)計(jì),該方案是利用單片機(jī)控制ds18b20溫度傳感器采集溫度,溫度采集成功后由nrf24l01無線通信模塊進(jìn)行數(shù)據(jù)的無線傳輸,在接收板上也有一塊無線通信模塊與它配對(duì)。數(shù)據(jù)成功接收后由單片機(jī)去控制lcd1602液晶實(shí)時(shí)顯示溫度。本系統(tǒng)還設(shè)定了一個(gè)溫度報(bào)警,當(dāng)溫度超過這個(gè)界限就由蜂鳴器發(fā)出警報(bào),當(dāng)

2、溫度下降至報(bào)警溫度以下時(shí),警報(bào)自動(dòng)停止。本系統(tǒng)做的是多點(diǎn)溫度采集,包括兩塊無線發(fā)送模塊和一塊無線接收模塊,采集到的溫度并排顯示在同一個(gè)lcd1602上。用到的主要器件是at89s52單片機(jī)、數(shù)字溫度傳感器ds18b20和無線芯片nrf24l01,測(cè)量結(jié)果用lcd1602液晶顯示。關(guān)鍵詞:?jiǎn)纹瑱C(jī);多點(diǎn)溫度采集;無線通信模塊;溫度報(bào)警。abstract along with the development of the technology of information field, we had also made a lot of progress in data collection tec

3、hnology, the data gathering information is the main development direction of the society. various fields also use the data collection, such as petroleum exploration, seismic data acquisition field. along with increasingly demanding of the industry and agriculture production to the temperature and hu

4、midity,more accurate measurement temperature becomes very important.this topic is wireless acquisition multipoint temperature acquisition and transmission circuit design base on scm, the project is using scm to control the temperature sensor ds18b20 to collection temperature, use nrf24l01wireless co

5、mmunication module to transmit if receive temperature successfully, there is a wireless communication module pairing with it in dashreceiver.useing scm to control lcd1602 liquid crystal to display temperatureafter receiving temperature successfully.the system also set a warning temperature, when the

6、 temperature over the line ,the buzzer will call, when the temperature belowthe alarm temperature below, alarm will stop. this system realizes multipoint temperature gathering,including twowireless transmission module and one wireless receiving module.the temperature will show on the same lcd1602.th

7、is systems main components is at89s52 scm and digital temperature sensor ds18b20 and wireless chip nrf24l01, the measured result is displaying by lcd1602.key words:scm; multipoint temperature gathering; wireless communication module;temperature warning.目 錄引言 11 課題方案設(shè)計(jì)22 硬件設(shè)計(jì)32.1 電源電路 32.2 溫度傳感器電路32.

8、3 無線傳輸電路42.3.1nrf24l01無線模塊組成42.3.2nrf24l01無線模塊應(yīng)用62.4 顯示電路 62.4.1字符型液晶顯示模塊簡(jiǎn)介72.4.2字符型液晶顯示模塊引腳和內(nèi)部結(jié)構(gòu) 72.5 單片機(jī)系統(tǒng) 82.5.1at89s52簡(jiǎn)介 82.5.2at89s52引腳說明 82.6 警報(bào)電路113 軟件設(shè)計(jì) 123.1 系統(tǒng)概述123.2 程序設(shè)計(jì)流程圖 123.3 ds18b20程序設(shè)計(jì)133.4 nrf24l01程序設(shè)計(jì) 163.5 字符型液晶顯示模塊程序設(shè)計(jì) 174 調(diào)試及結(jié)果 205 結(jié)論 22謝辭23參考文獻(xiàn)24附錄25 第40頁 共 40頁引言21世紀(jì)的今天,科學(xué)技術(shù)的

9、發(fā)展日新月異,科學(xué)技術(shù)的進(jìn)步同時(shí)也帶動(dòng)了測(cè)量技術(shù)的發(fā)展,現(xiàn)代控制設(shè)備不同于以前,它們?cè)谛阅芎徒Y(jié)構(gòu)發(fā)生了翻天覆地的變化。我們已經(jīng)進(jìn)入了高速發(fā)展的信息時(shí)代,測(cè)量技術(shù)是當(dāng)今社會(huì)的主流,廣泛地深入到應(yīng)用工程的各個(gè)領(lǐng)域。溫度是工業(yè)、農(nóng)業(yè)生產(chǎn)中常見的和最基本的參數(shù)之一,在生產(chǎn)過程中常需對(duì)溫度進(jìn)行檢測(cè)和監(jiān)控,采用微型機(jī)進(jìn)行溫度檢測(cè)、數(shù)字顯示、信息存儲(chǔ)及實(shí)時(shí)控制,對(duì)于提高生產(chǎn)效率和產(chǎn)品質(zhì)量、節(jié)約能源等都有重要的作用。伴隨工業(yè)科技、農(nóng)業(yè)科技的發(fā)展,溫度測(cè)量需求越來越多,也越來越重要。但是在一些特定環(huán)境溫度監(jiān)測(cè)環(huán)境范圍大,測(cè)點(diǎn)距離遠(yuǎn),布線很不方便。這時(shí)就要采用無線方式對(duì)溫度數(shù)據(jù)進(jìn)行采集。 多路無線溫度采集系統(tǒng)可被

10、廣泛應(yīng)用于溫度測(cè)量或相應(yīng)的可轉(zhuǎn)換為溫度量或供電故障監(jiān)控的工業(yè)、農(nóng)業(yè)、環(huán)保、服務(wù)業(yè)、安全監(jiān)控等工程中,例如:城市路燈故障檢測(cè)和供電線路防盜監(jiān)視、城市居民小區(qū)供熱檢測(cè)、大型倉庫溫度檢測(cè)、工業(yè)生產(chǎn)測(cè)控、農(nóng)業(yè)生產(chǎn)溫度測(cè)控、環(huán)保工程、故障監(jiān)控工程等??紤]到許多工業(yè)環(huán)境中對(duì)多點(diǎn)溫度進(jìn)行監(jiān)控,一般需要測(cè)量幾十個(gè)點(diǎn)以上。本文設(shè)計(jì)多點(diǎn)無線溫度監(jiān)控系統(tǒng)。本設(shè)計(jì)是以atmel公司的at89s52單片機(jī)作為控制核心,提出基于ds18b20的溫度采集與控制系統(tǒng)??刂破魍ㄟ^溫度傳感器實(shí)時(shí)檢測(cè)各節(jié)點(diǎn)的溫度變化,并在lcd1602上循環(huán)顯示各節(jié)點(diǎn)溫度的變化。因?yàn)椴捎梦⑿蜋C(jī)進(jìn)行溫度檢測(cè)、數(shù)字顯示、信息存儲(chǔ)及實(shí)時(shí)控制,對(duì)于提高生

11、產(chǎn)效率和產(chǎn)品質(zhì)量、節(jié)約能源等都有重要的作用,并且溫度參數(shù)對(duì)工業(yè)生產(chǎn)的重要性,所以溫度測(cè)量系統(tǒng)的精確度和智能化一直受到企業(yè)的重視。所以學(xué)習(xí)并研究溫度測(cè)量及相關(guān)知識(shí)可做為一個(gè)較為實(shí)用的課題的方向,能獲得較實(shí)用的知識(shí)和方法。因此溫度測(cè)控技術(shù)是一個(gè)很實(shí)用、也很重要的技術(shù),值得去研究掌握。它應(yīng)用的領(lǐng)域也相當(dāng)廣泛,可以應(yīng)用到消防電氣的非破壞性溫度檢測(cè),電力、電訊設(shè)備的過熱故障預(yù)知檢測(cè),空調(diào)系統(tǒng)的溫度檢測(cè),各類運(yùn)輸工具之組件的過熱檢測(cè),保全與監(jiān)視系統(tǒng)之應(yīng)用,醫(yī)療與健診的溫度測(cè)試,化工、機(jī)械等設(shè)備溫度過熱檢測(cè)。因此前景是相當(dāng)?shù)目捎^。1 課題方案設(shè)計(jì)首先要對(duì)芯片作出選擇。采用溫度芯片ds18b20測(cè)量溫度,可以

12、體現(xiàn)系統(tǒng)芯片化這個(gè)趨勢(shì)。部分功能電路的集成,使總體電路更簡(jiǎn)潔,搭建電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測(cè)量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一種趨勢(shì)。本方案應(yīng)用這一溫度芯片,也是順應(yīng)這一趨勢(shì)。主控部分采用at89s52八位單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制。而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。本系統(tǒng)以單片機(jī)為核心,構(gòu)成一個(gè)包含溫度采集、處理、無線傳輸、顯示的無線溫度采集系統(tǒng),原理框圖見圖1.1。圖1.1 系統(tǒng)設(shè)計(jì)框圖2 硬件設(shè)計(jì) 本課題設(shè)計(jì)的電路包括:電源電路、晶振電路、復(fù)位電路、無線收發(fā)電路、報(bào)警電路

13、及顯示電路。2.1 電源電路(1)單片機(jī)供電本設(shè)計(jì)所用的是at89s52單片機(jī)、lcd1602液晶及ds18b20芯片,直接由電池盒輸入+5v的電壓即可讓它們正常工作。(2)nrf24l01無線模塊nrf24l01芯片的供電電壓為1.9v到3.6v之間,如果直接接+5v電壓會(huì)讓芯片燒毀,所以設(shè)計(jì)了一個(gè)3.3v輸出的穩(wěn)壓電路。穩(wěn)壓電路的作用是當(dāng)輸入電壓波動(dòng)及其它外界因素變化時(shí),還可以穩(wěn)定輸出直流電壓。5v輸入電壓經(jīng)過電解電容進(jìn)行一級(jí)濾波,去除雜波干擾。再經(jīng)過三端穩(wěn)壓管ams1117-3.3輸出穩(wěn)定的3.3v電壓。3.3v電壓再經(jīng)過電解電容進(jìn)行二級(jí)濾波,讓電壓更穩(wěn)定,保證nrf24l01芯片不被燒

14、毀。穩(wěn)壓電源原理圖見圖2.1圖2.1 穩(wěn)壓電源電路原理圖2.2 溫度傳感器電路 本方案采用ds18b20芯片進(jìn)行溫度采集。溫度芯片ds18b20是dallas公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳to92小體積封裝形式。ds18b20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有l(wèi)tm8877,ltm8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的ds18b20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用

15、于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。內(nèi)部結(jié)構(gòu)見圖2.2。圖2.2 ds18b20內(nèi)部結(jié)構(gòu)ds18b20引腳定義: (1)dq為數(shù)字信號(hào)輸入/輸出端; (2)gnd為電源地; (3)vdd為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。具體見圖2.3。圖2.3 ds18b20引腳圖2.3 無線傳輸電路2.3.1nrf24l01無線模塊組成 nrf24l01是nordic公司最近生產(chǎn)的一款無線通信芯片,采用fsk調(diào)制,內(nèi)部集成nordic自己的enhanced short burst協(xié)議。可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)或是1對(duì)6的無線通信。無線通信速度廳以達(dá)到2m(bps)。nordic公司提供通信模塊的ge

16、rber文件,可以直接加工生產(chǎn)。嵌入式工程師或是單片機(jī)愛好者只需要為單片機(jī)系統(tǒng)預(yù)留5個(gè)gpio,1個(gè)中斷輸入引腳,就可以很容易實(shí)現(xiàn)無線通信的功能,非常適合用來為mcu系統(tǒng)構(gòu)建無線通信功能。芯片管腳分布見圖2.4圖2.4 nrf24l01芯片管腳分布芯片管腳分布已經(jīng)在上圖展示出來,我們只需要關(guān)注六個(gè)控制和數(shù)據(jù)信號(hào)即可,分別為csn、sck、miso、mosi、irq、ce。下面對(duì)這幾個(gè)管腳進(jìn)行簡(jiǎn)單的分析。csn:芯片的片選線,csn為低電平芯片工作。sck:芯片控制的時(shí)鐘線(spi時(shí)鐘)。miso:芯片控制數(shù)據(jù)線。mosi:芯片控制數(shù)據(jù)線。irq:中斷信號(hào)。無線通信過程中mcu主要是通過irq與

17、nrf24l01進(jìn)行通信。ce:芯片的模式控制線。在csn為低的情況下,ce協(xié)同nrf24l01的config寄存器共同決定nrf24l01的狀態(tài)。整個(gè)無線模塊的原理圖如圖2.5所示圖2.5 基于nrf24l01的無線模塊電路 本次設(shè)計(jì)所用的無線模塊則直接套用上圖所示的無線模塊。2.3.2nrf24l01無線模塊應(yīng)用nrf24l01無線收發(fā)電路如圖2.6所示。其中,發(fā)送和接收都用的是同一個(gè)無線模塊。由穩(wěn)壓電源電路供電3.3v。圖2.6 nrf24l01無線收發(fā)電路發(fā)射數(shù)據(jù)時(shí),首先將nrf24l01配置為發(fā)射模式:接著把接收節(jié)點(diǎn)地址tx_addr和有效數(shù)據(jù)tx_pld按照時(shí)序由spi口寫入nrf

18、24l01緩存區(qū),tx_pld必須在csn為低時(shí)連續(xù)寫入,而tx_addr在發(fā)射時(shí)寫入一次即可,然后ce置為高電平并保持至少10s,延遲130s后發(fā)射數(shù)據(jù);若自動(dòng)應(yīng)答開啟,那么nrf24l01在發(fā)射數(shù)據(jù)后立即進(jìn)入接收模式,接收應(yīng)答信號(hào)(自動(dòng)應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址tx_addr一致)。如果收到應(yīng)答,則認(rèn)為此次通信成功,tx_ds置高,同時(shí)tx_pld從tx fifo中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開啟),若重發(fā)次數(shù)(arc)達(dá)到上限,max_rt置高,tx fifo中數(shù)據(jù)保留以便再次重發(fā);max_rt或tx_ds置高時(shí),使irq變低,產(chǎn)生中斷,通知mcu。最后發(fā)射成

19、功時(shí),若ce為低則nrf24l01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且ce為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且ce為高,則進(jìn)入空閑模式2。接收數(shù)據(jù)時(shí),首先將nrf24l01配置為接收模式,接著延遲130s進(jìn)入接收狀態(tài)等待數(shù)據(jù)的到來。當(dāng)接收方檢測(cè)到有效的地址和crc時(shí),就將數(shù)據(jù)包存儲(chǔ)在rx fifo中,同時(shí)中斷標(biāo)志位rx_dr置高,irq變低,產(chǎn)生中斷,通知mcu去取數(shù)據(jù)。若此時(shí)自動(dòng)應(yīng)答開啟,接收方則同時(shí)進(jìn)入發(fā)射狀態(tài)回傳應(yīng)答信號(hào)。最后接收成功時(shí),若ce變低,則nrf24l01進(jìn)入空閑模式1。2.4 顯示電路本設(shè)計(jì)用的是字符型液晶lcd1602來顯示采集的溫度。2.4.1字符型液晶顯示模塊

20、簡(jiǎn)介lcd1602液晶外形尺寸如圖2.7所示。圖2.7 lcd1602外形尺寸1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(cgrom)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時(shí)模塊把地址41h中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“a”。2.4.2字符型液晶顯示模塊引腳和內(nèi)部結(jié)構(gòu)lcd1602液晶顯示模塊引腳如下表2.1所示。表2.1 lcd1602模塊引腳本設(shè)計(jì)所使用的lcd1602原理圖見圖2.9。圖2.9 lcd1602原理圖2.

21、5單片機(jī)系統(tǒng)本設(shè)計(jì)使用的是atmel公司的at89s52單片機(jī)。2.5.1at89s52簡(jiǎn)介at89s52 是一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash 存儲(chǔ)器。使用atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和引腳完全兼容。片上flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng) 可編程flash,使得at89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 at89s52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram, 32 位i/o 口線,看門狗定時(shí)器,2

22、 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。2.5.2 at89s52引腳說明at89s52單片機(jī)的引腳如圖2.10所示。圖2.10 at89s52引腳下面將對(duì)單片機(jī)的引腳進(jìn)行說明。vcc:電源電壓輸入端。 gnd:電源地。 p0口:p0口為一個(gè)8位漏級(jí)開路雙向i/o口,每腳可吸

23、收8ttl門電流。當(dāng)p1口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在fiash編程時(shí),p0口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被

24、寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉

25、的緣故。p3口除了作為普通i/o口,還有第二功能: p3.0 rxd(串行輸入口)。 p3.1 txd(串行輸出口)。 p3.2 /int0(外部中斷0)。 p3.3 /int1(外部中斷1)。p3.4 t0(t0定時(shí)器的外部計(jì)數(shù)輸入)。 p3.5 t1(t1定時(shí)器的外部計(jì)數(shù)輸入)。 p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器的寫選通)。 p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器的讀選通)。 p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 i/o口作為輸入口時(shí)有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過某種運(yùn)算或變換后再寫回到端口鎖存器。

26、只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。89c51的p0、p1、p2、p3口作為輸入時(shí)都是準(zhǔn)雙向口。除了p1口外p0、p2、p3口都還有其他的功能。 rst:復(fù)位輸入端,高電平有效。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:地址鎖存允許/編程脈沖信號(hào)端。當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ale脈沖。如想

27、禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 psen:外部程序存儲(chǔ)器的選通信號(hào),低電平有效。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 ea/vpp:外部程序存儲(chǔ)器訪問允許。當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程

28、期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:片內(nèi)振蕩器反相放大器和時(shí)鐘發(fā)生器的輸入端。 xtal2:片內(nèi)振蕩器反相放大器的輸出端。2.6 警報(bào)電路本設(shè)計(jì)的警報(bào)電路比較簡(jiǎn)單,用了一個(gè)蜂鳴器。設(shè)定溫度上限為32攝氏度,當(dāng)采集到的溫度超過上限溫度的時(shí)候,蜂鳴器則會(huì)一直響;當(dāng)溫度降到上限溫度以下時(shí),蜂鳴器停止鳴叫。原理如圖2.11所示。圖2.11 警報(bào)電路原理圖3 軟件設(shè)計(jì)3.1 系統(tǒng)概述系統(tǒng)包括軟件和硬件,硬件已經(jīng)在以上的內(nèi)容介紹完了,下面開始介紹軟件。各個(gè)模塊獨(dú)立工作,但各個(gè)模塊都互相影響。3.2程序設(shè)計(jì)流程圖發(fā)射電路程序設(shè)計(jì)流程圖如圖3.1所示。下面簡(jiǎn)單解釋一下本設(shè)計(jì)的發(fā)射電路

29、工作流程。首先上電,其中無線通信模塊用3.3v穩(wěn)壓電源,然后溫度采集模塊ds18b20初始化,進(jìn)行溫度檢測(cè)以及數(shù)據(jù)存放。存放成功之后由單片機(jī)控制把數(shù)據(jù)以數(shù)組形式傳輸?shù)絥rf24l01無線通信模塊進(jìn)行數(shù)據(jù)發(fā)送。發(fā)送之后返回檢測(cè)數(shù)據(jù)是否發(fā)射成功,如果發(fā)射成功則重新返回溫度檢測(cè)。圖3.1 發(fā)射電路程序設(shè)計(jì)流程圖接收電路程序設(shè)計(jì)流程圖如圖3.2所示。系統(tǒng)上電,nrf24l01無線模塊采用的是3.3v穩(wěn)壓電源,其它芯片直接用5v。系統(tǒng)初始化,檢測(cè)是否接收到發(fā)送模塊發(fā)送過來的數(shù)據(jù)。接收成功后調(diào)用溫度顯示函數(shù),把溫度顯示出來。其中第一塊采集電路板的溫度顯示在lcd1602第一行,第二塊采集電路板的溫度顯示在

30、lcd1602第二行。在此同時(shí),調(diào)用報(bào)警函數(shù),一旦接收到的溫度超過設(shè)定的上限溫度之后蜂鳴器會(huì)一直鳴叫進(jìn)行溫度警報(bào)。當(dāng)溫度降到上限溫度以下時(shí),警報(bào)停止。圖3.2 接收電路程序設(shè)計(jì)流程圖3.3 ds18b20程序設(shè)計(jì)根據(jù)ds18b20的通信協(xié)議,主機(jī)控制ds18b20完成溫度轉(zhuǎn)化必須經(jīng)過3個(gè)步驟:每一次讀寫之前都要對(duì)ds18b20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對(duì)ds18b20進(jìn)行預(yù)定的操作。每一步驟都有嚴(yán)格的時(shí)序要求,所有的時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命

31、令后,主機(jī)需要啟動(dòng)讀指令完成數(shù)據(jù)接受。數(shù)據(jù)和命令的傳輸都是低位在前。時(shí)序可分為初始化時(shí)序、讀時(shí)序和寫時(shí)序。復(fù)位時(shí)要求cpu將數(shù)據(jù)線下拉500us,然后釋放,ds18b20收到信號(hào)后等待1560us左右,后發(fā)出60240us的低脈沖。讀時(shí)序分為讀“0”時(shí)序和讀“1”時(shí)序兩個(gè)過程。ds18b20的讀時(shí)序是從主機(jī)把單總線拉低之后在15us之內(nèi)釋放單總線,把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20完成一個(gè)讀時(shí)序過程至少需要60us。ds18b20的寫時(shí)序仍然可分為寫“0”時(shí)序和寫“1”時(shí)序兩個(gè)過程。ds18b20寫“0”時(shí)序和寫“1”時(shí)序的要求不同,當(dāng)要寫“0”時(shí),單總線要被拉低至少60us,以保證ds18

32、b20熊貓?jiān)?545us同正確采樣i/o線上的“0”電平。當(dāng)要寫“1”時(shí),單總線被拉低后,要在15us內(nèi)釋放單總線。下面介紹ds18b20編程實(shí)現(xiàn)的過程。(1)ds18b20初始化程序設(shè)計(jì)初始化復(fù)位時(shí)序圖如圖3.3所示。圖3.3 ds18b20初始化復(fù)位時(shí)序主要程序如下: dq=1;_nop_();_nop_(); /dq復(fù)位,稍微延時(shí)dq=0; /拉低總線delay1(80); /延時(shí)500us,時(shí)序圖上有說明控制器復(fù)位脈沖范圍dq=1; /釋放總線delay1(9); /延時(shí)60us,等待temp=dq; /讀ds18b20反饋信號(hào)(2)ds18b20寫時(shí)序程序設(shè)計(jì) 寫時(shí)序圖如圖3.4所示

33、。圖3.4 ds18b20的寫時(shí)序主要程序如下:for(i=8;i0;i-) dq=1;_nop_();_nop_(); dq=0;_nop_();_nop_();_nop_();_nop_();_nop_(); dq=value&0x01; /從最低位開始寫 delay1(9); value=1; 低位在前,右移 (3)ds18b20讀時(shí)序程序設(shè)計(jì) 讀時(shí)序圖如圖3.5所示。圖3.5 ds18b20的讀時(shí)序主要程序如下:for(i=8;i0;i-)dq=1;_nop_();_nop_();value1=1;dq=0;_nop_();_nop_();_nop_();_nop_();dq=1; /

34、釋放總線之后 采樣_nop_();_nop_();_nop_();_nop_();if(dq) /是否1value1|=0x80; delay1(9);(4)ds18b20讀取溫度及溫度處理在這一塊程序中編寫了void read_temp()(讀取溫度)和void work_temp()(溫度處理)兩個(gè)函數(shù)。ds18b20中的溫度傳感器可完成對(duì)溫度的測(cè)量,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,轉(zhuǎn)換后的溫度以補(bǔ)碼形式存放在調(diào)整暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)中。ds18b20溫度值格式表如表3.1所示。表3.1 ds18b20溫度值格式表本設(shè)計(jì)顯示的溫度為正溫度,兩位整數(shù)和一位小數(shù)。分兩部分進(jìn)行操作:整數(shù)和小數(shù)。整

35、數(shù)部分的“table6=(temp_data0&0xf0)4)|(temp_data1&0x0f)4)”語句把整數(shù)整合到一起,并且默認(rèn)為正溫度。小數(shù)部分是將測(cè)到的數(shù)值再乘以0.0625,取近似值作為第一小數(shù)位。比如測(cè)到的是0x02,通過2*0.0625=0.125,取近似值為1。3.4 nrf24l01程序設(shè)計(jì)(1)nrf24l01初始化程序設(shè)計(jì) void init_nrf24l01()是最基本的函數(shù),完成gpio模擬spi的功能。將輸出字節(jié)(mosi)從msb 循環(huán)輸出,同時(shí)將輸入字節(jié)(miso)從lsb循環(huán)移入。上升沿讀入,下降沿輸出。(從sck被初始化為低電平可以判斷出)。(3)nrf2

36、4l01讀寫寄存器函數(shù)uint spi_rw_reg(uchar reg, uchar value)寄存器訪問函數(shù):用來設(shè)置 24l01 的寄存器的值?;舅悸肪褪峭ㄟ^write_reg命令(也就是 0x20+寄存器地址)把要設(shè)定的值寫到相應(yīng)的寄存器地址里面去,并讀取返回值。對(duì)于函數(shù)來說也就是把value值寫到reg寄存器中。需要注意的是,訪問 nrf24l01之前首先要enable芯片(csn=0; ),訪問完了以后再disable芯片(csn=1;)。 (4)nrf24l01的spi時(shí)序uchar spi_read(uchar reg)讀取寄存器值的函數(shù):基本思路就是通過read_reg命

37、令(也就是0x00+寄存器地址),把寄存器中的值讀出來。對(duì)于函數(shù)來說也就是把reg寄存器的值讀到reg_val中去。 (5)nrf24l01讀數(shù)據(jù)uint spi_read_buf(uchar reg, uchar *pbuf, uchar uchars)接收緩沖區(qū)訪問函數(shù):主要用來在接收時(shí)讀取fifo緩沖區(qū)中的值?;舅悸肪褪峭ㄟ^read_reg命令把數(shù)據(jù)從接收fifo(rd_rx_pload)中讀出并存到數(shù)組里面去。 (6)nrf24l01寫數(shù)據(jù)uint spi_write_buf(uchar reg, uchar *pbuf, uchar uchars)發(fā)射緩沖區(qū)訪問函數(shù):主要用來把數(shù)組

38、里的數(shù)放到發(fā)射fifo緩沖區(qū)中?;舅悸肪褪峭ㄟ^write_reg命令把數(shù)據(jù)存到發(fā)射fifo(wr_tx_pload)中去。(7)nrf24l01數(shù)據(jù)接收發(fā)送配置void setrx_mode()函數(shù)是用于設(shè)置為本塊無線通信模塊為接收模塊,里面包含了兩塊采集電路的地址,當(dāng)?shù)刂放鋵?duì)成功之后方可接收數(shù)據(jù)。void setrx_mode()函數(shù)則是用來設(shè)置本塊無線通信模塊為發(fā)射模塊,里面包含了自己的本地地址,這個(gè)地址是它與其它模塊區(qū)分的標(biāo)志。(8)nrf24l01接收緩沖區(qū)unsigned char nrf24l01_rxpacket(unsigned char* rx_buf)函數(shù)的功能是數(shù)據(jù)讀取

39、后放如rx_buf接收緩沖區(qū)中。3.5 字符型液晶顯示模塊程序設(shè)計(jì)(1)lcd1602初始化程序設(shè)計(jì)lcd1602的初始化的過程如下: 延時(shí)15ms; 寫指令38h(不檢測(cè)忙信號(hào)); 延時(shí)5ms; 寫指令38h(不檢測(cè)忙信號(hào)); 延時(shí)5ms; 寫指令38h(不檢測(cè)忙信號(hào)); (以后每次寫指令、讀/寫數(shù)據(jù)操作之前均需要檢測(cè)忙信號(hào)) 寫指令38h:顯示模式設(shè)置; 寫指令08h:顯示關(guān)閉; 寫指令01h:顯示清屏; 寫指令06h:顯示光標(biāo)移動(dòng)位置; 寫指令0ch:顯示開及光標(biāo)設(shè)置。主要程序如下: delay_50us(300); /延時(shí)15ms write_com(0x38); /寫指令 0x38

40、delay_50us(100); /延時(shí)5ms write_com(0x38); /寫指令 0x38 delay_50us(100); /延時(shí)5ms write_com(0x38); /寫指令 0x38 write_com(0x38); /寫指令 0x38 write_com(0x08); /寫指令 0x08,顯示關(guān)閉 write_com(0x01); /寫指令 0x01,顯示清屏 write_com(0x06); /寫指令 0x06,顯示光標(biāo)移動(dòng)設(shè)置 write_com(0x0c); /寫指令 0x0c,顯示開及光標(biāo)設(shè)置(2)lcd1602寫指令程序設(shè)計(jì)寫操作時(shí)序圖如圖3.7所示。圖3.7

41、lcd1602寫操作時(shí)序圖lcd1602的寫指令基本操作時(shí)序?yàn)椋簉s=l,rw=l,d0d7=指令碼,e=高脈沖。根據(jù)這個(gè)格式可以進(jìn)行對(duì)lcd1602寫指令進(jìn)行編程。寫void write_com(uchar com)寫指令函數(shù)的時(shí)候要注意使能端拉高或拉低都要進(jìn)行延時(shí)。(3)lcd1602寫數(shù)據(jù)程序設(shè)計(jì)lcd1602的寫數(shù)據(jù)基本操作時(shí)序?yàn)椋簉s=h,rw=l,d0d7=數(shù)據(jù),e=高脈沖。根據(jù)這個(gè)格式可以進(jìn)行對(duì)lcd1602寫數(shù)據(jù)進(jìn)行編程。(4)lcd1602顯示函數(shù)程序設(shè)計(jì)程序如下:void disdignit(uchar *y) uchar i;write_com(y); /lcd1602顯

42、示行for(i=0;i6;i+) write_data(tab_tempi); write_data(0x30+rxbuf2); /0x30的10進(jìn)制表示為48,即ascii碼字符0write_data(0x30+rxbuf1);write_data(.);write_data(0x30+rxbuf0);write_data(0xdf);write_data(c);在這里需要補(bǔ)充一點(diǎn),在程序的開頭已經(jīng)定義了tab_temp6=”temp: ”,在顯示數(shù)字溫度前注明一下看起來比較嚴(yán)謹(jǐn)。顯示函數(shù)里的rxbuf2、rxbuf1、rxbuf0分別代表接收到的溫度的十位、個(gè)位、小數(shù)位。加上0x30可以讓

43、它轉(zhuǎn)換成ascii碼。函數(shù)還用了指針*y,是因?yàn)楸驹O(shè)計(jì)為多點(diǎn)溫度采集,為了方便溫度顯示,讓第一個(gè)溫度顯示在液晶第一行,第二個(gè)溫度顯示在液晶第二行,因此加入個(gè)指針,在主函數(shù)里分別賦值0x80(lcd1602第一行第一個(gè)位置)和0x80+0x40(lcd1602第二行第一個(gè)位置)。4 調(diào)試及結(jié)果本系統(tǒng)實(shí)現(xiàn)的是無線多點(diǎn)溫度采集,在兩個(gè)地方檢測(cè)溫度,然后發(fā)射到接收端。經(jīng)過實(shí)踐得出本系統(tǒng)可以接收到100米之內(nèi)的數(shù)據(jù),并且可以正常顯示和正常報(bào)警。溫度采集板如圖4.1所示。板上的發(fā)光二極管是電源指示燈,電源接通后即可正常工作。圖4.1 溫度采集板溫度接收顯示板如圖4.2所示。1602液晶第一行和第二行分別顯

44、示的是第一塊和第二塊采集板發(fā)射過來的溫度。從液晶顯示來看,溫度顯示清晰并且穩(wěn)定。本系統(tǒng)還設(shè)置了一個(gè)溫度報(bào)警上限溫度32攝氏度,當(dāng)溫度達(dá)到警報(bào)溫度時(shí),報(bào)警系統(tǒng)開始工作:蜂鳴器會(huì)一直叫,并且報(bào)警指示燈也跟著亮;當(dāng)溫度下降到警報(bào)溫度時(shí),報(bào)警系統(tǒng)停止工作?,F(xiàn)象如圖4.3所示,在1602液晶上方的led即報(bào)警指示燈。由此可見,報(bào)警系統(tǒng)可以正常工作。圖4.2 溫度接收板圖4.3 報(bào)警系統(tǒng)演示參考文獻(xiàn)1 余永權(quán):?jiǎn)纹瑱C(jī)原理及應(yīng)用,電子工業(yè)出版社, 1998.122 諸邦田:電子電路實(shí)用抗干擾技術(shù),人民郵電出版社,1994.5 3 曲喜新:電子元件材料手冊(cè).電子工業(yè)出版社,1989.44 黃賢武、鄭筱霞、曲

45、波、劉文杰:傳感器實(shí)際應(yīng)用電路設(shè)計(jì),電子科技大學(xué)出版社,1997.65 劉君華:智能傳感器系統(tǒng),西安電子科技大學(xué)出版社,1999.36 汪吉鵬、馬云峰:微機(jī)原理與接口技術(shù),高等教育出版社,2001.77 賈振國:ds1820 及高精度溫度測(cè)量的實(shí)現(xiàn),電子技術(shù)應(yīng)用,2000.18 偉 正:?jiǎn)尉€數(shù)字溫度傳感器的原理與應(yīng)用,電子技術(shù)應(yīng)用,2000.69 周月霞、孫傳友:ds18b20 硬件連接及軟件編程,傳感器世界,2001.810 單線數(shù)字溫度傳感器資料,武漢力源電子有限公司,1996.311 王琳,商周,王學(xué)偉.數(shù)據(jù)采集的發(fā)展及應(yīng)用.電測(cè)與儀表,2004,no.46412 v. schmidt,

46、 control, data acquisition, and remote participation for fusion research, fusion eng. des. 81 (2006) 17021712.13 a.neto,h.fernandes,a.duarte, firesignal-data acquisition and control system software.fusionengineering and design 82(2007)1359-1364.附 錄(1)接收部分程序如下:#include #include #define lcdio p0 /液晶數(shù)據(jù)

47、端口void disdignit1();void disdignit2();typedef unsigned char uchar;typedef unsigned char uint;uchar code tab_temp16=temp1:;uchar code tab_temp26=temp2:;/*端口定義sbit lcd1602_rs = p35; /控制寫數(shù)據(jù)或命令sbit lcd1602_en = p34; /液晶使能sbit bell=p26;/*nrf24l01端口定義sbit miso=p23;sbit mosi=p21;sbitsck =p24;sbitce =p25;sb

48、itcsn=p20;sbitirq=p22;#define tx_adr_width 5 / 5 uints tx address width#define rx_adr_width 5 / 5 uints rx address width#define tx_pload_width 20 / 20 uints tx payload#define rx_pload_width 20 / 20 uints tx payloaduchar idata rxbuf120=0;uchar idata aa20=0;uint const rx_address0rx_adr_width= 0x34,0x4

49、3,0x10,0x10,0x01;/接收地址uint const rx_address1rx_adr_width= 0xc2,0xc2,0xc2,0xc2,0xc3;/接收地址void delay(int s) /延時(shí)函數(shù)int i,j;for(i=0; i110; i+) for(j=0; j0;n-)_nop_();/*函數(shù):uint spi_rw(uint uchar)/*功能:nrf24l01的spi寫時(shí)序uint spi_rw(uint uchar)uint bit_ctr; for(bit_ctr=0;bit_ctr8;bit_ctr+) / output 8-bit mosi =

50、 (uchar & 0x80); / output uchar, msb to mosiuchar = (uchar 1); / shift next bit into msb.sck = 1; / set sck high.uchar |= miso; / capture current miso bitsck = 0; / .then set sck low again return(uchar); / return read uchar/*功能:nrf24l01讀寫寄存器函數(shù)uint spi_rw_reg(uchar reg, uchar value)uint status;csn =

51、0; / csn low, init spi transactionstatus = spi_rw(reg); / select registerspi_rw(value); / .and write value to it.csn = 1; / csn high againreturn(status); / return nrf24l01 status uchar/*函數(shù):uint spi_write_buf(uchar reg, uchar *pbuf, uchar uchars)/*功能: 用于寫數(shù)據(jù):為寄存器地址,pbuf:為待寫入數(shù)據(jù)地址,uchars:寫入數(shù)據(jù)的個(gè)數(shù)uint spi_write_buf(uchar reg, uchar *pbuf, uchar uchars)uint status,uchar_ctr;csn = 0; /spi使能 status = spi_rw(reg); for(uchar_ctr=0; ucha

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論