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

📄 menu.c

📁 一个流量控制仪器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
					uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)] = 
						fnAss1_SystemMenuTurnTime( ucSystemMenuTurnTemp2 , 
										1,(char)uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)]);
						
					break;
				}
				
				//下向键 (KEY_DOWN ) 减量选择数据值(自动循环)
				case KEY_DOWN:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
						
					//增量-1
					uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)] = 
						fnAss1_SystemMenuTurnTime( ucSystemMenuTurnTemp2 , 
										-1,(char)uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)]);
							
					break;
				}

        //左向键(KEY_LEFT)减量选择显示位(1-7)(左移/自动循环)
				case KEY_LEFT:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
						
					//减量选择显示位(1-7)(左移/自动循环)
					if(ucSystemMenuTurnTemp2 == 1)
						ucSystemMenuTurnTemp2 = 7;
					else
						ucSystemMenuTurnTemp2 -- ;
						
					break;
				}
				
				//确认键 KEY_OK 保存结果,返回上一级目录
				case KEY_OK:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;

					//保存结果-->系统存储空间 EEPROM

					//写入当前时间段的设置值--4字节时间量
					        //写入指定地址,页大小以内的时段控制量:	
                				//CAT24WC64P  (N<=32)(地址:0-8191)
                				//CAT24WC16P  (N<=16)(地址:0-2047)
        				fnWrite_Eeprom(TurnList[ucSystemMenuTurnNum].uiTurnTimeAddress,
                        			4,uc8_SystemMenuTurnTemp); 					
					
					//返回上一级目录
					ucSystemMenuTurnTemp1 = 1;	//进入第一层子菜单
										
					break;
				}				

				//取消键 KEY_ESC  不保存结果,返回上一级目录
				case KEY_ESC:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
					
					//不保存结果
					
					//返回上一级目录
					ucSystemMenuTurnTemp1 = 1;	//进入第一层子菜单		
					
					break;
				}
				
				//清除键 (KEY_CLEAR)  清除所有时间设置(清0)。
				case KEY_CLEAR:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
				
					
					//清除所有时间设置(清0)。
					uc8_SystemMenuTurnTemp[0] = 0;
					uc8_SystemMenuTurnTemp[1] = 0;	
					uc8_SystemMenuTurnTemp[2] = 0;									
					uc8_SystemMenuTurnTemp[3] = 0;
					
					
					break;
				}				

				//数字键 KEY_0 -- KEY_9 输入当前位的值 0-9,并且右移当前位	
				default:
				{
					//数字键检查
					ucTimeTemp2 = fnKeyboardNumCheck();
					
					if(ucTimeTemp2!= 0xff)
					{
						//十分钟、十秒的0-5限制 
						if(((ucSystemMenuTurnTemp2 == 4) | (ucSystemMenuTurnTemp2 == 6)) & (ucTimeTemp2 > 5))
						{
							;
						}
						else
						{
							
							if(ucSystemMenuTurnTemp2 != 1)
							{
								//不是百小时
								
								//十位
								uc3_TimeTemp1[0] = uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] / 10;
								//个位
								uc3_TimeTemp1[1] = uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] % 10;
								
								uc3_TimeTemp1[ ucSystemMenuTurnTemp2 % 2 ] = ucTimeTemp2;
								
								uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] = uc3_TimeTemp1[0] * 10 + uc3_TimeTemp1[1];
								
							}
							else
							{
								//百小时
								uc8_SystemMenuTurnTemp[0] = ucTimeTemp2;
								
							}
							
						
							//右移当前位
							ucSystemMenuTurnTemp2++;
						
							//判断是否越界
							if(ucSystemMenuTurnTemp2 > 7)
							{
								ucSystemMenuTurnTemp2 = 1;
							
							}
						}						
					}	
										
					break;	
				}			
								
			}	
				
			//菜单显示--子菜单2层			
			pucDBuf = fnDisplayBufSet(Display_01Set);
			
        		pucDBuf[0] = 0x0f;
			
        		pucDBuf[1] = uc8_SystemMenuTurnTemp[0] % 10;        	//百小时
        		pucDBuf[2] = uc8_SystemMenuTurnTemp[1] / 10;        	//小时十位
        		pucDBuf[3] = uc8_SystemMenuTurnTemp[1] % 10 + 0x80;     //小时个位        
        		
        		pucDBuf[4] = uc8_SystemMenuTurnTemp[2] / 10;        	//分钟十位
        		pucDBuf[5] = uc8_SystemMenuTurnTemp[2] % 10 + 0x80;     //小时个位 

        		pucDBuf[6] = uc8_SystemMenuTurnTemp[3] / 10;        	//秒十位
        		pucDBuf[7] = uc8_SystemMenuTurnTemp[3] % 10 + 0x80;     //秒个位 

			//设置当前选择位闪烁
        		fnDisplaySetDk(Display_01Set,1<<(7-ucSystemMenuTurnTemp2));       
        					
      			ucDisplayState = Display_01Set;		//显示菜单
      						
			break;
		}		
		        	
        	
        }	
	
	
}




