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

📄 j.c

📁 SD读卡器原理+代码 SD读卡器原理+代码
💻 C
📖 第 1 页 / 共 3 页
字号:
							(var_change[2]-0x30)*1.0    +
							(var_change[4]-0x30)*0.1	+ (var_change[5]-0x30)*0.01   ;
				eeprom_write_block(&tem_down, &ee_tem_down, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &tem_down,&ee_tem_down);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	6:					//	差压上限,	屏幕在“差压上限”选项时只检测“设置/退出”"加1"“右移/向下”“确认/保存”键
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				var_change[change_posion]++;
				if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9d )	par_cursor_addres = 0x9e;	//	跳过小数点
				if( par_cursor_addres==0xa0 )	par_cursor_addres = 0x99;	//	回头
				if( change_posion==4 )			change_posion = 5;			//	跳过小数点
				if( change_posion==7 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				asm("wdr");
				chaya_up =	(var_change[0]-0x30)*1000.00 + (var_change[1]-0x30)*100.00 + 
							(var_change[2]-0x30)*10.0	 + (var_change[3]-0x30)*1.0    +
							(var_change[5]-0x30)*0.1	 + (var_change[6]-0x30)*0.01   ;
				asm("wdr");
				eeprom_write_block(&chaya_up, &ee_chaya_up, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &chaya_up,&ee_chaya_up);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	7:						//	差压下限,	屏幕在“差压下限”选项时只检测“设置/退出”"加1"“右移/向下”“确认/保存”键
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				var_change[change_posion]++;
				if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9d )	par_cursor_addres = 0x9e;	//	跳过小数点
				if( par_cursor_addres==0xa0 )	par_cursor_addres = 0x99;	//	回头
				if( change_posion==4 )			change_posion = 5;			//	跳过小数点
				if( change_posion==7 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				asm("wdr");
				chaya_down = (var_change[0]-0x30)*1000.00 + (var_change[1]-0x30)*100.00 + 
							 (var_change[2]-0x30)*10.0	  + (var_change[3]-0x30)*1.0    +
							 (var_change[5]-0x30)*0.1	  + (var_change[6]-0x30)*0.01   ;
				asm("wdr");
				eeprom_write_block(&chaya_down, &ee_chaya_down, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &chaya_down,&ee_chaya_down);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	8:						//	温度电流纠偏		屏幕在“电流纠偏”选项时只检测“设置/退出”"加1"“右移/向下”“确认/保存”键					
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				if( var_change[change_posion]==0x2b )	var_change[change_posion] = 0x2d;		// 切换正负号
				else if( var_change[change_posion]==0x2d )	var_change[change_posion] = 0x2b;	// 切换正负号
				if( change_posion!=0 )
				{
					var_change[change_posion]++;
					if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
				}
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9b )	par_cursor_addres = 0x9c;	//	跳过小数点
				if( par_cursor_addres==0x9e )	par_cursor_addres = 0x99;	//	回头
				if( change_posion==2 )			change_posion = 3;			//	跳过小数点
				if( change_posion==5 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				
				asm("wdr");
				tem_cur_jp = (var_change[1]-0x30)*1.00 + (var_change[3]-0x30)*0.1 + (var_change[4]-0x30)*0.01;
				if( var_change[0]==0x2d)	tem_cur_jp *= -1.00;
				asm("wdr");
				eeprom_write_block(&tem_cur_jp, &ee_tem_cur_jp, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &tem_cur_jp,&ee_tem_cur_jp);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	9:						//	差压电流纠偏		屏幕在“电流纠偏”选项时只检测“设置/退出”"加1"“右移/向下”“确认/保存”键					
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				if( var_change[change_posion]==0x2b )	var_change[change_posion] = 0x2d;		// 切换正负号
				else if( var_change[change_posion]==0x2d )	var_change[change_posion] = 0x2b;	// 切换正负号
				if( change_posion!=0 )
				{
					var_change[change_posion]++;
					if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
				}
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9b )	par_cursor_addres = 0x9c;	//	跳过小数点
				if( par_cursor_addres==0x9e )	par_cursor_addres = 0x99;	//	回头
				if( change_posion==2 )			change_posion = 3;			//	跳过小数点
				if( change_posion==5 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				
				asm("wdr");
				chaya_cur_jp = (var_change[1]-0x30)*1.00 + (var_change[3]-0x30)*0.1 + (var_change[4]-0x30)*0.01;
				if( var_change[0]==0x2d)	chaya_cur_jp *= -1.00;
				asm("wdr");
				eeprom_write_block(&chaya_cur_jp, &ee_chaya_cur_jp, sizeof(double)); 
				asm("wdr");
				
				delay(10,8000);
				judge_eeprom( &chaya_cur_jp,&ee_chaya_cur_jp);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	10:					//	截面积,	屏幕在“截面积”选项时只检测“设置/退出”"加1"“右移/向下”“确认/保存”键
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				var_change[change_posion]++;
				if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9b )	par_cursor_addres = 0x9c;	//	跳过小数点
				if( par_cursor_addres==0x9e )	par_cursor_addres = 0x99;	//	回头
				if( change_posion==2 )			change_posion = 3;			//	跳过小数点
				if( change_posion==5 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				asm("wdr");
				aera = (var_change[0]-0x30)*10.00 + (var_change[1]-0x30)*1.00 + (var_change[3]-0x30)*0.10 + (var_change[4]-0x30)*0.01;
				asm("wdr");
				eeprom_write_block(&aera, &ee_aera, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &aera,&ee_aera);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	11:					//	重置EEPROM
			if( key_value==1 )								//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				if( par_cursor_addres==0x9a )	par_cursor_addres = 0x9d;
				else							par_cursor_addres = 0x9a;
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处重置EEPROM

				if( par_cursor_addres==0x9a )
				{
					asm("wdr");
					tem_up		= 500.00;
					tem_down	= 0.00;
					chaya_up		= 7000.00;
					chaya_down	= 0.00;
					tem_cur_jp	= 0.00;
					chaya_cur_jp	= 0.00;
					aera		= 1.54;
					quanya_up	= 10000.00;
					quanya_down	= 0.00;
					asm("wdr");
					eeprom_write_block(&tem_up, &ee_tem_up, sizeof(double)); 			delay(10,8000);
					eeprom_write_block(&tem_down, &ee_tem_down, sizeof(double)); 		delay(10,8000);
					eeprom_write_block(&chaya_up, &ee_chaya_up, sizeof(double)); 		delay(10,8000);
					eeprom_write_block(&chaya_down, &ee_chaya_down, sizeof(double)); 	delay(10,8000);
					eeprom_write_block(&tem_cur_jp, &ee_tem_cur_jp, sizeof(double)); 	delay(10,8000);
					eeprom_write_block(&chaya_cur_jp, &ee_chaya_cur_jp, sizeof(double));delay(10,8000);
					eeprom_write_block(&aera, &ee_aera, sizeof(double)); 				delay(10,8000);
					
					eeprom_write_block(&quanya_up, &ee_quanya_up, sizeof(double)); 		delay(10,8000);
					eeprom_write_block(&quanya_down, &ee_quanya_down, sizeof(double)); 	delay(10,8000);
					
					line2 = "    重置成功   ";
					display();
					delay(800,8000);
				}
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
			
		case	12:											//	全压上限
		if( key_value==1 )									//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				var_change[change_posion]++;				
				if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9d )	par_cursor_addres = 0x9e;	//	跳过小数点
				if( par_cursor_addres==0xa0 )	par_cursor_addres = 0x98;	//	回头
				if( change_posion==5 )			change_posion = 6;			//	跳过小数点
				if( change_posion==8 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”///////////////////////////////////////
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				asm("wdr");
				quanya_up =	(var_change[0]-0x30)*10000.00 + (var_change[1]-0x30)*1000.00 + 
							(var_change[2]-0x30)*100.0	  + (var_change[3]-0x30)*10.0    +
							(var_change[4]-0x30)*1.0      +
							(var_change[6]-0x30)*0.1	  + (var_change[7]-0x30)*0.01   ;
				asm("wdr");
				eeprom_write_block(&quanya_up, &ee_quanya_up, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &quanya_up,&ee_quanya_up);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}	
		break;
		
		case	13:											//	全压下限
		if( key_value==1 )									//	是否“设置/退出”
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				main_menu();
				setup_menu_cursor();
			}
			if( key_value==2 )								//	是否“加1”
			{
				var_change[change_posion]++;				
				if( var_change[change_posion]==0x3a )	var_change[change_posion] = 0x30;
			}
			if( key_value==3 )								//	是否“右移/向下”
			{
				line4 = "                ";
				display();
				par_cursor_addres++;
				change_posion++;
				if( par_cursor_addres==0x9d )	par_cursor_addres = 0x9e;	//	跳过小数点
				if( par_cursor_addres==0xa0 )	par_cursor_addres = 0x98;	//	回头
				if( change_posion==5 )			change_posion = 6;			//	跳过小数点
				if( change_posion==8 )			change_posion = 0;			//	回头
				wr_com(par_cursor_addres);
				wr_date(0x18);
			}
			if( key_value==4 )								//	是否“确认/保存”///////////////////////////////////////
			{
				clear_all();
				screen_status=3;							//	回到主菜单模式
				//在此处把修改好的参数存入EEPROM
				asm("wdr");
				quanya_down =	(var_change[0]-0x30)*10000.00 + (var_change[1]-0x30)*1000.00 + 
								(var_change[2]-0x30)*100.0	  + (var_change[3]-0x30)*10.0    +
								(var_change[4]-0x30)*1.0      +
								(var_change[6]-0x30)*0.1	  + (var_change[7]-0x30)*0.01   ;
				asm("wdr");
				eeprom_write_block(&quanya_down, &ee_quanya_down, sizeof(double)); 
				delay(10,8000);
				judge_eeprom( &quanya_down,&ee_quanya_down);
				clear_all();
				main_menu();
				setup_menu_cursor();
			}
		break;
		
		default:
		break;
	}
	delay(200,8000);									//	延时,防止长按键
}
//----------- 按键处理函数 END -----------------




