機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
DS18B20測量溫度C語言程序1
DS18B20測量溫度C語言程序1
 更新時間:2008-7-27 16:09:37  點擊數(shù):2
【字體: 字體顏色
#include"reg51.h"
sfr WDTRST = 0xA6;
sbit DQ =P2^2;   //定義通信端口
//延時函數(shù)
void delay(unsigned int i)
{
     while(i--);
     WDTRST=0x1E;
     WDTRST=0xE1;//喂狗指令,晶振為12M時每16個毫秒需喂狗一次
}
//初始化函數(shù)
Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;    //DQ復位
delay(8);  //稍做延時
DQ = 0;    //單片機將DQ拉低
delay(80); //精確延時 大于 480us
DQ = 1;    //拉高總線
delay(14);
x=DQ;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
delay(20);
}
//讀一個字節(jié)
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
  DQ = 0; // 給脈沖信號
  dat>>=1;
  DQ = 1; // 給脈沖信號
  if(DQ)
   dat|=0x80;
  delay(4);
}
return(dat);
}
//寫一個字節(jié)
WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
  DQ = 0;
  DQ = dat&0x01;
  delay(5);
  DQ = 1;
  dat>>=1;
}
delay(4);
}
//讀取溫度
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned char t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
a=ReadOneChar();   //讀取溫度值低位
b=ReadOneChar();   //讀取溫度值高位
a=a>>4;            //低位右移4位,舍棄小數(shù)部分
t=b<<4;            //高位左移4位,舍棄符號位
t=t|a;            
return(t);
}

作者:61.175.228.*       2007-6-16 10:15:35    |  發(fā)表評論    
 
2回復:[分享]DS18B20測量溫度C語言程序
發(fā)個匯編語言寫的程序
  ORG 00H
MAIN:
   MOV 30H,#00H
   MOV 31H,#00H
   LCALL RESET   ;復位
   MOV A,#0CCH   ;跳過ROM
   LCALL WRITE
   MOV A,#44H    ;啟動轉(zhuǎn)換
   LCALL WRITE
   ;延時
    MOV R7,#100
D1: MOV R4,#20
D2: MOV R5,#248
    DJNZ R5,$
    DJNZ R4,D2
    DJNZ R7,D1

   LCALL RESET   ;復位
   MOV A,#0CCH   ;跳過ROM
   LCALL WRITE
   MOV A,#0BEH    ;啟動轉(zhuǎn)換
   LCALL WRITE
   LCALL READ
   MOV A,3DH
   MOV 30H,A
   LCALL READ
   MOV A,3DH
   MOV 31H,A
   ;------------------------
   MOV 36H,#00H
   MOV 37H,#00H
   MOV 38H,#00H
   MOV 39H,#00H
   ;------------------
   ANL A,#00000111B
    MOV 36H,A
    MOV A,30H
    SWAP A
    ANL A,#00001111B
    MOV 37H,A
    MOV A,36H
    SWAP A
    MOV 41H,A
    MOV A,37H
    ADD A,41H
    MOV 41H,A
    MOV B,#10
    DIV AB
    MOV 46H,A
    MOV 47H,B
  
  
  
    MOV A,30H
    ANL A,#00001111B
    MOV 39H,A
    JNB ACC.3,JIN
    MOV A,38H
    ADD A,#50H
    MOV 38H,A
JIN:MOV A,39H
    JNB ACC.2,JIN1
     MOV A,38H
    ADD A,#25H
    MOV 38H,A
JIN1:MOV A,39H
     JNB ACC.1,JIN2
      MOV A,38H
    ADD A,#12H
    MOV 38H,A
JIN2: MOV A,39H
     JNB ACC.0,JIN3
      MOV A,38H
    ADD A,#06H
    MOV 38H,A

JIN3:
  MOV A,38H
  SWAP A
  ANL A,#00001111B
  MOV 38H,A
  SJMP $
   ;數(shù)據(jù)處理
RESET:  NOP
L0:     CLR     P1.4

        MOV     R2,#200
L1:     NOP
        DJNZ    R2,L1
        SETB    p1.4
        MOV     R2,#30
L4:     DJNZ    R2,L4
        CLR     C
        ORL     C,p1.4
        JC      L3
        MOV     R6,#80
L5:     ORL     C,p1.4
        JC      L3
        DJNZ    R6,L5
        SJMP    L0
L3:     MOV     R2,#250
L2:     DJNZ    R2,L2
        RET


WRITE:  MOV     R3,#8
WR1:    SETB    p1.4
        MOV     R4,#8
        RRC     A
        CLR     p1.4
WR2:    DJNZ    R4,WR2
        MOV     p1.4,C
        MOV     R4,#20
WR3:    DJNZ    R4,WR3
        DJNZ    R3,WR1
        SETB    p1.4
        RET


READ:   MOV     R6,#8
RE1:    CLR     p1.4
        MOV     R4,#6
        NOP
        SETB    p1.4
RE2:    DJNZ    R4,RE2
        MOV     C,p1.4
        RRC     A
        MOV     R5,#30
RE3:    DJNZ    R5,RE3
        DJNZ    R6,RE1
        MOV     3DH,A
        SETB    p1.4
        RET

END

  • 上一篇: C 程序的常用算法
  • 下一篇: 關(guān)于指針函數(shù)的范例
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1