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

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

?? 18b20.c

?? 基于c51單片機的18b20實時溫度檢測
?? C
字號:
 #include<regx51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit  rs=P2^1	;
sbit  rw= P2^2	;
sbit  e=P2^3 ;
sbit   DO=P1^0;

uchar temp_l = 0;  //溫度值存儲低位字節
uchar temp_h = 0;  //溫度值存儲高位字節

uchar tempsign = 0;  //溫度值符號位
uchar temp_integer[4]; //溫度整數存儲數組
uchar temp_dicimal[5]; //溫度小數存儲數組

void delay(uint ms)
{
 uint i;
 uchar j;
 for(i=0;i<ms;i++)
   for(j=0;j<250;j++)
   {
    _nop_();
   	_nop_();
	_nop_();
    _nop_();
   }



}
void  write_com(uchar com)
{
	 rs=0;
	 P3=com;
	 delay(1);
	 e=1;
	 delay(1);
	 e=0;

}

void  write_data(uchar date)
{
	 rs=1;
	 P3=date;
	 delay(1);
	 e=1;
	 delay(1);
	 e=0;

}
void gotoxy(uchar x,uchar y)	//光標指針移動到x行y列
{
	if(x==0)
	{
		write_com(0x80+y);
    }
	else
	{
		write_com(0x80+0x40+y);
	}
}	
/* ##########################################################################
初始化:設置顯示模式       ----  0x38  --設置16x2 顯示,5x7點陣,8位數據接口
        顯示開/關及光標設置 --   0x08  --關顯示
		                    --   0x0b  --開顯示
								 0x0e  --顯示光標,不閃爍
								 0x0c  --不顯示光標,不閃爍
								 0x0d  --光標閃爍,不顯示
								 0x0f  --光標顯示+閃爍
						  ------ 0x06  --讀或寫一個字符后地址指針加一,且光標加一,整屏不移動
						  ------ 0x01  --顯示清屏:數據指針清零,所有顯示清零
					    	     0x02  --顯示回車:數據指針清零    
 ######################################################################### */ 
void init()
{
	  rw=0;	   //開寫狀態
	 // write_com(0x01);
	  write_com(0x38);
	  write_com(0x0f);
	  write_com(0x06);
	  write_com(0x0c);	
}
void print(uchar *p) //顯示字符串	 //void display_string(uchar *str,uchar len)
{									//	{
    while(*p)						//	 	uchar i;
	{								//	 	for(i=0;i<len;i++)
		write_data(*p);				//		 {
		p++;						//		   write_data(str【i】);
	}								//		  }
}									//
void display_number(uchar number)	//	 }
{
	write_data(0x30+number);  //轉化為ASCII碼
} 

/*us級延時,延時時間約4+2*i*/
void Delayus(uchar i)
 {
  while(--i);
 }

/*產生復位脈沖,等待應答信號*/
bit Resetpaulse()
{

 DO = 0; //拉低約600us
 Delayus(150);
 Delayus(150);

 DO = 1;//產生上升沿,延時約15~60us
 Delayus(30);

 return(~DO); //等待應答信號

} 

/*讀取數據一位*/
bit Readbit()
{
 uint i = 0;
 bit b = 0;

 DO = 0; //產生讀時隙  
 i++;	 //維持低電平至少1us

 DO = 1; //1us以上后拉高
 Delayus(2); //延時8us,DO下降沿15內ds18b20輸出的數據才有效


 b = DO; //讀取數據
 Delayus(40);	 //每個讀時隙至少持續60us

 return(b);
} 

/*讀取一個字節*/
uchar Readbyte()
{
 uchar byte_read = 0;
 uchar i, j;

 for(i=0; i<8; i++)
  {
   j = Readbit();
   byte_read = (j<<i) | byte_read; //低位讀起
  }

 return(byte_read);
} 

