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

📄 main.c

📁 UCOS-2.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
                   case  3:
                     GUI_LoadPic(56,30,*(num+a2),8,16);                 //正常显示第三位
                     GUI_LoadPic1(64,30,*(num+a3),8,16);                //反白显示第四位
                     break;
                   case  4:
                     GUI_LoadPic(64,30,*(num+a3),8,16);                 //正常显示第四位
                     GUI_LoadPic1(80,30,*(num+a4),8,16);                //反白显示第五位
                     break;
                   case  5:
                     GUI_LoadPic(80,30,*(num+a4),8,16);                 //正常显示第五位
                     GUI_LoadPic1(88,30,*(num+a5),8,16);                //反白显示第六位
                     break;
                 }
                yidong++;
                if(yidong==6)yidong=0;
              }
                  
             break;
             
             case  KEY_RIGHT:
              {
                switch(yidong-1)
                 { 
                   case  0:
                     
                     GUI_LoadPic1(32,30,*(num+jia),8,16);              //反白显示第一位并加相应值
                     a0=jia;
                     break;
                   case  1:
                    
                     GUI_LoadPic1(40,30,*(num+jia),8,16);              //反白显示第二位并加相应值
                     a1=jia;
                     break;
                   case  2:
                    
                     GUI_LoadPic1(56,30,*(num+jia),8,16);             //反白显示第三位并加相应值
                     a2=jia;
                     break;
                   case  3:
                    
                     GUI_LoadPic1(64,30,*(num+jia),8,16);             //反白显示第四位并加相应值
                     a3=jia;
                     break;
                   case  4:
                    
                     GUI_LoadPic1(80,30,*(num+jia),8,16);             //反白显示第五位并加相应值
                     a4=jia;
                     break;
                   case  5:
                    
                     GUI_LoadPic1(88,30,*(num+jia),8,16);             //反白显示第六位并加相应值
                     a5=jia;
                     break;
                 }
               jia++;
               if(jia==10)jia=0; 
              }
             break;
             
             case  KEY_OK: 
              {
                 HOUR  = a0*10+a1;
	             MIN   = a2*10+a3;
	             SEC   = a4*10+a5; 
                 OSTaskResume(4);
                 yidong=0;
                 jia=0;
                // GUI_ClearSCR(); 
                 return;
              }             
                
             default:
             break;
           
           
        }
     }  
                 
}

void   DongHua(void)  
{
   uint8  a0,b0,a=1,i;
   uint8  a0q,b0q;
   uint8  a0h,b0h; 
   a0=a0q=23;
   b0=b0q=23;
   a0h=b0h=1;
   GUI_ClearSCR();                                    //清屏  
   OSTaskSuspend(4);
   OSTaskSuspend(2);
   while(a)
   {  
    for(i=0;i<100;i++)
     {
      GUI_ClearSCR(); 
      GUI_Circle(a0,b0,5,1);
      GUI_Circle(a0q,b0q,5,0);
      a0q=a0;
      b0q=b0;
      OSTimeDly(10);
      if(a0h==1)
         a0=a0+2; 
      
   
      if(b0h==1)
         b0=b0+2; 
 
      if(a0h==0)
         a0=a0-2; 
          
      if(b0h==0)
         b0=b0-2; 

      if(a0<=7)
      { 
         a0h=1;
      }
      if(a0>=121)
      { 
         a0h=0;
      }
      if(b0>=56)
      { 
         b0h=0;
      }
      if(b0<=7)
      { 
         b0h=1;
      }
      if((IO1PIN&IO_KEY4)==0)
        {
          OSTimeDly(4);
          if((IO1PIN&IO_KEY4)==0)
            {
              while((IO1PIN&IO_KEY4)==0);
              OSTaskResume(4);
              OSTaskResume(2);
              return;
            }
        }
     }
    
   }
 } 
    	
