欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 有誰知道為什么取得的溫度一直為0?謝謝! [打印本頁]

作者: yuqingtian    時間: 2016-5-18 18:41
標題: 有誰知道為什么取得的溫度一直為0?謝謝!
void delay1(uint t)
{
while(--t);
}

void init_18b20()
{
        uchar flag;
        DQ=1;
        delay1(10);  //延時
        DQ=0;
        delay1(500); //*延時,要求精度,要求大于480us*
        DQ=1;
        delay1(200); //*延時,要求精度,要求大于15us*
        flag=DQ;    //DQ管腳送出60-240us的0脈沖,以示初始化成功
        delay1(10);  //延時
}
//**************************************************************************************************
//寫一個字節函數
//**************************************************************************************************
void write_byte(uchar t)
{
uchar i;
for(i=0;i<8;i++)   //循環8次寫入1字節
  {
    DQ=0;           //數據線置低
    delay1(10);      //延時
    DQ=t&0x01;      //發送1位數據,最低位開始
    delay1(50);      //*延時,要求精度*
    DQ=1;           //數據線置高
    t=t>>1;         //右移1位
  }
}
//**************************************************************************************************
//讀一個字節函數
//**************************************************************************************************
uchar read_byte()
{
uchar i,value=0;;
for(i=0;i<8;i++)   //循環8次讀取1字節
  {
    value=value>>1; //右移1位
    DQ=0;           //數據線置低
    delay1(10);      //延時
    DQ=1;           //數據線置高
    delay1(10);      //延時
    if(DQ==1)value=value|0x80;//判斷接收的1位數據是否為1
    delay1(50);      //*延時,要求精度*
  }
return(value);
}
//**************************************************************************************************
//數據處理子函數
//**************************************************************************************************

//**************************************************************************************************
//溫度采集函數
//**************************************************************************************************
uint get_temp()
{
    uint dat;
    uchar wenl,wenh;
    init_18b20();         //復位
    write_byte(0xcc);     //不進行編號匹配
    write_byte(0x44);     //進行溫度轉換
    init_18b20();         //復位   
    write_byte(0xcc);     //不進行編號匹配
    write_byte(0xbe);     //發讀命令
    wenl=read_byte();     //溫度低八位
    wenh=read_byte();     //溫度高八位
    dat=(wenh<<8)+wenl;   //數據高低8位合并
    return(dat);          //返回測量結果
}
void chuli(uint temp)
{
                uint y,t;
                uchar ge,shi;
               
                if(temp&0x8000)         //判斷是否為負數
   {
     temp=~temp+1;//取反加1
                 LCD_PutString(180,40,"-",0x0000,0x7FFF);
                 t=(int)(temp*0.0625);
   }
else
   {
            LCD_PutString(180,40,"+",0x0000,0x7FFF);
            t=(int)(temp*0.0625+0.05);
   }
         
}



作者: bigfaty@sina.co    時間: 2016-5-18 20:19
溫度傳感器?是否正常
作者: ren931228    時間: 2016-5-19 09:11
檢查下溫度傳感器的串口是不是沒連接對,要是對的話,就把程序里面的讀取溫度值直接讀取串口模擬值就行,不需要這么繁瑣,溫度是模擬變量,讀取完用十進制直接顯示在串口就行  黑幣
作者: yuqingtian    時間: 2016-5-19 21:30
ren931228 發表于 2016-5-19 09:11
檢查下溫度傳感器的串口是不是沒連接對,要是對的話,就把程序里面的讀取溫度值直接讀取串口模擬值就行,不 ...

我是想把它顯示在TFT彩屏上,只能顯示整數,然而一直都是零
作者: SCLXM    時間: 2016-5-20 00:22
溫度傳感器線開路
作者: cn24145    時間: 2016-5-23 23:17
是不是溫度傳感器沒有沒有初始化好吧!
作者: huang0909    時間: 2016-5-23 23:26
時序不對,沒有通訊上吧?
作者: yuqingtian    時間: 2016-5-24 17:02
huang0909 發表于 2016-5-23 23:26
時序不對,沒有通訊上吧?

已經弄好了,謝謝
作者: 豆面湯圓兒    時間: 2019-12-21 10:49
遇到同問題,請問樓主怎么解決的
作者: 山海Ghost    時間: 2019-12-21 14:10
溫度傳感器沒弄好吧




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1