freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的環(huán)境溫濕度光照度檢測裝置-資料下載頁

2025-07-27 08:18本頁面
  

【正文】 { uchar i。 scl=1。 delay()。 while((sda==1)amp。amp。(i250)) i++。 scl=0。 delay()。 } void write_byte(unsigned char date) { uchar i。 for(i=0。i8。i++) { scl=0。 date=1。 sda=CY。 delay()。 scl=1。 delay()。 } scl=0。 delay()。 sda=1。 //釋放資源 delay()。 } uchar read_byte() { uchar i,k。 scl=0。 delay()。 sda=1。 //釋放資源 delay()。 for(i=0。i8。i++) { scl=1。 delay()。 k=(k1)|sda。 scl=0。 delay()。 } return k。 } void TSL2561_Write(uchar mand,uchar date) { start()。 write_byte(SLAVE_ADDR_WR)。 respons()。 write_byte(mand)。 respons()。 write_byte(date)。 respons()。 stop()。 } uchar TSL2561_Read(uchar mand) { uchar date。 start()。 write_byte(SLAVE_ADDR_WR)。 respons()。 write_byte(mand)。 respons()。 start()。 write_byte(SLAVE_ADDR_RD)。 respons()。 date=read_byte()。 stop()。 return date。 } //讀取光照強度 void Read_Light() { DataLow0 = TSL2561_Read(DATA0LOW)。 DataHigh0 = TSL2561_Read(DATA0HIGH)。 Channel0 = 256*DataHigh0 + DataLow0。 DataLow1 = TSL2561_Read(DATA1LOW)。 DataHigh1 = TSL2561_Read(DATA1HIGH)。 Channel1 = 256*DataHigh1 + DataLow1。 } void Init() { EA=1。 TMOD=0x20。 TL1=0xfd。 TH1=0xfd。 TR1=1。 // SMOD=0。 SM0=0。 SM1=1。 REN=1。 ES=1。 } //////////////////////////濕度/////////////////////////////////////// void Delay(U16 j) { U8 i。 for(。j0。j) { for(i=0。i27。i++)。 } } void Delay_10us(void) { U8 i。 i。 i。 i。 i。 i。 i。 } void COM(void) { U8 i。 for(i=0。i8。i++) { U8FLAG=2。 while((!P2_0)amp。amp。U8FLAG++)。 Delay_10us()。 Delay_10us()。 Delay_10us()。 U8temp=0。 if(P2_0)U8temp=1。 U8FLAG=2。 while((P2_0)amp。amp。U8FLAG++)。 //超時則跳出for循環(huán) if(U8FLAG==1)break。 //判斷數(shù)據(jù)位是0還是1 // 如果高電平高過預(yù)定0高電平值則數(shù)據(jù)位為 1 U8data=1。 U8data|=U8temp。 } } //濕度讀取子程序 //濕度高8位== U8RH_data_H //濕度低8位== U8RH_data_L //校驗 8位 == U8checkdata void RH(void) { //主機拉低18ms P2_0=0。 Delay(180)。 P2_0=1。 //總線由上拉電阻拉高 主機延時20us Delay_10us()。 Delay_10us()。 Delay_10us()。 Delay_10us()。 P2_0=1。 if(!P2_0) //T ! { U8FLAG=2。 while((!P2_0)amp。amp。U8FLAG++)。 U8FLAG=2。 while((P2_0)amp。amp。U8FLAG++)。 COM()。 U8RH_data_H_temp=U8data。 COM()。 U8RH_data_L_temp=U8data。 COM()。 U8checkdata_temp=U8data。 P2_0=1。 //數(shù)據(jù)校驗 U8temp=(U8RH_data_H_temp+U8RH_data_L_temp)。 if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp。 U8RH_data_L=U8RH_data_L_temp。 U8checkdata=U8checkdata_temp。 } } }//液晶初始化void init_lcd(void){ wr_i_lcd(0x06)。 /*光標的移動方向*/ wr_i_lcd(0x0c)。 /*開顯示,關(guān)游標*/}//填充液晶DDRAM全為空格void clrram_lcd (void){ wr_i_lcd(0x30)。 wr_i_lcd(0x01)。}//對液晶寫數(shù)據(jù)//content為要寫入的數(shù)據(jù)void wr_d_lcd(uchar content){ busy_lcd()。 rs=1。 rw=0。 lcddata=content。 e=1。 e=0。}//對液晶寫指令//content為要寫入的指令代碼void wr_i_lcd(uchar content){ busy_lcd()。 rs=0。 rw=0。 lcddata=content。 e=1。 。 e=0。}//液晶檢測忙狀態(tài)//在寫入之前必須執(zhí)行void busy_lcd(void){ lcddata=0xff。 rs=0。 rw=1。 e =1。 while(busy==1)。 e =0。}//指定要顯示字符的坐標void gotoxy(unsigned char y, unsigned char x){ if(y==1) wr_i_lcd(0x80|x)。 if(y==2) wr_i_lcd(0x90|x)。 if(y==3) wr_i_lcd((0x80|x)+8)。 if(y==4) wr_i_lcd((0x90|x)+8)。}//液晶顯示字符串程序void print(uchar *str){ while(*str!=39。\039。) { wr_d_lcd(*str)。 str++。 }}/***********ds18b20子程序*************************/void delay_18B20(unsigned int i){ while(i)。}/**********ds18b20初始化函數(shù)**********************/void Init_DS18B20(void) { unsigned char x=0。 DQ = 1。 //DQ復(fù)位 delay_18B20(8)。 //稍做延時 DQ = 0。 //單片機將DQ拉低 delay_18B20(40)。 //精確延時 大于 480us DQ = 1。 //拉高總線 delay_18B20(7)。 x=DQ。 //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay_18B20(10)。}/***********ds18b20讀一個字節(jié)**************/ uchar ReadOneChar(void){ uchar i=0。 uchar dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號 dat=1。 DQ = 1。 // 給脈沖信號 if(DQ) dat|=0x80。 delay_18B20(4)。 } return(dat)。}/*************ds18b20寫一個字節(jié)****************/ void WriteOneChar(uchar dat){ uchar i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。0x01。 delay_18B20(5)。 DQ = 1。 dat=1。 }}/**************讀取ds18b20當前溫度************/void ReadTemp(void){ uchar a=0。 uchar b=0。 uchar t。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 delay_18B20(100)。 // this message is wery important Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 delay_18B20(50)。 a=ReadOneChar()。 //讀取溫度值低位 b=ReadOneChar()。 //讀取溫度值高位 t=bamp。0xf8。 if(t) { TempBuffer[0]=39。:39。 TempBuffer[1]=39。39。 temp_value=b4。 temp_value+=(aamp。0xf0)4。 temp_value=~temp_value+1。 temp1_value=~aamp。0x0f。 } else { temp_value=b4。 temp_value+=(aamp。0xf0)4。 temp1_value=aamp。0x0f。 TempBuffer[0]=39。:39。 TempBuffer[1]=temp_value/100+39。039。 //百位 if(TempBuffer[1]==39。139。) { TempBuffer[1]=39。139。 } else { TempBuffer[1]=39。 39。 } }}void temp_to_str() //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示{ TempBuffer[2]=temp_value%100/10+39。039。 //十位 TempBuffer[3]=temp_value%10+39。039。 //個位 TempBuffer[4]=39。.39。 TempBuffer[5]=temp1_value*625/1000%10+39。039
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1