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

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

?? sht11.c

?? 關于瑞士SHT11程序
?? C
字號:
/******************************************************************/
/*      temperature模and humidity measure 						  */
/*	  display the data on the 1602;								  */
/*	  first line display temprrature 							  */
/*	  two line display humidity									  */
/******************************************************************/	  
#include<reg52.h>
#include"intrins.h"	 /*keil library for _nop() operation*/
#include"stdio.h"
#include"math.h"
#include"absacc.h"	 /*keil library*/


#define ACK 1
#define noACK 0
#define measure_temp 0x03 /*command to measure temperature*/
#define measure_humi 0x05 /*command to measure humidity*/
#define RESET        0x1e /*soft reset*/


#define uchar	unsigned char
#define uint    unsigned int
#define ulong	unsigned long
#define LCD_DATA	P0 /*LCD data import*/



sbit RS =P2^0;
sbit RW =P2^1;
sbit E =P2^2;
sbit DATA =P1^0;
sbit SCK =P1^1;




typedef union		 //reserve measured value for temperature or humidity
{
	uint i;
	float f;
}Value;




typedef struct  
{
	unsigned char	gewei;
	unsigned char	shiwei;
	unsigned char 	DATAstrins1[6];
	unsigned char	DATAstrins2[6];
}Systemtime;





char Write_Byte(uchar value)   //write a byte on the sen_bus and checks the acknowledge
{
	uchar i,error;
	for(i=0x80;i>0;i/=2)	   // continuous right shift 8 bit
	{	
		if(value&i)DATA =1;	 //get the DATA 
		else DATA =0;
		SCK =1;
		_nop_();
		_nop_();
		_nop_();  //delay 5 us
		SCK =0;
								   // drop 	edge
	}	
	DATA =1;					//release DATA
	SCK =1;						//checks answer  sequence
	error =DATA;				//checks the answer state ,if the  acknowledge the DATA =0;
    SCK =0;	
	return error;					

}



char Read_Byte(uchar ack)
{
	uchar i,val =0;
	DATA =1;			//release the DATA line
	for(i=0x80;i>0;i/=2)	 // continuous right shift 8 bit
	{
		SCK =1;
		if(DATA)  
			val =(val|i);
		SCK =0;
		
	
	}
	DATA =!ack;        //if acknowledge DATA =0;
	SCK =1;
	_nop_(); _nop_(); _nop_(); //delay 5 us
	SCK =0;
	DATA =1;			//release the DATA line
	return	val;

}



void Transmit_Start(void)	   //transmit start
{
	DATA =1;
	SCK =0;
	_nop_();
	SCK =1;
	_nop_();
	DATA =0;
	_nop_();
	SCK =0;
	_nop_();
	_nop_();
	_nop_();
	SCK =1;
	_nop_();
	DATA =1;
    _nop_();
	SCK =0;
	
}




void Connection_Reset(void)   //if communication  breaked ,	 make use of the sequense start the commnication
{
	unsigned char i;
	DATA =1;
	SCK =0;
	for(i=9;i>0;i--)	  //continuous 9 drop edge for connection the transmit
	{
		SCK=1;
		SCK=0;
	
	}
	Transmit_Start();  //transmit start

}



char Soft_Reset(void)	//reset the SHT11 and clear the value of the  register
{
	uchar error =0;
	Connection_Reset();
	error += Write_Byte(RESET);	  
	return error;			   //return the error for judgment answer

}



char Measure_Mode(uchar *P_Value, uchar *P_Checksum,  uchar Mode)  //make sure the style to measure
{
	uchar  error=0;
	uchar i;
	Transmit_Start();
	switch(Mode)
	{
		case 0:error +=Write_Byte(measure_temp);break;		// judgment the mode of measure
		case 1:error +=Write_Byte(measure_humi);break;
		default : break;
	
	}
	for(i=65535;i>0;i--)
		if(DATA==0)break;	 //wait until sht11 complete  the measure
	 if(DATA) error +=1;		 //time overflow  2second
	 *P_Value =Read_Byte(ACK);		 //get the high byte
 	 *(P_Value+1) =Read_Byte(ACK);	  //get the low byte
	 *P_Checksum =Read_Byte(noACK);   //get the checksum
	 return error;
}



