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

📄 key.c

📁 温度仪表软件
💻 C
字号:
#include<reg52.h>
#include"global_var.h"
#include"my_type.h"
#include"function.h"  
#include"interface.h"	
uint k,n,m,m1=0,m2=0,w=2,w1=2,w2=3;

uchar reg_ds1307;
/*********按键处理子程序***********/
void key1();
void ge_h();
void shi_h();						
void bai_h();					
void high();							
void low();
void ge_l();
void shi_l();						
void bai_l();
void year_mon();
void dat_shi();
void min_sec();

void ge_1307();
void shi_1307();
void bai_1307();
void qian_1307();

/*********按键处理子程序**********/
void key()
{	
   if(KEY_1==0)	 
   {  
	key1() ;
	}   
}

/*********按键1处理子程序**********/
void key1()
{
   		delay(10);				//消抖
		if(KEY_1==0)
		{  
			 m1++;
			 if(m1==3)  m1=1; 
			 		     
			 if(m1==1)	high(); 
	
		     if(m1==2)	low();	 //第一个键 按下两次

//			 if(m1==3)	year_mon();
	
//			 if(m1==4)	dat_shi();

//			 if(m1==5)  min_sec();
			 								  	  	
    	 }					
}		 
//		 if(m1==3)			   // 1键按三次
//		 {
		 	
//		  }

/*************高报警值的设置***************/
void high()
{
	read_nbyte(0xa0,0x03,sh,3);
	delay(10);
	set_high=sh[0]+sh[1]*10+sh[2]*100;	 
//	set_high=238;
	display_set_H(); 	
	while(KEY_4) 
	{ 
		for(k=0;k<10;k++)
	   {
		display();
		}   
		if(KEY_1==0)
		break;
	 }
	while(KEY_1&KEY_2&KEY_3)  //在其他键没有按下的情况下,闪烁显示SET_H
	{ 	
		display();
		delay(15);						 
	 }
	 while(KEY_1&KEY_4)	//在第四个按键没按下的情况下,选择要增减的位
	 {
	 	   	w++;
			while(KEY_4)
			{						
				if(w==3) w=0;
				if(w==0) ge_h(); 							
				if(w==1) shi_h();							
		        if(w==2) bai_h();
				
	            while(KEY_4&KEY_3)
				{         	       
					display_set_H(); 							
					display();
		            if(KEY_2==0)
					{
					delay(80);				//消抖
					if(KEY_2==0)
					break;
				    } 	
				 }
				 
				 if(KEY_3==0)
					{
					delay(80);				//消抖
					if(KEY_3==0)
					break;
					}	
				 delay(80);	   
			 }	
	 }
	 sh[0]=(uchar)(set_high%10);
	 sh[1]=(uchar)(set_high/10%10);
	 sh[2]=(uchar)(set_high/100);
	 write_nbyte(0xa0,0x03,sh,3);
     delay(5);											  
}
/*************低报警值的设置***************/	
void low()
{
	read_nbyte(0xa0,0x10,sl,3);
	delay(10);
	set_low=sl[0]+sl[1]*10+sl[2]*100;
//	set_high=238;
	display_set_L(); 	
	while(KEY_4) 
	{ 
		for(k=0;k<10;k++)
	   {
		display();
		}   
		if(KEY_1==0)
		break;
	 }
	while(KEY_1&KEY_2&KEY_3)  //在其他键没有按下的情况下,闪烁显示SET_H
	{ 	
		display();
		delay(15);						 
	 }
	 while(KEY_1&KEY_4)	//在第四个按键没按下的情况下,选择要增减的位
	 {
	 	   	w1++;
			while(KEY_4)
			{						
				if(w1==3) w1=0;
				if(w1==0) ge_l(); 							
				if(w1==1) shi_l();							
		        if(w1==2) bai_l();
				
	            while(KEY_4&KEY_3)
				{         	       
					display_set_L(); 							
					display();
		            if(KEY_2==0)
					{
					delay(80);				//消抖
					if(KEY_2==0)
					break;
				    } 	
				 }
				 
				 if(KEY_3==0)
					{
					delay(80);				//消抖
					if(KEY_3==0)
					break;
					}	
				 delay(80);	   
			 }	
	 }
	 sl[0]=(uchar)(set_low%10);
	 sl[1]=(uchar)(set_low/10%10);
	 sl[2]=(uchar)(set_low/100);
	 write_nbyte(0xa0,0x10,sl,3);
     delay(5);											  
}
/*********低报警值个十百处理子程序**********/

void ge_l()
{
	set_low++;	
	if(set_low%10==0)
	set_low-=10;	
}
void shi_l()
{
	set_low+=10;	
	if(set_low%100<10)
	set_low-=100;	
}

void bai_l()	
{
	set_low+=100;	
	if(set_low>1000)									
	set_low-=1000;
}


										 



