基于NRF905遠(yuǎn)程溫度監(jiān)控系統(tǒng)_第1頁
基于NRF905遠(yuǎn)程溫度監(jiān)控系統(tǒng)_第2頁
基于NRF905遠(yuǎn)程溫度監(jiān)控系統(tǒng)_第3頁
基于NRF905遠(yuǎn)程溫度監(jiān)控系統(tǒng)_第4頁
基于NRF905遠(yuǎn)程溫度監(jiān)控系統(tǒng)_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、南京工程學(xué)院畢業(yè)設(shè)計說明書(論文)摘要本論文以STC89C52單片機為核心,給出了一種無線溫度監(jiān)控系統(tǒng)的硬件和軟件的設(shè)計。該系統(tǒng)由STC89C52,無線收發(fā)模塊nRF905,時間芯片DS1302,DS18B20溫度傳感器,LCD12864液晶顯示器等組成。該系統(tǒng)通過STC89C52控制,由DS18B20采集溫度數(shù)據(jù),DS1302提供時間,在LCD12864上顯示時間溫度等信息并通過NRF905進行無線收發(fā),以達(dá)到遠(yuǎn)程監(jiān)控的目的。該系統(tǒng)具有準(zhǔn)確度高、實時性好、功耗小、操作方便等優(yōu)點。 關(guān)鍵詞:無線傳輸;溫度監(jiān)控;STC89C52單片機;無線收發(fā)模塊nRF905Abstract STC89C52

2、single-chip microcomputer as the core, this paper presents a wireless temperature monitoring system hardware and software design. The system consists of STC89C52, wireless transceiver modules nRF905, time chip DS1302, DS18B20 temperature sensor, LCD12864 LCD, etc. The system is controlled by STC89C5

3、2, temperature data acquisition by DS18B20, DS1302 provides time, display time and temperature and other information and wireless transceiver based on NRF905 in LCD12864, in order to achieve the purpose of remote monitoring. The system has high accuracy and good real-time performance, low consumptio

4、n, convenient operation, etc. Key words: Wireless transmission; temperature measurement; STC89C52 Single-chip microcomputer; wireless transceiver module nRF905 目錄第一章 緒論51.1 前言51.2 選題背景與意義51.3系統(tǒng)總體設(shè)計61.4主要章節(jié)安排6第二章 系統(tǒng)硬件框架82.1 硬件系統(tǒng)電路82.2硬件電路及工作原理9 2.2.1 主控器件STC89C529 2.2.2 LCD1286411 2.2.3 DS18B20溫度傳感器1

5、3 2.2.4 NRF905射頻模塊16 2.2.5 時鐘芯片DS130220 2.2.6 報警器22 2.2.7 獨立鍵盤23第三章 軟件總體設(shè)計及各模塊部分程序詳細(xì)介紹263.1 設(shè)計總思路26 3.2 各模塊軟件部分的設(shè)計原理26 3.2.1主程序模塊26 3.2.2功能實現(xiàn)模塊39 (1)溫度采集模塊程序設(shè)計29 (2)日期模塊程序設(shè)計34 (3)液晶顯示模塊程序設(shè)計37 (4)預(yù)警溫度及時間的設(shè)定程序39 (5)報警程序設(shè)計44 (6)無線收發(fā)模塊程序設(shè)計45第四章 系統(tǒng)的調(diào)試48 4.1 KEIL軟件開發(fā)48 4.2 軟件調(diào)試49 4.2.1軟件調(diào)試環(huán)境49 4.2.2軟件調(diào)試過程

6、49 4.3 制板及調(diào)試51 4.4 調(diào)試中遇到的問題及解決的方法51第五章 總結(jié)與展望53致謝54 參考文獻(xiàn):55附錄A:56附錄B:57附錄C:58附錄D:60 第一章 緒論1.1 前言遠(yuǎn)程溫度監(jiān)控系統(tǒng)在工業(yè)和農(nóng)業(yè)生產(chǎn),科學(xué)研究和人們的生活領(lǐng)域中得到了廣泛的應(yīng)用,工業(yè)生產(chǎn)過程中,很多時候都需要對溫度進行嚴(yán)格的監(jiān)控以使得生產(chǎn)能夠順利進行,使用自動化溫度控制系統(tǒng);可以對生產(chǎn)環(huán)境的溫度進行自動控制保證生產(chǎn)的自動化智能化能夠順利安全進行,從而提高企業(yè)的安全效率.溫度對于工農(nóng)業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。傳感器主要經(jīng)歷了三個發(fā)展階段:模擬集成溫度傳感器、模擬集成溫度控制器、智能溫度傳感器。

