亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ds1820.c

?? 上載的程序可以用于PIC單片機,也可以用于430單片機,本人原創,到至今還沒有發現哪位網友想出這種辦法,希望站長能多加分.
?? C
字號:
//文件名:DS18B20.c
#define uchar unsigned char
#define uint unsigned int

#define  XF_MCU    1       //定義用哪一種單片機,1時,用于PIC; 0時,用于MSP430;

#if      XF_MCU==0
#include <msp430x14x.h>
#include "DS1820.h"
#else
#include <pic.h>
#include "DS1820.h"
uchar pa_out;
uchar pb_out;
uchar pc_out;
uchar pd_out;
uchar pe_out;
#endif

const unsigned char digit[10] = {'0','1','2','3','4','5','6','7',
 '8','9'};

 unsigned char temp_display [9] = {'x','0','0','0','.','0','0','0','\0'};


//定義
unsigned char Error = 0;
float   Temper=0.0;             //真正有效溫度值
int     temperature=0;          //讀取兩字節溫度數據
unsigned char symbol = 1 ;      //溫度正負符號

//----------------------------------
//功能:us 級別延時
// n=10,則延時10*5+6=56uS
//----------------------------------
void DelayNus(unsigned int n)
 {
    while(n--){};
 }
//-----------------------------------


//功能:寫18B20
//-----------------------------------
void Write_18B20(unsigned char n)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        DQ0;
        _NOP();_NOP();            //延時5us
        _NOP();_NOP();_NOP();
        if((n&0X01)==0X01)      //DQ=1
          DQ1;
        else 
         DQ0;                   //DQ=0     
        n=n>>1;                  //下一位
        DelayNus(6);            //延時50us 以上
        DQ1;
    }
}
//------------------------------------


//功能:讀取18B20
//------------------------------------
unsigned char Read_18B20(void)
{
    unsigned char i;
    unsigned char temp;
    for(i=0;i<8;i++)
    {
        temp=temp>>1;            //移向下一位
        DQ0;                  
        _NOP();                  //延時1us
        DQ1;
        _NOP();_NOP();            //延時5us
        _NOP();     
        
        DQIO_IN;            //DQ口設為輸入
      if((DS_IN&DS_IT)==0)      //DQ是否等于0
          {
            temp=temp&0x7F;      //讀入DQ為0
          }
      else
        {
         temp=temp|0x80;      //讀入DQ為1
        }

      DelayNus(5);            //延時40us
      DQIO_OUT;                    //DQ口設為輸出
      DQ1;                  //DQ輸出1
    }
    return    temp;            //返回一個數據
}
//-----------------------------------


//復位說明:復位要求主CPU將數據線下拉500us,然后釋放,
//當DS18B20收到信號后等待16~60us左右,后發出60~240微秒的存在低脈沖,
//主CPU收到此信號表示復位成功。 
//初始化DS18B20
void Init (void)
{
    DQ0;                  
    DelayNus(50);            //延時500us
    DQ1;
    DelayNus(12);            //延時16~60us

    DQIO_IN;                    //設DQ為輸入
    if((DS_IN&DS_IT)==DS_IT)        //1000 0000b=1f,DQ是否為1
     {
      Error =1;                //失敗1
      DQIO_OUT;                    //設DQ為輸輸出
     }
    else
     {
      Error = 0;            //初始化成功
      DQIO_OUT;                    //設DQ為輸輸出
      DQ1;
     }
}
//----------------------------------

//指令描述:跳過ROM命令,指定代碼為CCH,忽略64位ROM地址,直接向DS1820發溫度變換
//命令,適用于單片機工作.
void Skip(void)
{
    Write_18B20(0xcc);
}
//----------------------------------

//指令描述:溫度轉換命令,指定代碼為44H.啟動DS1820進行溫度轉換,12位轉換時最長
//為750ms(9位為93.75ms).結果存入內部9字節RAM中.
 void Convert (void)
 {
    Write_18B20(0x44);
  }
//----------------------------------

//指令描述:讀暫存器,指定代碼為BEH.讀內部RAM中9字節的內容.
  void ReadDo (void)
  {
    Write_18B20(0xbe);
  }
//----------------------------------

//讀取溫度值
void ReadTemp (void)
 {
    char temp_low,  temp_high;      //溫度值
    temp_low = Read_18B20();      //讀低位
    temp_high = Read_18B20();      //讀高位
    
    if((temp_high|positive)==positive)
        symbol=1;                //測到的溫度為正
    else
        symbol=0;                //測到的溫度為負
    
    temperature=(temp_high&0x0f);//屏蔽高4位
    temperature<<=8;            //將temp_high部分數據移到temperature高8位
    temperature|=temp_low;      //將高低兩字節內部合并成一個16位數據
    
    if(symbol==0)                       //是否為負溫度
     { temperature = (~temperature)+1;   //將其取反后加1
     }
    Temper=temperature*0.0625;      //計算真實溫度值
 }
