找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

DS18B20讀數(shù)據(jù)問題,單片機(jī)程序讀不出來

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1063907 發(fā)表于 2023-3-6 11:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
已經(jīng)在邏輯分析儀看到了正常的溫度數(shù)據(jù)反饋,但是程序讀不出來,附上讀溫度函數(shù),讀出高電平

單片機(jī)源程序如下:
  1. uint8_t B20_ReadByte(void)
  2. {
  3. uint8_t i,data=0;
  4. for(i=0;i < 8;i++)     //位計(jì)數(shù)值
  5. {
  6.   data>>=1;      //右移,準(zhǔn)備接受新的數(shù)據(jù)位

  7.   GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPO);

  8.   DS18B20_OUT = 0;//拉低,啟動(dòng)讀數(shù)據(jù)位
  9.   DELAY_US(5);      //等待5微秒
  10.   DS18B20_OUT = 1;  //釋放總線
  11.   
  12.   GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPI);         //配置為輸入,開始讀取數(shù)據(jù)位
  13.   DELAY_US(12);      //等待5微秒
  14.   if(DS18B20_IN)//該位是否為高
  15.   {
  16.    data|=0x80;     //是就將此位置高
  17.   }
  18.   if(!DS18B20_IN)//該位是否為高
  19.   {
  20.    data&=~0x80;     //是就將此位置高
  21.   }
  22.   DELAY_US(48);     //等待50微秒
  23. }
  24. return data;     //將讀到的一個(gè)字節(jié)返回
  25. }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:384109 發(fā)表于 2023-3-6 13:52 | 只看該作者
看代碼,似乎對(duì)數(shù)據(jù)的時(shí)序有誤解
回復(fù)

使用道具 舉報(bào)

板凳
ID:1065373 發(fā)表于 2023-3-6 13:57 | 只看該作者
18b20可以讀出從9位到12位的不同分辨率的值,需要的時(shí)間不一樣,從93ms到750ms,你檢查一下是否給器件讀出數(shù)據(jù)留出足夠的時(shí)間。
回復(fù)

使用道具 舉報(bào)

地板
ID:382454 發(fā)表于 2023-3-10 09:37 | 只看該作者
網(wǎng)上有很多DS18B20的戲動(dòng)程序呀,很多開發(fā)板也有這個(gè)代碼,你可以找找。人家寫的是成功的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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