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

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

?? 紅外測溫儀.c

?? 紅外測溫儀
?? C
字號:
#include<at89x51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define Nack_number 10
//**************端口定義**************************************************
uchar flag;    								//LCD控制線接口
sbit RS=P2^0;   							//RS端
sbit RW=P2^1;  								//讀寫端
sbit LCDE=P2^2;  							//使能端
											//mlx90614端口定義
sbit SCK=P2^3;								//時鐘線
sbit SDA=P2^4;								//數據線
//************數據定義****************************************************
bdata uchar flag1;							//可位尋址數據
sbit bit_out=flag1^7;
sbit bit_in=flag1^0;
uchar tempH,tempL,err;

//**************************  LCD1602  ***********************************
//向LCD寫入命令或數據*****************************************************
#define LCD_COMMAND			0      			//命令
#define LCD_DATA			1      			// 數據
#define LCD_CLEAR_SCREEN	0x01      		// 清屏
#define LCD_HOMING  		0x02      		// 光標返回原點
//設置顯示模式******* 0x08+   *********************************************
#define LCD_SHOW			0x04    		//顯示開
#define LCD_HIDE			0x00    		//顯示關
#define LCD_CURSOR			0x02 			//顯示光標
#define LCD_NO_CURSOR		0x00    		//無光標
#define LCD_FLASH			0x01    		//光標閃動
#define LCD_NO_FLASH		0x00    		//光標不閃動
//設置輸入模式********** 0x04+ ********************************************
#define LCD_AC_UP			0x02     		//光標右移 AC+
#define LCD_AC_DOWN			0x00      		//默認 光標左移 AC-
#define LCD_MOVE			0x01      		//畫面可平移
#define LCD_NO_MOVE			0x00      		//默認 畫面不移動

//**************************  mlx90614  ***********************************
//command mode  命令模式
#define RamAccess	0x00					//對RAM操作
#define EepomAccess	0x20					//對EEPRAM操作
#define	Mode		0x60					//進入命令模式
#define ExitMode	0x61					//退出命令模式
#define	ReadFlag	0xf0					//讀標志
#define EnterSleep	0xff					//進入睡眠模式
//ram address	read only RAM地址(只讀)
#define AbmientTempAddr		0x03			//周圍溫度
#define	IR1Addr				0x04
#define	IR2Addr				0x05
#define LineAbmientTempAddr	0x06  			//環境溫度
/*0x0000	0x4074	 16500 	0.01/單元
     -40	   125*/
#define LineObj1TempAddr	0x07			//目標溫度,紅外溫度
/*0x27ad-0x7fff	 0x3559 22610	0.02/單元
  -70.01-382.19  0.01   452.2*/
#define	LineObj2TempAddr	0x08
//eepom address  EEPROM地址
#define TObjMaxAddr		0x00				//測量范圍上限設定
#define TObjMinAddr		0x01				//測量范圍下限設定
#define PWMCtrlAddr		0x02				//PWM設定
#define TaRangeAddr		0x03				//環境溫度設定
#define KeAddr			0x04				//頻率修正系數
#define ConfigAddr		0x05				//配置寄存器
#define SMbusAddr		0x0e				//器件地址設定
#define Reserverd1Addr	0x0f				//保留
#define Reserverd2Addr	0x19				//保留
#define ID1Addr			0x1c				//ID地址1
#define ID2Addr			0x1d				//ID地址2
#define ID3Addr			0x1e				//ID地址3
#define ID4Addr			0x1f				//ID地址4

//************函數聲明*****************************************************
void start(); 								//MLX90614發起始位子程序
void stop(); 								//MLX90614發結束位子程序
uchar ReadByte(void); 						//MLX90614接收字節子程序
void send_bit(void); 						//MLX90614發送位子程序
void SendByte(uchar number); 				//MLX90614接收字節子程序
void read_bit(void); 						//MLX90614接收位子程序
void delay(uint N); 						//延時程序
uint readtemp(void); 						//讀溫度數據
void init1602(void); 						//LCD初始化子程序
void busy(void); 							//LCD判斷忙子程序
void cmd_wrt(uchar cmd); 					//LCD寫命令子程序
void dat_wrt(uchar dat); 					//LCD寫數據子程序
void display(uint Tem); 					//顯示子程序
void Print(uchar *str); 					//字符串顯示程序

//*************主函數*******************************************
void main()
{
	uint Tem;								//溫度變量
	SCK=1;
	SDA=1;
	delay(4);
	SCK=0;
	delay(1000);
	SCK=1;
	init1602();								//初始化LCD
	while(1)
	{
		Tem=readtemp();						//讀取溫度
		cmd_wrt(0x01);						//清屏
		Print("  Temperature:    ");		//顯示字符串  Temperature: 且換行
		display(Tem);						//顯示溫度
		Print(" ^C");						//顯示攝氏度
		delay(10000);						//延時再讀取溫度顯示
	}
}
void Print(uchar *str)						//字符串顯示程序
{
	while(*str!='\0')						//直到字符串結束
	{
		dat_wrt(*str);						//轉成ASCII碼  
		str++;								//指向下一個字符
	}
}