7、進入新世紀(jì)后,溫度傳感器的發(fā)展趨勢迅速,溫度傳感器的精度越來越高,功能越來越強大。隨著單片機技術(shù)的飛速發(fā)展,通過單片機對被控對象進行控制成為今后自動控制領(lǐng)域的一個重要發(fā)展方向。采用51單片機來對溫度進行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量;隨著無線通信技術(shù)的快速發(fā)展,其遠(yuǎn)程溫度檢測技術(shù)也在不斷地提高。系統(tǒng)中采用DS18B20作為高精度溫度傳感器,采用了無線收發(fā)芯片nRF905 ,其發(fā)射功率為10 dBm,使用立柱型天線, 發(fā)射速率50 Kbps,外置433MHz天線,空曠通訊距離可達(dá)300米左右,抗干擾能力較強

8、,可以有效地實現(xiàn)各種場合溫度的直接測量,并進行溫度傳輸。 1.2 選題背景與意義遠(yuǎn)程溫度控制廣泛應(yīng)用于人們的生產(chǎn)和生活中,人們使用溫度計來采集溫度,通過人工操作加熱、通風(fēng)和降溫設(shè)備來控制溫度,這樣不但控制精度低、實時性差,而且操作人員的勞動強度大。即使有些用戶采用半導(dǎo)體二極管作溫度傳感器,但由于其互換性差,效果也不理想。在某些行業(yè)中對溫度的要求較高,由于工作環(huán)境溫度不合理而引發(fā)的事故時有發(fā)生。對工業(yè)生產(chǎn)可靠進行造成影響,甚至操作人員的安全。為了避免這些缺點,需要在某些特定的環(huán)境里安裝數(shù)字溫度測量及控制設(shè)備。本設(shè)計由于采用了新型單片機對溫度進行控制,以其測量精度高,操作簡單??蛇\行性強,價格低廉

9、等優(yōu)點,特別適用于生活,醫(yī)療,工業(yè)生產(chǎn)等方面的溫度測量及控制。 遠(yuǎn)程溫度監(jiān)控在日常生活中有著廣泛的用途, 此次的溫度監(jiān)測器基于此而設(shè)計, 它的最大的優(yōu)點在于可以測量顯示當(dāng)前溫度,并通過無線收發(fā)裝置nRF905將溫度發(fā)送給主機,將當(dāng)前溫度與預(yù)置溫度進行比較,當(dāng)當(dāng)前溫度超過預(yù)置溫度時發(fā)出報警, 實現(xiàn)對實時溫度進行監(jiān)測、整理和分析的目的。由于該系統(tǒng)設(shè)計合理,采用低功耗報警器僅需占用少量資源即可進行高精度的溫度測量。操作方便,性能穩(wěn)定,合理的使用編譯軟件,可以快速的獲取采集數(shù)據(jù),在實際的使用中獲得了理想的效果。在遠(yuǎn)程溫度監(jiān)控上,形成了一套完整的控制方案,可以移植應(yīng)用于設(shè)備恒溫、屋內(nèi)暖氣,工業(yè)和農(nóng)業(yè)等許

10、多方面。1.3系統(tǒng)總體設(shè)計設(shè)計的內(nèi)容是遠(yuǎn)程溫度監(jiān)控系統(tǒng)的發(fā)送和接收部分。整個系統(tǒng)分為軟件和硬件兩個部份,在硬件的基礎(chǔ)上完成軟件的設(shè)計,設(shè)計的要求如下。(1) 完成系統(tǒng)硬件和軟件總體設(shè)計。(2) 完成無線發(fā)送端nRF905軟件設(shè)計。(3) 完成LCD驅(qū)動子程序設(shè)計。(4) 完成DS18B20溫度采集子程序設(shè)計。(5) 完成C51單片機主程序設(shè)計。(6) 實現(xiàn)遠(yuǎn)程溫度監(jiān)控的過程演示。1.4主要章節(jié)安排第一章 緒論第二章 系統(tǒng)的發(fā)送端和接收端硬件設(shè)計框架, 主要介紹下硬件部分的元器件的性能。第三章 軟件的總體設(shè)計,及各個子程序的軟件流程圖。第四章 部分程序的詳細(xì)介紹,把各個模塊的程序設(shè)計中比較重要的

11、程序拿出來加以分析。第五章 系統(tǒng)的調(diào)試 第六章 總結(jié)與展望 第二章 系統(tǒng)硬件框架2.1 硬件系統(tǒng)電路發(fā)送端由溫度傳感器DS18B20,時鐘DS1302,STC89S52單片機,nRF905無線射頻模塊,LCD12864液晶顯示屏,蜂鳴器組成。 MCU處理器STC89C52溫度傳感器 DS18B20 時鐘芯片 DS1302 可調(diào) 按鍵 LCD12864 顯示屏蜂鳴器報警 模塊NRF905無線 射頻模塊 圖1 發(fā)送端系統(tǒng)設(shè)計框圖發(fā)送端由溫度傳感器DS18B20,時鐘DS1302,STC89S52單片機,nRF905無線射頻模塊,LCD12864液晶顯示屏,蜂鳴器組成。MCU處理器STC89C52

