基于MSP430單片機(jī)的智能溫度檢測系統(tǒng)設(shè)計
3. 1. 2 寫一個字節(jié)子程序:
CPU 將數(shù)據(jù)線從高電平拉至低電平, 產(chǎn)生寫起始信號; 15 微秒之內(nèi), 將所寫的位送到數(shù)據(jù)線上;DS18B20在之后15~ 60微秒接收位信息; 寫下一個位之前要有1秒以上的高電平恢復(fù); 將以上過程重復(fù)8次, 即完成一個字節(jié)的寫操作。
vo idWRDS18B20( unsigned char data0)
{ unsigned char ,i ;j
for( j= 0; j 8; j+ + )
{
DS18B20= 0; / /高電平拉到低電平, 產(chǎn)生寫起始信號
for( i= 0; i 1; i+ + ) ;
DS18B20 = da ta0 0x01; / /15微秒內(nèi)寫一位
for( i= 0; i 20; i+ + ) ; / /等60微秒, DS18B20完成采樣
DS18B20= 1; / /高電平恢復(fù)
data0= data0> > 1; / /右移, 為下一位準(zhǔn)備}
}
3. 1. 3 讀一個字節(jié)子程序
CPU 將數(shù)據(jù)線從高電平拉到低電平1微秒以上, 再拉到高電平, 產(chǎn)生讀起始信號; 15微秒之內(nèi),CPU 讀一位; 讀周期為60微秒, 讀下一個位之前要有1微秒以上的高電平恢復(fù); 將以上過程重復(fù)8次,即完成一個字節(jié)的讀操作。
unsigned charRDDS18B20( )
{ unsigned char ,i ,j data0= 0;
bit temp;
for( j= 0; j 8; j+ + )
{ DS18B20= 0; / /高電平拉到低電平1微秒以上
for( i= 0; i ;l i+ + ) ;
DS18B20= 1; / /再拉到高電平, 產(chǎn)生讀起始信號
for( i= 0; i 1; i+ + );
temp= DS18B20; / /15微秒之內(nèi)讀一位
for( i= 0; i 20; i+ + ); / /等60微秒
data0= dataO > > 1; / /為下一位準(zhǔn)備
if( temp= = 1) data0= dataO |0x80;
else data0= data0 0x7;f
DS18B20= 1; / /高電平恢復(fù)
for( i= O; i 1; i+ + ); }
return data0; }
3. 2 上位機(jī)軟件編程
系統(tǒng)采用MSCOMM 控件實現(xiàn)VC ++ 與單片機(jī)之間的數(shù)據(jù)交換, 具有程序?qū)崿F(xiàn)簡便、程序模塊化、工作可靠等優(yōu)點, 并能滿足多數(shù)情況下的工控要求。
使用MSCOMM控件主要是通過事件來處理串行口的交互??丶腗SCOMM 事件負(fù)責(zé)捕獲或處理這些通訊事件和通訊錯誤。
4 結(jié)束語
測溫系統(tǒng)采用了集成度高、功耗低的MSP430F149 為核心微處理器, 通過傳感器DS18B20實現(xiàn)對溫度測量, 并進(jìn)行存儲和顯示。實驗表明: 當(dāng)外界溫度試驗的范圍設(shè)定在0℃ ~ 50℃ ,可確保測量誤差不超過±0. 5℃ , 在試驗板上顯示溫度精確到0. 0625℃, AD轉(zhuǎn)換的時間是750ms, 傳輸?shù)木嚯x是40m。另外, 在該系統(tǒng)的基礎(chǔ)上也可以擴(kuò)展其他信號, 如濕度, 壓力等。
評論