新聞中心

        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;//停止看門狗

        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ù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 陇西县| 余庆县| 凤阳县| 电白县| 大关县| 东港市| 固始县| 固安县| 南通市| 美姑县| 青海省| 琼结县| 宜丰县| 自贡市| 庆城县| 玉田县| 玉树县| 公主岭市| 横峰县| 拉萨市| 资源县| 金塔县| 柯坪县| 商南县| 稻城县| 德保县| 鄱阳县| 微山县| 大余县| 永康市| 洪江市| 大港区| 香格里拉县| 淮阳县| 通许县| 攀枝花市| 丰原市| 沈阳市| 大邑县| 东乌珠穆沁旗| 普兰县|