12、可調(diào) 按鍵 LCD12864 顯示屏蜂鳴器報警 模塊NRF905無線 射頻模塊 圖2 接收端系統(tǒng)設(shè)計框圖 其主要實現(xiàn)的以下的功能:(1) DS1302時間模塊:DS1302時鐘芯片實現(xiàn)時鐘功能準(zhǔn)確提供:年、月、日、星期、時、分、秒。(2) LCD12864液晶顯示模塊:將采集到的時間溫度等信息12864液晶上顯示。(3) DS18B20溫度的采集模塊:通過DS18B20數(shù)字溫度傳感器實現(xiàn)溫度的采集。(4) 鍵控模塊:S1復(fù)位鍵;S2加1鍵;S3光標(biāo)選擇鍵;S4確認(rèn)鍵。(5) 無線收發(fā)模塊:將采集到的溫度、時鐘等信息通過NRF905進行收發(fā)。(6) 報警模塊:當(dāng)出現(xiàn)異常狀況時系統(tǒng)報警,硬件設(shè)計是

13、通過三極管的放大作用來驅(qū)動蜂鳴器。2.2硬件電路及工作原理硬件電路主要有主控器件STC89C51、時鐘芯片DS1302、液晶顯示LCD12864、蜂鳴器,繼電器電路,無線收發(fā)芯片NRF905等構(gòu)成,以下就詳細(xì)介紹這些元器件。 2.2.1 單片機STC89C52RCSTC89C52RC是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和512 bytes的隨機存取數(shù)據(jù)存儲器(RAM),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元及2K字節(jié)EEPROM存儲空間。(1)主要功能特性:l  兼容MCS51指令系

14、統(tǒng);l  8k可反復(fù)擦寫Flash ROM;l  32個雙向I/O口;l  512x8bit內(nèi)部RAM;l  3個16位可編程定時/計數(shù)器中斷;l  時鐘頻率0-24MHz;l  2個串行中斷,可編程UART串行通道;l  2個外部中斷源,共8個中斷源;l  2個讀寫中斷口線,3級加密位;l  低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能;(2) 主要管腳有: l  18腳: 通用I/O接口p1.0p1.7;l  9腳: rst復(fù)位鍵;l  10 .11:RXD 串

15、口輸入TXD串口輸出;1219:I/O p3接口 l  12,13腳 INT0中斷0 ,INT1中斷1; l  14,15腳: 計數(shù)脈沖T0 T1 l  16,17腳: WR寫控制 RD讀控制輸出端; l  18,19腳: 晶振諧振器); l  20 腳 地線; l  2128腳 p2 接口 高8位地址總線; l 29腳: psen 片外rom選通端  l  30腳:ALE/PROG 地址鎖存; l  31腳:EA rom取指令控器 高電平片內(nèi)取 低電平片外; l  3239腳:p0.

16、7p0.0 l  40腳:電源+5V。 圖3 STC89C52RC 2.2.2 LCD12864LCD12864是一款具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人圖形界面??梢燥@示4行8列32個漢字,每個漢字由16×16的點陣組成,也可以通過點陣來顯示圖形.12864的另一顯著特點是低電壓低功耗。采用該類型的液晶顯示屏與其他點陣液晶顯示屏相比,

17、能夠顯示更多的圖形和文字,硬件電路和軟件程序也都變得簡潔多了??紤]到經(jīng)濟效益,該模塊的價格和同樣的點陣型液晶模塊相比價格較低。LCD12864引腳圖如圖所示: 圖4 LCD12864引腳圖(1) 引腳說明(具體的引腳功能見表1)1電源地0V(VSS);2電源正5V(VCC);3亮度引腳(VO);4顯示選擇引腳(RS),高電平數(shù)據(jù)模式,低電平指令模式;5讀寫選擇引腳(R/W),高電平讀,低電平寫;6使能引腳(E),高電平使能,下降沿鎖存;7、8、9、10、11、12、13、14三態(tài)數(shù)據(jù)線,15串口方式(PSB);16空腳(NC);17復(fù)位(RESET),低電平復(fù)位;18驅(qū)動電壓(VOUT);19

18、 背光電源正5V(A);20背光電源負(fù)0V(K)。管腳號名稱LEVEL功能1VSS0V電源地2VDD+5V電源正(3.0V-5.5V)3VO-對比度(亮度)調(diào)整4CSH/L模組片選端,高電平有效5SIDH/L串行數(shù)據(jù)輸入端6CLKH/L串行同步時鐘:上升沿時讀取SID數(shù)據(jù)15PSBLL:端口方式17/RESETH/L復(fù)位端19AVDD背光源電壓+5V20KVSS背光源負(fù)端0V 表1 引腳功能圖 (2) 、顯示特性 l 顯示方式:STN、半透、正顯 l 驅(qū)動方式:1/32DUTY,1/5BIAS l 視角方向:6點 l 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/51/10 l 通訊方