/*寫一個字節*/
void Writebyte(uchar byte_to_write)
{
 uchar i = 0;
 uchar j = 0;
 bit write_bit = 0;

 for(j=0; j<8; j++)
  {
   write_bit = 	(byte_to_write & 0x01);
    if(write_bit == 1) //寫1
	 {
	  DO = 0;  //產生寫時隙
	  Delayus(3);	   //延時15us
	  
	  DO = 1;  //寫1
	  Delayus(40);   //延時,寫時隙不得低于60us
	 }
	else
	 {
	  DO = 0;  //產生寫時隙
	  Delayus(50);   //延時,保持低約60us~120us 
	  DO = 1;  
	  i++;
	 }
   byte_to_write = byte_to_write >> 1;
  }
}


/*啟動溫度轉換*/
void StartConvert()
{
 Resetpaulse();	  // 發出復位脈沖,每次操作都從復位開始
 delay(1);
 Writebyte(0xcc); //skip room命令,跳過序列號命令字
 Writebyte(0x44); //啟動溫度轉換命令
}

/*讀取溫度值*/
void ReadTempreture()
{
 Resetpaulse();	  // 發出復位脈沖,每次操作都從復位開始
 delay(1);
 Writebyte(0xcc); //skip room命令
 Writebyte(0xbe); //讀取暫存器命令
 temp_l = Readbyte(); //存儲溫度低字節值 (整數部分低四位和小數部分)
 temp_h	= Readbyte(); //存儲溫度高字節值 (其中高五位為符號位)
}

/*數據處理程序*/
void Digital_process()
{
	 uchar total = 0;
	 uchar low = 0;
	 uint  dicimal = 0;
	
	 tempsign = (temp_h >> 7) & 0x01; //得出符號位
	 total = ((temp_h << 4)&0xf0) | ((temp_l >> 4)&0x0f); //取整數位
	 low =  temp_l & 0x0f; //取小數位
	
	 if(tempsign == 0)
	  {
		   temp_integer[0] = total / 100 + '0'; //計算百、十、個位	 	  
		   temp_integer[1] = (total%100)/10 + '0';
		   temp_integer[2] = (total%100)%10 + '0'; 
		   temp_integer[3] = '\0';
		/*   if(temp_integer[0] == '0')
			 {
				   if(temp_integer[1] != '0')
					{
				     	temp_integer[0] = '\0'; //百位零消隱
				     
				     }
				   else if(temp_integer[1] == '0')
				    {
					 	temp_integer[0] = '\0';  //百位,十位零都消隱
					 	temp_integer[1] = '\0';
					}
		     }	*/ 
		   dicimal = low * 625;	         //計算小數
		   temp_dicimal[0] = dicimal / 1000 + '0';	//十分位
		   temp_dicimal[1] = dicimal % 1000 /100 + '0';	 //百分位
		   temp_dicimal[2] = dicimal % 100 / 10 + '0';	 //千分位
		   temp_dicimal[3] = dicimal % 10 + '0';		//萬分位
		   temp_dicimal[4] = '\0'; 	  //數組加一個空字符(好像系統也會自動加上的)
	  }
	
	 else if(tempsign == 1)	  //負數處理
	  {
		   if(low == 0x00)		//負數要取反加一再乘以0.0625就是實際溫度值了,我這里沒有設那么多int型變量,
		     {
				  total = ~total + 1;  //所以就用了這么一個計算方法
				  low &= 0x0f;
			  }				   /*具體一點講,小數低四位為全零時取反加一要有進位,此時只要整數位取反加一即可,
		                         小數位不用理會,其余情況整數位取反,小數位取反加一*/
		   else
		     {
				  total = ~total ;
				  low = (~low) + 1;
				  low &= 0x0f;	  //注意高四位要變成零
			  }	 	  
		   temp_integer[1] = (total%100)/10 + '0'; //計算十、個位
		   temp_integer[2] = (total%100)%10 + '0'; 
		   temp_integer[3] = '\0';
		
		
		 //  if(temp_integer[1] == '0')
		 //   {
		//	 temp_integer[1] = '\0';
		 //   }
		   dicimal = low * 625;
		   temp_dicimal[0] = dicimal / 1000 + '0';
		   temp_dicimal[1] = dicimal % 1000 /100 + '0';
		   temp_dicimal[2] = dicimal % 100 / 10 + '0';
		   temp_dicimal[3] = dicimal % 10 + '0';
		   temp_dicimal[4] = '\0';
	  }
	 

}

