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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ds1820.c

?? 是一個關(guān)于C51和18B20的測溫程序,大家可以參考一下.
?? C
字號:
//國內(nèi)網(wǎng)站上讀取DS1820的C51源程序不多,基本上都是那幾篇,我試過都不行
//后來我買了本書,按照上面照抄,連編譯都通不過,后來經(jīng)過多次測試,終于可以順利讀取了
//若有問題可與我聯(lián)系jqdz2000@163.com

// 前面是單個DS1820溫度讀取程序,后面是四個DS1820溫度讀取程序。
//推薦用11.0592Mhz晶振,經(jīng)試驗用12M到24M都可以,6M就不行了。

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

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

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



/////////////////////////////////////// 發(fā)送復(fù)位//////////////////////////
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是否存在的子程序。最好不要用,因為當器件不存在時將會進入死循環(huán)

////////////////////////////////////// 等待存在脈沖///////////////////////
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);							//
}									//
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////// 讀一個字節(jié)///////////////////////
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);							//
}									//
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 寫一個字節(jié)////////////////////////
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++;                            		//
		}							//
	}								//
}									//
//////////////////////////////////////////////////////////////////////////

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


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

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











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

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

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

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



/////////////////////////////////////// 發(fā)送復(fù)位//////////////////////////
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是否存在的子程序。最好不要用,因為當器件不存在時將會進入死循環(huán)

////////////////////////////////////// 等待存在脈沖///////////////////////
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);							//
}									//
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////// 讀一個字節(jié)///////////////////////
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);							//
}									//
//////////////////////////////////////////////////////////////////////////


/////////////////////////////////////// 寫一個字節(jié)////////////////////////
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++;                            		//
		}							//
	}								//
}									//
//////////////////////////////////////////////////////////////////////////

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