19、式:串行、并口可選 l 內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負(fù)壓 l 無需片選信號,簡化軟件設(shè)計 l  l 工作溫度: 0 - +55 ,存儲溫度: -20 - +60 l 低電源電壓(VDD:+3.0-+5.5V) l 顯示分辨率:128×64點 l 內(nèi)置漢字字庫,提供8192個16×16點陣漢字 l 內(nèi)置 128個16×8點陣字符 l 2MHZ時鐘頻率 2.2.3 DS18B20溫度傳感器美國DALLAS公司推出DS18B20是智能化數(shù)字式溫度傳感器,所有的轉(zhuǎn)換電路和傳感組件在一個很小的三極管的集成電路中。送入DSl8B20的信息和從DSl8B

20、20送出的信息都是通過單總線接口完成的,因此單片機和DSl8B20之間僅需一條數(shù)據(jù)總線的鏈接??梢杂蓴?shù)據(jù)線本身提供讀,寫和完成溫度變換所需的電源,從而無需提供外部電源。DSl8B20采用“一線總線”的接口,現(xiàn)場測量的溫度直接通過“單總線”的方式進行傳輸,“單總線”的數(shù)字傳輸方式有助于提高系統(tǒng)的抗干擾的能力。DS18B20 采集溫度范圍為-55+125,在-10+85范圍內(nèi)測量溫度精度較高,精度為范圍±0.5 圖5 DS18B20連接硬件圖 (1).特征:    l    采用獨特的單線接口。只需要連接一個引腳就可以實現(xiàn)通信l 

21、;   能夠連接多個傳感器來測量分布式溫度,使檢測變得快捷簡化l    無需其他外部組件l   可以實用用數(shù)據(jù)線來供電l    不需要備用電源l    用來測量從-55+125范圍的溫度,增量值為0.5l    用9位2進制數(shù)字方式輸出溫度l    用戶可定義的,不容易丟失數(shù)據(jù)的溫度告警設(shè)置l    告警搜索命令識別和尋址溫度在編定的極限之外的器件(溫度告警情況)(2).引腳定

22、義: l DQ為數(shù)字信號輸入/輸出端; l GND為電源地; l VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。(3).內(nèi)部結(jié)構(gòu)DSl8B20內(nèi)部有四個主要部分: 64位光刻ROM數(shù)據(jù)存儲器 溫度傳感器 非易失性電可擦寫溫度報警觸發(fā)器TH、TL 非易失性電可擦寫設(shè)置寄存器。除此之外還有告訴緩存存儲器。器件只有3根外部引腳,其中VDD和GND為電源引腳,另一根DQ線則用作O總線,因此稱為一線式數(shù)據(jù)總線。與單片機接口的每個IO口可掛接多個DQVDD圖6 DS18B20內(nèi)部結(jié)構(gòu)(4).DS18B20使用中注意事項 DS1820雖然測量溫度具有高精度,系統(tǒng)設(shè)計簡單,采用單總線連接,無需占用多

23、個接口等優(yōu)點,但在實際操作中需要注意下列幾個問題:l 較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于DS1820和STC89C52之間采用串行方式傳送數(shù)據(jù),因此,在對DS1820讀寫程序編寫時,必須嚴(yán)格控制讀寫時序,否則將不能讀取出測量的溫度。l 在DS1820的相關(guān)的資料中都沒有提到DS1820在單總線上所掛數(shù)量多少問題,容易造成誤解,認(rèn)為可以在單總線上掛任意許多個DS1820,然而在實際操作中中并不是這樣的。在單總線上所掛DS18B20數(shù)量超過8個時,就需要解決單片機的總線驅(qū)動問題,在進行測量多點溫度系統(tǒng)設(shè)計時尤其要注意這一點。l DS1820對連接的總線電纜的長度是有一定限制。當(dāng)傳輸采用

24、普通的信號電纜時不能夠太長,如果長度達(dá)到50m進行傳輸,讀取的測溫數(shù)據(jù)就會出現(xiàn)錯誤。當(dāng)采用雙絞線帶屏蔽電纜時,傳輸距離較長,正常情況下通訊距離能達(dá)到150m,每米絞合次數(shù)越多時,正常情況下通訊距離可以進一步加長。出現(xiàn)這種情況主要是因為總線分布電容促使信號波形產(chǎn)生畸變造成的。因此,在用DS1820為溫度傳感器的遠(yuǎn)距離溫度監(jiān)控系統(tǒng)設(shè)計時,總線分布電容和阻抗匹配問題需要得到充分考慮。l 在DS1820測量溫度程序設(shè)計中,當(dāng)向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總是在等待DS1820的返回信號,只要其中一個DS1820接觸不良或斷線,當(dāng)程序進行讀該DS1820時,將不會得到到返回信號,該程序就進入了死

