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

📄 key.c

📁 AVRMEG32编写的一个项目代码,里面包含一般应用的模块.
💻 C
📖 第 1 页 / 共 2 页
字号:
		//for (i=0;i<6;i++)
		//	disp_buffer[i]=m_ucCurrLoadMenuID[i];
		//disp_ram_data(0,4,6,0);
		//while (1);
              break;
        case  MENU_SYSSET_AUXPARA_MENGJIN1://设置门禁启用否
   //     case  MENU_SYSSET_AUXPARA_MENGJIN2:
 //	    case  MENU_SYSSET_AUXPARA_MENGJIN3:
        case  MENU_SYSSET_AUXPARA_ZHILIUV://设置直流电压采样,开启否
 	    case  MENU_SYSSET_AUXPARA_ZHILIUA://设置支流电流采样,开启否
        case  MENU_SYSSET_AUXPARA_JIAOLIUV://设置交流电压采样,开启否
 	    case  MENU_SYSSET_AUXPARA_JIAOLIUA://设置交流电流采样,开启否
        case  MENU_SYSSET_AUXPARA_FIRSTWENSHIDU://设置第一路温湿度,开启否
     //   case  MENU_SYSSET_AUXPARA_SECONDWENSHIDU://设置第二路温湿度,开启否
 	//    case  MENU_SYSSET_AUXPARA_THIRDWENSHIDU://设置第三路温湿度,开启否
	          for(i = 0; i<6; i++)
                  m_ucCurrLoadMenuID[i]=pgm_read_byte(&Menu_guimouID[i]);
              GoTopDispMenuID(m_ucCurrMenuID,6);
              break;
        default:
              break;
    }
}


void DisplayNodata(void)
{
    Lcd_Clear();
    Lcd_Printf(16,3,PSTR("无"),0);
 //   Lcd_Printf(0,6,"按任意键退出",0);
//wait_anykey();??
}


void wait_anykey(void)
{
//todo
/*while (1)
	{
	if (key_each)
		break;
	}*/
}


//实现采单设置
void ExecMenu(void)
{
 	 switch(m_ucCurrMenuID)
    {
    
	    case MENU_VIEW_UNHANDLEDALR:
	///	m_uiKeybResv=getTotalAlrByClass(VClass_UnhandledAlr);
		     if (m_uiKeybResv>0);
	//		ExecMenu_ViewAlr(VClass_UnhandledAlr,m_uiKeybResv);//WmDcMenu.c
		     else
			    DisplayNodata();
            break;
    //case MENU_OPR_CLRHANDLEDALR:
	//	ExecMenu_ClrAlr(VClass_HandledAlr);
       //  break;
        case MENU_OPR_MCOOL:
	//	ExecMenu_ClrAlr(VClass_ReportedAlr);
    //TODO
		 break;
        case MENU_OPR_MHOT:
	//	ExecMenu_CodeOpr();
	//TODO
         break;
        case MENU_OPR_MHOTCHANGE:
	//	ExecMenu_ClrAlr(VClass_SimAlr);
	//TODO
         break;
        case MENU_OPR_MAIRCHANGE:
	//	ExecMenu_ClrAlr(VClass_AllAlr);
	//TODO
         break;
        case MENU_OPR_AIRCHANGE:
	//	ExecMenu_ClrRs485Err();
	//TODO
         break;
        case MENU_OPR_LEAVE:
	//	ExecMenu_ClrAlr(VClass_SimAlr);
	//TODO
         break;
        case MENU_OPR_MOREV:
	//	ExecMenu_ClrAlr(VClass_AllAlr);
	//TODO
         break;
        case MENU_OPR_LOWERV:
	//	ExecMenu_ClrRs485Err();
	//TODO
         break;
//	case MENU_SYSSET_RS485DEVPARA:
//		ExecMenu_SetRs485Dev();//设置485拨特率
//		 break;
  //  case MENU_SYSSET_PASSWORD:
//		ExecMenu_SetPassWord();//设置密码
  //       break;
  //  case MENU_SYSSET_MAINPARA_DCTYPE:
//		ExecMenu_SetDcType();//局站型号
   //      break;
//    case MENU_SYSSET_MAINPARA_COMMMODE:
//		ExecMenu_SetCommMode();//通讯方式
 //        break;
 //   case MENU_SYSSET_MAINPARA_232BDRATE:
//		ExecMenu_SetBDRate(1);//串口拨特率
 //        break;
    case MENU_SYSSET_AUXPARA_UPPH1:
/////		ExecMenu_SetUpPh(1);//上拨号码
         break;
    case MENU_SYSSET_AUXPARA_UPPH2:
////		ExecMenu_SetUpPh(2);//上拨号码
         break;
    case MENU_SYSSET_AUXPARA_UPPH3:
///		ExecMenu_SetUpPh(3);//上拨号码
         break;
    case MENU_SYSSET_AUXPARA_TIME:
///		ExecMenu_SetTime();//时间设置
         break;
    case MENU_SYSSET_AUXPARA_ADDRESS:
///		ExecMenu_SetStaID();//局站地址
         break;
//    case MENU_SYSSET_AUXPARA_GPGDZ:
//		ExecMenu_SetGPGDZ();//工频固定值
  //       break;
  //  case MENU_SYSSET_AUXPARA_Test:
//		ExecMenu_SetTestPara();//检测电流环间隔
  //       break;

 /*   case MENU_SYSSET_GONGPDJPARA_YBMA:
		ExecMenu_SetGongPDJ(0);
         break;
    case MENU_SYSSET_GONGPDJPARA_ZYMA:
		ExecMenu_SetGongPDJ(1);
         break;
    case MENU_SYSSET_GONGPDJPARA_YZMA:
		ExecMenu_SetGongPDJ(2);
         break;*/
    default:
         break;
    }

}