//*********輸入轉換并顯示*********
void display(uint Tem)
{
	uint T,a,b;
	T=Tem*2;
	if(T>=27315)							//溫度為正
	{
		T=T-27315;							//
		a=T/100;							//溫度整數
		b=T-a*100;							//溫度小數
		if(a>=100)							//溫度超過100度
		{
			dat_wrt(0x30+a/100);			//顯示溫度百位
			dat_wrt(0x30+a%100/10);			//顯示溫度十位
			dat_wrt(0x30+a%10);				//顯示溫度個位
		}
		else if(a>=10)						//溫度超過10度
		{
			dat_wrt(0x30+a%100/10);			//顯示溫度十位
			dat_wrt(0x30+a%10);				//顯示溫度個位
		}
		else								//溫度不超過10度
		{
			dat_wrt(0x30+a);				//顯示溫度個位
		}
		dat_wrt(0x2e);						//顯示小數點
		if(b>=10)							//溫度小數點后第1位數不等于0
		{
		dat_wrt(0x30+b/10);					//顯示溫度小數點后第1位數
		dat_wrt(0x30+b%10);					//顯示溫度小數點后第2位數
		}
		else								//溫度小數點后第1位數等于0
		{
			dat_wrt(0x30);					//顯示溫度小數點后第1位數0
			dat_wrt(0x30+b);				//顯示溫度小數點后第2位數
		}
	}
	else									//溫度為負
	{
		T=27315-T;
		a=T/100;
		b=T-a*100;
		dat_wrt(0x2d);						//顯示負號
		if(a>=10)							//溫度低于負10度
		{
			dat_wrt(0x30+a/10);				//顯示溫度十位
			dat_wrt(0x30+a%10);				//顯示溫度個位
		}
		else								//溫度高于負10度
		{
			dat_wrt(0x30+a);				//顯示溫度個位
		}
		dat_wrt(0x2e);						//顯示小數點
		if(b>=10)							//溫度小數點后第1位數不等于0
		{
			dat_wrt(0x30+b/10);				//顯示溫度小數點后第1位數
			dat_wrt(0x30+b%10);				//顯示溫度小數點后第2位數
		}
		else								//溫度小數點后第1位數等于0
		{
			dat_wrt(0x30);					//顯示溫度小數點后第1位數0
			dat_wrt(0x30+b);				//顯示溫度小數點后第2位數
		}
	}
}
//************************************
void start(void)							//停止條件是 SCK=1時,SDA由1到0
{
	SDA=1;
	delay(4);
	SCK=1;
	delay(4);
	SDA=0;
	delay(4);
	SCK=0;
	delay(4);
}
//------------------------------
void stop(void)								//停止條件是 SCK=1時,SDA由0到1
{
	SCK=0;
	delay(4);
	SDA=0;
	delay(4);
	SCK=1;
	delay(4);
	SDA=1;
}
//---------發送一個字節---------
void SendByte(uchar number)
{
	uchar i,n,dat;
	n=Nack_number;							//可以重發次數
Send_again:
	dat=number;
	for(i=0;i<8;i++) 						//8位依次發送
	{
		if(dat&0x80)   						//取最高位
		{
			bit_out=1;    					//發1
		}
		else
		{
			bit_out=0;    					//發0
		}		
		send_bit();    						//發送一個位
		dat=dat<<1;    						//左移一位
	}	
	read_bit();   							//接收1位 應答信號
	if(bit_in==1)     						//無應答時重發
	{
		stop();
		if(n!=0)
		{
			n--;    						//可以重發Nack_number=10次
			goto Repeat;					//重發
		}
		else
		{
			goto exit;						//退出
		}		
	}
	else
	{
		goto exit;
	}		
Repeat:
	start();								//重新開始
	goto Send_again;						//重發
	exit: ;									//退出
}
//-----------發送一個位---------
void send_bit(void)
{
	if(bit_out==1)
	{
		SDA=1;   							//發1
	}	
	else
	{
		SDA=0;   							//發0
	}
	_nop_();
	SCK=1;   								//上升沿
	delay(4);delay(4);
	SCK=0;
	delay(4);delay(4);
}
//----------接收一個字節--------
uchar ReadByte(void)
{
	uchar i,dat;
	dat=0;									//初值為0
	for(i=0;i<8;i++)
	{
		dat=dat<<1;							//左移
		read_bit();							//接收一位
		if(bit_in==1)
		{
			dat=dat+1;						//為1時對應位加1
		}		
	}
	SDA=0;									//發送應答信號0
	send_bit();
	return dat;								//帶回接收數據
}
//----------接收一個位----------
void read_bit(void)
{
	SDA=1;									//數據端先置1
	bit_in=1;
	SCK=1;									//上升沿
	delay(4);delay(4);
	bit_in=SDA;								//讀數據
	_nop_();
	SCK=0;
	delay(4);delay(4);
}


