久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

DS18b20讀寫子程序解析

 fym0121 2010-11-28

~~~~ 經(jīng)過單線接口訪問 DS1820 的協(xié)議 如下~~
   1. 初始化
   2. ROM 操作命令
   3. 存貯器操作命令
   4. 處理/數(shù)據(jù)

首先,,我們對18B20進(jìn)行操作,我們要對其初始化,

初始化:單線總線上的所有處理均從初始化序列開始 初始化序列包括總線主機(jī)發(fā)出一復(fù)位脈沖 接著
由從屬器件送出存在脈沖

 

初始化子程序:
Init_DS18B20(void)
{
unsigned char x=0;定義一個變量判斷是否初始化程序
DQ=1; //DQ先置高
delay(8); //稍延時
DQ=0; //發(fā)送復(fù)位脈沖
delay(80); //延時(>480us)                                                             
DQ=1; //拉高數(shù)據(jù)線
delay(5); //等待(15~60us)
x=DQ; //用X的值來判斷初始化有沒有成功,,18B20存在的話X=0,,否則X=1
delay(20);
}

ROM操作命令:

寫操作:
當(dāng)主機(jī)總線 t o 時刻從高拉至低電平時 就產(chǎn)生寫時間隙 見圖


從 to 時刻開始 15us 之內(nèi)應(yīng)將所需寫的位送到總線上 DSl820 在 t 后15-60us間對總線
采樣 若低電平 寫入的位是 0 見圖 2 25 3 若高電平 寫入的位是 1 見圖 2 25 4
連續(xù)寫 2 位間的間隙應(yīng)大于 1us 即必須有1us以上的高電平恢復(fù)期。

寫數(shù)據(jù)子程序

WriteOneChar(unsigned char dat)    //unsigned char dat 定義存控制命令,;以下對命令操作
{

unsigned char i=0;

for(i=8;i>0;i--) //因為寫一個字節(jié) ,,所以要循環(huán)八次

{

    DQ=1;            //置高電平
   _nop_();       //在開始另一個寫周期前必須有1us以上的高電平恢復(fù)期。
   DQ=0;            //進(jìn)入寫開始
   _nop_();   

DQ=dat&0x01; //在15~60us之間對數(shù)據(jù)線進(jìn)行采樣,,如果是高電平就寫1,,低寫0。
   delay(5);        //向1-Wire總線寫1bit至少需要60μs
    dat>>=1;        //因為寫數(shù)據(jù)是從低位到高位,,高位逐位的往右移
}
}


讀操作
     見圖2 25 5 主機(jī)總線 to 時刻從高拉至低電平時 總線只須保持低電平 l 7ts 之后
在 t1 時刻將總線拉高 產(chǎn)生讀時間隙 讀時間隙在 t1 時刻后 t 2 時刻前有效 t z 距 to 為15
捍 s 也就是說 t z 時刻前主機(jī)必須完成讀位 并在 t o 后的60尸 s 一 120 fzs 內(nèi)釋放總線
讀位子程序(讀得的位到 C 中)  

 

void ReadOneChar() //主機(jī)數(shù)據(jù)線先從高拉至低電平1us以上,,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀信號
{
unsigned char i=0; //每個讀周期最短的持續(xù)時間為60us,,各個讀周期之間必須有1us以上的高電平恢復(fù)期
unsigned char dat=0; //首先初始化dat
for (i=8;i>0;i--) //一個字節(jié)有8位 ,,所以循環(huán)八次
{
DQ=1;
delay(1);
DQ=0;      //從高拉至低電平時 總線只須保持低電平 l 7ts
dat>>=1;   // 讀出來的數(shù)據(jù)要一位一位的移進(jìn)去

DQ=1;      //將總線拉高 產(chǎn)生讀時間隙
_nop_();
if(DQ)       //判斷DQ是1還是0
dat|=0x80; //是1的話dat就高位1或,因為讀數(shù)據(jù)是從低位讀取 delay(4);
}
return(dat); //返回讀出來的一個字節(jié)數(shù)據(jù)
}
只要根據(jù)時序來辦事,,就簡單多了,,然后在根據(jù)讀出溫度的過程來,就可以達(dá)到你想要的結(jié)果了,,做的不太好,,多多指教,謝謝~,!


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多