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

📄 main.c

📁 一个电力系统谐波检测的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	      GUI_Button_OK1(30,15);     // 选中"OK"按钮
          GUI_Button_Cancle(30,30);  // 取消"CANSEL"按钮的选中状态
      }
      else
      { 
	     GUI_Button_OK(30,15);
          GUI_Button_Cancle1(30,30);
      }
      
      key = OSMboxPend(KeyMbox, 0, &err);
           
      if( ((int)key==KEY_LEFT)||
          ((int)key==KEY_RIGHT) ) 
      { select = 1- select;
      }
      
      if((int)key==KEY_OK)
      {  GUI_WindowsHide(&message); // 清除窗口显示
         return;
      }
	    OSTimeDly(10);	
   }   
}


/****************************************************************************
* 名称: MenuIcoInit()
* 功能: 初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
*       图形点阵数据指针,图标标题点阵数据指针,相应的功能函数等等。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void  MenuIcoInit(void)
{   int  i;
    extern uint8 *pic_all[][2];	// 图标资源(pic1--pic8)
        
    for(i=0; i<8; i++)
    {   /* 初始化为末选中状态 */
        mainmenu[i].state = 0;	
        
        /* 连接相应的图标数据 */
        mainmenu[i].icodat = (uint8 *) pic_all[i][0];
        mainmenu[i].title = (uint8 *) pic_all[i][1];
        
        /* 连接菜单功能函数 */
        mainmenu[i].Function = ( void(*) (void) ) DemoMessage;
    }
}


/****************************************************************************
* 名称: DrawMainWindow()
* 功能: 在屏幕上显示一个主窗口,大小为128x64。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void  DrawMainWindow(void)
{   WINDOWS  mainw;   
    
    mainw.x = 0;
    mainw.y = 0;
    mainw.with = 84;
    mainw.hight = 48;
    mainw.title = (uint8 *) "HELLO"; // 窗口标题
    mainw.state = NULL;  // 状态栏不显示
    
    GUI_WindowsDraw(&mainw);    // 显示窗口
}


/*********************************************************************************************************
**                            Task0 任务0
** 功能:使用ZLG/GUI实现图标菜单演示。在LCD屏幕上显示图标菜单,
**       通过KEY2、KEY3按键选择菜单,通过KEY4按键确定选择。
** 说明:请将EasyARM2131开发板上的P0.17、P0.18、P0.19跳线器短
**       接到"KEY2"、"KEY3"、"KEY4"端。
********************************************************************************************************/
void  Task0(void *pdata)
{ 
  uint8  select;
	pdata = pdata;
	TargetInit ();
 
	    
    /* 初始化ZLG/GUI */
    GUI_Initialize();
    GUI_SetColor(1, 0)                             ;

    /* 图标菜单初始化 */
     MenuIcoInit();
    
    /* 显示窗口 */
    DrawMainWindow();
    
    /* 循环调用图标菜单操作,并执行相应功能 */
     while(1)
     { select = SelectMenuIco();   // 选择菜单
    
       if(select<8) 
       {    (*mainmenu[select].Function)();     // 执行功能
       }
         OSTimeDly(1);	
		
     }


}