void Calculate_SHT11(float *P_Temperature , float *P_Humidity) // calculate the temperature and humidity after compensated
{
  const float C1=-4.0;              //for 12 Bit
  const float C2=+0.0405;           //for 12 Bit
  const float C3=-0.0000028;        //for 12 Bit
  const float T1=+0.01;             //for 14 Bit @ 5V
  const float T2=+0.00008;           //for 14 Bit @ 5V 	

  float rh=*P_Humidity;             //rh:      Humidity [Ticks] 12 Bit  
  float t=*P_Temperature;           //t:       Temperature [Ticks] 14 Bit
  float rh_lin;                     //rh_lin:  Humidity linear 
  float rh_true;                    //rh_true: Temperature compensated humidity
  float t_C;                        //t_C   :  Temperature [癈]*/ 

  t_C=t*0.01 - 40;                     //calc. temperature from ticks to 
  rh_lin=C3*rh*rh + C2*rh + C1;        //calc. humidity from ticks to [%RH]
  rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;  //calc. temperature compensated humidity [%RH]
  if(rh_true>100)rh_true=100;          //cut if the value is outside of
  if(rh_true<0.1)rh_true=0.1;          //the physical possible range

  *P_Temperature=t_C;                  //return temperature 
  *P_Humidity=rh_true;                 //return humidity[%RH]			
	
}



/***************************************************************************************/
void DelayUs(void)	  //delay 2 us;
{
	_nop_();_nop_();
}


void DelayMs(uint a)  //delay a*1Ms
{
	uint i,j;
	for(i=a;i>0;i--)
	for(j=100;j>0;j--);


}


bit Check_Busy()  //check the 1602 state ,if busing return 1, else return 0
{
	bit Busy;
	RS =0;
	RW =1;
	E=1;
	DelayUs();
	Busy =(bit)(LCD_DATA&0X80);
	E=0;
	return Busy;

}


void Wait(void)  //wait the 1602 idle;
{
	while(Check_Busy());


}



void Write_Command(uchar Command) //write the command
{
	Wait();
	RS =0;
	RW =0;
	E =0;
	DelayUs();
	LCD_DATA =Command;
	DelayUs();
	E =1;
	DelayUs();
	E =0;

}


void Write_Command_NO(uchar Command) //write the command   but uncheck the busy
{
	
	RS =0;
	RW =0;
	E =0;
	DelayUs();
	LCD_DATA =Command;
	DelayUs();
	E =1;
	DelayUs();
	E =0;

}



void Write_Data(uchar Data)	 //write data
{
	Wait();
	RS =1;
	E =0;
	RW =0;
	DelayUs();
	LCD_DATA =Data;
	DelayUs();
	E =1;
	DelayUs();
	E =0;

}


 void Write_Data_NO(uchar Data)	 //write data  but uncheck the busy 
{
	
	RS =1;
	E =0;
	RW =0;
	DelayUs();
	LCD_DATA =Data;
	DelayUs();
	E =1;
	DelayUs();
	E =0;

}




void Init_Lcd(void)	   //init the 1602
{
	DelayMs(15);
	Write_Command_NO(0X38);
	DelayMs(5);
	Write_Command_NO(0X38);
	DelayMs(5);
	Write_Command_NO(0X38);

	Write_Command(0x38);
	Write_Command(0x08);  //display the  cursor	 and the cursor flash
	Write_Command(0x01);
	Write_Command(0x06);
	Write_Command(0x0c);

}

void Select_Position(uchar x, uchar y)	 //display on the 1602 x line  ,y position
{
	uchar P;
	switch(x)
	{
		case 1: P=0X80;break;
		case 2: P=0xc0;break;

	}
	P +=y;
	Write_Command(P);
}



void Date_To_String(Systemtime *Time,float DATA,float DATA1)
{
	uint i;
    i=(int)DATA;
	Time->shiwei=i/10;
	Time->gewei =i%10;
    Time->DATAstrins1[0] = Time->shiwei + '0';
	Time->DATAstrins1[1] = Time->gewei + '0';
	i=(int)((DATA-i)*10); 
	Time->DATAstrins1[2] ='.';
	Time->DATAstrins1[3] = i + '0';
	Time->DATAstrins1[4] = '\0';

    i=(int)DATA1;
	Time->shiwei=i/10;
	Time->gewei =i%10;
    Time->DATAstrins2[0] = Time->shiwei + '0';
	Time->DATAstrins2[1] = Time->gewei + '0';   
	i=(int)((DATA1-i)*10); 
	Time->DATAstrins2[2] ='.';
	Time->DATAstrins2[3] = i + '0';
	Time->DATAstrins2[4] = '%';
	Time->DATAstrins2[5] = '\0';
}



