久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DS18B20溫度探測器終于成功了

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-24 22:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真圖片如下:(當前溫度為13.0000度)



實物圖片(當前溫度為30.5000度)


   經(jīng)過幾個星期的努力終于把DS18B20溫度探測做出來了。前段時間一直不能讀出溫度出來,不知是什么原因,參照別人用匯編寫的程序才明白是自己的復(fù)位程序少了個延時,結(jié)果后面的時序全都出錯了。

程序如下:
#include <reg51.h>
#include<intrins.h>
sbit dq = P1^0;//定義P1.0為DS18B20的數(shù)據(jù)線
sbit P1_1=P1^1;
sbit P2_0 = 0xA0^0;
sbit P2_1 = 0xA0^1;
sbit P2_2 = 0xA0^2;
sbit P2_3 = 0xA0^3;
sbit P2_4 = 0xA0^4;
sbit P2_5 = 0xA0^5;
sbit P2_6 = 0xA0^6;
void delay(unsigned char i);
bit init_18b20();
void w_18b20(unsigned char dat);
unsigned char r_18b20();
void LedDisp();
unsigned char dis[]={0x00,0x00,0x00,0x00,0x00,0x00};//顯示數(shù)據(jù)
unsigned char TemL;
unsigned char TemLH;
unsigned char TemLL;
unsigned char TemH;
unsigned long Tem;
bit TempS;
void main()
{
bit res;
while(1)
{
  do
  {
   res=init_18b20();//復(fù)位并檢測DS18B20是否存在
  }
  while (res);//存在繼續(xù)

  w_18b20(0xCC);//跳過ROM匹配
  w_18b20(0x44);//開始溫度轉(zhuǎn)換

  do//等待溫度轉(zhuǎn)換完成
  {
  dq=0;
  _nop_();
  _nop_();
  _nop_();
  dq=1;
  delay(6);
  TempS=dq;
  delay(22);
  }
  while (!TempS);//溫度轉(zhuǎn)換完成后繼續(xù)
  init_18b20();//復(fù)位
  w_18b20(0xCC);//跳過ROM匹配
  w_18b20(0xBE);//讀取溫度值
  TemL=r_18b20();//低位
  TemH=r_18b20();//高位

  if (TemH&0x80)//把讀取的溫度值進行轉(zhuǎn)換,并存進dis[]中
  {
   TemH=~TemH;
   TemL=(~TemL)+1;
   TempS=1;
  }
  else TempS=0;

  TemLH=TemL>>4;
  TemLL=TemL&0x0F;
  Tem=(TemH*16 + TemLH + TemLL*0.0625)*10000;

  dis[5]=Tem%10;
  Tem=Tem/10;
  dis[4]=Tem%10;
  Tem=Tem/10;
  dis[3]=Tem%10;
  Tem=Tem/10;
  dis[2]=Tem%10;
  Tem=Tem/10;
  dis[1]=Tem%10;
  Tem=Tem/10;
  dis[0]=Tem%10;
  LedDisp();//溫度顯示
}
}
void delay (unsigned char i) //延時程序,12M晶振下延時為:(2i+3)us ,i=0~255
{
while (--i);
}
bit init_18b20() //初始化,init_18b20=0初始化成功,init_18b20=1初始化失敗,可能18b20不存在
{
dq=1;
_nop_();
dq=0;
delay(255);
dq=1;
delay(34);
TempS=dq;
delay(120);
return (TempS);
}
void w_18b20(unsigned char dat) //寫一個字節(jié)到18b20
{
unsigned char i=0;
for(i=8;i>0;i--)
{
  dq=0;
  delay(5);
  dq=dat&0x01;
  delay(22);//延時
  dq=1;
  dat>>=1;
}
}
unsigned char r_18b20()//從18b20讀一個字節(jié)
{
unsigned char i=0;
unsigned char dat=0;
for(i=8;i>0;i--)
{
  dq=0;
  dat>>=1;
  dq=1;
  delay(6);
  if(dq) dat|=0x80;
  delay(22);
}
return(dat);
}
void  LedDisp() //顯示數(shù)字函數(shù)
{
P3=dis[0];
P2_0=0;
delay(200);
P2_0=1;
P3=dis[1];
P2_1=0;
delay(200);
P2_1=1;
P3=dis[2];
P2_2=0;
delay(200);
P2_2=1;
P3=dis[3];
P2_3=0;
delay(200);
P2_3=1;
P3=dis[4];
P2_4=0;
delay(200);
P2_4=1;
P3=dis[5];
P2_5=0;
delay(200);
P2_5=1;
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:191531 發(fā)表于 2017-5-9 16:18 | 只看該作者
好哎,正在做溫度檢測,這個程序正好能用上  謝謝樓主
回復(fù)

使用道具 舉報

板凳
ID:369060 發(fā)表于 2018-8-26 00:17 | 只看該作者
很不錯
回復(fù)

使用道具 舉報

地板
ID:128484 發(fā)表于 2018-8-29 15:22 | 只看該作者
找到了錯誤:
                  自己的復(fù)位程序少了個延時,結(jié)果后面的時序全都出錯了。
是最大的進步。

評分

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

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:8222 發(fā)表于 2022-4-24 10:15 | 只看該作者
這個也太復(fù)雜了吧???
回復(fù)

使用道具 舉報

6#
ID:584814 發(fā)表于 2022-4-25 09:19 | 只看該作者
溫xyz 發(fā)表于 2022-4-24 10:15
這個也太復(fù)雜了吧???

要看年份,現(xiàn)在這樣做的是練技術(shù),當年未必。
回復(fù)

使用道具 舉報

7#
ID:1021547 發(fā)表于 2022-4-29 08:55 來自觸屏版 | 只看該作者
老哥,太感謝了,成功了。我按網(wǎng)上視頻做的都不成功 ,我還以為18b20壞了又買了。問題就是延時。
回復(fù)

使用道具 舉報

8#
ID:516216 發(fā)表于 2022-8-12 13:50 | 只看該作者
長知識了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人三级晚上看 | 操欧美女人 | 久久av片 | 亚洲精品网址 | 免费福利在线观看 | 欧美成人一级 | 亚州一区二区 | 免费网站观看www在线观看 | 国产乱轮视频 | 国产一区2区 | 午夜精品免费 | 日韩一区二区三区在线 | 中文字幕在线一区二区三区 | 久久福利视频导航 | 天天干天天弄 | 91亚洲视频| 黄色录像大片 | 国产精品久久久久久久久借妻 | 中文字幕在线观看网址 | 亚洲激情成人 | 亚洲激情综合网 | 在线免费观看黄色片 | 亚洲一区av | 伊人久久影院 | 97视频免费在线观看 | 亚洲小视频在线观看 | 成人av在线看 | 亚洲免费看片 | 亚洲第一色 | 欧美69视频| 在线中文av| 欧美成人激情 | 久久精选视频 | 日本免费黄色网址 | 国产欧美日韩在线观看 | 深夜免费福利 | 亚洲精品久久久蜜桃 | 欧美精品二区 | 国产无精乱码一区二区三区 | 久久黄色免费视频 | 免费一区二区三区 |