亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 單個或多個ds1820溫度讀取c51源程序.txt

?? 單個或多個ds1820溫度讀取c51源程序
?? TXT
字號:

單個或多個ds1820溫度讀取c51源程序

//國內網站上讀取DS1820的C51源程序不多,基本上都是那幾篇,我試過都不行
//后來我買了本書,按照上面照抄,連編譯都通不過,后來經過多次測試,終于可以順利讀取了
//若有問題可與我聯系jqdz2000@163.com
// 前面是單個DS1820溫度讀取程序,后面是四個DS1820溫度讀取程序。
//推薦用11.0592Mhz晶振,經試驗用12M到24M都可以,6M就不行了。

#include <reg51.h>
#define uchar unsigned char 

sbit TMDAT = P3^4; //根據實實際情況設定
uchar TMP; //讀取后溫度值存于TMP中,將其除以2即可得出實際溫度;
uchar f; //結果是否為負溫,“0”為正溫,“1”為負溫。 

////////////////////////////////////////延時部分//////////////////////////
void dmsec (unsigned int count) //
{ //
unsigned int i; // 
while (count) //
{ //
i = 115; //
while (i>0) i--; //
count--; //
} //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 發送復位//////////////////////////
void tmreset (void) //
{ //
unsigned int i; //
TMDAT = 0; //
i = 103; //
while (i>0) i--; // 延時 900 uS(11.0592Mhz時) //
TMDAT = 1; //
i = 4; //
while (i>0) i--; //
} //
//////////////////////////////////////////////////////////////////////////


//判斷DS1820是否存在的子程序。最好不要用,因為當器件不存在時將會進入死循環

////////////////////////////////////// 等待存在脈沖///////////////////////
void tmpre (void) //判斷器件是否存在 //
{ //
unsigned int i; //
while (TMDAT); //
while (~TMDAT); //
i = 4; while (i>0) i--; //
} //
//////////////////////////////////////////////////////////////////////////


///////////////////////////////////// 讀一位//////////////////////////////
bit tmrbit (void) //
{ // 
unsigned int i; //
bit dat; //
TMDAT = 0; i++; //
TMDAT = 1; i++; i++; //微量延時 //
dat = TMDAT; //
i = 8; while (i>0) i--; // 延時 //
return (dat); //
} //
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////// 讀一個字節///////////////////////
unsigned char tmrbyte (void) //
{ //
unsigned char i,j,dat; //
dat = 0; //
for (i=1;i<=8;i++) //
{ //
j = tmrbit (); //
dat = (j << 7) | (dat >> 1); //
} //
return (dat); //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 寫一個字節////////////////////////
void tmwbyte (unsigned char dat) //
{ //
unsigned int i; //
unsigned char j; //
bit testb; //
for (j=1;j<=8;j++) //
{ //
testb = dat & 0x01; //
dat = dat >> 1; //
if (testb) //
{ //
TMDAT = 0; // 寫0 //
i++; i++; //
TMDAT = 1; //
i = 8; while (i>0) i--; //
} //
else //
{ //
TMDAT = 0; // 寫0 //
i = 8; while (i>0) i--; //
TMDAT = 1; //
i++; i++; //
} //
} //
} //
//////////////////////////////////////////////////////////////////////////

/////////////////////////////////發送ds1820 開始轉換//////////////////////
void tmstart (void) //
{ //
tmreset (); //復位 //
//tmpre (); //等待存在脈沖 //
dmsec (1); //延時 //
tmwbyte (0xcc); //跳過序列號命令 //
tmwbyte (0x44); //發轉換命令 44H, //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////// 讀取溫度//////////////////////////////
void tmrtemp (void) //
{ //
unsigned char a,b; //
tmreset (); //復位 //
//tmpre (); //等待存在脈沖 //
dmsec (1); //延時 //
tmwbyte (0xcc); //跳過序列號命令 //
tmwbyte (0xbe); //發送讀取命令 //
a = tmrbyte (); //讀取低位溫度 //
b = tmrbyte (); //讀取高位溫度 //
f=b; //若b為1則為負溫 //
if(f) //
{ //
TMP=~a+1; //如果為負溫則去除其補碼 //
} //
else //
{ //
TMP=a; //
} //
} //
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
main() //
{ //
do{ //
tmstart(); //
dmsec(100); //如果是不斷地讀取的話可以不延時 //
tmrtemp(); //讀取溫度,執行完畢溫度將存于TMP中 //
}while(1); //
} //
//////////////////////////////////////////////////////////////////////////






//以下是四個DS1820溫度讀取程序
//使用時先調用"rom()"子程序讀出每個器件的序列號
//再將各個序列號填入SN數組中才能讀出各個溫度

#include <reg51.h>
#define uchar unsigned char 

sbit TMDAT = P3^4; //根據實實際情況設定
uchar TMP[4]; //讀取后的4個溫度值,將其除以2即可得出實際溫度;
uchar SN[4][8]; //4個器件的序列號,先讀出單個序列號后填上才可以讀取溫度
uchar f[4]; //結果是否為負溫,“0”為正溫,“1”為負溫。 

////////////////////////////////////////延時部分//////////////////////////
void dmsec (unsigned int count) //
{ //
unsigned int i; // 
while (count) //
{ //
i = 115; //
while (i>0) i--; //
count--; //
} //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 發送復位//////////////////////////
void tmreset (void) //
{ //
unsigned int i; //
TMDAT = 0; //
i = 103; //
while (i>0) i--; // 延時 900 uS(11.0592Mhz時) //
TMDAT = 1; //
i = 4; //
while (i>0) i--; //
} //
//////////////////////////////////////////////////////////////////////////


//判斷DS1820是否存在的子程序。最好不要用,因為當器件不存在時將會進入死循環

////////////////////////////////////// 等待存在脈沖///////////////////////
void tmpre (void) //判斷器件是否存在 //
{ //
unsigned int i; //
while (TMDAT); //
while (~TMDAT); //
i = 4; while (i>0) i--; //
} //
//////////////////////////////////////////////////////////////////////////


///////////////////////////////////// 讀一位//////////////////////////////
bit tmrbit (void) //
{ // 
unsigned int i; //
bit dat; //
TMDAT = 0; i++; //
TMDAT = 1; i++; i++; //微量延時 //
dat = TMDAT; //
i = 8; while (i>0) i--; // 延時 //
return (dat); //
} //
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////// 讀一個字節///////////////////////
unsigned char tmrbyte (void) //
{ //
unsigned char i,j,dat; //
dat = 0; //
for (i=1;i<=8;i++) //
{ //
j = tmrbit (); //
dat = (j << 7) | (dat >> 1); //
} //
return (dat); //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 寫一個字節////////////////////////
void tmwbyte (unsigned char dat) //
{ //
unsigned int i; //
unsigned char j; //
bit testb; //
for (j=1;j<=8;j++) //
{ //
testb = dat & 0x01; //
dat = dat >> 1; //
if (testb) //
{ //
TMDAT = 0; // 寫0 //
i++; i++; //
TMDAT = 1; //
i = 8; while (i>0) i--; //
} //
else //
{ //
TMDAT = 0; // 寫0 //
i = 8; while (i>0) i--; //
TMDAT = 1; //
i++; i++; //
} //
} //
} //
//////////////////////////////////////////////////////////////////////////

/////////////////////////////////發送ds1820 開始轉換//////////////////////
void tmstart (void) //
{ //
tmreset (); //復位 //
//tmpre (); //等待存在脈沖 //
dmsec (1); //延時 //
tmwbyte (0xcc); //跳過序列號命令,對所有器件有效 //
tmwbyte (0x44); //發轉換命令 44H, //
} //
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////// 讀取溫度//////////////////////////////
void tmrtemp (void) //
{ //
unsigned char a,b; //
tmreset (); //復位 //
//tmpre (); //等待存在脈沖 //
dmsec (1); //延時 //
tmwbyte (0xcc); //跳過序列號命令 //
tmwbyte (0xbe); //發送讀取命令 //
a = tmrbyte (); //讀取低位溫度 //
b = tmrbyte (); //讀取高位溫度 //
f=b; //若b為1則為負溫 //
if(f) //
{ //
TMP=~a+1; //如果為負溫則去除其補碼 //
} //
else //
{ //
TMP=a; //
} //
} //
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////讀取溫度////////////////////////////////
uchar tmrtemp () //
{ //
uchar i,j; //
uchar a,b; //
for(j=0;j<4;j++) //
{ //
tmreset (); //復位 //
dmsec (1); //延時 //
tmwbyte (0x55); //發送ROM匹配命令 //
for(i=0;i<8;i++) //
{ //
tmwbyte(SN[j][i]); //發送64位序列號 //
} //
tmwbyte (0xbe); //發送讀取命令 //
a = tmrbyte (); //連續讀取兩位溫度 //
b = tmrbyte (); //
f[j]=b; //若b為1則為負溫 //
if(f[j]) //
{ //
TMP[j]=~a+1; //如果為負溫則去除其補碼 //
} //
else //
{ //
TMP[j]=a; //
} //
} //
//////////////////////////////////////////////////////////////////////////


//以下是讀取器件序列號的子程序,需要讀取序列時可在程序中調用;
//調用時確保總線中只有一只器件,若有多個器件時則讀取出來的號碼無效;
//將讀取出來的序列號填到前面的數組中即可使用;
//平時可以將此子程序刪除以節約空間。

//////////////////////////讀取器件序列號子程序////////////////////////////
rom() //
{ //
uchar i; //
//以下是定義8個序列號變量 //
uchar sn1; //
uchar sn2; //
uchar sn3; //
uchar sn4; //
uchar sn5; //
uchar sn6; //
uchar sn7; //
uchar sn8; //
//
tmreset (); //復位 //
dmsec (1); //延時 //
tmwbyte(0x33); //發送讀序列號子程序 //
sn1=tmrbyte(); //讀取第一個序列號,應為16H; //
sn2=tmrbyte(); //讀取第二個序列號,應為10H; //
sn3=tmrbyte(); //
sn4=tmrbyte(); //
sn5=tmrbyte(); //
sn6=tmrbyte(); //
sn7=tmrbyte(); //
sn8=tmrbyte(); //
} //
////////////////////////////////////////////////////////////////////////// 


//////////////////////////////////////////////////////////////////////////
main() //
{ //
do{ //
//rom(); //調用讀序列號子程序 //
tmstart(); //
dmsec(100); //如果是不斷地讀取的話可以不延時 //
tmrtemp(); //讀取溫度,執行完畢溫度將存于TMP[]數組中//
}while(1); //
} //
//////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍与偷拍| 欧美视频精品在线| 精品国产一区二区三区忘忧草 | 波多野洁衣一区| 欧美精品一区二区三| 老司机免费视频一区二区三区| 欧美日韩激情在线| 天天射综合影视| 欧美揉bbbbb揉bbbbb| 亚洲自拍偷拍av| 91豆麻精品91久久久久久| 亚洲免费伊人电影| 91网站视频在线观看| 亚洲手机成人高清视频| 国产精品一区二区免费不卡| 久久精品人人做人人综合 | 91精品国产一区二区三区香蕉| 中文字幕高清不卡| 国产91精品免费| 国产精品白丝在线| 成人午夜免费视频| 国产亚洲午夜高清国产拍精品| 国产麻豆精品久久一二三| 国产日韩欧美a| 99re这里只有精品首页| 玉米视频成人免费看| 欧美日韩国产乱码电影| 一区二区三区 在线观看视频| 欧美亚洲尤物久久| 久久国产人妖系列| 久久久精品国产免大香伊| 丁香婷婷综合色啪| 国产精品亲子伦对白| 一本一道久久a久久精品综合蜜臀| 亚洲精品第1页| 欧美日韩不卡一区二区| 日本成人在线电影网| 欧美激情艳妇裸体舞| 91成人免费电影| 久久99精品视频| 成人免费在线播放视频| 欧美日韩国产成人在线免费| 久久精品国内一区二区三区| 中文字幕国产一区| 91一区二区在线观看| 亚洲激情图片小说视频| 欧美日韩免费视频| 国产在线精品一区二区三区不卡 | 一本久道中文字幕精品亚洲嫩 | 日韩写真欧美这视频| 国产一区免费电影| 亚洲综合激情小说| 久久久九九九九| 欧美三级资源在线| 国产伦精品一区二区三区免费迷| 亚洲视频一二三| 久久综合色播五月| 欧美日韩国产综合一区二区| 久久成人羞羞网站| 亚洲女厕所小便bbb| 欧美变态tickling挠脚心| 99国内精品久久| 激情文学综合插| 亚洲一区二区视频在线观看| 久久久久高清精品| 日韩一卡二卡三卡| 色哦色哦哦色天天综合| 日韩av中文字幕一区二区三区| 久久久综合九色合综国产精品| 91视频com| 成人自拍视频在线| 九九视频精品免费| 日韩国产精品久久久久久亚洲| 成人免费在线视频观看| 国产无一区二区| 日韩精品专区在线影院重磅| 欧美日韩中文一区| 91视频在线看| a亚洲天堂av| 国产成人精品1024| 国产综合一区二区| 老司机午夜精品| 免费不卡在线视频| 视频在线观看91| 亚洲综合免费观看高清完整版 | 色一情一乱一乱一91av| 夫妻av一区二区| 国产成人在线影院| 国产精品1024久久| 国产福利91精品一区| 国产一区二区日韩精品| 韩日精品视频一区| 国产揄拍国内精品对白| 久久99精品国产.久久久久久| 肉丝袜脚交视频一区二区| 亚洲欧洲国产日本综合| 国产精品久久久久一区| 欧美高清在线视频| 国产亚洲欧美一区在线观看| 欧美猛男gaygay网站| 欧美日韩在线播放| 91麻豆6部合集magnet| 在线观看免费成人| 91免费版在线| 欧美男人的天堂一二区| 日韩精品中文字幕一区| 日韩久久久久久| 久久久欧美精品sm网站| 久久免费电影网| 久久久久久久网| 久久久蜜桃精品| 综合久久综合久久| 伊人开心综合网| 五月天中文字幕一区二区| 奇米影视7777精品一区二区| 蜜桃一区二区三区四区| 国产一区999| 97aⅴ精品视频一二三区| 在线视频国产一区| 日韩亚洲欧美在线| 国产欧美一区二区精品性色| 18成人在线视频| 午夜av电影一区| 国产一区二区三区综合| 99久久精品一区二区| 欧美日韩高清一区二区三区| 欧美一区二区三区日韩| 国产日韩欧美高清| 亚洲一区日韩精品中文字幕| 免费人成网站在线观看欧美高清| 国产呦萝稀缺另类资源| 色一情一乱一乱一91av| 日韩免费性生活视频播放| 国产精品拍天天在线| 亚洲成人7777| 国产精品亚洲人在线观看| 91免费观看国产| 日韩三级视频中文字幕| 国产精品福利电影一区二区三区四区| 一区二区三区日本| 经典三级在线一区| 91久久免费观看| 久久久精品免费观看| 亚洲国产视频在线| 成人在线视频一区二区| 欧美区视频在线观看| 国产精品国产三级国产aⅴ原创| 日韩国产精品91| 91免费在线播放| 久久久精品欧美丰满| 亚洲第一狼人社区| www.成人网.com| 精品国产免费人成电影在线观看四季 | 国产经典欧美精品| 欧美亚洲免费在线一区| 国产精品素人一区二区| 精品一二三四区| 欧美伊人精品成人久久综合97| 精品精品欲导航| 婷婷久久综合九色综合绿巨人 | 国产精品青草综合久久久久99| 免费观看91视频大全| 日本福利一区二区| 国产欧美日韩精品a在线观看| 蜜臀久久99精品久久久久宅男| 色婷婷av一区| 国产精品成人网| 国产激情91久久精品导航| 欧美videofree性高清杂交| 午夜影院久久久| 欧美自拍偷拍午夜视频| 亚洲日本在线视频观看| 风间由美中文字幕在线看视频国产欧美| 日韩一区二区视频| 日韩高清在线一区| 欧美另类一区二区三区| 亚洲综合999| 在线日韩一区二区| 一区二区三区蜜桃网| 99久久99久久免费精品蜜臀| 国产三级精品视频| 国产91精品在线观看| 国产三区在线成人av| 久久99精品国产麻豆婷婷| 精品国产一区二区三区久久久蜜月 | 一级做a爱片久久| 欧美午夜电影一区| 免费高清在线视频一区·| 26uuu精品一区二区在线观看| 成人午夜精品一区二区三区| 1024成人网| 欧美精品一二三| 韩国成人福利片在线播放| 亚洲欧洲av一区二区三区久久| 91美女片黄在线观看| 日韩av一级片| 国产精品天美传媒| 欧美日韩国产天堂| 粉嫩av一区二区三区| 亚洲图片自拍偷拍|