/****************************************************************************
** 名称:     DemoMessage()
** 功能:     显示一个消息框(包含OK和CANSEL两个命令按纽),显示消息
             为"Hello,ZLG/GUI",然后等待按键输入
** 入口参数:无
** 出口参数:无
****************************************************************************/ 
void   DemoMessage(void)
{
   uint8  select;
   uint8  *key;
   uint8  err;
   
   WINDOWS  message;
   
   message.x=0;                                  //设置窗口的位置和大小
   message.y=0;
   message.with=128;
   message.hight=64;
   message.title=(uint8*)0;                     //窗口标题
   message.state=(uint8*)0;
   GUI_WindowsDraw(&message);                   //显示对话框窗口
   GUI_PutString(8,35,"Hello,");                //显示对话框的消息"Hello,ZLG/GUI"           
   GUI_PutString(8,45,"ZLG/GUI!");
   
   select=0;
   while(1)
   {
     
     if(select==0)
     {
       GUI_Button_OK1(72,29);                   //选中OK按钮
       GUI_Button_Cancle(72,45);                //取消CANSEL按钮的选中状态
       if((int)key==KEY_OK)
       {
          //GUI_ClearSCR();          
          GUI_WindowsHide(&message);  
          sh();
          return;
       }
     }
     else
     {
       GUI_Button_OK(72,29);                    //取消OK按钮的选中状态
       GUI_Button_Cancle1(72,45);               //选中CANSEL按钮
       
       if((int)key==KEY_OK)
       {
          GUI_WindowsHide(&message);  
          return;
       }
     }
     key=OSMboxPend(KeyMbox,0,&err);
     
     
     
     if(((int)key==KEY_LEFT)||((int)key==KEY_RIGHT))
     {
       select=1-select;
     }
     
     
     
     
     
  }
}
/****************************************************************************
** 名称:     MenuIcoInit()
** 功能:     初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
             图形点阵数据指针、图标标题点阵数据指针及相应的功能函数等
** 入口参数:无
** 出口参数:无
****************************************************************************/ 
void   MenuIcoInit(void)
{
   int i;   
   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;
   }
   mainmenu[0].Function=(void(*)(void))DemoMessage;
   mainmenu[1].Function=(void(*)(void))DongHua;
   mainmenu[2].Function=(void(*)(void))DemoMessage;
   mainmenu[3].Function=(void(*)(void))DemoMessage;
   mainmenu[4].Function=(void(*)(void))DemoMessage;
   mainmenu[5].Function=(void(*)(void))DemoMessage;
   mainmenu[6].Function=(void(*)(void))DemoMessage;
   mainmenu[7].Function=(void(*)(void))DemoMessage;
}

/****************************************************************************
** 名称:     DrawMainWindow(void)
** 功能:     在屏幕上显示一个主窗口,大小为128X64
** 入口参数:无
** 出口参数:无
****************************************************************************/
void  DrawMainWindow(void)
{

   
    WINDOWS   mainw;
    mainw.x=0;
    mainw.y=0;
    mainw.with=128;
    mainw.hight=64;
    mainw.title=(uint8*)NULL;
    mainw.state=NULL; 
    GUI_WindowsDraw(&mainw);
    
}
/****************************************************************************
** 名称:     Task0任务0有先级为3
** 功能:     
** 入口参数:无
** 出口参数:无
****************************************************************************/ 

void  Task0(void  *pdata)
{
   uint8   select;	
   pdata=pdata;
   
   while(1)
   { 
     select=SelectMenuIco();
     if(select<8)
     {
        (*mainmenu[select].Function)();
         DrawMainWindow();
     }
   }
}




/****************************************************************************
** 名称:     Task1任务1有先级为3
** 功能:     
** 入口参数:无
** 出口参数:无
****************************************************************************/ 

void   Task1(void *pdata)
{ 
    uint32  i;
    uint32  io_dat;
    uint8   key;
    pdata=pdata;
    TargetInit();
    GUI_Initialize();
    GUI_SetColor(1,0);
    MenuIcoInit();
    DrawMainWindow();
    OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 3);
    OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 4);	
    while(1)
    {
       OSTimeDly(4); 
       if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
       {
         OSTimeDly(2);
         io_dat=IO1PIN;
        if((io_dat&IO_KEYALL)!=IO_KEYALL)
        { 
         if((io_dat&IO_KEY2)==0)key=KEY_LEFT;
         if((io_dat&IO_KEY3)==0)key=KEY_RIGHT; 
         if((io_dat&IO_KEY4)==0)key=KEY_OK;
         for(i=0;i<100000000;i++)
         {
           if((IO1PIN&IO_KEYALL)==IO_KEYALL) break;
         }
         OSMboxPost(KeyMbox,(void*)key);
        }
       }
      
    }
}
              
void TaskDisp(void *pdata)                             //Task0 任务0 优先级2
{   
    uint32 times;
    uint8  bak,shuz[6];
    pdata=pdata;
    
    
    
    
    while(1)
    {
      
       times=CTIME0;
       bak=(times>>16)&0x1F;                              // 获取小时
       shuz[0]=bak/10;
       shuz[1]=bak%10;
       bak=(times>>8)&0x3F;                               // 获取分钟
       shuz[2]=bak/10;
       shuz[3]=bak%10;
       bak=times&0x3F;                                    // 获取秒
       shuz[4]=bak/10;
       shuz[5]=bak%10;
       
       GUI_LoadPic(20,4,*(FONT5x7ASCII_1+shuz[0]),5,8);             //显示小时
       GUI_LoadPic(26,4,*(FONT5x7ASCII_1+shuz[1]),5,8);             //显示小时
       GUI_LoadPic(32,4,*(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(38,4,*(FONT5x7ASCII_1+shuz[2]),5,8);             //显示分钟  
       GUI_LoadPic(44,4,*(FONT5x7ASCII_1+shuz[3]),5,8);             //显示分钟 
       GUI_LoadPic(50,4,*(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(56,4,*(FONT5x7ASCII_1+shuz[4]),5,8);             //显示秒
       GUI_LoadPic(62,4,*(FONT5x7ASCII_1+shuz[5]),5,8);             //显示秒
       
   } 
}





















⌨️ 快捷键说明

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