久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

帶小數(shù)點DS18B20程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年06月19日   【字體:
#include <REGX52.H>
#define uchar unsigned char
sbit DQ=P2^0;       //數(shù)據傳輸線接單片機的相應的引腳
unsigned char tempL=0;    //臨時變量低位(無符號字符變量)
unsigned char tempH=0;   //臨時變量高位
unsigned int tempa;      //溫度值(整型變量)
uchar display_data[4]={0};
void DS18_delay(int useconds)//延時函數(shù)
 {
 int s;
 for (s=0; s<useconds;s++);
}
unsigned char Init_DS18B20(void)
{
 unsigned char x=0;
 
   DQ=0;               //發(fā)送復位脈沖
   DS18_delay(29);           //延時(>480ms)
   DQ=1;             //拉高數(shù)據線
   DS18_delay(3);         //等待(15~60ms) 等待存在脈沖
    x=DQ;  //獲得存在信號(用于判斷是否有器件)
    DS18_delay(25);  // 等待時間隙結束
    return(x);  //返回存在信號,0 = 器件存在, 1 = 無器件
}
ReadOneChar(void)//讀一個字節(jié)
{
 unsigned char i=0;   
 unsigned char dat=0;
    for (i=8;i>0;i--)    
  {
   DQ=1;
      DS18_delay(1);
      DQ=0;      
      dat>>=1;//復合賦值運算,等效dat=dat>>1(dat=dat右移一位后的值)
      DQ=1;
      if(DQ)
      dat|=0x80;
      DS18_delay(4);
  }
    return(dat);
}
WriteOneChar(unsigned char dat)//有參函數(shù),功能是"寫",而寫的內容就是括號內的參數(shù)
{ 
 unsigned char i=0;   
 for(i=8;i>0;i--)   
 {
  DQ=0;     
  DQ=dat&0x01;
  DS18_delay(5);
  DQ=1;
  dat>>=1;//復合賦值運算,等效dat=dat>>1(dat=dat右移一位后的值)
 }
 DS18_delay(4);
}
unsigned int ReadTemperature(void)//返回讀取的溫度.
{  
 Init_DS18B20();   //初始化,調用初始化函數(shù)
 WriteOneChar(0xcc);    //跳過讀序列號的操作,調用寫函數(shù),寫0xcc指令碼(跳過讀序列號)
 WriteOneChar(0x44);   //啟動溫度轉換,調用寫函數(shù),寫0x44指令碼(啟動溫度轉換)
 DS18_delay(125);       //轉換需要一點時間,延時
 Init_DS18B20();    //初始化,調用初始化函數(shù)
 WriteOneChar(0xcc);    //跳過讀序列號的操作,調用寫函數(shù),寫0xcc指令碼(跳過讀序列號?
 WriteOneChar(0xbe);   //調用寫函數(shù),寫0xbe指令碼,讀溫度寄存器(頭兩個值分別為溫度的低位和高位)
 tempL=ReadOneChar();   //讀出溫度的低位LSB
 tempH=ReadOneChar();   //讀出溫度的高位MSB  
   tempa=((tempH*256)+tempL)*6.25;  //溫度轉換,擴大100返回
 //DS18_delay(10);
 //tempa=tempL+tempH;
 return(tempa);//運算結果返回到函數(shù) 
}
void display()//顯示函數(shù)
{
  unsigned char i,j,k=0x80;
  unsigned char code dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39};
  for(i=0;i<4;i++)
   {
    P2=0x0f;
    if(i==1)
     P0=dis[display_data[i]]+0x80;
    else
     P0=dis[display_data[i]];
    P2=k;
    k=k>>1;
    for(j=250;j>0;j--);
   }
   P2=0x0f;
}
void main()
{
 
 unsigned int temp;
 uchar i;
 while(1)
 {
  temp=ReadTemperature(); 
  display_data[0]=temp/1000;
  display_data[1]=(temp/100)%10;
  display_data[2]=(temp/10)%10;
  display_data[3]=temp%10; 
  for(i=0;i<250;i++) display();
 }
}
關閉窗口

相關文章

主站蜘蛛池模板: 一区二区视频在线 | 成人免费在线视频 | 大乳boobs巨大吃奶挤奶 | 91国内精品久久 | 久久久久久久久久性 | 久久久蜜臀国产一区二区 | 精品欧美一区二区中文字幕视频 | 国产精品福利久久久 | 日韩免费高清视频 | 日本一道本 | 亚洲国产电影 | 国产精品久久久久久一区二区三区 | 久久精品亚洲精品国产欧美 | 黄色三级毛片 | 天天艹日日干 | 天堂一区二区三区 | 国产精品夜间视频香蕉 | 国产欧美精品一区二区三区 | 韩日在线观看视频 | 九九热在线精品视频 | 激情一区二区三区 | 久久精品在线 | 欧美激情一区二区三区 | 中文字幕亚洲一区二区va在线 | 国产a区 | 91午夜在线 | 一级片视频免费观看 | 久久久久久亚洲国产精品 | 国产精品久久久久久婷婷天堂 | 久久久视 | 国产精品海角社区在线观看 | 精品久久国产老人久久综合 | 在线观看国产www | 亚洲高清成人在线 | 91最新入口 | 国产日韩精品视频 | 欧美aaaaaaaaaa | 中文字幕欧美一区 | a毛片视频网站 | 久久99成人 | 日韩成人精品在线 |