25、循環(huán)。在對DS18B20進行軟件設(shè)計和硬件連接時,都必須重視這一點。 2.2.4 nRF905射頻模塊 挪威Nordic公司推出nRF905是單射頻發(fā)射器芯片,工作所需電壓為1.9V-3.6V,它共有32引腳封裝(5×5),工作在433/868/915MHz這3個頻道。nRF905能夠自動完成處理字頭和CRC(循環(huán)冗余校驗)的工作,徹斯特編/解可以通過內(nèi)部硬件自動完成,使用SPI接口與單片機通信,配置非常方便,其功耗非常低,以-10dBm的輸出功率發(fā)射時電流只有11mA,在接收模式時電流大小為12.5mA。nRF905單無線收發(fā)器工作由一個完全集成的頻率調(diào)制器,一個帶解調(diào)器的接收器,

26、一個功率放大器,一個晶體震蕩器和一個調(diào)節(jié)器組成。ShockBurst工作模式的特點是產(chǎn)生前導(dǎo)和CRC自己完成的,通過SPI接口來進行編程配置能夠很容易實現(xiàn)。傳輸前聽的載波檢測協(xié)議,當(dāng)正確的數(shù)據(jù)包被接收或發(fā)送時有數(shù)據(jù)準(zhǔn)備就緒信號輸出,偵測接收的數(shù)據(jù)包當(dāng)?shù)刂氛_輸出地址匹配信號。 圖7 nRF905硬件連接圖(1).特征l 433Mhz開放ISM頻段免許可證使用l 最高工作速率50kbps,高效GFSK調(diào)制,抗干擾能力強l 125頻道,滿足多點通信和跳頻通信需要l 內(nèi)置硬件CRC檢錯和點對多點通信地址控制l 低功耗1.9-3.6V工作,待機模式下狀態(tài)僅為2.5uAl 收發(fā)模式切換時間< 65

27、0usl 電路可軟件設(shè)地址,只有收到本機地址時才會輸出數(shù)據(jù)l TX Mode:在+10dBm情況下,電流為30mA;RXMode:12.2mAl 標(biāo)準(zhǔn)DIP間距接口,便于嵌入式應(yīng)用(2).接口電路引腳說明表3.1為基于nRF905的無線收發(fā)電路的引腳定義:l VCC腳接電壓范圍為3.3V3.6V之間,超過3.6V將會燒毀模塊。推薦電壓3.3V。l 除電源VCC和接地端,其余腳都可以直接和5V單片機IO口直接相連。l 硬件上面沒有SPI的單片機也可以控制本模塊,用普通單片機IO口模擬SPI不需要單片機SPI模塊介入,只需添加代碼模擬SPI時序即可。l 13腳、14腳為接地腳,需要和母板的邏輯地連

28、接起來l 與51系列單片機P0口連接時候,需要加10K的上拉電阻,與其余口連接不需要。圖8 NRF905引腳圖 管腳名稱管腳功能說明1VCC電源電源+3.33.6V DC2TX_EN數(shù)字輸入TX_EN= 1 TX 模式 TX_EN= 0 RX 模式3TRX_CE數(shù)字輸入使能芯片發(fā)射或接收4PWR_UP數(shù)字輸入芯片上電5uCLK時鐘輸出本模塊該腳廢棄不用,向后兼容6CD數(shù)字輸出載波檢測7AM數(shù)字輸出地址匹配8DR數(shù)字輸出接收或發(fā)射數(shù)據(jù)完成9MISOSPI 接口SPI 輸出10MOSISPI 接口SPI 輸入11SCKSPI 時鐘SPI 時鐘12CSNSPI 使能SPI 使能13GND地接地14G

29、ND地接地 表2 無線收發(fā)電路的引腳定義(3).模塊引腳和電氣參數(shù)表3.2為基于nRF905的無線收發(fā)電路的性能參考數(shù)據(jù)參數(shù)數(shù)值單位最低工作電壓3.0V最大發(fā)射功率10dBm最大數(shù)據(jù)傳輸率曼切斯特編碼50kbps輸出功率為-10 dBm時工作電流9mA接收模式時工作電流12.5mA溫度范圍-40 to +85典型靈敏度-100dBmPOWERDOWN 模式時工作電流2.5uA 表3 nRF905電路性能參考數(shù)據(jù) (4).工作方式NewMsg-RF905一共有四種工作模式,其中有兩種活動RX/TX模式和兩種節(jié)電模式?;顒幽J剑篠hockBurst RX、ShockBurst TX節(jié)電模式:掉電和

