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

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

?? text1.c

?? SHTxx用數碼管顯示數據望大家有用
?? C
字號:
/* -----------------------       版權聲明      ---------------------------------- 
  ------------------------------ 創新科技   2007/01/05 --------------------------
 
  --------------  Mobile:13433018379  (陶志學) ---------------------------------- 
  ------       Email:taozhixue123@163.com   --------
  未經東莞市創新科技書面同意, 不得將本程序泄露、公開給第三方。
  不得將本程序(或修改后的程序)使用在非東莞市創新科技銷售的產品上。
  客戶產品上使用本程序時,客戶產品的源程序中必須注明使用了東莞市創新科技的程序,
  并保留如下內容:
 ******************************************************************************** */
//SHTxx程序演示 89 系列 MCU。 時鐘12MHZ
//結果以數碼管顯示


#include <reg51.h> //Microcontroller specific library, e.g. port definitions
#include <intrins.h> //Keil library (is used for _nop()_ operation)  
#include <math.h>    //Keil library  
#include <stdio.h>   //Keil library             
const unsigned char DATA_7SEG[ ] ={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char led[6];

typedef union 
{ unsigned int i;
  float f;
} value;

//----------------------------------------------------------------------------------
// modul-var
//----------------------------------------------------------------------------------
enum {TEMP,HUMI};

sbit	DATA= P2^3;
sbit	SCK= P2^7;

#define noACK 0
#define ACK   1
                            //adr  command  r/w
#define STATUS_REG_W 0x06   //000   0011    0
#define STATUS_REG_R 0x07   //000   0011    1
#define MEASURE_TEMP 0x03   //000   0001    1
#define MEASURE_HUMI 0x05   //000   0010    1
#define RESET        0x1e   //000   1111    0

//----------------------------------------------------------------------------------
char s_write_byte(unsigned char value)
//----------------------------------------------------------------------------------
// writes a byte on the Sensibus and checks the acknowledge 
{ 
  unsigned char i,error=0;  
  for (i=0x80;i>0;i/=2)             //shift bit for masking
  { if (i & value) DATA=1;          //masking value with i , write to SENSI-BUS
    else DATA=0;                        
    SCK=1;                          //clk for SENSI-BUS
    _nop_();_nop_();_nop_();        //pulswith approx. 5 us  	
    SCK=0;
  }
  DATA=1;                           //release DATA-line
  SCK=1;                            //clk #9 for ack 
  error=DATA;                       //check ack (DATA will be pulled down by SHT11)
  SCK=0;        
  return error;                     //error=1 in case of no acknowledge
}

//----------------------------------------------------------------------------------
char s_read_byte(unsigned char ack)
//----------------------------------------------------------------------------------
// reads a byte form the Sensibus and gives an acknowledge in case of "ack=1" 
{ 
  unsigned char i,val=0;
  DATA=1;                           //release DATA-line
  for (i=0x80;i>0;i/=2)             //shift bit for masking
  { SCK=1;                          //clk for SENSI-BUS
    if (DATA) val=(val | i);        //read bit  
    SCK=0;  					 
  }
  DATA=!ack;                        //in case of "ack==1" pull down DATA-Line
  SCK=1;                            //clk #9 for ack
  _nop_();_nop_();_nop_();          //pulswith approx. 5 us 
  SCK=0;						    
  DATA=1;                           //release DATA-line
  return val;
}

//----------------------------------------------------------------------------------
void s_transstart(void)
//----------------------------------------------------------------------------------
// generates a transmission start 
//       _____         ________
// DATA:      |_______|
//           ___     ___
// SCK : ___|   |___|   |______
{  
   DATA=1; SCK=0;                   //Initial state
   _nop_();
   SCK=1;
   _nop_();
   DATA=0;
   _nop_();
   SCK=0;  
   _nop_();_nop_();_nop_();
   SCK=1;
   _nop_();
   DATA=1;		   
   _nop_();
   SCK=0;		   
}

//----------------------------------------------------------------------------------
void s_connectionreset(void)
//----------------------------------------------------------------------------------
// communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart
//       _____________________________________________________         ________
// DATA:                                                      |_______|
//          _    _    _    _    _    _    _    _    _        ___     ___
// SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______
{  
  unsigned char i; 
  DATA=1; SCK=0;                    //Initial state
  for(i=0;i<9;i++)                  //9 SCK cycles
  { SCK=1;
    SCK=0;
  }
  s_transstart();                   //transmission start
}

//----------------------------------------------------------------------------------
char s_softreset(void)
//----------------------------------------------------------------------------------
// resets the sensor by a softreset 
{ 
  unsigned char error=0;  
  s_connectionreset();              //reset communication
  error+=s_write_byte(RESET);       //send RESET-command to sensor
  return error;                     //error=1 in case of no response form the sensor
}

//----------------------------------------------------------------------------------
char s_read_statusreg(unsigned char *p_value, unsigned char *p_checksum)
//----------------------------------------------------------------------------------
// reads the status register with checksum (8-bit)
{ 
  unsigned char error=0;
  s_transstart();                   //transmission start
  error=s_write_byte(STATUS_REG_R); //send command to sensor
  *p_value=s_read_byte(ACK);        //read status register (8-bit)
  *p_checksum=s_read_byte(noACK);   //read checksum (8-bit)  
  return error;                     //error=1 in case of no response form the sensor
}

//----------------------------------------------------------------------------------
char s_write_statusreg(unsigned char *p_value)
//----------------------------------------------------------------------------------
// writes the status register with checksum (8-bit)
{ 
  unsigned char error=0;
  s_transstart();                   //transmission start
  error+=s_write_byte(STATUS_REG_W);//send command to sensor
  error+=s_write_byte(*p_value);    //send value of status register
  return error;                     //error>=1 in case of no response form the sensor
}
 							   
//----------------------------------------------------------------------------------
char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
//----------------------------------------------------------------------------------
// makes a measurement (humidity/temperature) with checksum
{ 
  unsigned error=0;
  unsigned int i;

  s_transstart();                   //transmission start
  switch(mode){                     //send command to sensor
    case TEMP	: error+=s_write_byte(MEASURE_TEMP); break;
    case HUMI	: error+=s_write_byte(MEASURE_HUMI); break;
    default     : break;	 
  }
  for (i=0;i<65535;i++) if(DATA==0) break; //wait until sensor has finished the measurement
  if(DATA) error+=1;                // or timeout (~2 sec.) is reached
  *(p_value)  =s_read_byte(ACK);    //read the first byte (MSB)
  *(p_value+1)=s_read_byte(ACK);    //read the second byte (LSB)
  *p_checksum =s_read_byte(noACK);  //read checksum
  return error;
}

//----------------------------------------------------------------------------------
void init_uart()
//----------------------------------------------------------------------------------
//9600 bps @ 11.059 MHz 
{SCON  = 0x52;    
 TMOD  = 0x20;    
 TCON  = 0x69;	  
 TH1   = 0xfd;    
}

//----------------------------------------------------------------------------------------
void calc_sth11(float *p_humidity ,float *p_temperature)
//----------------------------------------------------------------------------------------
// calculates temperature [癈] and humidity [%RH] 
// input :  humi [Ticks] (12 bit) 
//          temp [Ticks] (14 bit)
// output:  humi [%RH]
//          temp [癈]
{ 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]
}