//------------------------------
uint readtemp(void)
{
	SCK=0;
	start(); 								//開始條件
	SendByte(0x00); 						//發送從地址00
	SendByte(0x07); 						//發送命令
	start(); 								//開始條件
	SendByte(0x01); 						//讀從地址00
	bit_out=0;
	tempL=ReadByte();						//讀數據低字節
	bit_out=0;
	tempH=ReadByte();						//讀數據高字節
	bit_out=1;
	err=ReadByte();							//讀錯誤信息碼
	stop();									//停止條件
	return(tempH*256+tempL);
}
//******************LCD顯示子函數***********************
void init1602(void) 						//初始化LCD
{
	cmd_wrt(0x01);							//清屏
	cmd_wrt(0x0c);							//開顯示,不顯示光標,不閃爍
	cmd_wrt(0x06);							//完成一個字符碼傳送后,光標左移,顯示不發生移位
	cmd_wrt(0x38);							//16×2顯示,5×7點陣,8位數據接口
}
void busy(void) 							//LCD忙標志判斷
{
	flag=0x80;								//賦初值 高位為1 禁止
	while(flag&0x80)						//讀寫操作使能位禁止時等待 繼續檢測
	{
		P0=0xff;
		RS=0; 								//指向地址計數器
		RW=1; 								//讀
		LCDE=1; 							//信號下降沿有效
		flag=P0;							//讀狀態位 高位為狀態
		LCDE=0;
	}
}
void cmd_wrt(uchar cmd) 					//寫命令子函數
{
	LCDE=0;
	busy();									//檢測 讀寫操作使能嗎
	P0=cmd; 								//命令
	RS=0; 									//指向命令計數器
	RW=0; 									//寫
	LCDE=1;									//高電平有效
	LCDE=0;
}
void dat_wrt(uchar dat) 					//寫數據子函數
{
	busy();									//檢測 讀寫操作使能嗎
	LCDE=0;
	if(flag==16)
	{		
		RS=0;								//指向指令寄存器		
		RW=0; 								//寫
		P0=0XC0;							//指向第二行
		LCDE=1;								//高電平有效
		LCDE=0;
	}	
	RS=1;									//指向數據寄存器
	RW=0; 									//寫
	P0=dat; 								//寫數據
	LCDE=1;									//高電平有效
	LCDE=0;
}
//------------延時--------------
void delay(uint n)
{
	uint j;
	for(j=0;j<n;j++)
	{
		_nop_();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看动漫| 日韩电影免费在线| 色一情一乱一乱一91av| 亚洲一区二区成人在线观看| 欧美日韩精品是欧美日韩精品| 亚洲国产一二三| 欧美日韩精品三区| 成人一区二区三区| 亚洲综合无码一区二区| 日韩免费高清视频| 成人黄色免费短视频| 日韩三级av在线播放| 国产不卡视频一区| 三级精品在线观看| 久久久久国产精品人| 欧美日韩一区二区三区高清| 久久精品久久精品| 亚洲综合色自拍一区| 国产视频一区不卡| 制服丝袜中文字幕亚洲| 91老师片黄在线观看| 国产麻豆精品theporn| 青青草91视频| 亚洲高清视频的网址| 亚洲另类色综合网站| 国产精品午夜在线| 国产日韩三级在线| 日韩欧美在线1卡| 91精品国产欧美一区二区18| 91在线观看视频| 92精品国产成人观看免费| 国产盗摄一区二区| 成人午夜av电影| 国产91精品露脸国语对白| 国产大陆精品国产| 国产成人8x视频一区二区| 久久99精品久久久久久| 美女视频一区在线观看| 国产真实乱偷精品视频免| 狠狠色丁香婷综合久久| 国精品**一区二区三区在线蜜桃| 免费在线一区观看| 岛国精品在线播放| 不卡一区二区在线| 精品视频123区在线观看| 欧美日韩精品一区二区三区四区| 欧美日韩你懂得| 久久久久国产成人精品亚洲午夜| 亚洲国产高清在线| 午夜亚洲福利老司机| 国产一区欧美日韩| 欧美丝袜丝交足nylons| 久久综合色一综合色88| 亚洲三级视频在线观看| 麻豆国产91在线播放| 国产激情偷乱视频一区二区三区 | 国产欧美综合色| 亚洲香肠在线观看| eeuss鲁片一区二区三区在线看| 在线亚洲精品福利网址导航| 久久新电视剧免费观看| 亚洲欧美视频在线观看| 国模一区二区三区白浆| 欧美亚洲国产一卡| 亚洲精品日韩综合观看成人91| 久久99国内精品| 91精品国产高清一区二区三区蜜臀| 国产女人水真多18毛片18精品视频| 亚洲福利视频导航| 色国产综合视频| 1024成人网| 色综合天天视频在线观看| 中文字幕一区免费在线观看| 狠狠网亚洲精品| 国产亚洲精品aa| 精品制服美女丁香| 国产欧美日本一区二区三区| 精品一区二区三区在线观看国产 | 91免费视频网| 亚洲尤物在线视频观看| 欧美日韩中文另类| 日韩在线a电影| 国产婷婷色一区二区三区在线| 日本不卡123| 日韩美女在线视频| 麻豆精品视频在线| 欧美精品一区二区在线播放| 日本va欧美va精品发布| 成人激情视频网站| 国产日韩欧美高清| 91蝌蚪porny| 日韩影院在线观看| 国产欧美一区二区三区沐欲| 国产精品亚洲午夜一区二区三区 | 成人h精品动漫一区二区三区| 欧美国产成人精品| 欧美午夜片在线观看| 青青青伊人色综合久久| 国产欧美一区二区精品性色超碰| 不卡一区在线观看| 日韩国产高清在线| 国产午夜精品久久久久久免费视| 久久国产视频网| 亚洲欧洲日产国产综合网| 高清不卡在线观看av| 亚洲va国产va欧美va观看| 欧美电视剧在线看免费| 色老汉av一区二区三区| 六月丁香婷婷久久| 婷婷久久综合九色综合伊人色| 亚洲精品在线电影| 91精品免费观看| 91麻豆精品在线观看| 国产精品一二二区| 精品午夜久久福利影院| 亚洲国产成人自拍| 久久久不卡影院| 日韩一区二区精品葵司在线| 日本韩国欧美一区| 99久久久久久| 日本高清不卡一区| 在线观看国产一区二区| 成人性视频免费网站| 日本大胆欧美人术艺术动态| 日韩电影在线观看电影| 亚洲自拍偷拍欧美| 亚洲va欧美va天堂v国产综合| 亚洲乱码国产乱码精品精可以看 | 国产麻豆91精品| 奇米精品一区二区三区在线观看| 天天色综合天天| 亚洲电影欧美电影有声小说| 亚洲国产美女搞黄色| 亚洲成人综合视频| 国内精品国产成人| 91丨九色丨蝌蚪富婆spa| 91免费视频网址| 精品国产a毛片| 国产精品私人自拍| 天天影视涩香欲综合网| 国产在线一区二区综合免费视频| 日韩精品电影在线| 国产suv精品一区二区6| 99久久精品国产麻豆演员表| 欧美色爱综合网| 欧美高清在线一区| 日韩电影在线观看电影| 9久草视频在线视频精品| 欧美色图激情小说| 欧美日韩中文字幕一区二区| 精品国产sm最大网站免费看| 日韩一区在线看| 国产乱码精品1区2区3区| 欧美三区在线观看| 亚洲欧美日韩综合aⅴ视频| 国内成+人亚洲+欧美+综合在线 | 国产成人午夜精品5599| 91精品办公室少妇高潮对白| 中文字幕不卡的av| 美女爽到高潮91| 日韩丝袜美女视频| 日本不卡视频在线观看| 欧美日韩精品一区二区天天拍小说 | 欧美成人一区二区| 天使萌一区二区三区免费观看| 色av综合在线| 一区二区三区四区亚洲| 成人精品免费网站| 国产精品久久久久毛片软件| 高清不卡在线观看| 久久综合久久鬼色| 夜色激情一区二区| 风间由美中文字幕在线看视频国产欧美| 日韩亚洲欧美在线| 韩国女主播成人在线| 久久嫩草精品久久久精品| 蜜臀av一区二区| 欧美激情一二三区| 99精品在线免费| 日本成人中文字幕在线视频| 日韩三级中文字幕| av资源网一区| 日韩影院精彩在线| 777xxx欧美| 91丨九色porny丨蝌蚪| 亚洲成人av电影| 亚洲国产精品精华液ab| 91高清在线观看| 成人免费视频国产在线观看| 国产欧美一区二区三区鸳鸯浴 | 亚洲一区二区av在线| 欧美精品一区二区三区在线播放| 91同城在线观看| 国产精品伊人色| 亚洲男女一区二区三区| 精品欧美一区二区在线观看| 99久久国产免费看| 成人午夜在线播放| 精品亚洲成a人| 蜜臀av亚洲一区中文字幕|