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

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

?? ds1820.c

?? 溫度芯片驅動
?? C
字號:
//**********************************************************************
//功能		: 實時時鐘DS1820操作模塊
//作者		: lihj
//創(chuàng)建日期	: 2004-07-10
//版本		: V1.0
//修改記錄	: 
//***********************************************************************
#include <reg51.h>
#include <std.h>
#include <ds1820.h>

sbit TMDAT = P3^4;			//根據實實際情況設定

//函數功能:延時(12MHz晶振)
//輸入參數:<count>延時時間長度,單位1ms
void Delay_ms (U16 count)	 					
{									
	U16 i;		       						
	while (count)							
	{								
		i = 123;						
		while (i>0) i--;					
		count--;						
    }									
}									

//函數功能:復位芯片(至少480us長的低電平信號)
void ResetChip (void)							
{		                  		 			
	U16 i;	
							
	TMDAT = 0;				//480us~960us長低電平:復位
	i = 150;							
	while (i--);         	//延時約900 uS(12Mhz時)	
	TMDAT = 1;							
	i = 5;								
	while (i--);		   	//DS1820檢測到上升沿后,過15~60us后輸出“存在”信號
}

//函數功能:	判斷DS1820是否存在
//返回參數:	TRUE:芯片存在
//	    	FALSE:芯片不存在
U8 ChipPresenceCheck(void)				
{                     						
	U16 i;							
	
	ResetChip();
	
	//等待70us,應該檢測到低電平
	i = 11;
	while(i--);
	if(TMDAT)
	{
		return FALSE;
	}
	
	//等待400us,應檢測到高電平,低電平信號保持60~240us
	i = 65; 
	while (i--);
	if(TMDAT)
	{
		return TRUE;		
	}
	else
	{
		return FALSE;
	}	
}									

//函數功能:從總線上讀取1位信號
bit RdBit (void)							
{                   							  
	U16 i;							
	bit b0;							
	TMDAT = 0; i++;				//下降沿之后,保持低電平至少1us						//
	TMDAT = 1; i++; i++;		//微量延時(既作輸入又作輸出的I/O腳,讀數據時,先拉高電平)
	
	b0 = TMDAT;							
	i = 9; 
	while (i--);				//延時60us		
	return (b0);							
}									

//函數功能:從總線上讀取1個字節(jié)信號
U8 RdByte (void) 			 			
{         								
	U8 i,j,byRdData=0;						
	
	for (i=0;i<8;i++)						
	{								
		j = RdBit ();
		byRdData >>= 1;						
		byRdData = (j << 7) | byRdData;				
	}								
	return (byRdData);							
}									

//函數功能:向總線上寫一位數據	
void WrBit(bit b0)
{
	U8 i;
	
	if (b0)						
	{							
		TMDAT = 0;              		//產生一個下降沿,低電平至少保持1us	//
		i++; i++;               		             		
		TMDAT = 1;				//輸出1				
		i = 9; while (i--); 			//高電平保持60us             		//
	}							
	else							
	{							
		TMDAT = 0;                           	// 寫0 	
		i = 9; while (i--);  			//低電平保持60us           		//
		TMDAT = 1;					
		i++; i++;                            		
	}	
}

//向總線上寫一個字節(jié)
void WrByte (U8 dat)					
{                						
	U8 i;						
	bit testb;							
	for (i=0;i<8;i++)						
	{								
		testb = dat & 0x01;					
		dat = dat >> 1;						
		WrBit(testb);						
	}								
}									

//函數功能	:寫1-Wire協(xié)議頭操作(復位芯片、選擇芯片、寫命令碼)
//輸入參數	:<pSN>芯片序號
//	  	: <byCommand>命令碼
void SendHeaderData(U8 *pSN, U8 byCommand)
{
	U8 i;
	
	ResetChip();			//復位				
	Delay_ms(1);			//延時				

//***********************
//如果總線上只有一個設備,不需要選擇芯片操作	
#if	(CHIP_NUM_IN_WIRE == 1)
	WrByte(0xcc);			//總線上只有一個設備,跳過芯片匹配步驟
#else	
	WrByte(0x55); 			//發(fā)送ROM匹配命令		
	for(i=0;i<8;i++)					
	{							
		WrByte(*pSN++);		//發(fā)送64位序列號	
	}
#endif							

	WrByte(byCommand);		//發(fā)送讀取中間寄存器命令
}

