機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
18B20(PIC測溫程序)
18B20(PIC測溫程序)
 更新時間:2008-7-26 16:11:10  點擊數(shù):4
【字體: 字體顏色

[原作者沒有提供所使用的編譯器,由于是C程序,所以大同小異,建議使用時,確認(rèn)是否與你的編譯器兼容]

# include <pic18f1220.h>

# define uch unsigned char

# define unint unsigned int

# define DQ RB3//定義18B20數(shù)據(jù)端口

# define DQ_DIR TRISB3//定義18B20D口方向寄存器

# define W1_INPUT 1

# define W1_OUTPUT 0

# define FALSE 0

# define TRUE !FALSE

# define DQ_HIGH() DQ_DIR = W1_INPUT

# define DQ_LOW() DQ = 0; DQ_DIR = W1_OUTPUT

void delay(unint x)

{

unint d;

d=x;

while(--d)

{;}

}

bit reset(void)//初始化18B20

{

static bit presence;//定義一個應(yīng)答信號

DQ_LOW();

delay(70);//置總線為低電平并保持至少480us

DQ_HIGH();//等電阻拉高總線并保持15-60us

delay(5);

presence=DQ;//接受應(yīng)答信號

delay(20);//延時60-240us

return(presence);//返回應(yīng)答信號

}

//*************** 讀一位函數(shù)******************//

bit read_bit(void)

{

static bit i;

DQ_LOW();

DQ_LOW();

DQ_HIGH();

asm("nop");

asm("nop");

asm("nop");

i=DQ;

delay(3);

return(i);

}

//*********************寫一位函數(shù)****************//

void write_bit(uch bitval)

{

DQ_LOW();

delay(1);

if (bitval==1)

{

DQ_HIGH();

}

delay(3);

DQ_HIGH();

}

//************** 從18B20中讀一個字節(jié)**************//

uch read_byte(void)

{

uch i;

uch j;

uch value=0;

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

{

j=read_bit();//調(diào)讀位函數(shù)

if (j)//如果是 1 置1

{

value|=(0x01<<i);//先讀低位,再讀高位

asm("nop");

asm("nop");

asm("nop");

}

}//否則置 0

return(value);

}

//*********************向18B20中 寫一個字節(jié)**************//

void write_byte(uch val)

{

uch i;

uch temp;

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

{

temp=val>>i;

temp&=0x01;

write_bit(temp);//調(diào)寫位函數(shù)

}

asm("nop");

asm("nop");

asm("nop");

}

main()

{

uch teml,temh;

GIE=0;

OSCCON=0X6E;//這是18F1320的頻率選擇寄存器

ADCON1=0X7F;

do{

;

}while (reset()) ;//復(fù)位等待從機(jī)應(yīng)答

write_byte(0XCC);//忽略ROM匹配

write_byte(0X44);//發(fā)送溫度轉(zhuǎn)化命令

delay(25000);//延時100-300us

do

{

;

}while( reset());//再次復(fù)位,等待從機(jī)應(yīng)答

write_byte(0XCC);//忽略ROM匹配

write_byte(0XBE);//發(fā)送讀溫度命令

teml =read_byte();//讀出溫度低8

temh=read_byte();//讀出溫度高8位

DQ_HIGH();//釋放總線

}

  • 上一篇: PIC在電話遠(yuǎn)程控制器中的低功耗設(shè)計一
  • 下一篇: PIC單片機(jī)循環(huán)應(yīng)用程序的實例
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費鏈接

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

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

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