/////////////////////////////////// 讀取溫度//////////////////////////////
void tmrtemp (void)							//
{                   							//
	unsigned char a,b;						//
	tmreset ();		//復(fù)位					//
	//tmpre ();		//等待存在脈沖				//
	dmsec (1);		//延時					//
	tmwbyte (0xcc); 	//跳過序列號命令			//
	tmwbyte (0xbe); 	//發(fā)送讀取命令 				//
	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 ();		//復(fù)位				//
		dmsec (1);		//延時				//
		tmwbyte (0x55); 	//發(fā)送ROM匹配命令		//
		for(i=0;i<8;i++)					//
		{							//
			tmwbyte(SN[j][i]);	//發(fā)送64位序列號	//
		}							//
		tmwbyte (0xbe); 	//發(fā)送讀取命令 			//
		a = tmrbyte ();		//連續(xù)讀取兩位溫度		//
		b = tmrbyte ();  					//
		f[j]=b;			//若b為1則為負溫		//
		if(f[j])						//
		{							//
			TMP[j]=~a+1;	//如果為負溫則去除其補碼	//
		}							//
		else							//
		{							//
			TMP[j]=a;					//
		}							//
}									//
//////////////////////////////////////////////////////////////////////////



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

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


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










	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区免费看| 懂色av一区二区夜夜嗨| 亚洲国产日韩a在线播放性色| 中文字幕制服丝袜成人av| 亚洲激情中文1区| 亚洲综合免费观看高清完整版| 国产精品国产三级国产有无不卡 | 最新中文字幕一区二区三区 | 欧美最新大片在线看| 欧美性猛交xxxx黑人交| 日韩你懂的电影在线观看| 国产精品免费网站在线观看| 一区二区三区欧美视频| 乱一区二区av| 欧美综合一区二区| 国产婷婷色一区二区三区四区 | 成人免费看黄yyy456| 欧美女孩性生活视频| 国产嫩草影院久久久久| 午夜精品一区在线观看| 丁香五精品蜜臀久久久久99网站| 欧美性三三影院| 亚洲免费观看高清完整版在线 | 国产精品久久久久精k8| 日韩不卡在线观看日韩不卡视频| 91香蕉视频污在线| 国产精品午夜免费| 国产福利91精品| 久久一留热品黄| 狠狠狠色丁香婷婷综合激情| 这里只有精品电影| 亚洲大型综合色站| 欧美日韩午夜影院| 热久久一区二区| 欧美成人猛片aaaaaaa| 理论片日本一区| 欧美xxxxx牲另类人与| 午夜国产精品一区| 日韩午夜av一区| 国产精品456露脸| 中文字幕日韩欧美一区二区三区| 97国产一区二区| 日韩中文字幕不卡| 日韩欧美一区二区三区在线| 麻豆精品视频在线| 欧美极品另类videosde| 成人亚洲一区二区一| 自拍偷拍亚洲欧美日韩| 欧美午夜精品理论片a级按摩| 亚洲电影一级黄| 欧美va在线播放| 99久久精品费精品国产一区二区 | 成人永久免费视频| 亚洲一区二区四区蜜桃| 日韩欧美一级片| 91视频一区二区三区| 日韩精品电影一区亚洲| 中文字幕欧美日韩一区| 56国语精品自产拍在线观看| 成人va在线观看| 日日欢夜夜爽一区| 国产精品久久久久久久久免费桃花 | 欧美日韩午夜在线视频| 欧美伊人久久久久久久久影院| 国模套图日韩精品一区二区 | 99riav久久精品riav| 国产在线精品视频| 老司机精品视频线观看86| 最新日韩av在线| 国产精品国产三级国产三级人妇| 中文字幕中文在线不卡住| 97aⅴ精品视频一二三区| 在线免费不卡视频| 日韩精品一区二区三区视频| 久久久久久久久岛国免费| 色欧美乱欧美15图片| 国产伦精品一区二区三区免费迷 | 色综合天天做天天爱| 国产一区日韩二区欧美三区| 亚洲18女电影在线观看| 一区二区三区精品在线观看| 国产亚洲欧美色| 国产蜜臀av在线一区二区三区| 在线电影一区二区三区| 欧美一区午夜视频在线观看| 在线视频一区二区免费| 欧美亚洲高清一区| 久久久久国产精品麻豆| 亚洲欧美色图小说| 亚洲福中文字幕伊人影院| 日本女人一区二区三区| 国产精品1区2区| 精品视频999| 久久久99精品免费观看| 亚洲精品国产精品乱码不99 | 国产精品久久久久久一区二区三区| 亚洲人成网站色在线观看| 国产99久久久国产精品潘金网站| 欧美一区二区三区男人的天堂| 91女神在线视频| 国产成人在线视频网站| 欧美一卡二卡在线| 亚洲国产精品av| 亚洲高清久久久| 久久精品国产网站| 偷窥少妇高潮呻吟av久久免费| 久久疯狂做爰流白浆xx| 91精品国产综合久久精品| 亚洲主播在线观看| 欧美日本高清视频在线观看| 亚洲摸摸操操av| 91精品办公室少妇高潮对白| 欧美三级欧美一级| 国产日韩亚洲欧美综合| 国产精品美女久久久久aⅴ国产馆| 一区二区三区中文字幕电影 | 一级特黄大欧美久久久| 亚洲婷婷综合久久一本伊一区| 蜜臀av性久久久久蜜臀aⅴ| 久久99精品一区二区三区三区| 91老师国产黑色丝袜在线| 国产在线精品不卡| 精品一区二区三区欧美| 成人av动漫在线| 欧美日韩一级二级三级| 精品美女一区二区三区| 国产色91在线| 久久综合九色综合97婷婷女人| 欧美电视剧在线观看完整版| 性做久久久久久久久| 亚洲成av人综合在线观看| 亚洲丝袜自拍清纯另类| 久久精品国产精品青草| 色婷婷久久久久swag精品| 91精品国产欧美一区二区成人| 国产综合色视频| 一区二区欧美精品| 精品久久久久久无| 欧美日韩午夜在线| 本田岬高潮一区二区三区| 日韩av中文字幕一区二区三区 | 久久这里只有精品6| 日日骚欧美日韩| 日韩欧美视频一区| 成人免费视频app| 一区二区视频免费在线观看| 久久久久久久久蜜桃| 91浏览器打开| 亚洲成a人片在线观看中文| 91美女福利视频| 久久久久久久久久久久久女国产乱| 亚洲精品国产第一综合99久久| 麻豆精品在线播放| 国产精品乱码一区二三区小蝌蚪| 久久精品国产久精国产爱| 91精品国产麻豆国产自产在线| 国产suv精品一区二区三区| 亚洲国产精品高清| 4438亚洲最大| 日本道色综合久久| 国产一区免费电影| 秋霞电影一区二区| 亚洲成av人影院在线观看网| 国产亚洲视频系列| 久久综合九色综合久久久精品综合| 在线中文字幕不卡| 色综合欧美在线视频区| 国产精品综合视频| 国产原创一区二区三区| 日韩电影在线免费看| 午夜av区久久| 三级在线观看一区二区| 亚洲第一会所有码转帖| 国产精品久久久久久亚洲伦| www精品美女久久久tv| 精品国产91亚洲一区二区三区婷婷| 欧美日韩在线电影| 欧美一三区三区四区免费在线看 | 99精品视频在线观看免费| 欧美精品一区二区高清在线观看| 午夜精品国产更新| 欧美变态口味重另类| 精品一区二区三区免费观看| 日韩精品一二区| 亚洲一区免费在线观看| 国产精品高清亚洲| 国产精品网站在线播放| 亚洲天堂精品在线观看| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区免费在线观看| 国产精品久线观看视频| 中文字幕av不卡| 91精品国产综合久久香蕉麻豆| 日韩一区二区免费在线电影| 盗摄精品av一区二区三区| 成人aaaa免费全部观看| 顶级嫩模精品视频在线看| 92精品国产成人观看免费| 91亚洲精品久久久蜜桃| 波多野结衣在线aⅴ中文字幕不卡|