//----------------------------------

//MCU對DS18B20進行溫度轉換時,其操作必須滿足以下過程:
// 1- 每一次讀寫之前都要對DS18B20進行復位.
// 2- 完成復位后發送一條ROM命令到DS18B20.
// 3- 最后發送一條RAM命令到DS18B20.
// 以上系列動作是根據DS18B20的通訊協議所得.
//讀取溫度
void GetTemp(void)
 {
        Init();                  //DS1820初始化
        Skip();                  //跳過64位ROM(ROM命令)
        Convert();            //轉換(RAM命令)
        DelayNus(60000);        //60000x5us=0.3s
        DelayNus(60000);        //0.3s
        DelayNus(60000);      //0.3s
        Init();                  //DS1820初始化
        Skip();                  //跳過64位ROM
        ReadDo();            //讀暫存器
        ReadTemp();            //讀取溫度值
 }
//END--------------------------------------------------------------

 //另外,由于MSP430F14與44的DCO時鐘有所不同,各位如要引用DS18B20程序時請加于注意操作時序。
 //引用時可能出現過復位不成功或讀到全為FF...
 //這些大部分都是由于程序上的時序不能滿足DS18B20所至。
 //以下關于14與4系列的DCO默認時鐘:
 //4系列默認時鐘  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO = 32xACLK = 1048576Hz時鐘周期為0.95us
 //14系列默認時鐘 ACLK= n/a, MCLK= SMCLK= default DCO ~800k   時鐘周期為1.25us
  
 


//MC430F14 DS18B20實驗主程序
void main(void)
 {
#if  XF_MCU==0
  WDTCTL=WDTPW+WDTHOLD;         //停止WDT
  mcuinit();                  //MSP430F14初始化
#else
	LCM141_DIR_OUT;
#endif 
  while(1)
  {
   GetTemp();                                     //讀取溫度
  
   display_number(Temper);                      //數據變換
   ;
  } 
 }


//將溫度值轉換成可顯示十進制值
//取數范圍整數3位,小數點后3位.
void display_number(float f_data)
{ unsigned long value;
  float n;
  n=f_data *1000;
  value = (unsigned long int)n; 
  
  temp_display[1] = digit[value/100000];          //100位
  value = value%100000;
  
  temp_display[2] = digit[value/10000];           //10位
  value = value%10000;   
  
  temp_display[3] = digit[value/1000];            //1位
  value = value%1000; 
  
  temp_display[5] = digit[value/100];             //0.1位
  value = value%100; 

  temp_display[6] = digit[value/10];              //0.01位
  value = value%10; 
  
  temp_display[7] = digit[value/1];               //0.001位
}
//--------------------------------------------------------------------


//---------------------------------------------------------------------

//MSP430F14初始化
void mcuinit(void)
 {
   DQIO_OUT;                                  //設為輸出
   DQ1;                                       //輸出高電平;
 }

