新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > msp430單片機(jī)的ds18b20測(cè)溫度c程序

msp430單片機(jī)的ds18b20測(cè)溫度c程序

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
#include
#define DS18B20_DIRP2DIR
#define DS18B20_INP2IN
#define DS18B20_OUTP2OUT

#define DS18B20_DQBIT3//定義DS18B20的接口
#define DS18B20_DQ_2BIT4//定義另一個(gè)DS18B20的接口

// DS18B20 ROM命令宏定義
#define ReadRom0x33
#define MatchRom0x55
#define SearchRom0xf0
#define AlertSearch0xec
#define CopyScratchpad0x48
#define SkipRom0xcc
#define ReadPower0xb4

// DS18B20 功能命令宏定義
#define ConvertTemperature0x44
#define ReadScratchpad0xbe
#define WriteScratchpad0x4e
#define RecallE0xb8

#define SMCLK2000//(KHz)用于系統(tǒng)延時(shí)


// 溫度的十進(jìn)制編碼(查表用)
unsigned char decimalH[16]={00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93};
unsigned char decimalL[16]={00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75};

// 變量定義
unsigned char GetScratchpad[9];
unsigned char GetScratchpad_2[9];
float ResultTemperatureH;//溫度的整數(shù)部分
float ResultTemperatureLH;//溫度的小數(shù)部分(高位)
float ResultTemperatureLL;//溫度的小數(shù)部分(低位)
float ResultTemperatureH_2;//溫度的整數(shù)部分
float ResultTemperatureLH_2;//溫度的小數(shù)部分(高位)
float ResultTemperatureLL_2;//溫度的小數(shù)部分(低位)
float ResultTemperature;//溫度的真實(shí)值
float ResultTemperature_2;//溫度的真實(shí)值
float Temperaturefromtwo;//溫度的真實(shí)值差
float OilPercentage;//油相含率

void DS18B20_WriteBit(unsigned char oww_dat);
void DS18B20_WriteBit_2(unsigned char oww_dat);
void DS18B20_WriteByte(unsigned char oww_dat);
void DS18B20_WriteByte_2(unsigned char oww_dat);
void DS18B20_ReadTemp(void);
void DS18B20_ReadTemp_2(void);
unsigned char DS18B20_Init(void);
unsigned char DS18B20_Init_2(void);
unsigned char DS18B20_ReadBit(void);
unsigned char DS18B20_ReadBit_2(void);
unsigned char DS18B20_ReadByte(void);
unsigned char DS18B20_ReadByte_2(void);
void Delay10us(void);
void DelayX10us(unsigned char x10us);


void main(void) {
volatile unsigned int i,j;
WDTCTL = WDTPW + WDTHOLD;//停止看門(mén)狗

BCSCTL1 &= ~XT2OFF;//XT2 = HF XTAL
do {
IFG1 &= ~OFIFG;//Clear OSCFault flag
for (i=0xFF;i>0;i--);//Time for flag to set
}while((IFG1&OFIFG));//OSCFault flag still set?
BCSCTL2 |= (SELM1 + SELS);//MCLK = SMCLK = XT2

DS18B20_Init();//初始化DS18B20
DS18B20_Init_2();//初始化DS18B20.2

//Z7289_Init();

while(1) {
DS18B20_ReadTemp();
i=ResultTemperatureH/10;
j=ResultTemperatureH-(i*10);
//Z7289_Show(7,1,i);
//Z7289_Show(6,1,j);
//Z7289_Show(5,1,0x0C);
i=ResultTemperatureLH/10;
j=ResultTemperatureLH-(i*10);
//Z7289_Show(4,1,i);
//Z7289_Show(3,1,j);
i=ResultTemperatureLL/10;
j=ResultTemperatureLL-(i*10);
//Z7289_Show(2,1,i);
//Z7289_Show(1,1,j);
ResultTemperature=ResultTemperatureH+ResultTemperatureLH/100+ResultTemperatureLL/10000;
ResultTemperature_2=ResultTemperatureH_2+ResultTemperatureLH_2/100+ResultTemperatureLL_2/10000;
Temperaturefromtwo=ResultTemperature_2-ResultTemperature;
OilPercentage=1.6939-0.9260/Temperaturefromtwo;
}
}

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: msp430單片機(jī)ds18b2

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