void UpDispMenuIDBuffer(void)
{
 	 unsigned char i;
	 m_ucCurrMenuID=pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressUp));
	 if ((m_ucCurHLightRow==0)&&(pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_MaxItems))>MAX_MENUDISPLAYROW))
	{
	     for (i=MAX_MENUDISPLAYROW-1;i>0;i--)
		     m_ucCurrDispMenuID[i]=m_ucCurrDispMenuID[i-1];
	     m_ucCurrDispMenuID[0]=m_ucCurrMenuID;
	}
}

void DownDispMenuIDBuffer(void)
{
    unsigned char i;
    m_ucCurrMenuID=pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressDown));
    if ((m_ucCurHLightRow==MAX_MENUDISPLAYROW-1)&&(pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_MaxItems))>MAX_MENUDISPLAYROW))
	{
	     for (i=0;i<MAX_MENUDISPLAYROW-1;i++)
		     m_ucCurrDispMenuID[i]=m_ucCurrDispMenuID[i+1];
	     m_ucCurrDispMenuID[MAX_MENUDISPLAYROW-1]=m_ucCurrMenuID;
	}
}

//方向控制
void UpHLightRow(void)
{
    if (m_ucCurHLightRow>0)
	    m_ucCurHLightRow--;
}

void DownHLightRow(void)
{
    if (m_ucCurHLightRow<MAX_MENUDISPLAYROW-1)
	    m_ucCurHLightRow++;
}

u08 DisplayMenu(void)
{
    unsigned char i;
    unsigned char ucMenuID;
    unsigned char ucMode;
    Lcd_ClearAll();
    if ((m_ucCurrMenuID==MENU_FACE)||(m_ucCurrMenuID==MENU_ROOT))
	{
	 // DisplayFace();//首界面返回
	 // display_first_face();
     // todo
	    return 1;
	}
/****** For Debug ***********
if (m_ucCurrMenuID==MENU_SYSSET_MAINPARA)
	{
	for (i=0;i<MAX_MENUDISPLAYROW;i++)
		disp_buffer[i]=m_ucCurrDispMenuID[i];
	disp_ram_data(0,4,MAX_MENUDISPLAYROW,0);
	while (1);
	}
******** Endfor Debug *******/
for (i=0;i<MAX_MENUDISPLAYROW;i++)
	{
	    if (i==m_ucCurHLightRow)
		    ucMode=1;//黑亮显示
	    else
		    ucMode=0;
	    ucMenuID=m_ucCurrDispMenuID[i];
	    Lcd_Printf_ram(0,2*i+1,pgm_read_word(&Menu_String[ucMenuID]),ucMode);//显示目录
	    if (pgm_read_byte(&(KeyTab[ucMenuID].KeyTab_PressOk))!=255)
		    Lcd_DispMarkHz_ChildMenu(111,2*i+1,ucMode);//子菜单提示符
	    else
		    Lcd_DispMarkHz_Blank(111,2*i+1,ucMode);
	}
	return 0;
}