/*******************************************************************
		通用单字节数据输入函数
函数原型: void fnSet_SystemMenuNormByte()
功能: 	通用单字节数据输入函数
返回:   
********************************************************************/
void fnSet_SystemMenuNormByte()
{
        uchar *pucDBuf;
        
        uchar i;

	
        //根据子菜单层,处理相应键盘输入,并显示相应内容
        switch(ucSystemMenuTurnTemp1)
        {
		//0.	初始化设定。进入子菜单的相关数据初始化
		case 0:
		{
			//初始化设定的数据
			
			//读入相应地址的数据--单字节
				//读入指定地址,单字节大小的数据:	
                		//CAT24WC64P  (N<=8192)(地址:0-8191)
                		//CAT24WC16P  (N<=2048)(地址:0-2047)
        		fnRead_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
                        	1,uc8_SystemMenuTurnTemp); 			
			

			//检查数据,如果超出上下限,则设为默认值,并储存。报警,Beep!
			if ( (uc8_SystemMenuTurnTemp[0] < pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin) |
				(uc8_SystemMenuTurnTemp[0] > pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax) )
			{
				//数据设为默认值
				uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDData0;
				
				//并储存
				//写入相应地址的数据--单字节
					//写入指定地址,单字节大小的数据:	
                			//CAT24WC64P  (N<=8192)(地址:0-8191)
                			//CAT24WC16P  (N<=2048)(地址:0-2047)
        			fnWrite_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
                        		1,uc8_SystemMenuTurnTemp);
                        		
                        	//报警,Beep!
                        	
                        } 				
			
			
			//进入第一层子菜单
			ucSystemMenuTurnTemp1 = 1;	
				
			
			break;	
		}
		
		
		//1.	数据输入目录
		case 1:
		{	
			//处理键盘消息--子菜单1层
			switch(ucKeyInput)
			{
				//上向键 (KEY_UP) 增量选择数据值(自动循环)
				case KEY_UP:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
						
					//增量选择数据值(自动循环)
					if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax )
						uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin;
					else
						uc8_SystemMenuTurnTemp[0] ++ ;
						
					break;
				}
				
				//下向键 KEY_DOWN 减量选择数据值(自动循环)
				case KEY_DOWN:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
						
					//减量选择数据值(自动循环)
					if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin )
						uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax;
					else
						uc8_SystemMenuTurnTemp[0] -- ;
						
					break;
				}

        //左向键(KEY_LEFT)减量选择设置位置(左移/自动循环)
				case KEY_LEFT:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
						
					//减量选择数据值(自动循环)
					if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin )
						uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax;
					else
						uc8_SystemMenuTurnTemp[0] -- ;
						
					break;
				}


				//确认键 KEY_OK 保存结果,返回上一级目录
				case KEY_OK:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;

					//保存结果-->系统存储空间 EEPROM

					//写入相应地址的数据--单字节
						//写入指定地址,单字节大小的数据:	
                				//CAT24WC64P  (N<=8192)(地址:0-8191)
                				//CAT24WC16P  (N<=2048)(地址:0-2047)
        				fnWrite_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
                        			1,uc8_SystemMenuTurnTemp); 					
					
					//菜单执行项退出数据清理
					
					//标准退回菜单
					ucSystemMenuState = MenuState_X1;	//进入菜单状态
										
					break;
				}				

				//取消键 KEY_ESC  不保存结果,返回上一级目录
				case KEY_ESC:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
					
					//不保存结果
					
					//菜单执行项退出数据清理
					
					//标准退回菜单
					ucSystemMenuState = MenuState_X1;	//进入菜单状态	
					
					break;
				}
				
				//清除键 (KEY_CLEAR)  清除所有时间设置(清0)。
				case KEY_CLEAR:
				{
					//清空键盘处理
					ucKeyInput = KEY_NOKey;
				
					
					//数据设为默认值
					uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDData0;
					
					
					break;
				}
			}
			
			
			//菜单显示--子菜单1层			
			pucDBuf = fnDisplayBufSet(Display_01Set);
			
			//显示位清除
			pucDBuf[0] = 0x0f;
			pucDBuf[1] = 0x0f;
			pucDBuf[2] = 0x0f;
			pucDBuf[3] = 0x0f;
			pucDBuf[4] = 0x0f;
			
			i = uc8_SystemMenuTurnTemp[0] / 100;
			
			if (i == 0)
				pucDBuf[5] = 0x0f;
			else
				pucDBuf[5] = i;			//百位显示
				
			i = uc8_SystemMenuTurnTemp[0] % 100;
			
			i = i /10;
			
			if (i==0 & pucDBuf[5] == 0x0f)
				pucDBuf[6] = 0x0f;
			else
				pucDBuf[6] = i;			//十位显示
				
			pucDBuf[7] = uc8_SystemMenuTurnTemp[0] % 10;	//个位显示
			
			//设置当前无闪烁
        		fnDisplaySetDk(Display_01Set,0);       
        					
      			ucDisplayState = Display_01Set;		//显示菜单
      						
			break;
		}
	}
			
}


/*******************************************************************
		PP6控制函数 - 系统记录数据清零
函数原型: void fnSet_SystemMenu_PP6()
功能: 	PP6控制函数 - 系统记录数据清零
返回:   
********************************************************************/
void fnS

⌨️ 快捷键说明

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