基于CY7C68013A的無(wú)線(xiàn)多路溫度采集系統設計與開(kāi)發(fā)
0 引言
本文引用地址:http://dyxdggzs.com/article/201610/308667.htm溫度采集系統在現代工業(yè)和農業(yè)領(lǐng)域有著(zhù)極其廣泛的應用,在某些特殊環(huán)境下,采集的溫度必須通過(guò)無(wú)線(xiàn)電波才能傳輸出來(lái)。傳統的無(wú)線(xiàn)溫度采集系統一般只能在終端進(jìn)行顯示,沒(méi)有上位機數據采集存儲功能。本文設計與開(kāi)發(fā)了一套無(wú)線(xiàn)傳輸多路溫度采集系統,該系統由溫度采集端和溫度接收端兩部分組成。溫度采集端由DS18B20溫度傳感器,AT89C52單片機和NRF24L01無(wú)線(xiàn)發(fā)射模塊組成,八枚DS18B20溫度傳感器獲取數字溫度信號后,傳輸給主控AT89C52單片機,然后通過(guò)NRF24L01無(wú)線(xiàn)模塊將數據通過(guò)2.5GHz的載波發(fā)送出來(lái)。接收端由CY7C68013A單片機、LCD12864顯示模塊、NRF24L01無(wú)線(xiàn)接收模塊和上位機組成。NRF24L01無(wú)線(xiàn)接收模塊將溫度采集端發(fā)送過(guò)來(lái)的數據送至CY7C68013A單片機,然后通過(guò)USB2.0總線(xiàn)上傳給上位機進(jìn)行溫度數據采集和存儲,同時(shí)把溫度數據送至LCD12864進(jìn)行實(shí)時(shí)顯示。
1 系統硬件設計
系統總體框架如圖1所示。溫度采集端的8枚溫度傳感器采集將溫度數據送入主控芯片AT89C52,再通過(guò)NRF24L01無(wú)線(xiàn)模塊將數據發(fā)送出來(lái)。溫度接收端的NRF24L01無(wú)線(xiàn)模塊將收到的溫度數據送至CY7C68013A單片機,然后通過(guò)USB2.0總線(xiàn)提交給上位機。

(1)溫度采集端。溫度采集端由8枚DS18B20溫度傳感器,AT89C52單片機和NRF24L01無(wú)線(xiàn)發(fā)射模塊組成。8枚DS18B20溫度傳感器共用一個(gè)總線(xiàn)與AT89C52單片機的P2.2口連接。每個(gè)DS18B20都具有唯一的64位二進(jìn)制ROM代碼作為識別序列號,利用唯一的序列號可以分別讀出各個(gè)DS18B20的溫度,這在多路采集中應用非常方便,大大減少了I/O口的
占用。利用DS18B20的此特征,本系統也可以非常方便的擴展為16路或32路溫度采集。NRF24L01無(wú)線(xiàn)模塊與單片機的P3.2口~P3.7口連接,負責將8路溫度數據通過(guò)2.5GHz的載波發(fā)送出來(lái)。本文所采用的是基于挪威VLSI公司出品的無(wú)線(xiàn)數字傳輸芯片NRF24L01開(kāi)發(fā)的無(wú)線(xiàn)收發(fā)模塊,其豐富資料,硬件上無(wú)需附加其他元件,直接通過(guò)相應接口與單片I/O端口相連即可由單片機控制使用,非常方便。

(2)CY7C68013A系統模塊。溫度接收端的主控芯片為CY7C68013A,其為美國CYPRESS公司推出的功能強大的USB2.0接口芯片,內建增強型51單片機,是USB2.0設備常用的主控芯片。CY7C68013A的系統模塊電路圖如圖3所示,其中LT1763CS8—3.3為3.3V穩壓芯片,負責將USB接口的5V電壓轉換為CY7C68013A工作所需的3.3V電壓。AT24C08為I2C總線(xiàn)的E2PROM存儲芯片,其容量為8K,用來(lái)存儲CY7C68013A的固件程序。

(3)LCD顯示模塊與無(wú)線(xiàn)接收模塊。為了讓溫度接收端實(shí)時(shí)直觀(guān)顯示溫度數據,本系統設置了LCD12864液晶模塊,LCD12864工作在串行顯示模式,由CY7C68013A通過(guò)PD0~PD2端口控制顯示,PA0~PA7端口控制數據的傳輸。NRF24L01無(wú)線(xiàn)接收模塊與CY7C68013A的PB0~PB5端口連接,負責接收溫度采集端發(fā)來(lái)的無(wú)線(xiàn)溫度數據。圖4 LCD顯示模塊與無(wú)線(xiàn)接收模塊電路圖。