//
//************************************************************************
//* 菜单结构:                                                         	 *
//************************************************************************
//*待机画面--------------------->(MenuID=0)                              *
//*  ---+                                                                *
//*     |查看--------------------->(MenuID=1)                            *
//*     +---+                                                            *
//*     |   |未处理告警-------->(MenuID=2)                               *
//*     |   +--------------                                              *
//*     |   |           -------->(MenuID=)                               *
//*     |   +--------------                                              *
//*     |   |			-------->(MenuID=)                               *
//*     |   +--------------                                              *
//*     |   |			-------->(MenuID=)                               *
//*     |   +--------------                                              *
//*     |   |			-------->(MenuID=)                               *
//*     |   +--------------                                              *
//*     |设置------------------->(MenuID=3)                              *
//*     +---+                                                            *
//*     |   |设备仓制冷--------->(MenuID=4)                              *
//*     |   +--------------                                              *
//*     |   |设备仓制热--------->(MenuID=5)                              *
//*     |   +--------------                                              *
//*     |   |设备仓热交换------->(MenuID=6)                              *
//*     |   +--------------                                              *
//*     |   |设备仓空气循环----->(MenuID=7)                              *
//*     |   +--------------                                              *
//*     |   |电池仓空气循环----->(MenuID=8)                              *
//*     |   +--------------                                              *
//*     |   |蓄电池跳脱----->(MenuID=9)                                  *
//*     |   |直流过压----------->(MenuID=10)                             *
//*     |   +--------------                                              *
//*     |   |直流欠压----------->(MenuID=11)                             *
//*                               
//*     |系统设置--------------->(MenuID=12)                             *
//*     +---+                                                                                                           *
//*         |   |上拨号码一--------->(MenuID=13)                         *
//*         |   +--------------                                          *
//*         |   |上拨号码二------>(MenuID=14)                            *
//*         |   +--------------                                          *
//*         |   |上拨号码三------>(MenuID=15)                            *
//*         |   +--------------                                          *
//*         |   |时间设置------>(MenuID=16)                              *
//*         |   +--------------                                          *
//*         |   |局站地址------>(MenuID=17)                              *
//*         |   +--------------                                          *
//************************************************************************
void menu_handle(void)
{
//unsigned char ucKeyValue;
//ucKeyValue=KEY_NULL;//100
    m_ucCurHLightRow=0;
    m_ucCurrMenuID=MENU_VIEW;//2,一级目录
    LoadMenu();
    DisplayMenu();
}

u08 menue_move(u08 key_pressed)
{
	switch(key_pressed)
	{
		case    KEY_OK://PD2,2,确认
			if(pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressOk))!=255)
			{
				m_ucCurrMenuID=pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressOk));
				LoadMenu();
	    	    DisplayMenu();
			}
			else
			{
			//	ExecMenu();
			    LoadMenu();
                DisplayMenu();
			}
   			break;
		case    KEY_UP://PA7,7向上
				if (pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressUp))!=255)
					{
					UpDispMenuIDBuffer();
					UpHLightRow();
	 				DisplayMenu();
					}
	                break;
		case    KEY_ESC://165输入,0x7FFF,返回,8
				if(pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressEsc))!=255)
					{
					m_ucCurrMenuID=pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressEsc));
					LoadMenu();
				    if(DisplayMenu())
				    return 1;
					break;
					}
				else
					{
				//	g_ucTimeDispMode=0x80;
                    Lcd_ClearAll();//清屏
					return 1;
					}
		case    KEY_RIGHT://PD5,5,向上
				if (pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressUp))!=255)
					{
					UpDispMenuIDBuffer();
					UpHLightRow();
	 				DisplayMenu();
					}
                break;
     	case    KEY_LEFT://PD3, 3,向下
				if (pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressDown))!=255)
					{
					DownDispMenuIDBuffer();
					DownHLightRow();
	 				DisplayMenu();
					}
                break;
		case    KEY_DOWN://PD4,4,向下
			    if (pgm_read_byte(&(KeyTab[m_ucCurrMenuID].KeyTab_PressDown))!=255)
					{
					DownDispMenuIDBuffer();
					DownHLightRow();
					DisplayMenu();
					}
				break;
		default:
				break;
            }
            return 0;
//	ucKeyValue=KEY_NULL;

//xRDCCounter_MenuKeyEmptyKeepSeconds=0;
}



⌨️ 快捷键说明

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