30、SPI編程STANDBY和SPI編程nRF905工作模式由TRX_CE、TX_EN、PWR_UP的設(shè)置來設(shè)定,具體如表3.3。PWR_UPTRX_CETX_EN工作模式0XX掉電和SPI編程10XStandby和SPI編程110ShockBurst RX111ShockBurst TX 表4 無線收發(fā)模塊的設(shè)定l ShockBurst模式:ShockBurstTM收發(fā)模式下,使用片內(nèi)的先入先出堆棧區(qū),數(shù)據(jù)低速從微控制器送入高速發(fā)射,這樣可以盡量節(jié)能,因此也能得到很高的射頻數(shù)據(jù)發(fā)射速率。與射頻協(xié)議相關(guān)的所有高速信號處理都在片內(nèi)進行,這樣做的好處:盡量節(jié)能;低系統(tǒng)費用(低速微處理器也能進行高速射頻

31、發(fā)射);數(shù)據(jù)在空中停留時間短,抗干擾性高。ShockBurstTM技術(shù)同時也減小了整個系統(tǒng)的平均工作電流。在ShockBurstTM收發(fā)模式下,RF905自動處理字頭和CRC校驗碼。在接收數(shù)據(jù)時,自動把字頭和CRC校驗碼移去。在發(fā)送數(shù)據(jù)時,自動加上字頭和CRC校驗碼,當(dāng)發(fā)送過程完成后,DR引腳通知微處理器數(shù)據(jù)發(fā)射完畢。ShockBurst TX發(fā)送流程:.當(dāng)微控制器有數(shù)據(jù)要發(fā)送時,通過SPI接口,按時序把接收機的地址和要發(fā)送的數(shù)據(jù)送傳給RF905,SPI接口的速率在通信協(xié)議和器件配置時確定;.微控制器置高TRX_CE和TX_EN,激發(fā)RF905的ShockBurstTM發(fā)送模式;.RF905的

32、ShockBurstTM發(fā)送:a.射頻寄存器自動開啟;b.數(shù)據(jù)打包(加字頭和CRC校驗碼);c.發(fā)送數(shù)據(jù)包;d.當(dāng)數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準(zhǔn)備好引腳被置高;.AUTO_RETRAN被置高,RF905不斷重發(fā),直到TRX_CE被置低;.當(dāng)TRX_CE被置低,RF905發(fā)送過程完成,自動進入空閑模式。注意:ShockBurstTM工作模式保證,一旦發(fā)送數(shù)據(jù)的過程開始,無論TRX_EN和TX_EN引腳是高或低,發(fā)送過程都會被處理完。只有在前一個數(shù)據(jù)包被發(fā)送完畢,RF905才能接受下一個發(fā)送數(shù)據(jù)包。ShockBurst RX接收流程:.當(dāng)TRX_CE為高、TX_EN為低時,RF905進入ShockBurst

33、TM接收模式;.650us后,RF905不斷監(jiān)測,等待接收數(shù)據(jù);.當(dāng)RF905檢測到同一頻段的載波時,載波檢測引腳被置高;.當(dāng)接收到一個相匹配的地址,AM引腳被置高;.數(shù)據(jù)包接收完畢,芯片自動移去字頭、地址和CRC校驗位,然后DR腳置高.微控制器把TRX_CE置低,nRF905進入空閑模式;.微控制器通過SPI口,以一定的速率把數(shù)據(jù)移到微控制器內(nèi);.當(dāng)所有的數(shù)據(jù)接收完畢,nRF905把DR引腳和AM引腳置低;.nRF905此時可以進入ShockBurstTM接收和發(fā)送模式或關(guān)機模式。當(dāng)正在接收一個數(shù)據(jù)包時,TRX_CE或TX_EN引腳的狀態(tài)發(fā)生改變,RF905立即把其工作模式改變,數(shù)據(jù)包則丟失

34、。當(dāng)微處理器接到AM引腳的信號之后,其就知道RF905正在接收數(shù)據(jù)包,其可以決定是讓RF905繼續(xù)接收該數(shù)據(jù)包還是進入另一個工作模式。l 節(jié)能模式:RF905的節(jié)能模式包括關(guān)機和節(jié)能模式。關(guān)機模式的工作電流最小一般為2.5uA。進入關(guān)機模式后,配置字中內(nèi)容保持,不接收或發(fā)送數(shù)據(jù)。在空閑模式有利于減小工作電流,內(nèi)部的部分晶體振蕩器處于工作狀態(tài)。其從空閑到發(fā)送或接收模式的啟動時間也比較短。 2.2.5 時鐘芯片DS1302DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘和31個靜態(tài)RAM,簡單通過的串行接口與單片機進行通信,實時時鐘/日歷電路提供秒,分,時,日,日期