void main()
{
	 bit palse = 0;
	 init();
	
	 gotoxy(0,2);
	 print("CHECKING...");
	 delay(300);
	 
	
	 palse = Resetpaulse();	  //檢測DS18B20是否響應
	 if(palse)
	  {
		   init();
		   gotoxy(0,3);
		   print("DS18B20 OK");
	   }
	 else
	   {
		    init();
		    gotoxy(0,3);
		    print("DS18B20 ERROR");
		    while(1);
	
	   } 
	 
	  while(1)
	  {
		   delay(1);
		   StartConvert();
		   delay(200);
		   ReadTempreture();
		   Digital_process();
		
		   if(tempsign == 0)     //顯示正值溫度
		   {
			     gotoxy(1,0);
				 print("TEMP:");
		         print("+");
			     print(temp_integer);
		         print(".");
		         print(temp_dicimal);
			}
		   else				     //顯示負值溫度
		    {
				 gotoxy(1,0);
				 print("TEMP:");
	             print("-");
		         print(temp_integer + 1);
			     print(".");
                 print(temp_dicimal);
			}
	   }
	 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费在线| 欧美无人高清视频在线观看| 在线影院国内精品| 精品国产99国产精品| 亚洲精品欧美在线| 成人午夜视频网站| 日韩欧美成人午夜| 亚洲午夜视频在线观看| av电影在线观看完整版一区二区| 日韩一区二区高清| 香港成人在线视频| 91看片淫黄大片一级在线观看| 久久男人中文字幕资源站| 婷婷国产v国产偷v亚洲高清| 色久综合一二码| 亚洲天堂精品在线观看| 国产寡妇亲子伦一区二区| 日韩丝袜情趣美女图片| 亚洲.国产.中文慕字在线| 色婷婷国产精品久久包臀| 综合久久综合久久| 99久久精品国产网站| 中文字幕在线一区| 成人免费福利片| 国产精品网曝门| 国产69精品久久久久毛片| 国产蜜臀av在线一区二区三区| 久久成人羞羞网站| 日韩精品一区在线| 国内精品免费**视频| 欧美精品一区在线观看| 激情综合网激情| 精品久久一区二区三区| 九九国产精品视频| 日韩欧美国产一区二区三区| 九九热在线视频观看这里只有精品| 日韩精品一区二区三区四区| 国内欧美视频一区二区| 国产欧美日韩亚州综合| 成人一区二区三区视频| 亚洲三级小视频| 在线亚洲高清视频| 免费观看在线综合色| 日韩精品资源二区在线| 91在线视频免费观看| 亚洲一区二区精品视频| 欧美猛男gaygay网站| 蜜臀av性久久久久蜜臀aⅴ| 欧美大片日本大片免费观看| 国内精品伊人久久久久av一坑| 国产欧美日韩精品a在线观看| 成人黄色电影在线 | 欧美精品一区二区在线播放| 国产一区91精品张津瑜| 中文字幕一区二区在线播放| 欧美性受xxxx黑人xyx| 日韩综合小视频| 国产亚洲综合在线| 色婷婷av一区二区三区之一色屋| 亚洲一区二区欧美激情| 欧美成人性福生活免费看| www.在线成人| 石原莉奈一区二区三区在线观看| 久久综合久久综合久久| 成人在线一区二区三区| 亚洲一区av在线| 欧美mv和日韩mv国产网站| 成人国产一区二区三区精品| 天天综合网天天综合色| 2023国产精品自拍| 欧美视频三区在线播放| 国产一区二区三区久久久 | 久久你懂得1024| 欧美午夜理伦三级在线观看| 国产剧情一区二区| 一区二区三区国产精品| 久久精品一二三| 欧美美女直播网站| 99久久夜色精品国产网站| 捆绑紧缚一区二区三区视频| 亚洲女同一区二区| 久久久av毛片精品| 欧美变态凌虐bdsm| 欧美综合久久久| 成人蜜臀av电影| 九九久久精品视频| 亚洲国产精品天堂| 亚洲日本护士毛茸茸| 精品国精品自拍自在线| 欧美在线一区二区| 91色视频在线| 国产精品一二三区在线| 蜜臀av一级做a爰片久久| 亚洲一区免费在线观看| 亚洲情趣在线观看| 国产精品狼人久久影院观看方式| 欧美精品一区二区在线播放| 欧美一区三区二区| 欧美日韩和欧美的一区二区| 91免费国产在线| 成人午夜视频免费看| 国产99精品视频| 国产传媒欧美日韩成人| 国产一区二区三区在线观看精品| 麻豆成人免费电影| 日韩中文字幕麻豆| 图片区小说区区亚洲影院| 亚洲国产成人av好男人在线观看| 亚洲精品视频在线观看网站| 最新不卡av在线| 亚洲精品免费播放| 一区二区三区美女视频| 亚洲女与黑人做爰| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美日韩在线播放| 悠悠色在线精品| 偷偷要91色婷婷| 欧美bbbbb| 国产综合一区二区| 国产精品一区二区三区99| 国产成人在线观看免费网站| 成人黄色在线看| 91极品视觉盛宴| 欧美日韩三级在线| 日韩女优毛片在线| 国产无人区一区二区三区| 久久精品视频在线看| 国产欧美一区二区在线观看| 国产精品视频yy9299一区| 亚洲色图欧美在线| 亚州成人在线电影| 国产真实乱子伦精品视频| 成人午夜大片免费观看| 91久久精品一区二区三区| 欧美性受xxxx黑人xyx| 精品久久久久久无| 综合欧美亚洲日本| 天天综合网 天天综合色| 国产一区二区三区久久久| av资源网一区| 欧美精品三级在线观看| 国产亚洲欧洲一区高清在线观看| 中文字幕一区二区三区不卡| 午夜电影一区二区| 国产精品一线二线三线| 色噜噜狠狠成人网p站| 欧美一区二区三区在线电影| 欧美国产一区二区| 亚欧色一区w666天堂| 国产精品一区在线观看乱码| 欧美亚洲国产怡红院影院| 精品少妇一区二区三区视频免付费| 国产精品女同互慰在线看| 午夜视频一区二区三区| 成人国产精品免费观看动漫| 欧美乱妇20p| 国产精品女人毛片| 久久成人免费网| 精品视频1区2区| 欧美国产成人精品| 久久国产精品色| 91久久国产综合久久| 国产日本亚洲高清| 免费xxxx性欧美18vr| 91啪在线观看| 久久精品这里都是精品| 日本不卡一区二区三区高清视频| 成人激情小说乱人伦| 精品日本一线二线三线不卡| 亚洲一区二区三区四区在线免费观看| 国产高清不卡一区二区| 日韩一区二区三| 亚洲国产精品一区二区久久恐怖片| 国产剧情一区二区| 日韩欧美黄色影院| 亚洲成a人片在线不卡一二三区 | 精品一区二区三区免费视频| 欧洲色大大久久| 最好看的中文字幕久久| 国产高清在线精品| 久久日一线二线三线suv| 日本中文字幕一区| 欧美性猛交xxxx黑人交| 亚洲人成网站影音先锋播放| 99麻豆久久久国产精品免费优播| 欧美精品一区二区三区蜜臀| 麻豆精品一区二区综合av| 欧美久久一二区| 亚洲成a人片在线不卡一二三区 | 久久久不卡网国产精品二区 | 日韩精品91亚洲二区在线观看 | 久久久久亚洲综合| 国产在线麻豆精品观看| 日韩欧美在线影院| 欧美aⅴ一区二区三区视频| 欧美久久一区二区| 奇米影视一区二区三区| 91精品国产91综合久久蜜臀| 日韩专区中文字幕一区二区| 欧美一区二区免费视频|