2.系統軟件設計
系統軟件的開(kāi)發(fā)包含了溫度采集端AT89C52和溫度接收端CY7C68013A的固件程序開(kāi)發(fā)、CY7C68013A的windows驅動(dòng)程序開(kāi)發(fā)以及USB上位機應用程序的開(kāi)發(fā)。對于溫度接收端的CY7C68013A的固件、驅動(dòng)和上位機的程序的開(kāi)發(fā),我們可以利用CYPRESS公司提供的開(kāi)發(fā)包,縮短開(kāi)發(fā)周期,提高開(kāi)發(fā)效率。
溫度采集端的AT89C52的固件程序主要完成對8枚DS18B20溫度采集的控制和對NRF24L01無(wú)線(xiàn)模塊數據發(fā)送的控制。為此我們采用TC51語(yǔ)言編寫(xiě),開(kāi)發(fā)環(huán)境為Keil uVision 4.0。其固件程序的主要思路為:先初始化NRF24L01,然后進(jìn)入大循環(huán),從DS18B20讀取溫度數值(采用默認12位精度),將得到的溫度數據(2字節16位)進(jìn)行標記,將此數據表示的溫度路數標記在高4位(1~8路的數據分別對應為0000~0111),然后將數據寫(xiě)入發(fā)射數組,再將溫度發(fā)射出去,經(jīng)過(guò)延時(shí)溫度發(fā)送完畢。然后循環(huán)切換到下一路DS18B20的ROM地址,繼續下一路溫度的讀取與發(fā)射。
CY7C68013A的固件程序主要完成對NRF24L01無(wú)線(xiàn)模塊的通信控制,將其接收的無(wú)線(xiàn)數據傳送給LCD12864進(jìn)行實(shí)時(shí)顯示和上傳給USB上位機。對于CYTC68013A的固件程序的開(kāi)發(fā),我們采用了C51語(yǔ)言編寫(xiě),開(kāi)發(fā)環(huán)境為Keil uVision4.0,并利用了CYPRESS公司提供的固件程序框架,免去了編寫(xiě)一些通用性比較強、模式化的程序,提高了開(kāi)發(fā)效率。在驅動(dòng)程序開(kāi)發(fā)方面,我們直接利用了CYPRESS公司的SDK中為CY7C68013A提供的通用設備驅動(dòng)程序CYUSB.SYS,其不僅完全符合Windows Driver Foundation規范,而且還具有兼容USB1.1和USB2.0設備、支持即插即用和支持高帶寬數據傳輸等優(yōu)點(diǎn)。我們只對CYUSB.SYS通用驅動(dòng)程序相匹配的CYUSB.INF文件進(jìn)行相應的簡(jiǎn)單修改,使其符合我們USB硬件的VID和PID數值。在上位機的應用程序的開(kāi)發(fā)方面,我們同樣利用CYPRESS公司SDK中為CY7C68013A提供的功能強大的C++編程接口:CyAPLLib庫函數。我們選用了Microsoft Visual C++6.0作為開(kāi)發(fā)工具,通過(guò)CyAPLLib函數與CYUSB.SYS設備驅動(dòng)程序傳遞溫度數據,并將8路溫度數據存入了相應的服務(wù)器上的SQL2005數據庫,從而實(shí)現了溫度數據的實(shí)時(shí)采集和儲存。
3.總結
本文針對目前無(wú)線(xiàn)測溫系統的不足,利用CY7C68013A芯片、NRF24L01無(wú)線(xiàn)模塊、DS18B20數字溫度傳感器等元件設計與開(kāi)發(fā)了一套無(wú)線(xiàn)傳輸多路溫度采集系統。該系統具有以下優(yōu)點(diǎn):溫度米集端利用8個(gè)DS18B20數字溫度傳感器進(jìn)行并聯(lián),共用一根I/O總線(xiàn),不僅大幅度節約了端口資源,而且非常容易擴展為16路和32路溫度采集;溫度接收端采用CY7C68013A芯片為主控CPU,不僅能實(shí)現8路溫度數據的LCD實(shí)時(shí)顯示,而且可以與上位機直接進(jìn)行USB通信,通過(guò)上位機的應用程序可以非常方便的對溫度數據進(jìn)行圖形顯示、計算分析和上傳數據服務(wù)器進(jìn)行儲存。經(jīng)實(shí)物測試,該系統測溫精度可達0.1攝氏度,無(wú)線(xiàn)傳輸距離可達50米,能同時(shí)采集8路溫度數據。
評論