//函數功能	: 讀溫度芯片中間寄存器(從偏移地址0開始)
//輸入參數	: <pSN>溫度芯片的序號(ROM碼)
//		:  <pRdData> 存放讀取出的數據
//		:  <byLen>需讀取的數據的長度
void RdScratchpad(U8 *pSN, U8 *pRdData, U8 byLen)
{
	U8 i;
	
	//輸入參數檢查
	if(byLen > 9)
	{
		byLen = 9;
	}
	
	SendHeaderData(pSN, 0xbe);
	
	//讀出數據
	for(i=0;i<byLen;i++)
	{
		*pRdData++ = RdByte();
	}
	
	ResetChip();			//復位芯片,結束讀操作
	Delay_ms(1);			//延時	
}


//函數功能	: 寫溫度芯片中間寄存器(從偏移地址2開始)
//輸入參數	: <pSN>溫度芯片的序號(ROM碼)
//		:  <pWrData> 寫到中間寄存器的源數據
//		:  <byLen>寫入數據的長度	
void WrScratchpad(U8 *pSN, U8 *pWrData, U8 byLen) 
{
	U8 i;
	
	//輸入參數檢查
	if(byLen > 2)
	{
		byLen = 2;
	}
	
	SendHeaderData(pSN, 0x4e);		//發(fā)送協(xié)議頭			
	
	//寫入數據
	for(i=0;i<byLen;i++)
	{
		WrByte(*pWrData++);
	}
	
	ResetChip();				//復位芯片,結束寫操作
	Delay_ms(1);				//延時	
}

//函數功能:啟動溫度轉換過程
//輸入參數:<pSN>芯片序號
void StartConvertTmpt (U8 *pSN)							//
{       
	U8 byBusyFlag=0;
	 
	SendHeaderData(pSN, 0x44); 		//發(fā)送協(xié)議頭           				
	
	while(1)				//某些情況下,這里可能出現(xiàn)死循環(huán)
	{
		byBusyFlag = RdByte();
		if(byBusyFlag == 0xff)
		{
			break;
		}
	}
	
	ResetChip ();				//復位,保持低電平480-960us					//
	Delay_ms(1);
}									

//函數功能	:讀取溫度
//輸入參數	: <pSN>芯片序號
//輸出參數	: 溫度值,放大10倍的整數
S16 RdTemperture (U8 *pSN)								//
{                   							
	U8 byRdData[8];
	U8 byTEMP_READ;
	U8 byCOUNT_PER_C;
	U8 byCOUNT_REMAIN;
	S16 t;							
	float ft;
	
	
	RdScratchpad(pSN, byRdData, 8);		//讀取數據,沒有讀CRC校驗碼

	//0.5攝氏度精度的計算方法
//	t = byRdData[0]+(byRdData[1]<<8);	//1表示0.5攝氏度
//	return t;
	
	t = byRdData[0]+(byRdData[1]<<8);
	byTEMP_READ = t>>1;
	byCOUNT_REMAIN = byRdData[6];
	byCOUNT_PER_C = byRdData[7];
					
	ft = (float)byTEMP_READ - 0.25 + (float)(byCOUNT_PER_C - byCOUNT_REMAIN)/(float)byCOUNT_PER_C;
	t = ft*10;
	
	return t;				//1表示0.1攝氏度							
}									

//函數功能	:讀取芯片序號(只能在總線只有一個器件時調用)
//輸入參數	: <pSN>返回的芯片序號存放地址
void ReadROM(U8 *pSN)									//
{									
	U8 i;
	
	ResetChip ();			//復位					
	Delay_ms (1);			//延時					
	WrByte(0x33);			//發(fā)送讀序列號子程序			
	
	for(i=0;i<8;i++)
	{
		*pSN ++ = RdByte();	//讀取第一個序列號,應為10H;		//
	}							
}									

