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

這是我在16F877,18F1320,18F1220上通過(guò)的18B20程序,18B20主要是延時(shí)問(wèn)題,這個(gè)解決了,什么都可以通過(guò)。

[原作者沒(méi)有提供所使用的編譯器,由于是C程序,所以大同小異,建議使用時(shí),確認(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_OUTPUTvoid delay(unint x){        unint d;        d=x;        while(--d)        {;}}bit reset(void)//初始化18B20 {        static bit presence;//定義一個(gè)應(yīng)答信號(hào)             DQ_LOW();        delay(70);//置總線為低電平并保持至少480us                 DQ_HIGH();//等電阻拉高總線并保持15-60us                 delay(5);        presence=DQ;//接受應(yīng)答信號(hào)         delay(20);//延時(shí)60-240us                 return(presence);//返回應(yīng)答信號(hào) }//***************  讀一位函數(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);}//*********************寫(xiě)一位函數(shù)****************// void write_bit(uch bitval){        DQ_LOW();        delay(1);                if (bitval==1)        {                DQ_HIGH();                        }                delay(3);        DQ_HIGH();}//**************  從18B20中讀一個(gè)字節(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中 寫(xiě)一個(gè)字節(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)寫(xiě)位函數(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);//延時(shí)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單片機(jī)子程序-單字節(jié) 雙字節(jié)的加法
  • 下一篇: 適合學(xué)PIC入門(mén)的編程+試驗(yàn)電路
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

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

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

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