35、,月,年的信息,自動調(diào)整每月的天數(shù),閏年的天數(shù)也可以通過自動調(diào)整,采用24小時制還是12小時制可以通過AM/PM指示決定,DS1302與單片機之間能簡單采用同步串行的方式通信,僅需用到RES復(fù)位,I/O數(shù)據(jù)線,SCLK串行時鐘3個口線。對時鐘,RAM的讀/寫,可以采用單字節(jié)或者多大31個字節(jié)的字符組方式。 圖9 DS1302硬件連接圖(1).主要性能指標(biāo):l DS1302具有能計算2100年之前的秒,分,時,日,日期,月,年的能力,還有閏年調(diào)整能力。l 內(nèi)部含有31個字節(jié)靜態(tài)RAM,可提供用戶訪問。l 采用串行數(shù)據(jù)傳送方式,簡單3線接口。l 工作電壓范圍寬:2.05.5V。l 工作電流:2.0

36、V,小于300nA。l 時鐘或者RAM的數(shù)據(jù)讀寫有兩種傳送方式。l 采用8腳DIP或者SOIC封裝。l 與TTL兼容,Vcc=5V。l 可選用工業(yè)級溫度范圍:-40+85。l 具有涓流充電能力。l 采用主電源和備用電源雙電源供應(yīng)。l 備用電源可有電池?fù)]著大容量電容實現(xiàn)。(2).各引腳功能: 圖10 DS1302引腳圖 DS1302引腳說明:上圖為DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源;X1和X2是振蕩源,外接32.768kHz晶振;RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送;I/O為串行數(shù)據(jù)輸入輸出端(雙向);SCLK是串行時鐘,輸入,控制

37、數(shù)據(jù)的輸入與輸出;CE輸出信號,在讀,寫數(shù)據(jù)期間,必須為高。 2.2.6 報警器本次設(shè)計中采用了一個蜂鳴器。其與STC89C52的硬件連接方式如下: 圖11 蜂鳴器硬件連接圖蜂鳴器采用自激式蜂鳴器,只需要直流進行驅(qū)動,蜂鳴器電路采用一個PNP三極管,在發(fā)射極加一個5V電源,因為單片機的IO口驅(qū)動能力不夠讓蜂鳴器發(fā)出聲音,所以我們通過三極管放大驅(qū)動電流,單片機口輸出方波,低電平有效,蜂鳴器就會發(fā)出聲音,當(dāng)P3.7口輸出高電平時,Q1飽和導(dǎo)通,LS1獲得電工作發(fā)出鳴響,當(dāng)P3.6空輸出低電平時Q1截止,蜂鳴器失電,停止工作。 2.2.7 獨立鍵盤獨立鍵盤與STC89C52的硬件連接如下圖所示:圖1

38、2 獨立鍵盤硬件連接圖按鍵開關(guān)的抖動問題 :組成鍵盤的按鍵有觸點式和非觸點式兩種,單片機中應(yīng)用的一般是由機械觸點構(gòu)成的。在下圖中,當(dāng)開關(guān)S5未被按下時,P2.7輸入為高電平,S閉合后,P2.7輸入為低電平。由于按鍵是機械觸點,當(dāng)機械觸點斷開、閉合時,會有抖動。這種抖動對于人來說是感覺不到的,但對計算機來說,則是完全可以感應(yīng)到的,因為計算機處理的速度是在微秒級,而機械抖動的時間至少是毫秒級,對計算機而言,這已是一個“漫長”的時間了。 為使CPU能正確地讀出P2.7口的狀態(tài),對每一次按鍵只作一次響應(yīng),就必須考慮如何去除抖動,常用的去抖動的方法有兩種:硬件方法和軟件方法。單片機中常用軟件法,因此,對

39、于硬件方法我們不介紹。軟件法其實很簡單,就是在單片機獲得P2.7口為低的信息后,不是立即認(rèn)定S已被按下,而是延時10毫秒或更長一些時間后再次檢測P2.7口,如果仍為低,說明S的確按下了,這實際上是避開了按鍵按下時的抖動時間。而在檢測到按鍵釋放后(P2.7為高)再延時5-10個毫秒,消除后沿的抖動,然后再對鍵值處理。不過一般情況下,我們通常不對按鍵釋放的后沿進行處理,實踐證明,也能滿足一定的要求。當(dāng)然,實際應(yīng)用中,對按鍵的要求也是千差萬別,要根據(jù)不同的需要來編制處理程序,但以上是消除鍵抖動的原則。 第三章 軟件總體設(shè)計及各模塊部分程序詳細(xì)介紹3.1 設(shè)計總思路 在設(shè)計之前對程序的結(jié)構(gòu)進行了分析,

40、主程序調(diào)用了5個子程序,分別為:l 鍵盤掃描電路及按鍵處理程序l 溫度信號采集程序l 時間顯示程序l 液晶顯示程序l 報警控制程序l 主程序(包含無線收發(fā)子程序)同時軟件部分采用程序模塊化設(shè)計,便于各功能的的調(diào)試和實現(xiàn)。系統(tǒng)軟件程序主要由主程序、功能實現(xiàn)2個部分組成。3.2 各模塊軟件部分的設(shè)計原理 3.2.1主程序模塊 主程序模塊采用循環(huán)查詢直至斷電退出,以達(dá)到溫度全天候監(jiān)控的目的。主要流程圖如圖所示。顯示報警溫度寫入NRF控制字 發(fā)送信息顯示當(dāng)前溫度顯示日期時間 開始初始化LCD屏 清除內(nèi)存顯示歡迎界面外部中斷初始顯示預(yù)置時間 斷電超出報警 報警 結(jié)束是否否是 圖13 發(fā)送板主程序流程圖

