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

📄 ball.c

📁 EasyARM2200 GUI test 程序
💻 C
字号:
/****************************************************************************************
* 文件名:BALL.C
* 功能:GUI测试及演示程序。
* 作者:黄绍斌
* 日期:2003.09.09
****************************************************************************************/
#include "config.h"

#define  LCM_LEDCON	 	0x00400000


/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<5000; i++);
}


/***********************************************************************
* 名称:MoveBall()
* 功能:将三个小球在屏幕上不断的滚动,实现动画操作。
* 入口参数:无
* 出口参数:无
***********************************************************************/
void  MoveBall(void)
{  WINDOWS  mywindows;

   uint8  x0, y0;
   uint8  x0_bak, y0_bak;
   int8   x0_ver, y0_ver;
   
   uint8  x1, y1;
   uint8  x1_bak, y1_bak;
   int8   x1_ver, y1_ver;
   
   uint8  x2, y2;
   uint8  x2_bak, y2_bak;
   int8   x2_ver, y2_ver;
   
   
   // 显示窗口
   mywindows.x = 0;				// 窗口位置 x
   mywindows.y = 0;				// 窗口位置 y
   mywindows.with = 240;		// 窗口宽度		
   mywindows.hight = 128;		// 窗口高度
   mywindows.title = (uint8 *) "Hello World!   -- HSB ";	// 窗口标题
   mywindows.state = (uint8 *) "Use the GUI for windows.";	// 窗口状态栏显示字符
   GUI_WindowsDraw(&mywindows);	// 显示窗口mywindows
  
   // 初始化3个球的起始位置及运动方向
   x0 = x0_bak= 125;
   y0 = y0_bak = 45;
   x0_ver = 1;
   y0_ver = 1;
   
   x1 = x1_bak = 35;
   y1 = y1_bak = 60;
   x1_ver = -1;
   y1_ver = 1;
   
   x2 = x2_bak = 200;
   y2 = y2_bak = 80;
   x2_ver = 1;
   y2_ver = -1;
   
   while(1)
   {  GUI_Circle(x0, y0, 20, 1);						// 绘画新的圆
      GUI_Circle(x0_bak, y0_bak, 20, 0);				// 擦除原位置上的圆
      x0_bak = x0;										// 保存当前圆的圆心坐标,以便擦除 
      y0_bak = y0;
      
      GUI_Circle(x1, y1, 20, 1);						// 绘画新的圆
      GUI_Circle(x1_bak, y1_bak, 20, 0);				// 擦除原位置上的圆
      x1_bak = x1;										// 保存当前圆的圆心坐标,以便擦除 
      y1_bak = y1;
      
      GUI_Circle(x2, y2, 20, 1);						// 绘画新的圆
      GUI_Circle(x2_bak, y2_bak, 20, 0);				// 擦除原位置上的圆
      x2_bak = x2;										// 保存当前圆的圆心坐标,以便擦除 
      y2_bak = y2;
      
      DelayNS(1);					// 延时
      
      x0 += x0_ver*2;				// 圆运动计算
      y0 += y0_ver*2;
      if(x0<=22)					// 移到了最左边吗?若是,则向右运动(x_ver=1)
      {  x0_ver = 1;
      }
      if(x0>=217)					// 移到了最右边吗?若是,则向左运动(x_ver=-1)
      { x0_ver = -1;
      }
      if(y0<=34)					// 移到了最下边吗?若是,则向上运动(y_ver=1)
      {  y0_ver = 1;
      }
      if(y0>=95)					// 移到了最上边吗?若是,则向下动动(y_ver=-1)
      {  y0_ver = -1;
      }
      
      x1 += x1_ver*2;				// 圆运动计算
      y1 += y1_ver*2;
      if(x1<=22)					// 移到了最左边吗?若是,则向右运动(x_ver=1)
      {  x1_ver = 1;
      }
      if(x1>=217)					// 移到了最右边吗?若是,则向左运动(x_ver=-1)
      { x1_ver = -1;
      }
      if(y1<=34)					// 移到了最下边吗?若是,则向上运动(y_ver=1)
      {  y1_ver = 1;
      }
      if(y1>=95)					// 移到了最上边吗?若是,则向下动动(y_ver=-1)
      {  y1_ver = -1;
      }
      
      x2 += x2_ver*2;				// 圆运动计算
      y2 += y2_ver*2;
      if(x2<=22)					// 移到了最左边吗?若是,则向右运动(x_ver=1)
      {  x2_ver = 1;
      }
      if(x2>=217)					// 移到了最右边吗?若是,则向左运动(x_ver=-1)
      { x2_ver = -1;
      }
      if(y2<=34)					// 移到了最下边吗?若是,则向上运动(y_ver=1)
      {  y2_ver = 1;
      }
      if(y2>=95)					// 移到了最上边吗?若是,则向下动动(y_ver=-1)
      {  y2_ver = -1;
      }
   }
   	
}
 
                      
/***********************************************************************
* 名称:main()
* 功能:主程序,用于GUI测试及演示。
***********************************************************************/
int  main(void)
{  PINSEL1 = 0x00000000;			
   IO1DIR = LCM_LEDCON;
   IO1SET = LCM_LEDCON;
      
   GUI_Initialize();				// 初始化LCM 
   GUI_SetColor(1, 0);				// 设置前景色及背景色
   MoveBall();
  
   return(0);
}

⌨️ 快捷键说明

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