//功能	:寫溫度報警上下限
//輸入參數	: <pSN>溫度芯片序號
//		:  <nHighAlarmLim> 溫度報警上限
//		:  <nLowAlarmLim> 溫度報警下限
U8 WrTmptAlarmLim(U8 *pSN, S16 nHighAlarmLim, S16 nLowAlarmLim)
{
	U8 byWrData[2];
	U8 byRdData[4];
	
	byWrData[0] = nHighAlarmLim;
	byWrData[1] = nLowAlarmLim;
	
	WrScratchpad(pSN, byWrData, 2);		//寫入數據
	
	RdScratchpad(pSN, byRdData, 4);		//讀出數據進行校驗
	if((byRdData[2] != nHighAlarmLim) || (byRdData[3] != nLowAlarmLim))
	{
		return FALSE;
	}
	
	//將中間寄存器數據拷貝到E2RAM(存放報警限數據)
	SendHeaderData(pSN, 0x48);
	Delay_ms (6);				//延時6ms	
	ResetChip();				//復位芯片,結束本次操作
}
	
		
									

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频一区二区三区| 午夜视频在线观看一区| 久久丝袜美腿综合| 国产精品色哟哟| 国产欧美va欧美不卡在线| 久久综合九色综合欧美98| 欧美一级免费观看| 欧美va在线播放| 亚洲国产激情av| 伊人色综合久久天天人手人婷| 一区二区三区资源| 另类小说视频一区二区| 精品国产一区二区三区av性色| 国内精品久久久久影院薰衣草 | 久久国产成人午夜av影院| 久久久久国产精品人| 91蜜桃网址入口| 日本sm残虐另类| 国产日韩av一区| 欧洲另类一二三四区| 国内成人免费视频| 亚洲欧美另类综合偷拍| 在线综合+亚洲+欧美中文字幕| 国产一区二三区好的| 亚洲你懂的在线视频| 91麻豆精品久久久久蜜臀| 成人午夜视频网站| 秋霞av亚洲一区二区三| 一区二区三区精品久久久| 欧美精品乱码久久久久久按摩| 国产精品综合一区二区三区| 亚洲精品大片www| 欧美精品一区二区三区在线 | 国产午夜亚洲精品不卡| 色94色欧美sute亚洲线路一久| 美女视频第一区二区三区免费观看网站| 欧美国产97人人爽人人喊| 欧美日韩免费观看一区三区| 国产91丝袜在线播放| 奇米综合一区二区三区精品视频| 中文字幕一区二区不卡| 日韩欧美卡一卡二| 欧洲精品中文字幕| 成人激情综合网站| 激情五月播播久久久精品| 亚洲国产精品自拍| 亚洲欧洲一区二区在线播放| wwwwxxxxx欧美| 在线观看网站黄不卡| 国产精品午夜春色av| 欧美亚洲动漫精品| 亚洲国产综合人成综合网站| 色婷婷久久综合| 亚洲综合图片区| 欧美日韩国产一二三| 亚洲综合激情网| 日韩午夜三级在线| 国产精品88888| 亚洲久本草在线中文字幕| 精品一区二区三区在线观看国产| 亚洲国产一区二区三区青草影视| 国产精品久久久久永久免费观看 | 午夜电影一区二区| 自拍偷拍亚洲激情| 国产精品视频一二| 国产精品免费av| 国产色综合久久| 久久久精品一品道一区| 精品国产免费视频| 日韩欧美二区三区| 欧美一区二区三区四区五区| 欧美人妖巨大在线| 欧美一区二区黄色| 欧美一区二区女人| 精品乱码亚洲一区二区不卡| 26uuu另类欧美亚洲曰本| 精品久久久久久久人人人人传媒| 欧美一级国产精品| 欧美电视剧免费观看| 日韩欧美在线一区二区三区| 日韩亚洲欧美在线| 精品欧美乱码久久久久久| 日韩亚洲欧美一区二区三区| 日韩免费性生活视频播放| 欧美一级久久久| 久久伊人中文字幕| 欧美国产日韩亚洲一区| 一色桃子久久精品亚洲| 亚洲免费在线看| 亚洲小少妇裸体bbw| 欧美96一区二区免费视频| 另类小说色综合网站| 国产精品一二三| aaa亚洲精品一二三区| 欧洲人成人精品| 日韩欧美亚洲国产另类| 久久丝袜美腿综合| 国产精品国产精品国产专区不蜜| 亚洲综合久久久| 美女网站色91| 成人免费观看视频| 色哦色哦哦色天天综合| 51久久夜色精品国产麻豆| 精品福利av导航| 成人影视亚洲图片在线| 99re66热这里只有精品3直播| 欧洲日韩一区二区三区| 亚洲日本青草视频在线怡红院| 中文字幕亚洲在| 亚洲一区二区偷拍精品| 偷窥少妇高潮呻吟av久久免费| 无码av中文一区二区三区桃花岛| 亚洲午夜久久久| 蜜臀av性久久久久av蜜臀妖精| 国产美女在线观看一区| 成人福利视频网站| 欧美电影免费观看完整版| 一区二区三区在线播| 奇米精品一区二区三区在线观看| 国产黄色成人av| 欧美在线免费观看亚洲| 2014亚洲片线观看视频免费| 综合久久国产九一剧情麻豆| 日韩激情视频在线观看| 成人网男人的天堂| 制服丝袜国产精品| 国产精品视频yy9299一区| 日韩国产欧美三级| 91免费观看在线| 欧美精品一区二区三区一线天视频| 自拍偷在线精品自拍偷无码专区| 精品一区在线看| 欧美日韩一区精品| 亚洲欧美日韩中文播放| 国产一区在线精品| 5566中文字幕一区二区电影 | 91黄色免费版| 国产视频一区二区在线观看| 亚洲高清三级视频| www.亚洲色图.com| 久久免费电影网| 日本美女一区二区| 欧美在线不卡一区| 亚洲视频一区二区在线| 国产一区二区电影| 日韩一区和二区| 午夜精品久久久久久久99水蜜桃| av中文字幕不卡| 日本一区二区不卡视频| 久久狠狠亚洲综合| 欧美日韩久久不卡| 亚洲国产美国国产综合一区二区| 91免费国产在线观看| 国产精品成人免费精品自在线观看 | 亚洲综合色自拍一区| 国产91精品欧美| 国产亚洲欧洲997久久综合| 美女视频网站黄色亚洲| 日韩亚洲欧美中文三级| 青青草精品视频| 这里是久久伊人| 视频一区欧美日韩| 欧美日本高清视频在线观看| 天堂久久久久va久久久久| 欧美亚洲日本一区| 一区二区三区四区在线| 色av综合在线| 91精品在线免费| 一本色道久久加勒比精品| 久久精品国产在热久久| 99精品一区二区| av在线这里只有精品| 看电影不卡的网站| 亚洲综合免费观看高清完整版在线| 欧美性感一类影片在线播放| 精品一区二区久久| 最新不卡av在线| 欧美激情在线一区二区三区| 6080yy午夜一二三区久久| 色94色欧美sute亚洲13| 国产精品正在播放| 国产不卡视频在线观看| 99久久综合色| 一区在线观看视频| 欧美三级欧美一级| 琪琪久久久久日韩精品| 久久久蜜臀国产一区二区| www.日韩精品| 亚洲成a人片在线不卡一二三区| 欧美日免费三级在线| 久久国产视频网| 中文字幕成人网| 91成人免费在线| 美腿丝袜亚洲色图| 国产精品美女久久久久久久网站| 一本色道久久加勒比精品| 秋霞午夜鲁丝一区二区老狼| 国产女主播视频一区二区| 97久久精品人人做人人爽 | 欧美大片在线观看一区二区|