//--------------------------------------------------------------------
float calc_dewpoint(float h,float t)
//--------------------------------------------------------------------
// calculates dew point
// input:   humidity [%RH], temperature [癈]
// output:  dew point [癈]
{ float logEx,dew_point;
  logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);
  dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx);
  return dew_point;
}




//delay()________________________________________________
void delay(unsigned char t)
{unsigned char i;
 for (i=0;i<t;i++);
} 
//delay10ms()____________________________________________
void delay10ms(unsigned int count)
{unsigned int i,j,k;
 for(i=0;i<count;i++)
 for(j=0;j<10;j++)
 for(k=0;k<120;k++)
 ;
}
void display(void)
{unsigned char i;
 for (i=0;i<6;i++)
   {P0=~(1<<i);        //低電平驅位選
    P1=DATA_7SEG[led[i]];
    delay(500);    //about 1.5ms
    }
 P0=0xff;
 P1=0xff;
}


//----------------------------------------------------------------------------------
void main()
//----------------------------------------------------------------------------------
// sample program that shows how to use SHT11 functions
// 1. connection reset 
// 2. measure humidity [ticks](12 bit) and temperature [ticks](14 bit)
// 3. calculate humidity [%RH] and temperature [癈]
// 4. calculate dew point [癈]
// 5. print temperature, humidity, dew point  