/*********高报警值个十百处理子程序**********/
void ge_h()
{
	set_high++;	
	if(set_high%10==0)
	set_high-=10;	
}
void shi_h()
{
	set_high+=10;	
	if(set_high%100<10)
	set_high-=100;	
}
void bai_h()	
{
	set_high+=100;	
	if(set_high>1000)									
	set_high-=1000;
}

void ge_1307()
{
	set_rtc++;	
	if(set_rtc%10==0)
	set_rtc-=10;	
}
void shi_1307()
{
	set_rtc+=10;	
	if(set_rtc%100<10)
	set_rtc-=100;	
}
void bai_1307()	
{
	set_rtc+=100;	
	if(set_rtc%1000<100)									
	set_rtc-=1000;
}

void qian_1307()
{
	set_rtc+=1000;
	if(set_rtc%10000<1000)
	set_rtc-=10000;
}

				 									

/*********ds1307 年月处理子程序**********/
/*
void year_mon()
{	
	rd_ds1307(0x05);
	while(KEY_4) 
	{ 
		for(k=0;k<10;k++)
	   {
		display_set_rtc();
		display();
		}   
		if(KEY_1==0)
		break;
	 }
	while(KEY_1&KEY_2&KEY_3)  //在其他键没有按下的情况下,闪烁显示SET_H
	{ 	
		display();
		delay(15);						 
	 }
	 while(KEY_1&KEY_4)	//在第四个按键没按下的情况下,选择要增减的位
	 {
 	   	w2++;
		while(KEY_4)
		{						
			if(w2==4) w2=0;	
						
			if(w2==0) ge_1307(); 							
			if(w2==1) shi_1307();							
	        if(w2==2) bai_1307();
			if(w2==3) qian_1307(); 

            while(KEY_4&KEY_3)
			{         	       
				display_set_rtc(); 							
				display();
	            if(KEY_2==0)
				{
				delay(80);				//消抖
				if(KEY_2==0)
				break;
			    } 	
			 }
			 
			 if(KEY_3==0)
				{
				delay(80);				//消抖
				if(KEY_3==0)
				break;
				}	
			 delay(80);	   
		 }	
	 } 
	wr_ds1307(0x05);
}
*/



/*********ds1307 日 时 处理子程序**********/
/*
void dat_shi()
{	
	rd_ds1307(0x03);
	while(KEY_4) 
	{ 
		for(k=0;k<10;k++)
	   {
		display_set_rtc();
		display();
		}   
		if(KEY_1==0)
		break;
	 }
	while(KEY_1&KEY_2&KEY_3)  //在其他键没有按下的情况下,闪烁显示SET_H
	{ 	
		display();
		delay(15);						 
	 }
	 while(KEY_1&KEY_4)	//在第四个按键没按下的情况下,选择要增减的位
	 {
 	   	w2++;
		while(KEY_4)
		{						
			if(w2==4) w2=0;	
						
			if(w2==0) ge_1307(); 							
			if(w2==1) shi_1307();							
	        if(w2==2) bai_1307();
			if(w2==3) qian_1307(); 

            while(KEY_4&KEY_3)
			{         	       
				display_set_rtc(); 							
				display();
	            if(KEY_2==0)
				{
				delay(80);				//消抖
				if(KEY_2==0)
				break;
			    } 	
			 }
			 
			 if(KEY_3==0)
				{
				delay(80);				//消抖
				if(KEY_3==0)
				break;
				}	
			 delay(80);	   
		 }	
	 } 
	wr_ds1307(0x03);
}
*/

/*************ds1307 分 秒处理子程序***************/	
/*
void min_sec()
{
	rd_ds1307(0x01); 
	while(KEY_4) 
	{ 
		for(k=0;k<10;k++)
	   {
		display();
		}   
		if(KEY_1==0)
		break;
	 }
	while(KEY_1&KEY_2&KEY_3)  //在其他键没有按下的情况下,闪烁显示SET_H
	{ 	
		display();
		delay(15);						 
	 }
	 while(KEY_1&KEY_4)	//在第四个按键没按下的情况下,选择要增减的位
	 {
	 	   	w1++;
			while(KEY_4)
			{						
				if(w1==4) w1=0;
				if(w1==0) ge_1307(); 							
				if(w1==1) shi_1307();							
		        if(w1==2) bai_1307();
				if(w1==3) qian_1307();
				
	            while(KEY_4&KEY_3)
				{         	       
					display_set_rtc(); 							
					display();
		            if(KEY_2==0)
					{
					delay(80);				//消抖
					if(KEY_2==0)
					break;
				    } 	
				 }
				 
				 if(KEY_3==0)
					{
					delay(80);				//消抖
					if(KEY_3==0)
					break;
					}	
				 delay(80);	   
			 }	
	 }
     wr_ds1307(0x00);
//	 delay(10);											  
}
   */

⌨️ 快捷键说明

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