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

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

?? shtxx_iic._c

?? 基于AT89C2051的SHT11溫濕度傳感器嵌入式程序KEIL環境
?? _C
字號:
//溫濕度傳感器SHTXX系列,I2C接口程序
//2007-06-06
//-----------------------函數聲明,變量定義--------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
sbit SDA=P2^0;                          // 將p1.0口模擬數據口
sbit SCL=P2^1;                          // 將p1.1口模擬時鐘口
//#define  NUM  10 	                    //	接收和發送緩存區的深度
#define uchar unsigned char 
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};	                 
#define BIT7  0X80	                 
#define BIT6  0X40	                 
#define BIT5  0X20	                 
#define BIT4  0X10	                 
#define BIT3  0X08	                 
#define BIT2  0X04	                 
#define BIT1  0X02	                 
#define BIT0  0X01	                 
//unsigned char idata sendbuf[NUM];       // 數據發送緩沖區
//unsigned char idata receivebuf[NUM];    // 數據接收緩沖區
//bit   bdata SystemError;                // 從機錯誤標志位
//--------------------------------------------------------------------------------------------------
// 函數名稱: iic_start()
// 函數功能: 啟動I2C總線子程序
//--------------------------------------------------------------------------------------------------
void iic_start(void)
{
//:當SCK 時鐘高電平時DATA 翻轉為低電平,緊接著SCK 變為低電平,隨后是在SCK時鐘高電平時DATA 翻轉為高電平。
//	EA=0;           
	 SDA = 1;         
	 SCL = 1;
	SDA = 0;         
	 	SCL = 0; 
	   	SCL = 1;
	SDA = 1;         
	SCL = 0;
	_nop_();_nop_();

}
//--------------------------------------------------------------------------------------------------
// 函數名稱: iic_reset()
// 函數功能: 停止I2C總線數據傳送子程序
//--------------------------------------------------------------------------------------------------
void iic_reset(void)
{ 
	SDA = 1;   	   //當DATA 保持高電平時,觸發SCK 時鐘9 次或更多。
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
	SCL = 1;SCL = 0;
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: iic_stop()
// 函數功能: 停止I2C總線數據傳送子程序
//--------------------------------------------------------------------------------------------------
void iic_stop(void)
{ 
	SDA = 1;   	   //通過保持確認位ack 高電平,來中止通訊。
	SCL = 1;SCL = 0;
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: slave_ACK
// 函數功能: 從機發送應答位子程序
//--------------------------------------------------------------------------------------------------
void slave_ACK(void)
{
	SDA = 0;    
	SCL = 1;SCL = 0;
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: slave_NOACK
// 函數功能: 從機發送非應答位子程序,迫使數據傳輸過程結束
//--------------------------------------------------------------------------------------------------
void slave_NOACK(void)
{ 
	SDA = 1;   	   //通過保持確認位ack 高電平,來中止通訊。
	SCL = 1;SCL = 0;
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: check_ACK
// 函數功能: 主機應答位檢查子程序,迫使數據傳輸過程結束
//--------------------------------------------------------------------------------------------------
void check_ACK(void)
{ 
	SDA = 1;      // 將p1.0設置成輸入,必須先向端口寫1
	SCL = 1;
	F0 = 0;
	if(SDA == 1)    // 若SDA=1表明非應答,置位非應答標志F0
		F0 = 1;
	SCL = 0;
}

//--------------------------------------------------------------------------------------------------
// 函數名稱: IICSendByte
// 入口參數: ch
// 函數功能: 發送一個字節
//--------------------------------------------------------------------------------------------------
void IICSendByte(unsigned char ch)
{ 
	unsigned char idata n=8;     // 向SDA上發送一位數據字節,共八位
	while(n--)
	{ 
		if((ch&0x80) == 0x80)    // 若要發送的數據最高位為1則發送位1
		{
			SDA = 1;    // 傳送位1
			SCL = 1;SCL = 0;
		}
		else
		{  
			SDA = 0;    // 否則傳送位0
			SCL = 1;SCL = 0;
		}
		ch = ch<<1;    // 數據左移一位
	}
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: IICreceiveByte
// 返回接收的數據
// 函數功能: 接收一字節子程序
//--------------------------------------------------------------------------------------------------
unsigned char IICreceiveByte(void)
{
	unsigned char idata n=8;    // 從SDA線上讀取一上數據字節,共八位
	unsigned char tdata;
	while(n--)
	{
		SDA = 1;
		SCL = 1;
		tdata = tdata<<1;    // 左移一位,或_crol_(temp,1)
		if(SDA == 1)
			tdata = tdata|0x01;    // 若接收到的位為1,則數據的最后一位置1
		else 
			tdata = tdata&0xfe;    // 否則數據的最后一位置0
		SCL=0;
	}
	return(tdata);
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: InitSHTXX
// 函數功能: 初始化SHTXX
//--------------------------------------------------------------------------------------------------
void InitSHTXX(void)
{
	unsigned char initdat;
	initdat=0x06;//寫狀態寄存器命令
	iic_start();//啟動I2C
	IICSendByte(initdat);//發送命令
	//	slave_ACK();//給SHTXX應答位
	check_ACK();
	if(F0==0)
	{//	initdat=0x00;//14bit(溫度)、12bit(濕度)
		initdat=0x01;//12bit(溫度)、8bit(濕度)
		IICSendByte(initdat);//發送狀態字
		//slave_ACK();//給SHTXX應答位
		check_ACK();
	}
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: ReadStatus
// 返回接收的數據
// 函數功能: 讀狀態寄存器
//--------------------------------------------------------------------------------------------------
unsigned char ReadStatus(void)
{
	unsigned char rdata;
	rdata=0x07;//讀狀態寄存器命令
	iic_start();//啟動I2C
	IICSendByte(rdata);//發送命令
	slave_ACK();//給SHTXX應答位
	rdata=IICreceiveByte();//接收狀態字
	slave_NOACK();//給SHTXX非應答位,結束讀命令
	return(rdata);
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: MeasureTem
// 函數功能: 測量溫度,調用后應延遲
//--------------------------------------------------------------------------------------------------
void MeasureTem(void)
{
	unsigned char initdat;
	initdat=0x03;//測量溫度命令
	iic_start();//啟動I2C
	IICSendByte(initdat);//發送命令
	check_ACK();
/*	TH0=0X28;
	TL0=0X00;//11.0592MHz 60mS
	TR0=1;*/
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: MeasureHum
// 函數功能: 測量濕度,調用后應延遲
//--------------------------------------------------------------------------------------------------
void MeasureHum(void)
{
	unsigned char initdat;
	initdat=0x05;//測量濕度命令
	iic_start();//啟動I2C
	IICSendByte(initdat);//發送命令
	check_ACK();
/*	TH0=0Xca;
	TL0=0X00;//11.0592MHz 15mS
	TR0=1;*/
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: SoftReset
// 函數功能: 軟復位,復位接口、清空狀態寄存器, ,即清空為默認值,調用后應延遲11mS
//--------------------------------------------------------------------------------------------------
void SoftReset(void)
{
	unsigned char initdat;
	initdat=0x1E;//軟復位命令
	iic_start();//啟動I2C
	IICSendByte(initdat);//發送命令
/*	TH0=0Xca;
	TL0=0X00;//11.0592MHz 15mS
	TR0=1;*/
}
//--------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------
// 函數名稱: ReadData
// 返回接收的數據
// 函數功能: 讀測量數據
//--------------------------------------------------------------------------------------------------
int ReadData(void)
{
	int rdata;int *p;
	unsigned char dd[2];
	while(SDA==1);//等待轉換結束
	dd[0]=IICreceiveByte();//接收狀態字
	slave_ACK();//給SHTXX應答位
	dd[1]=IICreceiveByte();//接收狀態字
	slave_NOACK();//給SHTXX非應答位,結束讀命令
	p=dd;
	rdata=*p;
	return(rdata);
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: CalculateTem
// 返回計算后的溫度數據
// 函數功能: 計算溫度值
//--------------------------------------------------------------------------------------------------
float CalculateTem(void)
{
	float rdata;int rdat;
	uchar  *p;
	float temp;
	rdat=ReadData();
	p=&rdat;
	*p=*p&0x0f;//12bit模式,清除高4位
	//*p=*p&0x3f;//14bit模式,清除高2位
	rdata=rdat;
	temp=0.04*rdata-40;//12bit溫度公式
	//temp=0.01*rdata-40;//14bit溫度公式
	return(temp);
}
//--------------------------------------------------------------------------------------------------
// 函數名稱: CalculateHum
// 返回計算后的濕度數據
// 函數功能: 計算濕度值
//--------------------------------------------------------------------------------------------------
float CalculateHum(void)
{
	float rdata;int rdat;
	uchar  *p;
	float hump;
	rdat=ReadData();
	p=&rdat;
	*p=*p&0x00;//8bit模式,清除高8位
	//*p=*p&0x0f;//12bit模式,清除高4位
	rdata=rdat;
	hump=0.648*rdata-rdata*rdata*0.00072-4;//8bit濕度公式
	//temp=0.0405*rdata-rdata*rdata*0.0000028-4;//12bit濕度公式
	return hump;
}
//--------------------------------------------------------------------------------------------------


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频视频一区| 欧美一级免费大片| 欧美变态tickle挠乳网站| 亚洲人123区| 国产成人激情av| 国产综合色产在线精品| 丁香天五香天堂综合| 欧美伦理影视网| 亚洲国产精品尤物yw在线观看| 色综合久久久久综合体桃花网| 国产精品福利电影一区二区三区四区| 开心九九激情九九欧美日韩精美视频电影| 欧美在线免费观看亚洲| 亚洲国产sm捆绑调教视频| 欧美日韩激情一区二区三区| 日韩成人av影视| 69成人精品免费视频| 狠狠色综合播放一区二区| 久久你懂得1024| 91在线观看高清| 亚洲成人免费av| 精品第一国产综合精品aⅴ| 成人丝袜视频网| 亚洲免费视频中文字幕| 日本国产一区二区| 日本中文字幕一区二区视频| 欧美国产一区二区在线观看| 色综合久久88色综合天天| 日韩国产在线观看| 日韩精品专区在线| 91在线porny国产在线看| 麻豆精品视频在线观看视频| 国产午夜精品久久久久久免费视| 在线区一区二视频| 国产精品一区二区无线| 亚洲激情图片一区| 中文字幕成人av| 久久久久国产精品麻豆| 日韩一区二区三区高清免费看看| 99麻豆久久久国产精品免费| 日本欧美在线看| 亚洲电影在线免费观看| 亚洲三级在线播放| 欧美韩日一区二区三区四区| 欧美sm极限捆绑bd| 日韩欧美一区二区三区在线| 欧美亚男人的天堂| 91搞黄在线观看| 99精品在线观看视频| 91捆绑美女网站| 99精品视频在线免费观看| 国产在线播放一区三区四| 欧美mv日韩mv| 高清国产一区二区三区| 精品综合久久久久久8888| 国产高清视频一区| 国产成人av一区二区三区在线观看| 奇米综合一区二区三区精品视频| 亚洲综合视频网| 亚洲永久免费av| 日韩福利视频导航| 热久久一区二区| 国产凹凸在线观看一区二区| 成人一道本在线| 色偷偷久久一区二区三区| 欧美日韩国产美女| 日韩欧美色电影| 亚洲日本一区二区三区| 视频一区二区三区在线| 国产一区二区三区黄视频| 成人毛片视频在线观看| 欧美日韩国产另类一区| 久久久www成人免费毛片麻豆 | 一区二区三区鲁丝不卡| 亚洲777理论| 国产福利不卡视频| 在线电影院国产精品| 久久久久国产一区二区三区四区| 亚洲精品乱码久久久久久日本蜜臀| 日韩精品福利网| 色乱码一区二区三区88| 日韩欧美一级特黄在线播放| 亚洲人成网站色在线观看| 国产真实乱偷精品视频免| 91捆绑美女网站| 亚洲天堂福利av| 99在线精品视频| 欧美xxx久久| 日韩国产欧美在线视频| 91在线观看地址| 久久综合久色欧美综合狠狠| 天天色天天操综合| 成人免费看视频| 精品国产电影一区二区| 日韩电影在线一区| 欧美三级视频在线观看| 夜夜爽夜夜爽精品视频| 91毛片在线观看| 自拍偷在线精品自拍偷无码专区| 国产精品一区二区免费不卡| 欧美成人国产一区二区| 蜜乳av一区二区| 欧美变态tickling挠脚心| 婷婷一区二区三区| 欧美精品九九99久久| 亚洲成人资源网| 国产精品中文字幕一区二区三区| 日韩欧美一区中文| 美女视频网站黄色亚洲| 国产亚洲午夜高清国产拍精品| 日韩av电影免费观看高清完整版在线观看| 欧美色图一区二区三区| 日韩高清在线一区| 久久免费偷拍视频| 91一区二区在线| 日本亚洲视频在线| 久久久精品免费观看| 在线观看免费视频综合| 久久99久久99小草精品免视看| 久久综合精品国产一区二区三区 | 色8久久人人97超碰香蕉987| 亚洲国产精品视频| 亚洲一区二区三区中文字幕在线| 国产欧美一区二区精品仙草咪| 色综合天天综合在线视频| 久久成人免费网| 夜夜爽夜夜爽精品视频| 2023国产精品自拍| 欧美性感一类影片在线播放| 丁香一区二区三区| 亚洲五码中文字幕| 亚洲伦理在线免费看| 欧美变态口味重另类| 99re这里只有精品6| 六月丁香婷婷久久| 亚洲日本一区二区三区| 日韩欧美一卡二卡| 在线精品视频免费观看| 国产一区在线观看视频| 亚洲曰韩产成在线| 国产精品你懂的| 91亚洲精品久久久蜜桃网站| 蜜桃av一区二区| 亚洲高清不卡在线| 亚洲欧美偷拍另类a∨色屁股| 在线观看一区日韩| 99精品视频一区| 国模无码大尺度一区二区三区| 亚洲曰韩产成在线| 亚洲成av人片| 亚洲成人资源在线| 亚洲电影在线播放| 一区在线播放视频| 国产精品视频一二三区| 欧美大片在线观看一区二区| 欧美日韩高清一区二区三区| 国产白丝精品91爽爽久久| 成人自拍视频在线| 99久久99久久免费精品蜜臀| 成年人网站91| 国产精品正在播放| 国产99久久久精品| 丁香天五香天堂综合| 91网站在线播放| 欧美三级欧美一级| 欧美日韩一区在线观看| 精品国产一区二区三区四区四| 久久综合色婷婷| 久久久精品一品道一区| 樱花草国产18久久久久| 亚洲黄一区二区三区| 亚洲成av人片在www色猫咪| 精品一区二区三区欧美| 99精品一区二区| 国产欧美日韩三区| 综合网在线视频| 成人欧美一区二区三区1314| 亚洲国产精品av| 一区二区三区 在线观看视频| 蜜臀国产一区二区三区在线播放| 石原莉奈在线亚洲三区| 国产a区久久久| 欧美日韩一区在线观看| 精品91自产拍在线观看一区| 亚洲一区二区美女| a在线欧美一区| 精品少妇一区二区三区| 午夜精品久久一牛影视| 日韩专区欧美专区| 91麻豆精东视频| 久久久激情视频| 国产专区欧美精品| 欧美在线观看一区二区| 国产精品久久久久三级| 三级精品在线观看| 欧美日韩在线精品一区二区三区激情| 国产区在线观看成人精品| 国产资源在线一区| 欧美在线制服丝袜| 一区二区三区四区视频精品免费|