void wdsx(void)					//	输入温度上限
{
	line1 = "温度上限    度";
	display();

	display_variable1(0x89,6);	
}

void wdxx(void)					//	输入温度下限
{
	line1 = "温度下限    度";
	display();

	display_variable1(0x89,6);
}

void ylsx(void)					//	输入差压上限
{
	line1 = "差压上限    帕";
	display();

	display_variable1(0x89,7);
}

void ylx(void)					//	输入差压下限
{
	line1 = "差压下限    帕";
	display();

	display_variable1(0x89,7);
}


void wddljp(void)				//	输入温度电流纠偏值
{
	line1 = "温度电流纠偏值";
	display();
	
	wr_com(0x8e);
	wr_date(0xba);
	wr_date(0xc1);
	wr_date(0xb0);
	wr_date(0xb2);

	display_variable1(0x89,5);
}

void yldljp(void)				//	输入压力电流纠偏值
{
	line1 = "差压电流纠偏值";
	display();
	
	wr_com(0x8e);
	wr_date(0xba);
	wr_date(0xc1);
	wr_date(0xb0);
	wr_date(0xb2);

	display_variable1(0x89,5);
}

void jmjsr(void)				//	截面积输入
{
	line1 = "截面积  平方米";
	display();

	display_variable1(0x89,5);
}