{ value humi_val,temp_val;
  float dew_point;
  unsigned char error,checksum,Lkeydata0,Lkeydata1,Lkeydata2,Lkeydata3,Lkeydata4,
  Lkeydata5;
  	unsigned int i,j,k;					
					
  P0=0xff;
  P1=0xff;
  init_uart();
  s_connectionreset();
  while(1)
  { error=0;
    error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);  //measure humidity
    error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);  //measure temperature
    if(error!=0) s_connectionreset();                 //in case of an error: connection reset
    else
    { humi_val.f=(float)humi_val.i;                   //converts integer to float
      temp_val.f=(float)temp_val.i;                   //converts integer to float
      calc_sth11(&humi_val.f,&temp_val.f);            //calculate humidity, temperature
      dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
       printf("溫度:%5.1fC 相對濕度:%5.1f%% dew point:%5.1fC\n",temp_val.f,humi_val.f,dew_point);
		
		temp_val.f=temp_val.f*10;
	   temp_val.f=temp_val.f-5;
	   Lkeydata2= temp_val.f/100;

	   Lkeydata1= (temp_val.f-=Lkeydata2*100)/10;

	    Lkeydata0= temp_val.f-=Lkeydata1*10;		
		
		
				   
		humi_val.f=humi_val.f*10;
	   Lkeydata5= humi_val.f/100;

	   Lkeydata4= (humi_val.f-=Lkeydata5*100)/10;

	    Lkeydata3= humi_val.f-=Lkeydata4*10;
	   for (j=0;j<100;j++)
	    {

	     led[2]=Lkeydata2;
		
	     led[1]=Lkeydata1;
	      led[0]=Lkeydata0;
		 	     led[5]=Lkeydata5;
		
	     led[4]=Lkeydata4;
	      led[3]=Lkeydata3;



         for(k=0;k<5;k++)
         display();
		}




    }
    //----------wait approx. 0.8s to avoid heating up SHTxx------------------------------      
    for (i=0;i<10;i++);     //(be sure that the compiler doesn't eliminate this line!)
    //-----------------------------------------------------------------------------------                       
  }
} 

