欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3969|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

C8051F410驅(qū)動(dòng)DS18B20源碼分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:56490 發(fā)表于 2018-10-13 13:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//DS18B20驅(qū)動(dòng)程序
//溫度范圍:-55-125攝氏度
//C8051F410,外部晶振(22.1184MHz),DS18B20上拉4.7K,1腳GND,2腳DQ,3腳VCC。
//功能:調(diào)用ds18b20_get_tem()程序,讀取溫度整數(shù),小數(shù)值及符號(hào)位
//格式:溫度整數(shù)為10進(jìn)制1至125,溫度小數(shù)為十進(jìn)制0至9,符號(hào)為位狀態(tài)0或1。
//變量:溫度整數(shù)dswendu,溫度小數(shù)dsxiao,符號(hào)DSWDFH。
#include "intrins.h" //_nop_();延時(shí)函數(shù)用  
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P1^5;
//#define DQHIN (P1MDOUT&=~0x20;P0 |= 0x01;)  
//#define DQ RC1
//#define DQH TRISC1=1;//DS18B20定義為高電平并設(shè)置為輸入端
//#define DQL TRISC1=0;//DS18B20定義為低電平并設(shè)置為輸出端
uchar  dswendu,dsxiao;
bit DSWDFH;
void delay_18b20(uint x) //18B20延時(shí)程序
{while(x--);}
void ds18b20_reset()//18B20復(fù)位程序
{//C8051F410,22.1184外部晶振
uchar st=1;//狀態(tài)位置1
DQ=1;//總線高
while(st)
     {
      DQ=0;
      delay_18b20(600); //需要延時(shí)480us-960us
      DQ=1;
      delay_18b20(50); //需要延時(shí)15us-60us
      if(DQ==1)//等待時(shí)間約為240us-420us
       st=1;
      else
       st=0;        
     }
DQ=1;
delay_18b20(300);//100需要延時(shí)60us-240us

}
void ds18b20_write_byte(uchar dat)//18B20寫一個(gè)字節(jié)
{
    unsigned char i=0;
for (i=8; i>0; i--)
    {
       DQ = 0;
       DQ = dat&0x01;
       delay_18b20(100);
       DQ = 1;
       dat>>=1;
    }
}
uchar ds18b20_read_byte()//18B20讀一個(gè)字節(jié)
{
    unsigned char i=0;
   unsigned char dat = 0;
  for (i=8;i>0;i--)
    {
      DQ = 0;     // 給脈沖信號(hào)
      dat>>=1;
      DQ = 1;     // 給脈沖信號(hào)
      if(DQ)
      dat|=0x80;
      delay_18b20(80);
    }
     return(dat);
}
void ds18b20_get_tem()  //讀出溫度并轉(zhuǎn)換成顯示BCD碼
{
uchar low,high,huhao;
uint dstemp,xs;
ds18b20_reset(); //復(fù)位
ds18b20_write_byte(0xCC);//跳過ROM
ds18b20_write_byte(0x44);//溫度轉(zhuǎn)換
ds18b20_reset();//18B20復(fù)位程序
ds18b20_write_byte(0xCC);//跳過ROM
ds18b20_write_byte(0xBE);//發(fā)送讀取命令   
low=ds18b20_read_byte();  
high=ds18b20_read_byte();
huhao=high&0xf8;     
dstemp=high;
dstemp<<=8;   
dstemp=dstemp|low;
if(huhao==0xf8) //符號(hào)判斷
      {
         dstemp=~dstemp+1;
            DSWDFH=1;
      }
    else DSWDFH=0;  
xs=(dstemp&0x0f)*625;
    dsxiao=xs/1000%10;//計(jì)算出小數(shù)位。
dswendu=dstemp>>4;
    dswendu=dswendu&0x7f;//計(jì)算出溫度值
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-10-13 14:59 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

板凳
ID:56490 發(fā)表于 2018-10-13 21:44 | 只看該作者
版主給我了很大的動(dòng)力!DS18B20單總線電路也沒什么可畫的,主要是程序運(yùn)行時(shí)間。再者自已要搬磚也沒太多時(shí)間。版主諒解!
回復(fù)

使用道具 舉報(bào)

地板
ID:234560 發(fā)表于 2018-10-15 20:33 | 只看該作者
這種搞法業(yè)余玩玩還可以,復(fù)雜的項(xiàng)目里用不了

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:56490 發(fā)表于 2018-10-26 19:41 | 只看該作者
請問如果專業(yè)的有什么區(qū)別?本人小白。謝謝!
回復(fù)

使用道具 舉報(bào)

6#
ID:234560 發(fā)表于 2018-10-26 21:21 | 只看該作者
ch5320 發(fā)表于 2018-10-26 19:41
請問如果專業(yè)的有什么區(qū)別?本人小白。謝謝!

DS18B20是靠高低電平的不同時(shí)長區(qū)分0和1的,樓主里用了死循環(huán)的方式做延時(shí),這樣做在簡單的系統(tǒng)里沒問題。
但一個(gè)真正的項(xiàng)目中往往有很多中斷需要處理,這樣就有兩個(gè)問題:
1. 如果延時(shí)期間允許中斷,則在中斷頻繁時(shí)實(shí)際的延時(shí)就會(huì)比預(yù)計(jì)的長,導(dǎo)致0和1誤判。
2. 如果延時(shí)期間不允許中斷,則又會(huì)造成中斷不能及時(shí)相應(yīng),可能會(huì)丟失重要的數(shù)據(jù),或者使系統(tǒng)反應(yīng)變得十分遲鈍。
回復(fù)

使用道具 舉報(bào)

7#
ID:56490 發(fā)表于 2018-10-28 11:02 | 只看該作者
九死還魂草 發(fā)表于 2018-10-26 21:21
DS18B20是靠高低電平的不同時(shí)長區(qū)分0和1的,樓主里用了死循環(huán)的方式做延時(shí),這樣做在簡單的系統(tǒng)里沒問題 ...

ds18b20這個(gè)延時(shí)的確是個(gè)問題,但做項(xiàng)目用到18B20一般都會(huì)單獨(dú)設(shè)計(jì)芯片做采集。不會(huì)用主CPU來處理18B20,特別是多路采集。
回復(fù)

使用道具 舉報(bào)

8#
ID:234560 發(fā)表于 2018-11-7 16:20 | 只看該作者
ch5320 發(fā)表于 2018-10-28 11:02
ds18b20這個(gè)延時(shí)的確是個(gè)問題,但做項(xiàng)目用到18B20一般都會(huì)單獨(dú)設(shè)計(jì)芯片做采集。不會(huì)用主CPU來處理18B20, ...

一個(gè)18B20多少錢,一個(gè)MCU多少錢,再加一個(gè)芯片怎么也得幾塊錢吧,這樣做成本上沒有可行性,除非是壟斷行業(yè),感覺樓主沒做過真正商用的項(xiàng)目,太想當(dāng)然。
回復(fù)

使用道具 舉報(bào)

9#
ID:56490 發(fā)表于 2018-11-10 12:04 | 只看該作者
的確是沒做過大的商用項(xiàng)目,現(xiàn)在這點(diǎn)知識(shí)還做不了大的項(xiàng)目,經(jīng)后要和各位高手好好學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表