41、開始初始化配置寄存器外部中斷初始化 顯示預(yù)置時間 初始化LCD初始化NRF905 接收信息 斷電超出預(yù)警 顯示時間日期 實現(xiàn)預(yù)警溫度 顯示當(dāng)前溫度 報 警 結(jié) 束是是否 圖14 接收板主程序流程圖 3.2.2功能模塊設(shè)計 l DS18B20溫度的采集模塊 l DS1302時間模塊 l LCD12864液晶顯示模塊 l 按鍵模塊 l 報警控制模塊 l 無線收發(fā)模塊。 (1)溫度采集模塊程序設(shè)計DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所

42、有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。 復(fù)位時序流程圖如下: 讀命令子程序流程圖如下:延時最少573us DS置0 DS置1 延時 等待DS18B20回應(yīng)DQ=0? FLAG1 置1 FLAG1 置0 延 時 DQ置1 DQ置1 返 回DQ=0? FLAG1 置1 DS置1 延 時 FLAG1 置0 返 回 延時 等待DS18B20回應(yīng)延時最少573us DS置0 DS置1 DS置1 DS置1 DS置0延時最少573us DS

43、置1 圖12 復(fù)位子程序流程圖 圖13 讀命令子程序流程圖寫命令子程序流程圖如下: 讀溫度子程序流程圖如下: FLAG1置0DQ=0?延時最少573us DQ置1 DQ置0 DQ置0 延 時 FLAG1置1 DQ置1 返 回 短延時,等待DS18B20回應(yīng)調(diào)用讀數(shù)據(jù)子程序 DS18B20初始化 跳過ROM匹配發(fā)送讀溫度命令BEH 返 回FLAG1=1? DQ置1 DS18B20復(fù)位寫入CCH命令逃過ROM發(fā)送溫度轉(zhuǎn)換命令44H延時750us以上寫入CCH命令逃過ROM發(fā)送溫度轉(zhuǎn)換命令44H延時750us以上 圖14 寫命令子程序流程圖 圖15 讀溫度子程序流程圖溫度采集函數(shù)相關(guān)程序void d

44、sreset(void) /復(fù)位和初始化命令 unsigned int i; DS=0; i=103; while(i>0)i-; DS=1; i=4; while(i>0)i-;bit tmpreadbit(void) /讀一位 unsigned int i; bit dat; DS=0;i+; /時序要求,滿足一定的延時要求 DS=1;i+;i+; dat=DS; i=8;while(i>0)i-; return (dat);unsigned char tmpread(void) /讀一個字節(jié) unsigned char i,j,dat; dat=0; for(i=1;i

45、<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 return(dat);void tmpwritebyte(unsigned char dat) /往ds18b20里面寫一個字節(jié) unsigned int i; unsigned char j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /寫1 DS=0; i+;i+; DS=1; i=8;while(i

46、>0)i-; else DS=0; /寫0 i=8;while(i>0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20開始裝換 dsreset(); delay(10); tmpwritebyte(0xcc); / address all drivers on bus tmpwritebyte(0x44); / initiates a single temperature conversion/ 溫 度 顯 示 部 分 程 序 /unsigned int tmp() /讀取溫度 float tt; unsigned char a,b;

47、dsreset(); delay(10); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp<<=8; /兩個字節(jié)組成一個int型變量 temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return temp; (2)日期模塊程序設(shè)計初始化修改時間 初始時間設(shè) 置命令按照新時間走時單片機讀取當(dāng)前時間溫度 將數(shù)據(jù)送入LCD顯示日歷時間調(diào)整命令NNY我們給DS1302配備了備用電源的,系統(tǒng)斷電并不會影響計時。但同時我們用戶也可以根據(jù)需求,或者第一次系統(tǒng)上電時,用戶可設(shè)置初始時間。在正常走時過程中,可通過按鍵進行調(diào)整時間, 單片機可以隨時從時間芯片中讀取時間數(shù)據(jù)。 圖16 時間模塊程序流程圖 時鐘函數(shù)相關(guān)程序/往DS1302寫入1Byte數(shù)據(jù)void DS1302_InputByte(unsigned char ucDa) unsigned char i;unsigned char temp;temp = ucDa; for(i=8; i>0; i-)T_IO = temp&0x01;T_CLK = 1;T_CLK = 0;temp = temp >>

溫馨提示

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

最新文檔

評論

0/150

提交評論