//----------------------------------------------------------------------------------
 






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品国产免费观看同学| 91精品国产欧美一区二区18| 久久99精品久久久久久动态图| 亚洲视频一区二区免费在线观看| 久久理论电影网| 欧美videos大乳护士334| 欧美一二三四在线| 欧美欧美欧美欧美| 欧美情侣在线播放| 欧美一级二级三级乱码| 欧美电视剧在线看免费| 精品国免费一区二区三区| 精品久久久久久最新网址| 欧美mv日韩mv亚洲| 国产日韩v精品一区二区| 国产免费成人在线视频| 亚洲欧美影音先锋| 图片区小说区区亚洲影院| 天堂资源在线中文精品| 美女任你摸久久| 国产91精品精华液一区二区三区| 成人av网站在线观看免费| 91视频在线看| 日韩欧美一区二区三区在线| 久久天堂av综合合色蜜桃网| 国产精品传媒在线| 日本在线不卡一区| 岛国精品一区二区| 欧美亚洲愉拍一区二区| 欧美v日韩v国产v| 最新成人av在线| 蜜臀av性久久久久蜜臀av麻豆| 国内精品不卡在线| 欧美伊人精品成人久久综合97| 日韩三区在线观看| 亚洲图片欧美激情| 麻豆成人综合网| 99久久精品国产毛片| 日韩欧美一二三区| 一区二区三区在线观看网站| 蜜臀精品一区二区三区在线观看 | 国产婷婷色一区二区三区| 最新日韩av在线| 精品一区二区三区免费毛片爱| 色综合咪咪久久| 久久一区二区三区国产精品| 亚洲国产aⅴ天堂久久| 国产成人午夜精品5599| 7777精品伊人久久久大香线蕉的| 国产精品国产自产拍高清av王其 | 成人黄色777网| 日韩美女视频在线| 亚洲综合区在线| 成人av资源下载| 久久嫩草精品久久久久| 五月激情综合网| 在线观看亚洲a| 国产精品久久毛片av大全日韩| 久国产精品韩国三级视频| 精品婷婷伊人一区三区三| 最好看的中文字幕久久| 国产成人8x视频一区二区| 欧美大度的电影原声| 日韩中文字幕1| 欧美色网站导航| 亚洲综合精品自拍| 91蜜桃免费观看视频| 中文字幕乱码一区二区免费| 黄页网站大全一区二区| 日韩欧美在线网站| 99精品久久99久久久久| 欧美精品一区二区三区蜜臀| 奇米四色…亚洲| 日韩亚洲欧美中文三级| 天堂在线一区二区| 欧美日韩国产高清一区二区三区| 亚洲国产你懂的| 欧美群妇大交群的观看方式| 午夜亚洲福利老司机| 777奇米四色成人影色区| 亚洲成人av免费| 91精品国产综合久久蜜臀| 日韩成人免费在线| 精品国产凹凸成av人导航| 黄一区二区三区| 国产精品无人区| 91亚洲永久精品| 亚洲二区在线视频| 91精品国产综合久久久久久久久久| 天堂午夜影视日韩欧美一区二区| 7777精品久久久大香线蕉| 蜜臀av一区二区在线观看| 精品88久久久久88久久久| 国产精品资源网站| 国产精品无码永久免费888| 色噜噜夜夜夜综合网| 天天av天天翘天天综合网色鬼国产 | 成人免费高清在线观看| 亚洲欧美电影院| 69堂亚洲精品首页| 国产传媒欧美日韩成人| 综合久久综合久久| 日韩无一区二区| 成人永久看片免费视频天堂| 一区二区三区美女| 欧美大片拔萝卜| 91香蕉视频污在线| 久久成人久久鬼色| 亚洲天堂2014| 精品理论电影在线| 在线视频一区二区三区| 久久99热这里只有精品| 亚洲欧美日韩在线| 亚洲精品一区二区三区蜜桃下载 | 欧美性欧美巨大黑白大战| 久久99久久久久久久久久久| 亚洲欧洲日韩在线| 日韩欧美中文一区二区| 91免费观看视频| 国产精品99久久久| 日韩国产一区二| 亚洲精品中文字幕乱码三区| 欧美不卡一区二区三区四区| 色呦呦国产精品| 国产成人av电影在线播放| 天堂成人免费av电影一区| 亚洲蜜臀av乱码久久精品| 久久色视频免费观看| 欧美一区二区三区免费大片 | 成人手机在线视频| 久久国产三级精品| 午夜不卡av免费| 亚洲免费三区一区二区| 国产亚洲欧美一区在线观看| 日韩一区二区视频在线观看| 色综合久久中文综合久久97| 国产乱码精品一品二品| 另类成人小视频在线| 日韩专区在线视频| 亚洲成人免费电影| 亚洲国产日韩精品| 一区二区三区不卡视频在线观看 | 国产精品视频yy9299一区| 日韩欧美国产小视频| 欧美精品黑人性xxxx| 欧美日韩亚洲综合| 欧美日韩免费观看一区三区| 91丨九色丨国产丨porny| 成人免费视频一区| 大胆亚洲人体视频| 成人动漫av在线| 99久久精品久久久久久清纯| 成人成人成人在线视频| 成人av资源在线观看| 波多野结衣一区二区三区| 成人一区二区三区视频| 成av人片一区二区| 99国产一区二区三精品乱码| 91美女视频网站| 欧美伊人久久久久久久久影院| 91国在线观看| 在线播放中文字幕一区| 欧美一区二区精品在线| 精品久久久久久综合日本欧美| 久久久亚洲精品石原莉奈 | 亚洲蜜臀av乱码久久精品蜜桃| 亚洲男女一区二区三区| 亚洲va在线va天堂| 麻豆视频一区二区| 岛国精品在线观看| 在线这里只有精品| 日韩你懂的在线播放| 欧美激情在线观看视频免费| 一区在线观看免费| 首页国产欧美久久| 国产精品亚洲第一区在线暖暖韩国 | 国产精品一区在线| 91一区二区三区在线观看| 欧美日产在线观看| 精品国产区一区| 亚洲色图都市小说| 日本不卡一二三区黄网| 国产真实精品久久二三区| 91免费视频大全| 欧美videos中文字幕| 自拍av一区二区三区| 日本午夜一本久久久综合| 粉嫩av一区二区三区粉嫩| 欧美视频精品在线| 久久精品亚洲精品国产欧美kt∨ | 国产精品久久久久久妇女6080| 日韩欧美一区二区在线视频| 精品视频在线视频| 欧美一二三四在线| 最新国产の精品合集bt伙计| 一区二区三区在线视频观看| 欧美精品久久久久久久久老牛影院| 久久毛片高清国产| 国产伦精品一区二区三区免费 | 在线视频欧美区|