吴忠躺衫网络科技有限公司

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子元器件>傳感器>

ds18b20測溫程序,ds18b20溫度測量c51單片機程序

2017年11月06日 16:42 網絡整理 作者: 用戶評論(0

  DS18B20是常用的數字溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。

  51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8004單片機,后來隨著Flash rom技術的發展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業測控系統之中。很多公司都有51系列的兼容機型推出,今后很長的一段時間內將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。接下來我們一起來了解一下ds18b20溫度測量c51單片機程序。

  

  ds18b20溫度測量c51單片機程序

  #include《reg51.h》

  #define uchar unsigned char

  #define uint unsigned int

  sbit wela=P2^7;

  sbit dula=P2^6;

  sbit DS=P2^2;

  uchar A;

  uint dian;

  uchar smg_change[6]={10,10,10,10,10,10};

  unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

  unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

  void delay(unsigned int a)

  {

  while(a--);

  }

  void init_tempr()

  {

  uchar n;

  DS=1;

  delay(8);

  DS=0;

  delay(80); //500us

  DS=1;

  delay(8);

  n=DS;

  delay(4);

  }

  void write_byte(uchar dat)

  {

  uchar i;

  for(i=0;i《8;i++)

  {

  DS=0;

  DS=dat&0x01;

  delay(4);

  DS=1;

  dat》》=1;

  }

  delay(4);

  }

  uchar read_byte(void)

  {

  uchar i,value;

  for(i=0;i《8;i++)

  {

  DS=0;

  value》》=1;

  DS=1;

  if(DS)

  value|=0x80;

  delay(4);

  }

  return value;

  }

  uchar readtempr(void)

  {

  uint temp, a,b;

  init_tempr();

  write_byte(0xcc);

  write_byte(0x44);

  delay(300);

  init_tempr();

  write_byte(0xcc);

  write_byte(0xbe);

  a=read_byte();

  b=read_byte();

  temp=b;

  temp《《=4;

  temp+=(a&0xf0)》》4;

  dian=(a&0x0f)*10*6/10;

  return temp;

  }

  void display()

  {

  uchar i;

  for(i=0;i《6;i++)

  {

  P0=0X00;

  dula=1;

  dula=0;

  P0=weima[i];

  wela=1;

  wela=0;

  P0=duanma[smg_change[i]];

  dula=1;

  dula=0;

  delay(200);

  }

  P0=weima[1];

  wela=1;

  wela=0;

  P0=duanma[smg_change[1]]|0x80;

  dula=1;

  dula=0;

  delay(200);

  P0=0X00;

  dula=1;

  dula=0;

  }

  void dis_deal()

  {

  smg_change[0]=A/10;

  smg_change[1]= A%10;

  smg_change[2]=dian/10 ;

  smg_change[3]=dian%10 ;

  }

  void main()

  {

  while(1)

  {

  A=readtempr();

  dis_deal();

  display();

  }

  }

非常好我支持^.^

(1) 25%

不好我反對

(3) 75%

( 發表人:陳翠 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      嘉黎县| 百家乐官网百家乐官网视频| 太阳城百家乐官网杀祖玛| 百家乐投注平台| 太阳城申博| 百家乐官网账号变动原因| 百家乐为什么庄5| 百家乐投注平台| 大发888官方指定| 百家乐官网游戏世界视频| 百家乐已破解的书籍| 58娱乐城开户| 网上百家乐官网骗钱| 王子百家乐的玩法技巧和规则| 澳门百家乐官网心德| 百家乐概率计算过程| 瑞博| 百家乐官网娱乐网会员注册 | 超级皇冠网分布图| 百家乐官网园首选去澳| 德州扑克入门| 多伦多百家乐官网的玩法技巧和规则 | 百家乐官网冼牌机| 德州扑克怎么玩| 金彩百家乐官网的玩法技巧和规则 | 百家乐娱乐城彩金| 澳门网上| 娱乐城百家乐技巧| 皇冠备用投注网| 海立方百家乐赢钱| 乐众国际娱乐| A8百家乐现金网| 玩机器百家乐官网心得| 百家乐在线娱乐场| 澳门百家乐官网技巧| 91百家乐的玩法技巧和规则| 博士百家乐官网现金网| 百家乐揽法大全| 百人百家乐官网软件供应| 大发888怎么代充| 百家乐官网投注|