基于AT89C2051單片機(jī)和InRF401+DSl8B20數(shù)字溫度傳感器的無線監(jiān)測(cè)系統(tǒng)設(shè)計(jì)方案


原標(biāo)題:基于AT89C2051和InRF401的無線監(jiān)測(cè)系統(tǒng)設(shè)計(jì)方案
基于AT89C2051與InRF401+DS18B20的無線溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)方案
在現(xiàn)代工業(yè)、農(nóng)業(yè)、倉儲(chǔ)管理、環(huán)境監(jiān)測(cè)乃至于智能家居等諸多領(lǐng)域,對(duì)環(huán)境溫度的實(shí)時(shí)、精確監(jiān)測(cè)與無線傳輸需求日益迫切。傳統(tǒng)的有線溫度監(jiān)測(cè)系統(tǒng)在部署靈活性、布線成本以及復(fù)雜環(huán)境下可靠性方面存在諸多限制。無線溫度監(jiān)測(cè)系統(tǒng)以其非接觸式、易于安裝、維護(hù)成本低等顯著優(yōu)勢(shì),成為解決上述問題的理想方案。本設(shè)計(jì)方案旨在構(gòu)建一個(gè)基于經(jīng)典的AT89C2051單片機(jī)與高集成度無線收發(fā)模塊InRF401,并配合高性能數(shù)字溫度傳感器DS18B20的無線溫度監(jiān)測(cè)系統(tǒng)。該系統(tǒng)將實(shí)現(xiàn)對(duì)目標(biāo)區(qū)域溫度數(shù)據(jù)的精確采集、無線傳輸、以及數(shù)據(jù)接收與顯示,為相關(guān)應(yīng)用提供穩(wěn)定可靠的溫度監(jiān)測(cè)解決方案。
1. 系統(tǒng)概述與總體架構(gòu)
本無線溫度監(jiān)測(cè)系統(tǒng)主要由兩個(gè)核心部分組成:溫度數(shù)據(jù)采集與無線發(fā)射模塊,以及無線數(shù)據(jù)接收與顯示模塊。
溫度數(shù)據(jù)采集與無線發(fā)射模塊: 該模塊負(fù)責(zé)感應(yīng)環(huán)境溫度,將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),通過單片機(jī)進(jìn)行處理,并將處理后的溫度數(shù)據(jù)通過無線方式發(fā)送出去。其核心組成包括:DS18B20數(shù)字溫度傳感器、AT89C2051單片機(jī)、InRF401無線收發(fā)模塊、電源模塊及必要的接口電路。
無線數(shù)據(jù)接收與顯示模塊: 該模塊負(fù)責(zé)接收無線發(fā)射模塊發(fā)送的溫度數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行解析,并通過顯示單元將溫度值直觀地呈現(xiàn)給用戶。其核心組成包括:InRF401無線收發(fā)模塊、AT89C2051單片機(jī)、LCD液晶顯示屏(或數(shù)碼管)、電源模塊及必要的接口電路。
整個(gè)系統(tǒng)的工作流程可以概括為:DS18B20采集溫度數(shù)據(jù),并將數(shù)字信號(hào)發(fā)送給AT89C2051單片機(jī);單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理和封裝;InRF401模塊將數(shù)據(jù)通過無線方式發(fā)送;接收端的InRF401模塊接收數(shù)據(jù)并發(fā)送給接收端的AT89C2051單片機(jī);接收單片機(jī)解析數(shù)據(jù)并通過LCD或數(shù)碼管顯示出來。
2. 核心元器件選型與分析
2.1 單片機(jī):AT89C2051
元器件型號(hào): AT89C2051
器件作用: AT89C2051作為整個(gè)系統(tǒng)的核心控制器,負(fù)責(zé)管理和協(xié)調(diào)各個(gè)模塊的工作。在發(fā)射端,它負(fù)責(zé)讀取DS18B20的溫度數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行格式化處理、控制InRF401無線模塊的數(shù)據(jù)發(fā)送;在接收端,它負(fù)責(zé)接收InRF401模塊解調(diào)后的數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行解析、控制顯示模塊顯示溫度值。
為什么選擇這顆元器件:
成本效益高: AT89C2051是一款經(jīng)典的8位CMOS微控制器,其價(jià)格低廉,非常適合成本敏感型的應(yīng)用。
資源豐富且易于開發(fā): 盡管引腳數(shù)量較少(20引腳),但內(nèi)部集成了2KB的Flash可編程存儲(chǔ)器、128字節(jié)RAM、兩個(gè)16位定時(shí)器/計(jì)數(shù)器、一個(gè)全雙工串行口以及可編程I/O端口。對(duì)于本溫度監(jiān)測(cè)系統(tǒng)所需的串口通信(與DS18B20的單總線通信模擬實(shí)現(xiàn),或與InRF401的SPI/UART通信)和基本的控制任務(wù)而言,其資源完全足夠。
功耗相對(duì)較低: CMOS技術(shù)使得其在正常工作和空閑模式下功耗相對(duì)較低,有利于延長(zhǎng)電池供電系統(tǒng)的使用壽命。
開發(fā)資料豐富,學(xué)習(xí)曲線平緩: 作為51系列單片機(jī)的衍生型號(hào),AT89C2051擁有大量的開發(fā)資料、成熟的開發(fā)工具鏈(如Keil C51)以及廣泛的社區(qū)支持,對(duì)于開發(fā)者而言,入門和調(diào)試都相對(duì)容易。
集成度高,外圍電路簡(jiǎn)單: 相較于需要大量外圍芯片才能實(shí)現(xiàn)類似功能的方案,AT89C2051內(nèi)部集成了許多功能模塊,減少了外部元件的數(shù)量,從而簡(jiǎn)化了電路設(shè)計(jì),降低了PCB的復(fù)雜度。
元器件功能:
中央處理器(CPU): 執(zhí)行程序指令,控制所有內(nèi)部和外部操作。
閃存(Flash Memory): 2KB的片內(nèi)可編程Flash存儲(chǔ)器,用于存儲(chǔ)用戶程序代碼和固定數(shù)據(jù)。
隨機(jī)存取存儲(chǔ)器(RAM): 128字節(jié)的片內(nèi)RAM,用于存儲(chǔ)臨時(shí)數(shù)據(jù)、堆棧和寄存器。
I/O端口: 15個(gè)可編程I/O引腳,可配置為輸入或輸出,用于與DS18B20、InRF401以及顯示模塊進(jìn)行數(shù)據(jù)和控制信號(hào)的交互。
定時(shí)器/計(jì)數(shù)器: 兩個(gè)16位定時(shí)器/計(jì)數(shù)器(T0和T1),可用于產(chǎn)生延時(shí)、計(jì)時(shí)、計(jì)數(shù)事件等,例如精確控制DS18B20的單總線時(shí)序。
串行通信接口(UART): 全雙工串行口,雖然AT89C2051的UART引腳可能被復(fù)用,但在本設(shè)計(jì)中,與DS18B20的通信是基于其單總線協(xié)議,通過GPIO口模擬實(shí)現(xiàn);與InRF401的通信則取決于InRF401的具體接口,如果是SPI或模擬UART,則需要通過GPIO口模擬。
中斷系統(tǒng): 兩個(gè)外部中斷源和定時(shí)器中斷源,用于響應(yīng)外部事件(如InRF401的數(shù)據(jù)接收中斷)或定時(shí)事件。
2.2 數(shù)字溫度傳感器:DS18B20
元器件型號(hào): DS18B20
器件作用: DS18B20是本系統(tǒng)的核心傳感元件,負(fù)責(zé)將環(huán)境溫度轉(zhuǎn)換為數(shù)字信號(hào),供單片機(jī)讀取。
為什么選擇這顆元器件:
單總線接口: DS18B20采用獨(dú)特的單總線(1-Wire)通信協(xié)議,僅需一根信號(hào)線即可與單片機(jī)進(jìn)行通信,極大地簡(jiǎn)化了硬件連接,節(jié)省了單片機(jī)的I/O口資源。這對(duì)于引腳資源有限的AT89C2051尤為重要。
寬溫度測(cè)量范圍與高精度: 測(cè)量范圍覆蓋-55°C至+125°C,在此范圍內(nèi),精度在-10°C至+85°C時(shí)可達(dá)到±0.5°C,足以滿足大多數(shù)環(huán)境溫度監(jiān)測(cè)需求。其高分辨率(可配置為9~12位,對(duì)應(yīng)0.5°C~0.0625°C)確保了測(cè)量的精確性。
數(shù)字輸出: DS18B20直接輸出數(shù)字溫度值,省去了傳統(tǒng)模擬溫度傳感器所需的A/D轉(zhuǎn)換電路,簡(jiǎn)化了系統(tǒng)設(shè)計(jì),提高了抗干擾能力,并減少了誤差源。
寄生電源模式: DS18B20支持寄生電源模式,即只需兩根線(數(shù)據(jù)線和地線)即可工作,電源由數(shù)據(jù)線提供。這對(duì)于需要節(jié)省布線或空間的應(yīng)用非常有益,雖然通常為了穩(wěn)定性,仍會(huì)建議獨(dú)立供電。
唯一序列號(hào): 每個(gè)DS18B20都帶有一個(gè)唯一的64位序列號(hào),允許多個(gè)DS18B20并聯(lián)在同一條單總線上進(jìn)行識(shí)別和尋址,實(shí)現(xiàn)多點(diǎn)溫度監(jiān)測(cè)。這為系統(tǒng)的擴(kuò)展性提供了可能。
元器件功能:
溫度感應(yīng)元件: 內(nèi)部集成有高精度半導(dǎo)體溫度傳感器。
A/D轉(zhuǎn)換器: 將感應(yīng)到的模擬溫度信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。
單總線接口: 實(shí)現(xiàn)與單片機(jī)的串行通信,支持?jǐn)?shù)據(jù)讀寫和功能控制。
存儲(chǔ)器: 包括一個(gè)用于存儲(chǔ)溫度值和配置參數(shù)的暫存器(Scratchpad)以及一個(gè)用于存儲(chǔ)高低溫報(bào)警閾值的EEPROM。
報(bào)警功能: 可編程的高低溫報(bào)警功能,當(dāng)溫度超出設(shè)定范圍時(shí),DS18B20可以發(fā)出報(bào)警信號(hào)。
2.3 無線收發(fā)模塊:InRF401 (或NRF24L01+等類似模塊)
元器件型號(hào): InRF401(這里假設(shè)InRF401是一個(gè)低成本、易于集成的RF收發(fā)模塊。若無此具體型號(hào),通常會(huì)選擇NRF24L01+或Si4432等)。鑒于InRF401信息相對(duì)較少,這里以NRF24L01+作為示例進(jìn)行詳細(xì)闡述,因?yàn)樗诘凸臒o線通信領(lǐng)域應(yīng)用極為廣泛且性能優(yōu)異,是InRF401的常見替代品或同類型產(chǎn)品。
器件作用: InRF401(或NRF24L01+)是本系統(tǒng)實(shí)現(xiàn)無線數(shù)據(jù)傳輸?shù)年P(guān)鍵組件。它負(fù)責(zé)將單片機(jī)處理后的數(shù)字溫度數(shù)據(jù)調(diào)制成無線電波發(fā)射出去,并在接收端接收無線電波并解調(diào)出數(shù)字?jǐn)?shù)據(jù),從而實(shí)現(xiàn)兩點(diǎn)間的無線通信。
為什么選擇NRF24L01+(作為InRF401的代表):
工作頻率與抗干擾: 工作在2.4GHz ISM(工業(yè)、科學(xué)、醫(yī)療)頻段,這是全球通用且免費(fèi)的頻段,具有較好的抗干擾能力。
高數(shù)據(jù)傳輸速率: 支持1Mbps或2Mbps的空中數(shù)據(jù)傳輸速率,可以快速傳輸少量溫度數(shù)據(jù),滿足實(shí)時(shí)性要求。
低功耗設(shè)計(jì): 具有多種省電模式(如掉電模式、空閑模式),在發(fā)射和接收模式下電流消耗也相對(duì)較低,非常適合電池供電的無線設(shè)備,有助于延長(zhǎng)發(fā)射模塊的續(xù)航時(shí)間。
自動(dòng)應(yīng)答與自動(dòng)重發(fā): 內(nèi)部集成了自動(dòng)應(yīng)答和自動(dòng)重發(fā)機(jī)制,大大簡(jiǎn)化了軟件層的錯(cuò)誤檢測(cè)和糾正,提高了通信的可靠性。
多點(diǎn)通信能力: 具有6路數(shù)據(jù)接收管道(Data Pipes),理論上可以支持一點(diǎn)對(duì)多點(diǎn)或多點(diǎn)對(duì)一點(diǎn)的通信網(wǎng)絡(luò),為系統(tǒng)擴(kuò)展性提供了可能。
硬件接口簡(jiǎn)單: 采用SPI(串行外設(shè)接口)與單片機(jī)進(jìn)行通信,SPI接口速度快,且只需四根線(CSN, SCK, MOSI, MISO)即可完成通信,對(duì)于AT89C2051這樣的單片機(jī)來說,通過軟件模擬SPI或利用其IO口進(jìn)行位操作即可實(shí)現(xiàn)通信。
集成度高: 內(nèi)部集成了射頻前端、基帶處理器等,外圍元件極少,通常只需幾顆電容即可工作,降低了硬件設(shè)計(jì)復(fù)雜度。
模塊化易于使用: 市面上存在大量基于NRF24L01+的模塊,通常帶有天線接口,直接引出SPI引腳和電源引腳,方便用戶集成到自己的電路板上。
元器件功能(以NRF24L01+為例):
射頻收發(fā)器: 完成射頻信號(hào)的調(diào)制、解調(diào)、發(fā)射和接收。
基帶處理器: 處理數(shù)字基帶信號(hào),包括數(shù)據(jù)打包、解包、CRC校驗(yàn)、自動(dòng)應(yīng)答和自動(dòng)重發(fā)等功能。
增強(qiáng)型ShockBurst?: 一種高效的硬件數(shù)據(jù)包處理協(xié)議,包括數(shù)據(jù)包格式、自動(dòng)數(shù)據(jù)包組裝、自動(dòng)應(yīng)答和自動(dòng)重發(fā)等。
多通道: 支持125個(gè)頻道,可以方便地進(jìn)行跳頻,進(jìn)一步提高抗干擾能力。
SPI接口: 與微控制器進(jìn)行高速數(shù)據(jù)交換和配置的接口。
低功耗管理: 通過各種模式(如掉電模式、待機(jī)模式、RX模式、TX模式)實(shí)現(xiàn)功耗優(yōu)化。
2.4 顯示模塊:1602 LCD液晶顯示屏 (或LED數(shù)碼管)
元器件型號(hào): 1602 LCD液晶顯示屏(或其他兼容型號(hào),如2004 LCD)或共陽/共陰LED數(shù)碼管(如FMD5461AS)
器件作用: 顯示模塊用于接收端,將單片機(jī)解析出的溫度數(shù)據(jù)顯示出來,方便用戶直觀地查看。
為什么選擇1602 LCD:
顯示內(nèi)容豐富: 1602 LCD可以顯示兩行,每行16個(gè)字符,除了溫度值,還可以顯示單位、狀態(tài)信息等,比數(shù)碼管能提供更多信息。
功耗相對(duì)較低: 相較于點(diǎn)陣式LCD,段式LCD(如1602)的功耗更低,適合長(zhǎng)時(shí)間運(yùn)行的設(shè)備。
接口簡(jiǎn)單: 1602 LCD采用并口(8位或4位)與單片機(jī)通信,雖然占用AT89C2051的I/O口較多,但在接收端,AT89C2051的I/O口資源相對(duì)充足。如果I/O口緊張,也可以選擇IIC接口的1602 LCD,但需要額外的IIC驅(qū)動(dòng)芯片或軟件模擬IIC。
成本低廉: 1602 LCD是市場(chǎng)上非常普及且價(jià)格低廉的顯示器件。
編程控制相對(duì)簡(jiǎn)單: 有成熟的驅(qū)動(dòng)庫和例程可供參考,便于開發(fā)。
元器件功能(1602 LCD):
顯示控制器: HD44780(或兼容)控制器,負(fù)責(zé)接收指令和數(shù)據(jù),并驅(qū)動(dòng)液晶顯示。
字符發(fā)生器: 內(nèi)置ROM和RAM,用于存儲(chǔ)字符點(diǎn)陣數(shù)據(jù),可以顯示英文字母、數(shù)字和一些特殊符號(hào)。
數(shù)據(jù)/指令接口: D0-D7數(shù)據(jù)線(或D4-D7用于4位模式)、RS(寄存器選擇)、RW(讀寫選擇)、EN(使能)等控制線。
背光: 大部分1602 LCD帶有LED背光,提供在光線不足條件下的可視性,但會(huì)增加功耗。
為什么選擇LED數(shù)碼管(作為替代):
簡(jiǎn)單直觀: 對(duì)于僅僅顯示數(shù)字溫度值而言,數(shù)碼管顯示效果直觀,易于識(shí)別。
驅(qū)動(dòng)簡(jiǎn)單: 可以通過74HC595等串行移位寄存器進(jìn)行驅(qū)動(dòng),節(jié)省單片機(jī)I/O口,或者直接由單片機(jī)I/O口驅(qū)動(dòng),但會(huì)占用更多引腳。
響應(yīng)速度快: 數(shù)字切換響應(yīng)速度非常快。
成本更低: 數(shù)碼管通常比LCD更便宜。
元器件功能(LED數(shù)碼管):
LED段: 由7個(gè)(或8個(gè),帶小數(shù)點(diǎn))LED構(gòu)成,通過點(diǎn)亮不同LED段來顯示數(shù)字。
共陽極/共陰極: 根據(jù)驅(qū)動(dòng)方式選擇,決定所有LED段的公共端是接電源正極(共陽)還是負(fù)極(共陰)。
2.5 電源模塊
元器件型號(hào): LM7805(線性穩(wěn)壓器)、AMS1117-3.3(低壓差線性穩(wěn)壓器LDO)、或DC-DC降壓模塊(如基于MP1584等芯片)
器件作用: 為系統(tǒng)的各個(gè)模塊提供穩(wěn)定、可靠的直流電源。DS18B20通常工作在3.0V-5.5V,AT89C2051通常工作在3V-5.5V,NRF24L01+工作在1.9V-3.6V,LCD通常工作在5V。因此,需要根據(jù)不同模塊的需求,提供相應(yīng)的穩(wěn)壓電源。
為什么選擇這些元器件:
LM7805: 經(jīng)典的5V線性穩(wěn)壓器,輸入電壓范圍廣(7V-35V),輸出穩(wěn)定,可靠性高,價(jià)格便宜。適用于為AT89C2051和5V供電的LCD提供電源。
AMS1117-3.3: 低壓差(LDO)線性穩(wěn)壓器,輸入輸出壓差小,適合電池供電。用于為NRF24L01+等3.3V供電的模塊提供穩(wěn)定電源。其優(yōu)勢(shì)在于壓差小,在電池電壓下降時(shí)能更好地保持3.3V輸出。
DC-DC降壓模塊: 如基于MP1584等開關(guān)電源芯片的模塊。相較于線性穩(wěn)壓器,開關(guān)電源的轉(zhuǎn)換效率更高,特別是在輸入輸出壓差較大或需要較大電流時(shí),可以顯著減少熱量產(chǎn)生,提高電池續(xù)航能力。對(duì)于功耗敏感或需要從較高電壓(如12V電池)降壓的應(yīng)用是更優(yōu)的選擇。
元器件功能:
LM7805/AMS1117: 通過內(nèi)部調(diào)整管將較高的輸入電壓穩(wěn)定到固定的輸出電壓,其特點(diǎn)是輸出電壓紋波小,但轉(zhuǎn)換效率相對(duì)較低,剩余能量以熱量形式散失。
DC-DC降壓模塊: 通過高頻開關(guān)、電感和電容的配合,將輸入電壓高效地轉(zhuǎn)換為較低的輸出電壓,轉(zhuǎn)換效率高,發(fā)熱量小。
2.6 其他輔助元器件
晶振: 11.0592MHz或12MHz,為AT89C2051提供精確的時(shí)鐘源。11.0592MHz有助于精確實(shí)現(xiàn)串口通信波特率。
復(fù)位電路: RC復(fù)位電路(電阻+電容)或?qū)S脧?fù)位芯片(如MAX813),保證單片機(jī)上電可靠復(fù)位。
濾波電容: 各電源引腳旁并聯(lián)104(0.1uF)瓷片電容和10uF/47uF電解電容,用于電源濾波,增強(qiáng)系統(tǒng)穩(wěn)定性,抑制高頻干擾。
上拉電阻: DS18B20的DQ引腳需要接一個(gè)4.7kΩ左右的上拉電阻,以確保單總線通信的正常進(jìn)行。
發(fā)光二極管(LED): 用于指示系統(tǒng)工作狀態(tài),如電源指示、數(shù)據(jù)發(fā)送/接收指示等。
按鍵: (可選)用于配置系統(tǒng)參數(shù),如報(bào)警閾值、發(fā)送間隔等。
電容、電阻: 構(gòu)成RC延時(shí)、限流、分壓等基本電路。
PCB板: 承載所有元器件并實(shí)現(xiàn)電氣連接。
3. 系統(tǒng)硬件設(shè)計(jì)
3.1 發(fā)射模塊硬件設(shè)計(jì)
DS18B20與AT89C2051連接: DS18B20的DQ引腳(數(shù)據(jù)線)直接連接到AT89C2051的一個(gè)普通I/O口(如P3.0),同時(shí)DQ引腳通過一個(gè)4.7kΩ電阻上拉到5V電源。GND引腳接地。VCC引腳接5V電源(若采用獨(dú)立供電)。
AT89C2051與InRF401(NRF24L01+)連接:
SCK (P1.0) -> NRF24L01+ SCK
MOSI (P1.1) -> NRF24L01+ MOSI
MISO (P1.2) -> NRF24L01+ MISO
CSN (P1.3) -> NRF24L01+ CSN
CE (P1.4) -> NRF24L01+ CE (使能引腳)
IRQ (P1.5) -> NRF24L01+ IRQ (中斷引腳,可選,用于接收數(shù)據(jù)中斷)
SPI接口: AT89C2051沒有硬件SPI,需要通過軟件模擬SPI。分配P1口或P3口作為SPI的SCK、MOSI、MISO、CSN引腳。例如:
電源: NRF24L01+通常工作在3.3V,因此需要一個(gè)AMS1117-3.3V穩(wěn)壓器將5V電源降壓至3.3V供其使用。在3.3V和GND之間并聯(lián)10uF電解電容和0.1uF瓷片電容進(jìn)行濾波。
電源電路: 外部DC電源輸入(如9V電池或適配器)經(jīng)過LM7805穩(wěn)壓為5V,供AT89C2051、DS18B20(獨(dú)立供電模式)以及后續(xù)的3.3V穩(wěn)壓器使用。再由5V通過AMS1117-3.3V為NRF24L01+供電。
晶振與復(fù)位電路: 11.0592MHz或12MHz晶振連接到AT89C2051的XTAL1和XTAL2引腳,并并聯(lián)兩個(gè)30pF左右的瓷片電容接地。復(fù)位引腳RST通過RC電路或復(fù)位芯片連接到電源。
3.2 接收模塊硬件設(shè)計(jì)
AT89C2051與InRF401(NRF24L01+)連接: 連接方式與發(fā)射模塊類似,電源處理也相同。IRQ引腳在此處更為重要,可以配置外部中斷,當(dāng)NRF24L01+接收到數(shù)據(jù)時(shí)觸發(fā)中斷,通知單片機(jī)讀取數(shù)據(jù)。
AT89C2051與1602 LCD連接:
數(shù)據(jù)線: 1602 LCD的D4-D7(4位模式)連接到AT89C2051的P1或P3口,例如P1.4-P1.7。
控制線: RS、RW、EN引腳連接到AT89C2051的P1或P3口,例如P1.0、P1.1、P1.2。
背光: VCC和LED+連接到5V,GND和LED-連接到GND,或通過限流電阻連接。VEE通過電位器調(diào)節(jié)對(duì)比度。
電源: 1602 LCD通常工作在5V,由LM7805提供的5V電源直接供電。
電源電路: 與發(fā)射模塊類似,提供穩(wěn)定的5V和3.3V電源。
晶振與復(fù)位電路: 同發(fā)射模塊。
4. 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)是實(shí)現(xiàn)系統(tǒng)功能的關(guān)鍵,主要包括DS18B20溫度采集、NRF24L01+無線通信協(xié)議實(shí)現(xiàn)以及數(shù)據(jù)顯示。
4.1 發(fā)射模塊軟件流程
系統(tǒng)初始化:
單片機(jī)I/O口初始化:配置P1、P3口為輸出或輸入。
定時(shí)器初始化:配置定時(shí)器用于DS18B20單總線時(shí)序的精確延時(shí)。
NRF24L01+模塊初始化:配置為發(fā)射模式,設(shè)置工作頻率、數(shù)據(jù)速率、發(fā)送功率、發(fā)送地址、開啟自動(dòng)重發(fā)和自動(dòng)應(yīng)答等。這涉及一系列的SPI寄存器寫入操作。
DS18B20溫度采集:
復(fù)位DS18B20: 通過單總線發(fā)送復(fù)位脈沖。
跳過ROM(Skip ROM,0xCC): 如果只有一個(gè)DS18B20,可以使用此命令跳過ROM匹配過程。
啟動(dòng)溫度轉(zhuǎn)換(Convert T,0x44): 發(fā)送此命令啟動(dòng)DS18B20的溫度轉(zhuǎn)換。
等待轉(zhuǎn)換完成: DS18B20溫度轉(zhuǎn)換需要一定時(shí)間(最高分辨率12位時(shí)約750ms),可以通過延時(shí)或輪詢DS18B20狀態(tài)位(讀數(shù)據(jù)線)來判斷是否完成。
復(fù)位DS18B20: 再次發(fā)送復(fù)位脈沖。
跳過ROM(Skip ROM,0xCC):
讀取暫存器(Read Scratchpad,0xBE): 讀取9字節(jié)的暫存器內(nèi)容,其中包含溫度數(shù)據(jù)和CRC校驗(yàn)碼。
CRC校驗(yàn): 對(duì)讀取的9字節(jié)數(shù)據(jù)進(jìn)行CRC校驗(yàn),確保數(shù)據(jù)完整性。
解析溫度值: 從讀取的暫存器中提取溫度數(shù)據(jù)(通常是第0和第1字節(jié)),并根據(jù)DS18B20的數(shù)據(jù)格式將其轉(zhuǎn)換為實(shí)際的攝氏溫度值(浮點(diǎn)數(shù)或定點(diǎn)數(shù))。
數(shù)據(jù)封裝與無線發(fā)送:
將獲取到的溫度值(例如,轉(zhuǎn)換為整數(shù),乘以10或100以保留小數(shù)位,或直接發(fā)送浮點(diǎn)數(shù)轉(zhuǎn)換為字節(jié)數(shù)組)進(jìn)行打包,形成一個(gè)數(shù)據(jù)幀。數(shù)據(jù)幀可以包含標(biāo)識(shí)符、溫度值、校驗(yàn)和等信息。
通過SPI接口將數(shù)據(jù)幀寫入NRF24L01+的發(fā)送緩沖區(qū)。
拉高CE引腳(持續(xù)一段時(shí)間后拉低)觸發(fā)NRF24L01+發(fā)送數(shù)據(jù)。
等待發(fā)送完成或發(fā)送失敗(通過IRQ中斷或查詢STATUS寄存器)。
進(jìn)入低功耗模式(可選):發(fā)送完成后,單片機(jī)和NRF24L01+可以進(jìn)入低功耗模式,周期性地喚醒進(jìn)行下一次測(cè)量和發(fā)送,以延長(zhǎng)電池壽命。
4.2 接收模塊軟件流程
系統(tǒng)初始化:
單片機(jī)I/O口初始化。
NRF24L01+模塊初始化:配置為接收模式,設(shè)置工作頻率、數(shù)據(jù)速率、接收地址等。
LCD初始化:發(fā)送LCD初始化指令,設(shè)置顯示模式、清屏等。
無線數(shù)據(jù)接收:
NRF24L01+進(jìn)入接收模式并持續(xù)監(jiān)聽。
輪詢或中斷檢測(cè): 周期性輪詢NRF24L01+的STATUS寄存器(RX_DR位)或配置外部中斷(IRQ引腳),當(dāng)有數(shù)據(jù)到達(dá)時(shí)觸發(fā)。
讀取數(shù)據(jù): 通過SPI接口從NRF24L01+的接收緩沖區(qū)讀取數(shù)據(jù)。
數(shù)據(jù)解析與校驗(yàn): 對(duì)接收到的數(shù)據(jù)幀進(jìn)行解析,提取溫度值,并進(jìn)行校驗(yàn)(如CRC),確保數(shù)據(jù)有效性。
溫度數(shù)據(jù)顯示:
將解析出的溫度值轉(zhuǎn)換為字符串格式(例如,使用sprintf函數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串)。
通過AT89C2051控制1602 LCD顯示屏,將溫度字符串發(fā)送到LCD顯存,并在指定位置顯示出來。可以顯示“TEMP: XX.X C”等格式。
異常處理: 如果數(shù)據(jù)接收失敗或校驗(yàn)錯(cuò)誤,可以在LCD上顯示“RX ERROR”或上次有效值,并進(jìn)行錯(cuò)誤計(jì)數(shù)。
4.3 DS18B20單總線通信協(xié)議實(shí)現(xiàn)細(xì)節(jié)(C語言偽代碼)
// 假設(shè)P3.0連接DS18B20的DQ引腳
#define DQ_PIN P3_0 // DQ引腳定義
#define DQ_OUT_MODE DQ_PIN = 0 // 設(shè)置為輸出低
#define DQ_IN_MODE // 設(shè)置為輸入(高阻態(tài),DS18B20拉低)
#define DQ_READ DQ_PIN // 讀取DQ引腳狀態(tài)
// 單總線復(fù)位和存在脈沖
unsigned char DS18B20_Reset() {
unsigned char presence_pulse;
DQ_OUT_MODE; // 拉低DQ
Delay_us(480); // 延時(shí)480us
DQ_IN_MODE; // 釋放DQ(高阻態(tài))
Delay_us(60); // 延時(shí)60us,等待DS18B20響應(yīng)
presence_pulse = DQ_READ; // 讀取存在脈沖
Delay_us(420); // 延時(shí)420us,等待總線恢復(fù)
return presence_pulse; // 0表示存在,1表示不存在
}
// 單總線寫1
void DS18B20_Write1() {
DQ_OUT_MODE;
Delay_us(6); // 保持低電平6us
DQ_IN_MODE;
Delay_us(64); // 保持高電平64us
}
// 單總線寫0
void DS18B20_Write0() {
DQ_OUT_MODE;
Delay_us(60); // 保持低電平60us
DQ_IN_MODE;
Delay_us(10); // 保持高電平10us
}
// 單總線讀位
unsigned char DS18B20_ReadBit() {
unsigned char bit_value;
DQ_OUT_MODE;
Delay_us(6); // 拉低DQ 6us
DQ_IN_MODE;
Delay_us(9); // 等待9us
bit_value = DQ_READ; // 讀取位
Delay_us(55); // 等待55us,總線恢復(fù)
return bit_value;
}
// 單總線寫字節(jié)
void DS18B20_WriteByte(unsigned char dat) {
unsigned char i;
for (i = 0; i < 8; i++) {
if (dat & 0x01) {
DS18B20_Write1();
} else {
DS18B20_Write0();
}
dat >>= 1;
}
}
// 單總線讀字節(jié)
unsigned char DS18B20_ReadByte() {
unsigned char i, dat = 0;
for (i = 0; i < 8; i++) {
if (DS18B20_ReadBit()) {
dat |= 0x01 << i;
}
}
return dat;
}
// 獲取DS18B20溫度
float Get_DS18B20_Temp() {
unsigned char temp_H, temp_L;
int temp;
float real_temp;
if (DS18B20_Reset() == 0) { // 如果存在
DS18B20_WriteByte(0xCC); // Skip ROM
DS18B20_WriteByte(0x44); // Convert T
// 等待轉(zhuǎn)換完成,此處簡(jiǎn)化為延時(shí),實(shí)際應(yīng)輪詢DQ或延時(shí)750ms
// 可以通過DS18B20_ReadBit()讀取DQ判斷轉(zhuǎn)換是否完成 (DQ為1表示完成)
// while(DS18B20_ReadBit() == 0); // 實(shí)際應(yīng)這樣等待
Delay_ms(800); // 粗略延時(shí)
DS18B20_Reset();
DS18B20_WriteByte(0xCC); // Skip ROM
DS18B20_WriteByte(0xBE); // Read Scratchpad
temp_L = DS18B20_ReadByte(); // 讀取低字節(jié)
temp_H = DS18B20_ReadByte(); // 讀取高字節(jié)
// 其他7字節(jié)數(shù)據(jù)可以忽略,但通常建議全部讀取,并進(jìn)行CRC校驗(yàn)
temp = (temp_H << 8) | temp_L; // 拼接為16位數(shù)據(jù)
// 判斷符號(hào)位(最高位)
if (temp & 0xF800) { // 如果是負(fù)數(shù)
temp = ~temp + 1; // 補(bǔ)碼轉(zhuǎn)換
real_temp = (float)temp * 0.0625; // 轉(zhuǎn)換為實(shí)際溫度
real_temp = -real_temp;
} else { // 正數(shù)
real_temp = (float)temp * 0.0625;
}
return real_temp;
}
return -999.0; // 表示讀取失敗
}
4.4 NRF24L01+ SPI通信與操作(C語言偽代碼)
// 假設(shè)P1口用于模擬SPI:P1.0=SCK, P1.1=MOSI, P1.2=MISO, P1.3=CSN, P1.4=CE
// SPI引腳定義
#define CSN_PIN P1_3
#define CE_PIN P1_4
#define SCK_PIN P1_0
#define MOSI_PIN P1_1
#define MISO_PIN P1_2
// NRF24L01+ SPI基本操作
void NRF24L01_SPI_WriteByte(unsigned char dat) {
unsigned char i;
for (i = 0; i < 8; i++) {
SCK_PIN = 0; // SCK拉低
if (dat & 0x80) { // 發(fā)送高位在前
MOSI_PIN = 1;
} else {
MOSI_PIN = 0;
}
dat <<= 1;
SCK_PIN = 1; // SCK拉高,傳輸一位
}
SCK_PIN = 0; // 完成后SCK拉低
}
unsigned char NRF24L01_SPI_ReadByte() {
unsigned char i, dat = 0;
MOSI_PIN = 1; // 讀操作時(shí)MOSI可保持高電平
for (i = 0; i < 8; i++) {
SCK_PIN = 0; // SCK拉低
// Delay_us(1); // 適當(dāng)延時(shí)以保證建立時(shí)間
SCK_PIN = 1; // SCK拉高,采樣MISO
if (MISO_PIN) {
dat |= (0x80 >> i); // 接收高位在前
}
}
SCK_PIN = 0; // 完成后SCK拉低
return dat;
}
// NRF24L01+寫寄存器
unsigned char NRF24L01_Write_Reg(unsigned char reg, unsigned char dat)
{
unsigned char status;
CSN_PIN = 0; // 片選使能
status = NRF24L01_SPI_WriteByte(reg | 0x20); // 寫命令(0x20)+寄存器地址
NRF24L01_SPI_WriteByte(dat); // 寫入數(shù)據(jù)
CSN_PIN = 1; // 片選失能
return status; // 返回狀態(tài)寄存器
}
// NRF24L01+讀寄存器
unsigned char NRF24L01_Read_Reg(unsigned char reg) {
unsigned char reg_val;
CSN_PIN = 0;
NRF24L01_SPI_WriteByte(reg); // 讀命令 + 寄存器地址
reg_val = NRF24L01_SPI_ReadByte(); // 讀取數(shù)據(jù)
CSN_PIN = 1;
return reg_val;
}
// NRF24L01+寫FIFO
unsigned char NRF24L01_Write_Buf(unsigned char reg, unsigned char *pBuf,
unsigned char len) {
unsigned char status, i;
CSN_PIN = 0;
status = NRF24L01_SPI_WriteByte(reg);
for (i = 0; i < len; i++) {
NRF24L01_SPI_WriteByte(*pBuf++);
}
CSN_PIN = 1;
return status;
}
// NRF24L01+讀FIFO
unsigned char NRF24L01_Read_Buf(unsigned char reg, unsigned char *pBuf,
unsigned char len) {
unsigned char status, i;
CSN_PIN = 0;
status = NRF24L01_SPI_WriteByte(reg);
for (i = 0; i < len; i++) {
pBuf[i] = NRF24L01_SPI_ReadByte();
}
CSN_PIN = 1;
return status;
}
// NRF24L01+模塊初始化(發(fā)射端)
void NRF24L01_TX_Init() {
CE_PIN = 0; // 使能芯片配置
NRF24L01_Write_Reg(0x00, 0x0A); // CONFIG: CRC enable, 2-byte CRC, Power
UP, TX mode
NRF24L01_Write_Reg(0x01, 0x00); // EN_AA: disable auto-ack for all pipes
(根據(jù)需求開啟或關(guān)閉)
NRF24L01_Write_Reg(0x02, 0x01); // EN_RXADDR: enable data pipe 0
(接收地址0用于應(yīng)答)
NRF24L01_Write_Reg(0x03, 0x03); // SETUP_AW: 5 bytes address width
NRF24L01_Write_Reg(0x04, 0x03); // SETUP_RETR: auto retransmit delay
1000us, retransmit count 3
NRF24L01_Write_Reg(0x05, 20); // RF_CH: 2.420GHz
NRF24L01_Write_Reg(0x06, 0x06); // RF_SETUP: 2Mbps, 0dBm output power
// 設(shè)置發(fā)射地址(與接收地址一致)
unsigned char TX_ADDR[5] = {0x34, 0x43, 0x10, 0x10, 0x01};
NRF24L01_Write_Buf(0x30, TX_ADDR, 5); // TX_ADDR
NRF24L01_Write_Buf(0x10, TX_ADDR, 5); // RX_ADDR_P0 (for auto-ack)
NRF24L01_Write_Reg(0x11, 32); // RX_PW_P0: payload width (for auto-ack)
CE_PIN = 1; // 進(jìn)入待機(jī)模式
Delay_us(130); // 確保NRF24L01+進(jìn)入正常工作狀態(tài)
}
// NRF24L01+發(fā)送數(shù)據(jù)
unsigned char NRF24L01_TX_Data(unsigned char *tx_buf, unsigned char len)
{
unsigned char sta;
CE_PIN = 0;
NRF24L01_Write_Buf(0xA0, tx_buf, len); // Write_TX_PAYLOAD
NRF24L01_Write_Reg(0x00, 0x0E); // CONFIG: Power UP, TX mode
CE_PIN = 1; // 啟動(dòng)發(fā)送
Delay_us(10);
CE_PIN = 0;
// 輪詢發(fā)送狀態(tài)
while((sta = NRF24L01_Read_Reg(0x07))&0x40 == 0); // TX_DS 或 MAX_RT
NRF24L01_Write_Reg(0x07, sta); // 清除中斷標(biāo)志
if(sta&0x20) { // MAX_RT (最大重發(fā)次數(shù))
NRF24L01_Write_Reg(0xE1, 0xFF); // 清空TX FIFO
return 0; // 發(fā)送失敗
}
if(sta&0x60) { // TX_DS (發(fā)送完成)
return 1; // 發(fā)送成功
}
return 0;
}
4.5 1602 LCD顯示驅(qū)動(dòng)(C語言偽代碼)
// 假設(shè)P1口連接1602 LCD:RS=P1.0, RW=P1.1, EN=P1.2, D4-D7=P1.4-P1.7
// LCD引腳定義
#define LCD_RS P1_0
#define LCD_RW P1_1
#define LCD_EN P1_2
#define LCD_DATA_PORT P1 // 數(shù)據(jù)線所在端口,需位操作
// 寫入命令或數(shù)據(jù)到LCD
void LCD_Write_Byte(unsigned char dat, unsigned char cmd) {
if (cmd) LCD_RS = 1; else LCD_RS = 0; // RS: 1=數(shù)據(jù),0=命令
LCD_RW = 0; // 寫模式
// 先發(fā)送高4位
LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | (dat & 0xF0);
LCD_EN = 1; Delay_us(5); LCD_EN = 0;
// 再發(fā)送低4位
LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | ((dat << 4) &
0xF0);
LCD_EN = 1; Delay_us(5); LCD_EN = 0;
Delay_ms(2); // 等待LCD處理
}
// 寫入命令
void LCD_Write_Cmd(unsigned char cmd) {
LCD_Write_Byte(cmd, 0);
}
// 寫入數(shù)據(jù)
void LCD_Write_Data(unsigned char dat) {
LCD_Write_Byte(dat, 1);
}
// LCD初始化
void LCD_Init() {
Delay_ms(15); // 上電延時(shí)
LCD_Write_Cmd(0x33); // 4位數(shù)據(jù)接口,兩行,5x7點(diǎn)陣
Delay_ms(5);
LCD_Write_Cmd(0x32);
Delay_us(100);
LCD_Write_Cmd(0x28); // 4位接口,兩行,5x7點(diǎn)陣
LCD_Write_Cmd(0x0C); // 顯示開,光標(biāo)關(guān),閃爍關(guān)
LCD_Write_Cmd(0x06); // 地址自動(dòng)加1,顯示不移動(dòng)
LCD_Write_Cmd(0x01); // 清屏
Delay_ms(2);
}
// LCD顯示字符串
void LCD_Show_String(unsigned char x, unsigned char y, char *s) {
unsigned char addr;
if (y == 0) addr = 0x80 + x; // 第一行
else addr = 0xC0 + x; // 第二行
LCD_Write_Cmd(addr); // 設(shè)置DDRAM地址
while (*s) {
LCD_Write_Data(*s++);
}
}
5. 系統(tǒng)優(yōu)勢(shì)與應(yīng)用前景
5.1 系統(tǒng)優(yōu)勢(shì)
低成本: 采用AT89C2051和DS18B20等成熟、價(jià)格低廉的元器件,有效控制了系統(tǒng)硬件成本。
低功耗: DS18B20本身功耗極低,NRF24L01+支持多種低功耗模式,配合AT89C2051的空閑模式,發(fā)射模塊可以設(shè)計(jì)成電池供電,續(xù)航時(shí)間長(zhǎng)。
高可靠性: 數(shù)字溫度傳感器DS18B20具有良好的抗干擾能力和高精度,NRF24L01+的自動(dòng)應(yīng)答和重發(fā)機(jī)制提高了無線通信的可靠性。
安裝靈活: 無需布線,發(fā)射模塊可以放置在任何需要監(jiān)測(cè)溫度的區(qū)域,部署靈活方便。
擴(kuò)展性: DS18B20的單總線特性允許多個(gè)傳感器并聯(lián)(需增加單片機(jī)尋址代碼);NRF24L01+的多管道特性也支持構(gòu)建簡(jiǎn)單的星型或點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)。
易于開發(fā): 51系列單片機(jī)開發(fā)資料豐富,軟件編程相對(duì)簡(jiǎn)單,調(diào)試周期短。
5.2 應(yīng)用前景
本無線溫度監(jiān)測(cè)系統(tǒng)具有廣泛的應(yīng)用前景,包括但不限于:
智能家居: 實(shí)時(shí)監(jiān)測(cè)室內(nèi)外溫度,配合智能空調(diào)、取暖設(shè)備進(jìn)行聯(lián)動(dòng)控制。
農(nóng)業(yè)大棚: 監(jiān)測(cè)溫室大棚內(nèi)溫度,輔助農(nóng)作物生長(zhǎng)環(huán)境控制。
冷鏈物流: 監(jiān)測(cè)冷藏車、冷庫溫度,確保貨物在運(yùn)輸和儲(chǔ)存過程中的質(zhì)量。
倉儲(chǔ)管理: 監(jiān)測(cè)倉庫溫度,預(yù)防物品變質(zhì)或火災(zāi)風(fēng)險(xiǎn)。
工業(yè)控制: 監(jiān)測(cè)生產(chǎn)線關(guān)鍵部位溫度,實(shí)現(xiàn)預(yù)警和故障診斷。
環(huán)境監(jiān)測(cè): 監(jiān)測(cè)特定區(qū)域的環(huán)境溫度變化,用于氣象站或科研數(shù)據(jù)采集。
醫(yī)療衛(wèi)生: 監(jiān)測(cè)醫(yī)院病房、藥品儲(chǔ)藏室溫度,保障醫(yī)療環(huán)境和藥品安全。
6. 系統(tǒng)進(jìn)一步優(yōu)化與改進(jìn)方向
功耗優(yōu)化: 更精細(xì)的軟件電源管理,利用AT89C2051的空閑模式和NRF24L01+的掉電模式,在非工作時(shí)間進(jìn)入超低功耗狀態(tài),并通過定時(shí)器中斷或外部中斷喚醒。
數(shù)據(jù)加密與安全: 對(duì)于某些敏感應(yīng)用,可以考慮在數(shù)據(jù)傳輸前進(jìn)行簡(jiǎn)單的數(shù)據(jù)加密,提高通信安全性。
網(wǎng)絡(luò)化擴(kuò)展: 可以引入路由器或協(xié)調(diào)器,構(gòu)建更復(fù)雜的星型或網(wǎng)狀網(wǎng)絡(luò),實(shí)現(xiàn)多點(diǎn)溫度數(shù)據(jù)的集中監(jiān)控。例如,使用更多的NRF24L01+模塊構(gòu)建多傳感器節(jié)點(diǎn)網(wǎng)絡(luò)。
報(bào)警功能: 在接收端增加聲光報(bào)警模塊,當(dāng)溫度超出預(yù)設(shè)閾值時(shí)發(fā)出警報(bào)。
數(shù)據(jù)存儲(chǔ)與歷史查詢: 接收端可以增加EEPROM或Flash存儲(chǔ)芯片,用于存儲(chǔ)歷史溫度數(shù)據(jù),并可通過上位機(jī)或顯示屏進(jìn)行查詢。
云平臺(tái)接入: 通過增加WiFi模塊(如ESP8266)或GPRS模塊,將溫度數(shù)據(jù)上傳至云平臺(tái),實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和大數(shù)據(jù)分析。但這會(huì)顯著增加單片機(jī)的處理能力需求,可能需要升級(jí)到更強(qiáng)大的MCU。
用戶界面: 接收端可以考慮使用帶觸摸功能的TFT LCD顯示屏,提供更友好的用戶交互界面。
PCB設(shè)計(jì)優(yōu)化: 采用更緊湊、更抗干擾的PCB布局,特別是RF部分的布線需要注意阻抗匹配和接地處理,以確保無線通信的穩(wěn)定性和距離。
電池管理: 對(duì)于電池供電的發(fā)射模塊,可以集成電池電量檢測(cè)電路,并在電量低時(shí)發(fā)出預(yù)警。
自動(dòng)校準(zhǔn): 可以考慮在系統(tǒng)初始化時(shí)或定期進(jìn)行溫度傳感器校準(zhǔn),提高測(cè)量精度。
總結(jié)
本設(shè)計(jì)方案詳細(xì)闡述了一個(gè)基于AT89C2051單片機(jī)與InRF401(或NRF24L01+)無線模塊和DS18B20數(shù)字溫度傳感器的無線溫度監(jiān)測(cè)系統(tǒng)。通過對(duì)核心元器件的深入分析,以及軟硬件設(shè)計(jì)的詳細(xì)規(guī)劃,為構(gòu)建一個(gè)低成本、高可靠、易于實(shí)現(xiàn)的無線溫度監(jiān)測(cè)系統(tǒng)提供了全面的指導(dǎo)。盡管AT89C2051是一款經(jīng)典的單片機(jī),但其強(qiáng)大的功能和極高的性價(jià)比,結(jié)合現(xiàn)代無線通信模塊,依然能夠勝任許多實(shí)際應(yīng)用中的溫度監(jiān)測(cè)需求。此方案為開發(fā)者提供了一個(gè)堅(jiān)實(shí)的基礎(chǔ),在此基礎(chǔ)上可以根據(jù)具體需求進(jìn)行進(jìn)一步的功能擴(kuò)展和性能優(yōu)化。
責(zé)任編輯:David
【免責(zé)聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對(duì)本文的引用持有異議,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時(shí)處理。
2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點(diǎn),拍明芯城不對(duì)內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨(dú)立判斷做出的,請(qǐng)讀者明確相關(guān)結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。
拍明芯城擁有對(duì)此聲明的最終解釋權(quán)。