基于CY7C68013A的無(wú)線多路溫度采集系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
溫度采集系統(tǒng)在現(xiàn)代工業(yè)和農(nóng)業(yè)領(lǐng)域有著極其廣泛的應(yīng)用,在某些特殊環(huán)境下,采集的溫度必須通過(guò)無(wú)線電波才能傳輸出來(lái)。傳統(tǒng)的無(wú)線溫度采集系統(tǒng)一般只能在終端進(jìn)行顯示,沒(méi)有上位機(jī)數(shù)據(jù)采集存儲(chǔ)功能。本文設(shè)計(jì)與開(kāi)發(fā)了一套無(wú)線傳輸多路溫度采集系統(tǒng),該系統(tǒng)由溫度采集端和溫度接收端兩部分組成。溫度采集端由DS18B20溫度傳感器,AT89C52單片機(jī)和NRF24L01無(wú)線發(fā)射模塊組成,八枚DS18B20溫度傳感器獲取數(shù)字溫度信號(hào)后,傳輸給主控AT89C52單片機(jī),然后通過(guò)NRF24L01無(wú)線模塊將數(shù)據(jù)通過(guò)2.5GHz的載波發(fā)送出來(lái)。接收端由CY7C68013A單片機(jī)、LCD12864顯示模塊、NRF24L01無(wú)線接收模塊和上位機(jī)組成。NRF24L01無(wú)線接收模塊將溫度采集端發(fā)送過(guò)來(lái)的數(shù)據(jù)送至CY7C68013A單片機(jī),然后通過(guò)USB2.0總線上傳給上位機(jī)進(jìn)行溫度數(shù)據(jù)采集和存儲(chǔ),同時(shí)把溫度數(shù)據(jù)送至LCD12864進(jìn)行實(shí)時(shí)顯示。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)總體框架如圖1所示。溫度采集端的8枚溫度傳感器采集將溫度數(shù)據(jù)送入主控芯片AT89C52,再通過(guò)NRF24L01無(wú)線模塊將數(shù)據(jù)發(fā)送出來(lái)。溫度接收端的NRF24L01無(wú)線模塊將收到的溫度數(shù)據(jù)送至CY7C68013A單片機(jī),然后通過(guò)USB2.0總線提交給上位機(jī)。
(1)溫度采集端。溫度采集端由8枚DS18B20溫度傳感器,AT89C52單片機(jī)和NRF24L01無(wú)線發(fā)射模塊組成。8枚DS18B20溫度傳感器共用一個(gè)總線與AT89C52單片機(jī)的P2.2口連接。每個(gè)DS18B20都具有唯一的64位二進(jìn)制ROM代碼作為識(shí)別序列號(hào),利用唯一的序列號(hào)可以分別讀出各個(gè)DS18B20的溫度,這在多路采集中應(yīng)用非常方便,大大減少了I/O口的
占用。利用DS18B20的此特征,本系統(tǒng)也可以非常方便的擴(kuò)展為16路或32路溫度采集。NRF24L01無(wú)線模塊與單片機(jī)的P3.2口~P3.7口連接,負(fù)責(zé)將8路溫度數(shù)據(jù)通過(guò)2.5GHz的載波發(fā)送出來(lái)。本文所采用的是基于挪威VLSI公司出品的無(wú)線數(shù)字傳輸芯片NRF24L01開(kāi)發(fā)的無(wú)線收發(fā)模塊,其豐富資料,硬件上無(wú)需附加其他元件,直接通過(guò)相應(yīng)接口與單片I/O端口相連即可由單片機(jī)控制使用,非常方便。
(2)CY7C68013A系統(tǒng)模塊。溫度接收端的主控芯片為CY7C68013A,其為美國(guó)CYPRESS公司推出的功能強(qiáng)大的USB2.0接口芯片,內(nèi)建增強(qiáng)型51單片機(jī),是USB2.0設(shè)備常用的主控芯片。CY7C68013A的系統(tǒng)模塊電路圖如圖3所示,其中LT1763CS8—3.3為3.3V穩(wěn)壓芯片,負(fù)責(zé)將USB接口的5V電壓轉(zhuǎn)換為CY7C68013A工作所需的3.3V電壓。AT24C08為I2C總線的E2PROM存儲(chǔ)芯片,其容量為8K,用來(lái)存儲(chǔ)CY7C68013A的固件程序。
(3)LCD顯示模塊與無(wú)線接收模塊。為了讓溫度接收端實(shí)時(shí)直觀顯示溫度數(shù)據(jù),本系統(tǒng)設(shè)置了LCD12864液晶模塊,LCD12864工作在串行顯示模式,由CY7C68013A通過(guò)PD0~PD2端口控制顯示,PA0~PA7端口控制數(shù)據(jù)的傳輸。NRF24L01無(wú)線接收模塊與CY7C68013A的PB0~PB5端口連接,負(fù)責(zé)接收溫度采集端發(fā)來(lái)的無(wú)線溫度數(shù)據(jù)。圖4 LCD顯示模塊與無(wú)線接收模塊電路圖。
2.系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件的開(kāi)發(fā)包含了溫度采集端AT89C52和溫度接收端CY7C68013A的固件程序開(kāi)發(fā)、CY7C68013A的windows驅(qū)動(dòng)程序開(kāi)發(fā)以及USB上位機(jī)應(yīng)用程序的開(kāi)發(fā)。對(duì)于溫度接收端的CY7C68013A的固件、驅(qū)動(dòng)和上位機(jī)的程序的開(kāi)發(fā),我們可以利用CYPRESS公司提供的開(kāi)發(fā)包,縮短開(kāi)發(fā)周期,提高開(kāi)發(fā)效率。
溫度采集端的AT89C52的固件程序主要完成對(duì)8枚DS18B20溫度采集的控制和對(duì)NRF24L01無(wú)線模塊數(shù)據(jù)發(fā)送的控制。為此我們采用TC51語(yǔ)言編寫(xiě),開(kāi)發(fā)環(huán)境為Keil uVision 4.0。其固件程序的主要思路為:先初始化NRF24L01,然后進(jìn)入大循環(huán),從DS18B20讀取溫度數(shù)值(采用默認(rèn)12位精度),將得到的溫度數(shù)據(jù)(2字節(jié)16位)進(jìn)行標(biāo)記,將此數(shù)據(jù)表示的溫度路數(shù)標(biāo)記在高4位(1~8路的數(shù)據(jù)分別對(duì)應(yīng)為0000~0111),然后將數(shù)據(jù)寫(xiě)入發(fā)射數(shù)組,再將溫度發(fā)射出去,經(jīng)過(guò)延時(shí)溫度發(fā)送完畢。然后循環(huán)切換到下一路DS18B20的ROM地址,繼續(xù)下一路溫度的讀取與發(fā)射。
CY7C68013A的固件程序主要完成對(duì)NRF24L01無(wú)線模塊的通信控制,將其接收的無(wú)線數(shù)據(jù)傳送給LCD12864進(jìn)行實(shí)時(shí)顯示和上傳給USB上位機(jī)。對(duì)于CYTC68013A的固件程序的開(kāi)發(fā),我們采用了C51語(yǔ)言編寫(xiě),開(kāi)發(fā)環(huán)境為Keil uVision4.0,并利用了CYPRESS公司提供的固件程序框架,免去了編寫(xiě)一些通用性比較強(qiáng)、模式化的程序,提高了開(kāi)發(fā)效率。在驅(qū)動(dòng)程序開(kāi)發(fā)方面,我們直接利用了CYPRESS公司的SDK中為CY7C68013A提供的通用設(shè)備驅(qū)動(dòng)程序CYUSB.SYS,其不僅完全符合Windows Driver Foundation規(guī)范,而且還具有兼容USB1.1和USB2.0設(shè)備、支持即插即用和支持高帶寬數(shù)據(jù)傳輸?shù)葍?yōu)點(diǎn)。我們只對(duì)CYUSB.SYS通用驅(qū)動(dòng)程序相匹配的CYUSB.INF文件進(jìn)行相應(yīng)的簡(jiǎn)單修改,使其符合我們USB硬件的VID和PID數(shù)值。在上位機(jī)的應(yīng)用程序的開(kāi)發(fā)方面,我們同樣利用CYPRESS公司SDK中為CY7C68013A提供的功能強(qiáng)大的C++編程接口:CyAPLLib庫(kù)函數(shù)。我們選用了Microsoft Visual C++6.0作為開(kāi)發(fā)工具,通過(guò)CyAPLLib函數(shù)與CYUSB.SYS設(shè)備驅(qū)動(dòng)程序傳遞溫度數(shù)據(jù),并將8路溫度數(shù)據(jù)存入了相應(yīng)的服務(wù)器上的SQL2005數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)了溫度數(shù)據(jù)的實(shí)時(shí)采集和儲(chǔ)存。
3.總結(jié)
本文針對(duì)目前無(wú)線測(cè)溫系統(tǒng)的不足,利用CY7C68013A芯片、NRF24L01無(wú)線模塊、DS18B20數(shù)字溫度傳感器等元件設(shè)計(jì)與開(kāi)發(fā)了一套無(wú)線傳輸多路溫度采集系統(tǒng)。該系統(tǒng)具有以下優(yōu)點(diǎn):溫度米集端利用8個(gè)DS18B20數(shù)字溫度傳感器進(jìn)行并聯(lián),共用一根I/O總線,不僅大幅度節(jié)約了端口資源,而且非常容易擴(kuò)展為16路和32路溫度采集;溫度接收端采用CY7C68013A芯片為主控CPU,不僅能實(shí)現(xiàn)8路溫度數(shù)據(jù)的LCD實(shí)時(shí)顯示,而且可以與上位機(jī)直接進(jìn)行USB通信,通過(guò)上位機(jī)的應(yīng)用程序可以非常方便的對(duì)溫度數(shù)據(jù)進(jìn)行圖形顯示、計(jì)算分析和上傳數(shù)據(jù)服務(wù)器進(jìn)行儲(chǔ)存。經(jīng)實(shí)物測(cè)試,該系統(tǒng)測(cè)溫精度可達(dá)0.1攝氏度,無(wú)線傳輸距離可達(dá)50米,能同時(shí)采集8路溫度數(shù)據(jù)。