void Write_String(uchar *String)
{
	unsigned char i;
	while(String[i]!='0')
	{
		Write_Data(String[i++]);
	
	
	
	}
}

/***************************************************************************************/
void main(void)
{
	Systemtime S;
	uchar time_str1[]={"Temp"};	
	uchar time_str2[]={"Humi"};
	Value Temp_Value ,Humi_Value;
	uchar error ,checksum;
	uint i;
	Connection_Reset();
	Init_Lcd();
	Select_Position(1, 0);
	Write_String(time_str1);
	Select_Position(2, 0);
	Write_String(time_str2);
	while(1)
	{
		error =0;
		error+=Measure_Mode((unsigned char*) &Humi_Value.i,&checksum,1);   /*measure humidity*/
        error+=Measure_Mode((unsigned char*) &Temp_Value.i,&checksum,0);   /*measure temperature*/
		if(error!=0) 
	    Connection_Reset();                               /*in case of an error:connection reset*/
        else
        { 
         Humi_Value.f=(float)Humi_Value.i;                     /*converts integer to float*/
         Temp_Value.f=(float)Temp_Value.i;                     /*converts integer to float*/
         Calculate_SHT11(&Humi_Value.f,&Temp_Value.f);              /*calculate humidity,temperature*/
         Date_To_String(&S,Temp_Value.f,Humi_Value.f);		                  
         Select_Position(1,5);
         Write_String(S.DATAstrins1);         
         Select_Position(2,5);
         Write_String(S.DATAstrins2);
        }
     /*----------wait approx. 0.8s to avoid heating up SHT10------------------------------ */      
        for (i=0;i<10000;i++);     //(be sure that the compiler doesn't eliminate this line!)
     /*----------------------------------------------------------------------------------- */                    
   }
	
	
}
 


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频1区2区| 欧美群妇大交群中文字幕| 国产在线精品免费av| 秋霞av亚洲一区二区三| 日韩av中文在线观看| 天天爽夜夜爽夜夜爽精品视频| 亚洲不卡一区二区三区| 亚洲国产日韩av| 日本欧美加勒比视频| 久久精品国产一区二区| 国产一区二区三区免费在线观看| 国产一区欧美一区| 国产99久久久国产精品| 99re这里只有精品首页| 色综合久久综合| 欧美日韩国产免费一区二区| 欧美猛男男办公室激情| 欧美videofree性高清杂交| 精品999在线播放| 欧美—级在线免费片| 亚洲靠逼com| 日韩国产欧美视频| 国内精品伊人久久久久av影院| 国产成人免费视频一区| 99久久99久久精品免费看蜜桃| 91国偷自产一区二区使用方法| 欧美欧美欧美欧美首页| 欧美成人video| 国产精品免费视频观看| 亚洲综合久久久| 久久精品国产精品亚洲综合| 成人美女视频在线观看18| 91久久一区二区| 日韩一区二区免费在线电影| 日本一区二区三区四区在线视频| 亚洲青青青在线视频| 丝袜美腿一区二区三区| 国产一区二区免费视频| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩精品免费| 国产视频在线观看一区二区三区| 亚洲日本免费电影| 玖玖九九国产精品| 色综合久久久久综合体| 欧美成人精品二区三区99精品| 中文字幕亚洲不卡| 久久福利资源站| 91免费版在线看| 日韩三级视频在线看| 亚洲欧洲日韩av| 久久超级碰视频| 欧美中文字幕一二三区视频| 久久精品夜夜夜夜久久| 亚洲成人av在线电影| 国产a精品视频| 日韩区在线观看| 亚洲精品欧美综合四区| 国产精品一区二区在线观看不卡| 欧美在线你懂的| 国产精品免费网站在线观看| 蜜臀久久久久久久| 色视频欧美一区二区三区| 久久久久久久久伊人| 首页国产欧美日韩丝袜| 色国产精品一区在线观看| 久久女同性恋中文字幕| 日本一区中文字幕| 欧美午夜一区二区三区| 亚洲欧洲日产国产综合网| 国产一区二区三区久久久| 3d动漫精品啪啪1区2区免费 | 中文字幕av一区二区三区| 日韩高清国产一区在线| 91色乱码一区二区三区| 久久久久国产精品人| 日本不卡不码高清免费观看| 欧美性猛片xxxx免费看久爱| 国产精品久久777777| 国产一区二区久久| 日韩精品一区二区三区三区免费| 日韩专区中文字幕一区二区| 色呦呦国产精品| 亚洲男人的天堂av| 成人精品国产免费网站| 国产亚洲视频系列| 精品一区二区三区免费| 日韩一区二区免费高清| 免费成人结看片| 欧美一区二区三区在线视频 | 欧美亚洲尤物久久| 亚洲精品日韩综合观看成人91| 成人黄色在线视频| 国产日韩欧美不卡| 国产不卡视频在线播放| 久久免费美女视频| 国产麻豆精品一区二区| 久久综合色一综合色88| 国产麻豆午夜三级精品| 久久久久久久久伊人| 国产91高潮流白浆在线麻豆 | 国产精品入口麻豆九色| 波多野结衣视频一区| 中文字幕一区二区三区在线观看 | 成人av小说网| 亚洲桃色在线一区| 91久久久免费一区二区| 一区二区三区视频在线看| 欧美视频精品在线观看| 午夜精品久久久久久久久| 欧美三电影在线| 丝袜美腿高跟呻吟高潮一区| 欧美精品日韩一区| 久久99精品国产.久久久久| 久久一区二区三区四区| 国产成人午夜片在线观看高清观看| 精品黑人一区二区三区久久| 国产麻豆精品一区二区| 国产精品国产三级国产普通话三级 | 欧美一二三区在线| 久久精品国产澳门| 久久精品视频一区二区| 91亚洲男人天堂| 亚洲一区在线观看免费观看电影高清 | 欧洲精品视频在线观看| 日日嗨av一区二区三区四区| 日韩免费电影一区| 成人一区二区三区视频在线观看| 亚洲视频中文字幕| 欧美精品第1页| 国产精品影视网| 亚洲日本va午夜在线电影| 欧美日韩在线一区二区| 久久国产日韩欧美精品| 中文字幕乱码久久午夜不卡 | 在线精品视频一区二区| 日韩国产欧美视频| 国产亚洲1区2区3区| 一本色道久久综合亚洲aⅴ蜜桃| 日韩av中文字幕一区二区三区| 久久久久久久久99精品| 色偷偷久久一区二区三区| 看电影不卡的网站| 亚洲天堂2014| 欧美va亚洲va在线观看蝴蝶网| 99视频有精品| 麻豆国产欧美一区二区三区| 国产精品日日摸夜夜摸av| 欧美日韩亚洲国产综合| 国产一区二区福利视频| 亚洲一区在线观看视频| 久久精品日韩一区二区三区| 欧美性受xxxx| 懂色av一区二区在线播放| 午夜欧美在线一二页| 亚洲国产高清aⅴ视频| 7777精品伊人久久久大香线蕉的 | 亚洲精品网站在线观看| 日韩免费观看高清完整版在线观看| thepron国产精品| 秋霞电影一区二区| 一区二区在线观看不卡| 久久久99久久| 日韩一区二区三区高清免费看看| 91丨九色丨蝌蚪富婆spa| 精品一区二区免费| 亚洲午夜激情网站| 国产精品久久久久久久久久免费看| 91精品视频网| 欧美亚洲综合色| 成人午夜又粗又硬又大| 美国av一区二区| 亚洲成在线观看| 亚洲欧美另类图片小说| 久久久久久久久久美女| 欧美一级免费大片| 在线精品视频一区二区| 99久久久免费精品国产一区二区| 国内精品国产三级国产a久久 | 在线视频一区二区免费| 成人在线一区二区三区| 国产在线看一区| 青青草97国产精品免费观看 | 亚洲欧洲另类国产综合| 26uuu国产日韩综合| 日韩一卡二卡三卡| 337p亚洲精品色噜噜噜| 在线观看成人小视频| 97久久人人超碰| 成人精品亚洲人成在线| 国产一区二区三区久久久| 狠狠狠色丁香婷婷综合激情| 日韩**一区毛片| 免费视频最近日韩| 免费观看日韩电影| 蜜桃视频一区二区| 蜜桃精品在线观看| 麻豆精品一区二区综合av| 免费在线观看不卡| 蜜臀av性久久久久蜜臀aⅴ流畅| 天天综合网天天综合色|