void EEPROM_CZ(void)					//	EEPROM重置
{
	line1 = "确定重置EEPROM?";
	line3 = "    是    否";
	display();
}


void qysx(void)					//	输入全压上限
{
	line1 = "全压上限    帕";
	display();

	display_variable1(0x88,8);
}

void qyxx(void)					//	输入全压下限
{
	line1 = "全压下限    帕";
	display();

	display_variable1(0x88,8);
}



int main(void)
{
	uint	i;
	delay(200,8000);
	cpu_init();
	system_init();
	while(1)
	{
		if( screen_status==1 )								//	正常模式
		{
			normal_model();									
			for( i=0;i<300;i++ )							//	显示流量时,300ms 刷新一次流量值
			{
				delay(1,8000);
				if( key_value!=0 )		break;
			}
		}
		else if( screen_status==2 )		test_model();		//	测试模式
		else if( screen_status==3 )		main_menu();		//	主菜单
		
		else if( screen_status==4 )		wdsx();				//	温度上限
		else if( screen_status==5 )		wdxx();				//	温度下限
		else if( screen_status==6 )		ylsx();				//	差压上限
		else if( screen_status==7 )		ylx();				//	差压下限
		
		else if( screen_status==8 )		wddljp();			//	温度电流纠偏
		else if( screen_status==9 )		yldljp();			//	差压电流纠偏
		else if( screen_status==10 )	jmjsr();			//	截面积输入
		else if( screen_status==11 )	EEPROM_CZ();		//	EEPROM重置
		else if( screen_status==12 )	qysx();				//	全压上限
		else if( screen_status==13 )	qyxx();				//	全压下限
		else
		{
			clear_all();
			line2 = "系统遭遇严重错误";
			line3 = "请检查是否受干扰";
			line4 = "并断电重新运行";
			display();
			delay(400,8000);
			PORTB ^= (1<<2);			//	点亮背光
		}

		if( key_value!=0 )				//	是否有按键?
		{
			led_on
			key_process();				//	有,调用按键处理程序
			key_value = 0;				//	按键值清零
			led_off
		}
		
		asm("wdr");
	}
}

⌨️ 快捷键说明

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