/*********************************************************************************************************
**                            Task1 任务1
** 功能: 等待一个按键,然后发送按键消息。具有去抖动功能和按键超时退出功能。
** 说明:按键和键值的对应关系如下
**       KEY2   --------   KEY_LEFT
**       KEY3   --------   KEY_RIGHT
**       KEY3   --------   KEY_OK
********************************************************************************************************/
 
 void  Task2(void *pdata)
{
   int temp;
   pdata = pdata;
   while(1)
   {
      
	    AD_START();
	   //OSMboxPost(KeyMbox, (void *)(temp%5));   // 发送按键消息
 	  temp++;
	  SSP_SEND_LED(temp%16);
	  OSTimeDly(150);
   }
} 

 void  Task3(void *pdata)
{ 
   uint8  *snd="12a";
 
   pdata = pdata;
 
   while(1)
   {
   UART0_SendStr(snd);
      IO1CLR =(1<<25);
	  IO1CLR =(1<<23);
	 // IO0CLR=(1<<11);
 
		  OSTimeDly(100);
   }
} 
   
  void  Task1(void *pdata)
{
     
  	uint8  k=0,GPIO_DATA[3];
	uint8  RS485_RECV[2];
    pdata = pdata;
	memset(GPIO_DATA,0,sizeof(GPIO_DATA)) ;
   while(1)
   {
      
      IO1SET =(1<<25);
	  IO1SET =(1<<23);
	  GPIO_DATA[k++]=SSP_READ_GPIO()	;
	  if(k>2)	k=0;
	  UART1_GetStr(RS485_RECV,3);	 
 	    OSTimeDly(200);
   }
} 

  void  RTC_TASK(void *pdata)
  {
    RTCTime Time  ;
	char   Display[9],DisplayDATE[11];
 
//    uint8   Wait_Signal0;
	pdata = pdata;						        /*防止编译器警告 */
	Time.RTC_Sec  = 0;       /* 秒 - [0,59] */
    Time.RTC_Min  = 0;       /* 分 - [0,59] */
    Time.RTC_Hour = 0;       /* 小时 - [0,23] */
    Time.RTC_Mday = 25;      /* 当月天数- [1,31] */
    Time.RTC_Mon  = 4;       /* 月 - [1,12] */
    Time.RTC_Year = 2007;    /* 年 - [0,4095] */
    Time.RTC_Wday = 2;       /* 星期- [0,6] */
    Time.RTC_Yday = 156;     /* 当年天数 - [1,365] */
	TargetInit();		     /*硬件初始化 */
	RTCInit();				 /**/
	RTCSetTime(Time); 
	RTCStart();
 	
	while(1)
	{	
 
//	    OSSemPend(DispSem,0,&Wait_Signal0);               /*等待信号量 */
		Time = RTCGetTime();
		Display[0] = ((uint8)Time.RTC_Hour/10)+48;
		Display[1] = ((uint8)Time.RTC_Hour%10)+48;
		Display[2] = ':';
		Display[3] = ((uint8)Time.RTC_Min/10)+48;
		Display[4] = ((uint8)Time.RTC_Min%10)+48;
		Display[5] = ':';
		Display[6] = ((uint8)Time.RTC_Sec/10)+48;
		Display[7] = ((uint8)Time.RTC_Sec%10)+48;
		Display[8] = '\0';
		DisplayDATE[0] =((uint8) Time.RTC_Year/1000)+48;
		Time.RTC_Mday=Time.RTC_Mday%1000;
		DisplayDATE[1] =((uint8) Time.RTC_Year/100)+48;
		Time.RTC_Mday=Time.RTC_Mday%100;
		DisplayDATE[2] =((uint8) Time.RTC_Year/10)+48;
		Time.RTC_Mday=Time.RTC_Mday%10;
		DisplayDATE[3] =((uint8)Time.RTC_Year)+48;
		DisplayDATE[4]=':';
		DisplayDATE[5] = ((uint8)Time.RTC_Mon/10)+48;
		DisplayDATE[6] = ((uint8)Time.RTC_Mon%10)+48;
		DisplayDATE[7]=':';
		DisplayDATE[8] = ((uint8)Time.RTC_Mday/10)+48;
		DisplayDATE[9] = ((uint8)Time.RTC_Mday%10)+48;
		DisplayDATE[10] = '\0';
	    GUI_PutString(8, 15, "Date is:");  //
        GUI_PutString(8, 25, &DisplayDATE[0]);
 		GUI_PutString(8, 30, "Time is:");  // 
        GUI_PutString(8, 40, &Display[0]);
	//	GUI_Picture(0, 0,97,66,BMP); 
	    
		OSTimeDly(100);
//		Wait_Signal0 = OSSemPost(DispSem);              /*发送信号量 */	
	}
  }
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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