⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 用于测定温度和湿度值
💻 C
字号:
#include <main.h>
#include <Adjust.h>
#include <ISR.h>
#include <Meansure.h>
#include <math.h>
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;
sbit P27=P2^7;
void Reset();
char timer_trik,up_warn_T=100,low_warn_T=0,up_warn_H=100,low_warn_H=0;
unsigned int disp_val1=0,disp_val2=0;
/******************************************/
//程序名:void delay()
//功能:延时程序
//作者:唐立军
//时间:2007.11.15
/******************************************/
void delay()
{
	unsigned char del1,del2;
	for(del1=0;del1<96;del1++)
		for(del2=0;del2<255;del2++);
}
/******************************************/
//程序名:void Getkey()
//功能:获取键值程序
//作者:唐立军
//时间:2007.11.15
/******************************************/
unsigned char Getkey()
{	
	unsigned char temp1,temp2;
	temp1 = P2;
	temp1 = temp1 & 0x1f;
	if(temp1==0)
			return 0;
	else
	{
			delay();
			temp2 = P2;
			temp2 = temp2&0x3f;
			if(temp1 == temp2)
				return(temp2);
	}

}
/******************************************/
//程序名:timer0_initialize(void)
//功能:定时器0初始化程序
//作者:唐立军
//时间:2007.11.15
/******************************************/
static void timer0_initialize(void)
{
	EA = 0;
	timer_trik = 0;
	TR0 = 0;
	TMOD &= 0xf0;
	TMOD |=0x01;
	TL0 = (TIME0_COUNT&0xff);
	TH0 = (TIME0_COUNT>>8);
	PT0 = 0;
	ET0 = 1;
	TR0 = 1;
	EA = 1;
}

/******************************************/
//程序名:
//功能:
//作者:唐立军
//时间:2007.11.15
/******************************************/
void main()
{
	unsigned char c=0;
	unsigned char key,flag=0;
    unsigned char *p_value1,  *p_checksum1;
	unsigned char *p_value2,  *p_checksum2;
	float *p_humidity,*p_temperature,temp1,temp2;
	timer0_initialize();
	while(1)
	{
	key = Getkey();
	switch(key)							
	{
		case KEY1:
			flag++;
			if(flag>4)
			flag=0;			
		break;
		case KEY2:
		break;
		case KEY3:
		break;
		case KEY4:
		switch(flag)
		{
			case 1:T_warn_UP();
			break;
			case 2:T_warn_LOW();
			break;
			case 3:H_warn_UP();
			break;
			case 4:H_warn_LOW();
			break;
			default:
			break;								
		}
		break;
		case KEY5: 
			 if(++c==2)
			 {
			 Reset();
			 c=0;
		//	 P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=0;		//复位LED灯亮
			 }
		break;
		default:
		break;
	}
	switch(flag)
			{
				case 0: P02 = 0;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=1;		//指示显示温度和湿度LED灯亮
						break;
				case 1:
						P02 = 1;P03 = 0;P04 = 1;P05 = 1;P06 = 1;P27=1;		//指示设定温度上限LED灯亮
						break;
				case 2:
						P02 = 1;P03 = 1;P04 = 0;P05 = 1;P06 = 1;P27=1;		//指示设定温度下限LED灯亮
						break;
				case 3:
						P02 = 1;P03 = 1;P04 = 1;P05 = 0;P06 = 1;P27=1;		//指示设定湿度上限LED灯亮
						break;
				case 4:
						P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 0;P27=1;		//指示设定湿度下限LED灯亮
						break;										
			    default:
				break;
			}
	
	}
	s_measure(p_value1, p_checksum1, TEMP);		//测量温度
	s_measure(p_value2, p_checksum2, HUMI);		//测量湿度
	*p_temperature = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)*1024+(*(p_value1+1)&0x08)*2048
					+(*(p_value1+1)&0x10)*4096+(*(p_value1+1)&0x20)*8192);		//14位温度数据转换为浮点型
	*p_humidity = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)*1024+(*(p_value1+1)&0x08)*2048);	//12位湿度数据转换为浮点型				
	calc_sth15( p_humidity, p_temperature);			//温度和湿度的标度变换
 	
	temp1 = *p_temperature;
	temp2 = *p_humidity;

  	temp1=fabs(temp1);  //取样获取的浮点数转成绝对值
	disp_val1=(int)(temp1*100); //小数点标志point置1。
	temp2=fabs(temp2);  //取样获取的浮点数转成绝对值
	disp_val2=(int)(temp2*100); //小数点标志point置1。
	if((disp_val1*100>up_warn_T|disp_val1*100<low_warn_T|disp_val2*100>up_warn_H|disp_val2*100<low_warn_H))	//报警判断
						P07=1;			//开始报警

}
/******************************************/
//程序名:Reset()
//功能:报警复位
//作者:唐立军
//时间:2007.11.15
/******************************************/

void Reset()		
{
	P07=0;				//报警停止
	up_warn_T=100;		//将温度上下限设为100,0
	low_warn_T=0;
	up_warn_H=100;		//将湿度上下限设为100,0
	low_warn_H=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -