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

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

?? storagecontrol.c

?? 溫濕度監視系統
?? C
字號:
/**
*  文件說明:倉庫溫濕度控制系統————主程序
*  作   者:
*  時   間:2009-05-03
*/

#include <reg52.h>
#include "LCD1602.h"
#include "DS18B20.h"
#include "hs1101.h"
#include "storageControl.h"
/*添加還需要的頭文件*/


/*********************定義程序變量*********************/
unsigned char temperature;           /*檢測溫度*/
//unsigned char t_array[5];

unsigned char himidity;               /*檢測濕度*/
//unsigned char h_array[4];

unsigned int frequency;              /*檢測頻率*/
unsigned char count;

unsigned char keyId;                 /*按鍵號*/

unsigned char sysRun, ParaSet, limitSet;                /*系統運行、設置標志位*/
unsigned char Paratemp;
unsigned char Parat[3];

unsigned char tmax, tmin, hmax, hmin;
unsigned char err_flag;
//extern unsigned int HStable[][2];         /*HS1101經典頻率表, 由外部程序進行定義*/

/*主程序開始*/
void main(void)
{
	unsigned char t_array[5];
	unsigned char h_array[4];
	/**/
	initial();
	
	/*進入系統輪回處理*/
	while(1)
	{
		keyId = key_scan();            /*按鍵掃描*/		
		
		systemSet(keyId);
		
		if (sysRun == 1)
		{		
			monitor();
			
			if (count > 100)      /*1S刷新一次*/
			{
				EA = 0;
				temperature = ReadTemp();                      /*讀取溫度*/
				EA = 1;
				temp_to_str(&t_array, temperature);            /*將溫度轉換成可顯示的數組*/
			
				frequency = getfreq();                         /*計算頻率*/
			
			
				himidity = gethumidity(frequency);   /*讀取濕度*/
				himi_to_str(&h_array, himidity);
				
				GotoXY(0, 0);
				Print("Temp: ");
				Print(t_array);		
				delay_ms(10);
				
				GotoXY(0, 1);
				Print("Himi: ");
				Print(h_array);
				delay_ms(10);
				/*
				GotoXY(11, 0);
				Print("key:");
				LCD_Write(1, keyId + 0x30);
				count = 0;
				*/
			}
		}
		//buzzer = ~buzzer;
	}
}

void initial(void)
{
	/*定時器初始化*/
	timerInit();
	
	/*液晶初始化*/
	LCD_Initial();
	GotoXY(0,0);
	Print("Storage Monitor");
	GotoXY(3,1);
	Print("Press MODE");
	
	/*參數初始化*/
	tmax = tMAX;
	tmin = tMIN;
	hmax = hMAX;
	hmin = hMIN;
	
	RUN = 1;
	ERR_MIN = 1;
	ERR_MAX = 1;
	buzzer = 1;
	
	/*其他初始化工作*/
	//sysRun = 1;
	
}

void timerInit(void)
{
	TMOD = 0x51;   /*timer0 方式1計時, timer1方式1計數*/
	TH0 = (65536 - 10000) / 256;
	TL0 = (65536 - 10000) % 256;
	TH1 = 0;
	TL1 = 0;
	RCAP2H = (65536 - 10000) / 256;      //T2自動重載 
	RCAP2L = (65536 - 10000) % 256;
	TH2 = RCAP2H;
	TL2	= RCAP2L;
	ET0 = 1;
	ET1 = 1;
	ET2 = 1;
	EA = 1;
	//TR0 = 1;       /*啟動T*/
	//TR1 = 1;
	//TR2 = 1;
}

unsigned int getfreq(void)
{
	unsigned int f;
	
	TH1 = TL1 = 0;      /*計數器1清零*/
	TH0 = (65536 - 10000) / 256;
	TL0 = (65536 - 10000) % 256;
	
	TF0 = 0;            /*清定時器零溢出中斷*/
	
	
	TR0 = TR1 = 1;      /*啟動*/
	
    while(TF0 != 1);    /*等待定時時間到*/
	
    TR0 = TR1 = 0;      /*定時到, 關中斷*/
	
    f = TH1*256 + TL1;  /*計算頻率*/
	f *= 100;
	
	return f;
}


unsigned char key_scan(void)
{
	uchar a, b, c, key = 254;
	
	keyPort = 0xf0;
	
	if (keyPort != 0xf0)
	{
		delay_ms(10);
		keyPort = 0xf0;
		if(keyPort != 0xf0)
		{
			a = keyPort;
			keyPort = 0x0f;
			b = keyPort;
			
			c = a | b;
			if(c == 0xee) key = 1;
			if(c == 0xed) key = 2;	   
			if(c == 0xeb) key = 3;	   
			if(c == 0xe7) key = 15;      
			if(c == 0xde) key = 4;
			if(c == 0xdd) key = 5;
			if(c == 0xdb) key = 6;
			if(c == 0xd7) key = 12;
			if(c == 0xbe) key = 7;
			if(c == 0xbd) key = 8;
			if(c == 0xbb) key = 9;
			if(c == 0xb7) key = 14;
			if(c == 0x7e) key = 10;
			if(c == 0x7d) key = 0;
			if(c == 0x7b) key = 11;
			if(c == 0x77) key = 13;
			
			keyPort	= 0xf0;
			while(keyPort != 0xf0);
		}
	}
	return key;
}

void systemSet(unsigned char k)
{
	if (k == MODE)   //進入主模式
	{
		//顯示提示
		LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
		delay_ms(10);	
		GotoXY(0,0);
		Print("1. temperature");
		//delay_ms(10);	
		GotoXY(0,1);
		Print("2. humidity");
		//delay_ms(10);
		sysRun = 0;
		ParaSet = 1;
	}
	if (k == ENT)
	{
		//完成設置
		LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
		sysRun = 1;
		TR2 = 1;
	}	
	if (sysRun == 0 && ParaSet == 1)
	{
		while(1)
		{
			keyId = key_scan();
			if (keyId == 1)            //進入溫度設置
			{
				LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
				delay_ms(10);	
				GotoXY(0,0);
				Print("tMAX:");
				//delay_ms(10);	
				GotoXY(0,1);
				Print("tMIN:");
				//delay_ms(10);
				
				GotoXY(8,0);
				LCD_SetDisplay(LCD_SHOW|LCD_CURSOR|LCD_FLASH);
				
				limitSet = 0;
				Paratemp = tmax;
				while(1)
				{
					keyId = key_scan();
					if (keyId == UP)        //上限
					{
						GotoXY(7,0);
						tmin = Paratemp;
						limitSet = 0;
					}
					if (keyId == DOWN)         //下限
					{
						GotoXY(7,1);
						tmax = Paratemp;
						limitSet = 1;
					}
					if (keyId == ENT)         //確定退出設置
					{
						if (limitSet == 0)
							tmax = Paratemp;
						if (limitSet == 1)
							tmin = Paratemp;
						
						LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
						//delay_ms(10);
						GotoXY(0,0);
						Print("1. temperature");
						//delay_ms(10);	
						GotoXY(0,1);
						Print("2. humidity");
						delay_ms(10);
						
						break;
					}
					if (keyId < 10)
					{
						Paratemp = Paratemp * 10 + keyId;
					}
					
					//刷新顯示
					if (limitSet == 0)
					{
						GotoXY(5,0);
						himi_to_str(&Parat, Paratemp);
						Print(Parat);
						//delay_ms(10);
						GotoXY(5,1);
						himi_to_str(&Parat, tmin);
						Print(Parat);
						//delay_ms(10);
					}
					if (limitSet == 1)
					{
						GotoXY(5,0);
						himi_to_str(&Parat, tmax);
						Print(Parat);
						//delay_ms(10);
						GotoXY(5,1);
						himi_to_str(&Parat, Paratemp);
						Print(Parat);
						//delay_ms(10);
					}
					delay_ms(100);
				}
				
			}
			if (keyId == 2)       //進入濕度設置
			{
				LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
				//delay_ms(10);	
				GotoXY(0,0);
				Print("hMAX:");
				//delay_ms(10);	
				GotoXY(0,1);
				//Print("hMIN:");
				delay_ms(10);
				
				GotoXY(8,0);
				LCD_SetDisplay(LCD_SHOW|LCD_CURSOR|LCD_FLASH);
				
				limitSet = 0;
				Paratemp = hmax;
				while(1)
				{
					keyId = key_scan();
					if (keyId == UP)        //上限
					{
						GotoXY(7,0);
						hmin = Paratemp;
						limitSet = 0;
					}
					if (keyId == DOWN)         //下限
					{
						GotoXY(7,1);
						hmax = Paratemp;
						limitSet = 1;
					}
					if (keyId == ENT)         //確定退出設置
					{
						if (limitSet == 0)
							hmax = Paratemp;
						if (limitSet == 1)
							hmin = Paratemp;
						
						LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
						//delay_ms(10);						
						GotoXY(0,0);
						Print("1. temperature");
						//delay_ms(10);	
						GotoXY(0,1);
						Print("2. humidity");
						//delay_ms(10);
						
						break;
					}
					if (keyId < 10)
					{
						Paratemp = Paratemp * 10 + keyId;
					}
					
					//刷新顯示
					if (limitSet == 0)
					{
						GotoXY(5,0);
						himi_to_str(&Parat, Paratemp);
						Print(Parat);
						//delay_ms(10);
						GotoXY(5,1);
						himi_to_str(&Parat, tmin);
						Print(Parat);
						//delay_ms(10);
					}
					if (limitSet == 1)
					{
						GotoXY(5,0);
						himi_to_str(&Parat, tmax);
						Print(Parat);
						//delay_ms(10);
						GotoXY(5,1);
						himi_to_str(&Parat, Paratemp);
						Print(Parat);
						//delay_ms(10);
					}
					delay_ms(100);
				}
				
			}
			if (keyId == ENT)
			{
				if (limitSet == 0)
					tmax = Paratemp;
				if (limitSet == 1)
					tmin = Paratemp;
				
				LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
				//delay_ms(10);
				LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR|LCD_NO_FLASH);
				break;
			}
			delay_ms(100);
		}
	}	
	
}


void monitor(void)
{
	if (temperature < tmin)
		err_flag = err_flag | 0x01;
	else if (temperature > tmax)
		err_flag = err_flag | 0x02;
	else
		err_flag = err_flag & 0xfc;
	
	if (himidity < hmin)
		err_flag = err_flag | 0x04;
	else if (himidity > hmax)
		err_flag = err_flag | 0x08;
	else
		err_flag = err_flag & 0xf3;
	
	if (err_flag != 0)
	{
		GotoXY(0,1);
		if (err_flag == 1)
		{
			ERR_MIN = 0;
		}
		if (err_flag == 2)
		{
			ERR_MAX = 0;
		}
		if (err_flag == 4)
		{
			ERR_MAX = 0;
		}
		if (err_flag == 8)
		{
			ERR_MAX = 0;
		}
		buzzer = ~buzzer;
		RUN = 1;
	}
	else
	{
		RUN = 0;
		ERR_MIN = 1;
		ERR_MAX = 1;
		buzzer = 1;
	}
}


void Timer2_Server(void) interrupt 5 using 1
{            
	TF2=0;     /*T2定時器發生溢出中斷時,需要用戶自己清除溢出標記,而51的其他定時器是自動清除的 */                           

	count++;
	RUN = ~RUN;
	
}












?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区久久久久久| 久久久久久久久久久黄色| 在线观看一区二区精品视频| 欧美另类久久久品| 国产午夜精品理论片a级大结局| 亚洲免费观看高清完整版在线观看熊| 喷白浆一区二区| 91国内精品野花午夜精品| 精品剧情v国产在线观看在线| 一区二区三区精品在线观看| 国产精品888| 日韩欧美一区二区不卡| 亚洲国产综合在线| 91网站视频在线观看| 国产三区在线成人av| 麻豆视频观看网址久久| 欧美色图12p| 一区二区三区日韩精品视频| 成人福利视频在线看| 精品电影一区二区三区| 日韩综合在线视频| 欧美日韩一区二区在线观看| 亚洲男帅同性gay1069| 成人久久18免费网站麻豆 | 亚洲福利视频一区二区| www.99精品| 国产欧美一区二区精品婷婷 | 91在线精品一区二区| 久久精品视频免费观看| 九九在线精品视频| 日韩欧美卡一卡二| 久色婷婷小香蕉久久| 日韩午夜激情免费电影| 日本麻豆一区二区三区视频| 欧美精品在线一区二区| 日本午夜一本久久久综合| 精品视频999| 午夜不卡av免费| 在线观看91精品国产麻豆| 视频一区二区国产| 欧美成人官网二区| 国产一区二区不卡老阿姨| 在线影院国内精品| 日本一区二区三区四区在线视频 | 亚洲一区二区三区免费视频| 欧洲视频一区二区| 午夜视频一区在线观看| 欧美日本一区二区| 蜜臂av日日欢夜夜爽一区| 精品久久久久av影院| 国产一区二区在线影院| 国产视频亚洲色图| 色综合久久综合网欧美综合网| 亚洲婷婷在线视频| 欧美日韩精品欧美日韩精品一 | 色呦呦国产精品| 亚洲精品老司机| 欧美区在线观看| 免费不卡在线观看| 国产精品美女久久久久久久久| av一区二区三区| 亚洲va国产天堂va久久en| 4438x亚洲最大成人网| 国产资源精品在线观看| 中文字幕亚洲区| 555www色欧美视频| 国产不卡一区视频| 亚洲福利一区二区三区| 26uuu国产电影一区二区| 99久久国产综合精品色伊| 五月婷婷另类国产| 欧美国产1区2区| 欧美日韩激情一区二区三区| 精品在线一区二区三区| 亚洲视频一区在线观看| 日韩欧美精品在线| 色老头久久综合| 精品亚洲成a人在线观看| 亚洲嫩草精品久久| 久久天天做天天爱综合色| 欧美极品少妇xxxxⅹ高跟鞋| 91福利精品第一导航| 久久精品噜噜噜成人av农村| 中文字幕在线视频一区| 日韩一区二区免费视频| 波多野结衣亚洲| 九九热在线视频观看这里只有精品| 国产精品蜜臀在线观看| 日韩视频在线观看一区二区| 一本一本大道香蕉久在线精品| 国产自产v一区二区三区c| 精品国产污污免费网站入口| 夜夜嗨av一区二区三区网页| 日韩免费一区二区三区在线播放| 99视频在线精品| 精品一区二区久久| 婷婷一区二区三区| 亚洲欧美激情一区二区| 国产农村妇女精品| 精品国产乱码久久| 欧美一区二区福利视频| 在线视频你懂得一区二区三区| 国产成人免费xxxxxxxx| 另类小说图片综合网| 日韩成人免费电影| 亚洲成人激情综合网| 亚洲激情五月婷婷| 亚洲女同女同女同女同女同69| 国产精品免费丝袜| 国产精品午夜电影| 国产香蕉久久精品综合网| xfplay精品久久| 精品福利视频一区二区三区| 日韩欧美国产高清| 欧美大片在线观看一区| 国产精品国产三级国产普通话99 | 亚洲一区二区三区不卡国产欧美 | 欧美日韩一区不卡| 一本大道久久精品懂色aⅴ| 波多野结衣精品在线| 大陆成人av片| 国产馆精品极品| 国产成人久久精品77777最新版本| 久久成人羞羞网站| 国产一区二区三区四| 国产综合一区二区| 国产成人午夜片在线观看高清观看| 麻豆一区二区三| 国产成人亚洲综合a∨婷婷| 国产成人亚洲综合a∨婷婷| 国产成人自拍在线| 99久久er热在这里只有精品66| aaa亚洲精品| 欧美日韩精品免费| 欧美大片一区二区三区| 国产日韩欧美不卡在线| 亚洲欧美日韩在线| 日韩精品久久理论片| 国产老女人精品毛片久久| 成人黄色大片在线观看| 91成人免费在线| 欧美成人三级在线| 国产精品大尺度| 性久久久久久久久| 国产一区二区三区不卡在线观看 | 丝袜亚洲另类欧美| 久久99精品久久久久久久久久久久| 国产一区二区三区电影在线观看| heyzo一本久久综合| 欧美日韩在线三区| 亚洲精品ww久久久久久p站 | 国产精品不卡一区| 婷婷综合另类小说色区| 国产一区二区三区在线观看免费| 91亚洲精品久久久蜜桃| 这里是久久伊人| 国产精品伦一区二区三级视频| 亚洲精品国产无套在线观| 欧美日韩视频在线观看一区二区三区| 欧美精品国产精品| 久久久不卡影院| 亚洲一卡二卡三卡四卡 | 亚洲免费av高清| 欧美aⅴ一区二区三区视频| 成人性生交大片免费看中文 | 欧美精品丝袜中出| 久久精品人人做人人爽人人| 一级精品视频在线观看宜春院| 国产在线精品一区二区| 欧美日韩aaa| 日韩伦理av电影| 国内外成人在线视频| 欧美日本一区二区三区| 自拍偷拍国产精品| 国产老女人精品毛片久久| 国产日韩欧美综合在线| 三级欧美在线一区| 在线这里只有精品| 国产精品久久久久久久久果冻传媒 | 欧美中文字幕亚洲一区二区va在线| 欧美一区二区三区免费大片| 成人免费一区二区三区视频 | 亚洲精品综合在线| 国产精品18久久久久久久久| 欧美丰满高潮xxxx喷水动漫| 亚洲少妇屁股交4| 国产成人免费视频网站| 精品国产一二三| 秋霞电影一区二区| 欧美日韩不卡在线| 一区二区三区在线播| 色综合天天综合在线视频| 中文字幕av资源一区| 国产呦萝稀缺另类资源| 日韩你懂的在线观看| 蜜桃精品视频在线| 日韩欧美不卡在线观看视频| 日韩电影在线免费| 欧美日韩国产三级| 日韩电影在线观看一区|