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

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

QQ登錄

只需一步,快速開(kāi)始

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

AVR16單片機(jī)讀取DS18B20的測(cè)量溫度出現(xiàn)的問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
附上關(guān)于DS18B20操作的部分源碼讀到temp是錯(cuò)誤的!!!
然后我單獨(dú)檢驗(yàn)讀到的MSB和LSB的值,結(jié)果竟然是一樣的!!!!
搞了好久還沒(méi)有解決,只能請(qǐng)教大佬們了
///////////////////////////////////////
AVR16
8M
//////////////////////////////////////
#include<iom16v.h>
#include"lcd1602.h"

#define DQ_OUT DDRA|=0X80
#define DQ_IN DDRA&=~0X80
#define DQ_ON PORTA|=0X80
#define DQ_OFF PORTA&=~0X80

void IO_init(void);
char DS18_init(void);
void Write_cmd(uchar cmd);
uchar Read_data(void);

const uchar num[]={"0123456789"};

void delay_us(uint us)//微妙延時(shí)
{
do{
us--;
}while(us>1);
}

void delay_ms(uint ms)//毫秒延時(shí)
{
while(ms != 0)
{
delay_us(999);
ms--;
}
}

void IO_init(void)//初始化lcd1602與avr的接口
{
DDRC = 0XFF;
PORTC = 0XFF;
DDRD |= (1<<7)|(1<<6)|(1<<5);
PORTD |= (1<<7)|(1<<6)|(1<<5);
}

char DS18_init(void)
{
char flag;
DQ_OUT;//輸出
DQ_ON;//1
DQ_OFF;//0
delay_us(550);//>480us
DQ_ON;//1
DQ_IN;//輸入
delay_us(68);
if(PINA & 0X80) flag = 0;
else flag = 1;//初始化成功
delay_us(420);
return flag;
}

void Write_cmd(uchar cmd)//寫一個(gè)字節(jié)
{
char i,flag=0;
DQ_OUT;
DQ_ON;
for(i=0;i<8;i++)
{
flag = cmd & 0X01;
if(flag)
{
DQ_OFF;
delay_us(10);
DQ_ON;
delay_us(50);
}
else
{
DQ_OFF;
delay_us(60);
}
DQ_ON;
cmd>>=1;
}
}

uchar Read_data(void)//讀一個(gè)字節(jié)
{
uchar i,flag=0,data=0;
DQ_OUT;
DQ_ON;
for(i=0;i<8;i++)
{
data>>=1;
DQ_OFF;
delay_us(5);
DQ_IN;
DQ_ON;
delay_us(5);
flag = PINA & 0X80;
delay_us(50);
if(flag) data |= 0X80;
DQ_OUT;
DQ_ON;
}
return data;
}

void Changtemp(void)//溫度轉(zhuǎn)換
{
DS18_init();
Write_cmd(0xcc);
Write_cmd(0x44);
delay_ms(800);
}

void Readtemp(void)//讀取溫度
{
DS18_init();
Write_cmd(0xcc);
Write_cmd(0xbe);
}

uchar ReadDS18temp(void)
{
uchar tmh = 0, tml = 0;
int temp = 0;
Changtemp();
Readtemp();
tml = Read_data();//先接收低位
tmh = Read_data();//再接收高位
//這里讀到的高位和低位是一樣的
temp = tmh;
temp <<= 8;
temp |= tml;
return temp;
}
//main省略




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

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2021-9-14 20:31 | 只看該作者
你初始化的判斷, 有點(diǎn)問(wèn)題……
DQ_IN;//輸入
delay_us(68);
if(PINA & 0X80) flag = 0;
else flag = 1;//初始化成功
delay_us(420);
return flag;
你沒(méi)有去讀 18B20 的低點(diǎn)平……,你怎么確認(rèn)初始化成功了? 也許壓根沒(méi)有拉低過(guò)呢?要先讀到低電平然后他又變高電平,才是他告訴你,初始化已經(jīng)成功,你傻等60微妙直接讀到高電平?jīng)]用的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:962686 發(fā)表于 2021-9-15 08:02 | 只看該作者
188610329 發(fā)表于 2021-9-14 20:31
你初始化的判斷, 有點(diǎn)問(wèn)題……
DQ_IN;//輸入
delay_us(68);

我讀了啊
if(PINA&0x80)//68us后還是高電平的話沒(méi)有初始成功返回0
flag = 0;
else flag = 1;//若是低電平,成功,返回1
//如果延時(shí)沒(méi)有太大誤差那么第一次拉低電平>480us再次拉高電平的68us后這段時(shí)間是DS18B20返回初始信息的時(shí)間。實(shí)際我也單獨(dú)測(cè)試了初始化函數(shù),確實(shí)返回成功標(biāo)志flag = 1;
//是不是我哪里了解錯(cuò)了
回復(fù)

使用道具 舉報(bào)

地板
ID:962686 發(fā)表于 2021-9-15 22:59 | 只看該作者
好久了還是卡在讀到的高位和低位數(shù)據(jù)是一樣的,在25°C時(shí)MSB是144,LSB也是
回復(fù)

使用道具 舉報(bào)

5#
ID:624769 發(fā)表于 2021-9-15 23:43 | 只看該作者
wzl570 發(fā)表于 2021-9-15 08:02
我讀了啊
if(PINA&0x80)//68us后還是高電平的話沒(méi)有初始成功返回0
flag = 0;

不是啊,你仔細(xì)看看你的代碼:

DQ_ON;//1
DQ_IN;//輸入
delay_us(68);
if(PINA & 0X80) flag = 0;
else flag = 1;//初始化成功
delay_us(420);
return flag;

你是直接 68 us 后 判斷,是不是高電平, 你壓根沒(méi)有管, 68us 之前,有沒(méi)有過(guò) 低電平。換句話說(shuō),就算前面一直是高電平,你也是判斷的初始化成功, 而初始化成功的關(guān)鍵是, 68us 之前,必須出現(xiàn)過(guò)低電平,這么說(shuō)你能理解么?
所以,你的判斷邏輯 應(yīng)該是, 拉高電平后,1us 之后 等待低電平,接受到低電平后,計(jì)時(shí)60us 后再判斷是否變高電平,是的話,才算初始化成功。
回復(fù)

使用道具 舉報(bào)

6#
ID:962686 發(fā)表于 2021-9-19 10:47 | 只看該作者
188610329 發(fā)表于 2021-9-15 23:43
不是啊,你仔細(xì)看看你的代碼:

DQ_ON;//1

有點(diǎn)不懂,給ds18一個(gè)480-960us低電平后拉高電平之后60us-75us(15-75,15-255,60-120,60-300的交集)不就是ds18返回初始化成功的信號(hào)時(shí)間段嗎(前提延時(shí)誤差不大)。請(qǐng)問(wèn)大佬能不能給個(gè)代碼參考。

4-2.png (222.46 KB, 下載次數(shù): 107)

4-2.png
回復(fù)

使用道具 舉報(bào)

7#
ID:419968 發(fā)表于 2021-9-20 18:28 | 只看該作者
主機(jī)拉低總線480-960us后釋放總線,由上拉電阻拉高總線,過(guò)15-60us 18b20會(huì)拉低總行
所以延時(shí)68us后等待18b20拉低,
回復(fù)

使用道具 舉報(bào)

8#
ID:382454 發(fā)表于 2021-10-6 22:15 來(lái)自手機(jī) | 只看該作者
其實(shí)就是瞠序和判斷的問(wèn)題,我發(fā)過(guò)一個(gè)類似的貼,你找找。
回復(fù)

使用道具 舉報(bào)

9#
ID:382454 發(fā)表于 2021-10-8 11:23 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-139513-1.html
這個(gè)貼子,你看看。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲最色网站 | 欧美日韩在线视频一区 | 男女一区二区三区 | 亚洲精品片 | 农村真人裸体丰满少妇毛片 | 福利视频一二区 | 97色在线观看免费视频 | 久久久久综合 | 亚洲福利片 | 久国久产久精永久网页 | 888久久久 | 青娱乐av | 高清人人天天夜夜曰狠狠狠狠 | 国产一区二区在线播放视频 | 成人教育av | 亚洲成人一区 | 精品久久中文字幕 | 免费在线观看成人 | 午夜视频在线观看网站 | 欧美国产亚洲一区二区 | 成人在线视频网站 | 一区视频| 久久久蜜桃 | 日韩欧美在线视频 | 欧美一区二区三区高清视频 | 日韩视频在线免费观看 | 日韩在线电影 | 久久久久国产精品 | 日本又色又爽又黄的大片 | 国产成人精品a视频 | 九九福利 | 黄色日本视频 | 剑来高清在线观看 | 午夜视频在线观看网站 | 国产午夜精品一区二区三区嫩草 | 91一区二区三区 | 一区| 欧美不卡一区二区三区 | 国产成人a亚洲精品 | 久久久xxx | 日本久草 |