//---------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久免费| 国产三级一区二区三区| 国产在线日韩欧美| 一区二区三区四区av| 久久嫩草精品久久久精品| 欧美视频一区二区| 成人国产电影网| 加勒比av一区二区| 亚洲自拍偷拍综合| 国产精品久久久久一区二区三区共| 91麻豆精品国产91久久久使用方法| 成人精品小蝌蚪| 日本美女一区二区三区| 亚洲夂夂婷婷色拍ww47| 国产精品女主播在线观看| 精品国产乱码久久久久久影片| 欧美色手机在线观看| 91蜜桃免费观看视频| 粉嫩蜜臀av国产精品网站| 狠狠色狠狠色综合系列| 日韩成人午夜电影| 午夜视黄欧洲亚洲| 亚洲一区二区在线播放相泽| 中文字幕欧美一区| 国产人妖乱国产精品人妖| 精品精品欲导航| 日韩一区二区免费视频| 欧美一级高清大全免费观看| 欧美日韩夫妻久久| 欧美日韩亚州综合| 在线观看欧美日本| 日本丰满少妇一区二区三区| 成人动漫精品一区二区| 白白色 亚洲乱淫| 东方aⅴ免费观看久久av| 国产福利91精品| 福利一区福利二区| 成人综合日日夜夜| 成人激情图片网| 99久久久免费精品国产一区二区| a美女胸又www黄视频久久| 成人中文字幕在线| 99久久精品一区二区| 波多野结衣中文一区| 91在线视频在线| 色综合中文字幕国产| 99精品视频一区| 在线观看网站黄不卡| 欧美色欧美亚洲另类二区| 欧美精品高清视频| 欧美一区二区视频网站| 日韩精品中文字幕在线不卡尤物| 精品国精品自拍自在线| 久久精品视频一区二区| 国产精品国产三级国产有无不卡| 亚洲视频电影在线| 亚洲成人一区二区在线观看| 日本aⅴ亚洲精品中文乱码| 色综合天天性综合| 欧美日韩亚洲综合在线 | 国产美女在线观看一区| 国产91精品久久久久久久网曝门| 不卡的av在线播放| 欧美三级电影在线观看| 欧美大白屁股肥臀xxxxxx| 欧美激情在线免费观看| 一区二区三区高清| 蜜桃久久精品一区二区| 粉嫩av一区二区三区在线播放| 99国产精品99久久久久久| 欧美日韩综合不卡| 亚洲精品一区二区三区蜜桃下载| 国产精品女主播在线观看| 亚洲va天堂va国产va久| 国内精品免费在线观看| 日本韩国视频一区二区| 日韩精品一区二区三区在线观看| 国产精品私人影院| 亚洲狠狠爱一区二区三区| 韩国成人精品a∨在线观看| 成人18视频日本| 91精品在线麻豆| 国产精品天美传媒| 视频一区二区三区在线| 国产999精品久久久久久绿帽| 欧美亚洲愉拍一区二区| 国产午夜亚洲精品午夜鲁丝片| 亚洲人123区| 国产一区二区成人久久免费影院| 欧美亚洲国产一区二区三区va | 国内久久精品视频| 色www精品视频在线观看| 精品久久国产老人久久综合| 亚洲自拍另类综合| 懂色av一区二区夜夜嗨| 欧美一区二区久久久| 亚洲视频1区2区| 国产福利一区二区| 欧美一级二级三级乱码| 亚洲一区日韩精品中文字幕| 成人午夜电影小说| 精品免费视频.| 午夜av区久久| 91福利视频久久久久| 中文在线一区二区| 国内精品国产成人国产三级粉色| 欧美性猛交xxxxxx富婆| 国产精品成人免费精品自在线观看| 加勒比av一区二区| 日韩欧美中文一区| 视频一区视频二区在线观看| 色综合一区二区三区| 中文在线一区二区| 国产精品18久久久久久久久久久久 | 国产99久久久精品| 欧美成人精精品一区二区频| 亚洲福利视频一区二区| 色婷婷久久久综合中文字幕| 亚洲欧洲日产国产综合网| 国产精品综合在线视频| 26uuu亚洲| 精品无码三级在线观看视频| 日韩免费看的电影| 蜜臂av日日欢夜夜爽一区| 欧美理论片在线| 亚洲成人1区2区| 欧美丝袜丝nylons| 亚洲一区av在线| 欧美丝袜丝交足nylons图片| 亚洲最色的网站| 色视频一区二区| 一区二区三区在线看| 色偷偷一区二区三区| 国产精品国产三级国产普通话三级| 成人综合激情网| 中文字幕亚洲成人| 色欲综合视频天天天| 一区二区三区免费在线观看| 色综合久久中文综合久久牛| 一区二区三区四区亚洲| 91成人免费在线| 亚洲国产一区二区三区青草影视| 精品视频1区2区3区| 一级做a爱片久久| 7777女厕盗摄久久久| 久久国产生活片100| 国产网站一区二区| 成人久久18免费网站麻豆| 亚洲蜜臀av乱码久久精品| 欧美色视频在线观看| 日本大胆欧美人术艺术动态| 精品国产髙清在线看国产毛片| 国产一区二区美女| 亚洲欧洲日本在线| 欧美午夜精品一区二区蜜桃| 五月天婷婷综合| 久久久久久久精| 91蜜桃婷婷狠狠久久综合9色| 亚洲第一电影网| 精品国产乱码久久久久久图片| 成人少妇影院yyyy| 一区二区三区中文字幕| 欧美一区二区三区视频在线| 国产传媒一区在线| 亚洲色图一区二区| 日韩视频一区在线观看| 国产成人av电影| 亚洲综合男人的天堂| 欧美不卡在线视频| 91亚洲国产成人精品一区二三| 视频在线观看一区| 国产精品女同一区二区三区| 欧美色图12p| 粉嫩嫩av羞羞动漫久久久| 亚洲成人手机在线| 久久午夜老司机| 欧美丝袜丝交足nylons图片| 国产揄拍国内精品对白| 亚洲欧美一区二区久久| 欧美大尺度电影在线| 97精品国产露脸对白| 蜜桃视频一区二区| 亚洲色图视频网站| 久久综合九色综合97_久久久| 色婷婷综合久久久久中文| 韩国一区二区三区| 玉米视频成人免费看| 久久精品一区蜜桃臀影院| 精品视频在线看| 成人爱爱电影网址| 久久国产精品无码网站| 亚洲综合精品自拍| 欧美激情在线看| 日韩欧美成人激情| 91高清视频免费看| 成人丝袜视频网| 久久91精品久久久久久秒播| 亚洲黄色性网站| 中文字幕在线不卡| 久久久久97国产精华液好用吗|