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

📄 main.c

📁 一个用于LPC2119液晶,GUI测试及演示的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
     	key = WaitKey();
   		while(key||(key<11))
   		{  if(key==10)key=0;
   		   data[i] = key;
		   GUI_PutChar(mm,25,data[i]+0x30);
		   i++;
		   mm = mm + 8;
		   break;}
		if(i>3)
		{ i = 0;
		  goto ppp;}
   }   
ppp:   mm = 10;

	   GUI_PutString(100,25,data);

			for(i=0;i<14;i++)
			bb[i] = 0;
			value = data[0]*1000+data[1]*100+data[2]*10+data[3];
			while(value!=0)
				{
            		bb[t++] = (value % 2);
					value = value / 2;		
    			}
			t = 0;
			GUI_PutString(10, 40, "the bin number is :");	
			for(i=0;i<14;i++)
				{ 
			  		bobo[i] = bb[13-i]; 
			  		GUI_PutChar(mm, 55, bobo[i]+0x30);
					mm = mm + 8;
					IO0SET |= 1<<CLK;

					if(bobo[i]==1)
						{   IO2SET |= 1<<DATA;} 
					else
						{	IO2CLR |= 1<<DATA;}
					IO0CLR |= 1 << CLK;
			  		DelayNS(50);
				}
   //GUI_PutString(10, 70, "are you sure?");
   if(DispButton49x14()==1) return; // 提示确定信息
   //WaitAKey();
   	   for(i=0;i<4;i++)
	   data[i] = data[i]+0x30;
   GUI_LoadPic(0, 0, (uint8 *)ceshi, 240, 128);
   GUI_PutString(160, 10, data);
   WaitAKey();
   GUI_PutString(70, 30, "0000.0");
   GUI_PutString(70, 50, "0000.0");
   GUI_PutString(70, 70, "0000.0");
   GUI_PutString(70, 90, "0000.0");
   GUI_PutString(70, 110,"0000.0");
   GUI_PutString(180,30, "0000.0");
   GUI_PutString(180,50, "0000.0");
   GUI_PutString(180,70, "0000.0");
   GUI_PutString(180,90, "0000.0");
   GUI_PutString(180,110,"0000.0");
   WaitAKey();						// 等待一按键
   GUI_ClearSCR();
}


/****************************************************************************
* 名称:DemoArc()
* 功能:绘画圆弧及扇形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DemoArc(void)
{  
   GUI_ClearSCR();
    GUI_PutHZ(215, 32, (uint8 *)tan0, 16, 16);		//边上显示"贪吃蛇"
    GUI_PutHZ(215, 48, (uint8 *)chi0, 16, 16);
    GUI_PutHZ(215, 64, (uint8 *)she0, 16, 16);
    GUI_Rectangle(0,0,200,127,1);		//画边界框
    DrawBeanSnake(0,6);
    DrawBeanSnake(1,6);
   GamePlay();   
   WaitAKey();						// 等待一按键
   GUI_ClearSCR();
}

uint8 ADC[4], ADCC[4];
uint16  pp[960];
/****************************************************************************
* 名称:DemoEllipse()
* 功能:绘画随圆演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoEllipse(void)
{  WINDOWS  demow;
   uint8 y0=0,y1=0;
   uint8 x,y;
   uint16 h=0;
   uint8 key1,i=0,k,g;   
   /* 显示演示窗口 */
   demow.x = 0;
   demow.y = 0;
   demow.with = 240;
   demow.hight = 128;

   demow.title = (uint8 *) "Oscilloscope";
   demow.state = NULL;
   VICIntEnable = 0x020000;
   keypress = 0;
   //GUI_WindowsDraw(&demow);
   
   Adc_init();

   while(1)
   {   
   	while(1)
	{
		for(h=0;h<960;h++)
		{
      		ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24);	// 切换通道并进行第一次转换
      		while( (ADDR&0x80000000)==0 );			// 等待转换结束
      		ADCR = ADCR | (1 << 24);					// 再次启运转换
      		while( (ADDR&0x80000000)==0 );
      		ADC_Data = ADDR;							// 读取ADC结果
      		ADC_Data = (ADC_Data>>6) & 0x3FF;
      		ADC_Data = ADC_Data * 3300;
      		ADC_Data = ADC_Data / 1024;
	  		pp[h] = 120-(ADC_Data/33);
		}
		h = 0;
		break;
	}
		while(h<960)
		{
			h=h;
			for(i=0;i<240;i++)
			{
				y1 = pp[h];
				GUI_Point(i, pp[h++], 1);
			
				if(y1>y0)
				{
					if((y1-y0)>1)
					{
						for(g=y0;g<=y1;g++)
						{
							GUI_Point(i, g, 1);
						}
					}
				}
				else if(y1<y0)
				{
					if((y0-y1)>1)
					{
						for(g=y1;g<=y0;g++)
						{
							GUI_Point(i, g, 1);
						}
					}
				}
				y0=y1;
			
				for(k=0;k<128;k++)
				{
					GUI_Point(i+1, k, 0);
				}
			}
		}
	  /*
	  ADC[0]   = ADC_Data / 1000;
	  ADC_Data = ADC_Data % 1000;
	  ADC[1]   = ADC_Data / 100;
	  ADC_Data = ADC_Data % 100;
	  ADC[2]   = ADC_Data / 10;
	  ADC[3]   = ADC_Data % 10;  
      GUI_PutChar  (100,50,ADC[0]+'0');
	  GUI_PutChar  (106,50,ADC[1]+'0');
	  GUI_PutChar  (112,50,ADC[2]+'0');
	  GUI_PutChar  (118,50,ADC[3]+'0');*/
      /*   
      ADCR = (ADCR&0xFFFFFF00)|0x02|(1 << 24);	// 切换通道并进行第一次转换
      while( (ADDR&0x80000000)==0 );			// 等待转换结束
      ADCR = ADCR | (1 << 24);					// 再次启运转换
      while( (ADDR&0x80000000)==0 );
      ADC_Data = ADDR;							// 读取ADC结果
      ADC_Data = (ADC_Data>>6) & 0x3FF;
      ADC_Data = ADC_Data * 3300;
      ADC_Data = ADC_Data / 1024; 
	  ADC[0]   = ADC_Data / 1000;
	  ADC_Data = ADC_Data % 1000;
	  ADC[1]   = ADC_Data / 100;
	  ADC_Data = ADC_Data % 100;
	  ADC[2]   = ADC_Data / 10;
	  ADC[3]   = ADC_Data % 10;  
      GUI_PutChar  (100,70,ADC[0]+'0');
	  GUI_PutChar  (106,70,ADC[1]+'0');
	  GUI_PutChar  (112,70,ADC[2]+'0');
	  GUI_PutChar  (118,70,ADC[3]+'0');*/
      if(0!=keypress) break;
      //DelayNS(10);        
   }
   VICIntEnClr = 0x020000;
     
   WaitAKey();						// 等待一按键
   GUI_ClearSCR();
}




/****************************************************************************
* 名称:DemoRectang()
* 功能:绘画矩形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoRectang(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Rectang for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
     
   /* 画一个矩形及填充矩形 */
   GUI_Rectangle(50, 45, 90, 85, 1);
   GUI_Rectangle(75, 50, 100, 88, 1);
   GUI_RectangleFill(80, 60, 130, 80, 1);
   GUI_Rectangle(110, 50, 180, 90, 1);
   GUI_Rectangle(135, 40, 190, 70, 1);
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}


uint32  const mline[] = {120,40, 110,55, 90,60, 110,70, 120,90, 130,70, 150,60, 130,55, 120,40};
uint32  const poly5[] = {65,45, 50,60, 50,90, 80,90, 80,60, 65,45};
uint32  const poly4[] = {155,50, 190,50, 155,85, 190,85, 155,50};
/****************************************************************************
* 名称:DemoPoly()
* 功能:绘画多边形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoPoly(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Poly for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   GUI_LineS(poly5, 6, 1);
   GUI_LineS(mline, 9, 1);
   GUI_FloodFill(115, 55, 1);
   GUI_LineS(poly4, 5, 1);
   GUI_FloodFill(160, 52, 1);

   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}



/****************************************************************************
* 名称:DemoBmp()
* 功能:绘画bmp图及汉字显示演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoBmp(void)
{  GUI_ClearSCR();				
   GUI_LoadPic(0, 0, (uint8 *)windows, 168, 124);
   GUI_PutHZ  (210, 20, (uint8 *)hzchar1, 16, 16);
   GUI_PutHZ  (210, 50, (uint8 *)hzchar2, 16, 16);
   GUI_PutHZ  (210, 80, (uint8 *)hzchar3, 16, 16);

   WaitAKey();						// 等待一按键
}


 
/***********************************************************************
* 名称:DispButton49x14()
* 功能:显示一个提示框,当用户确定/取消时退出。
* 入口参数:无
* 出口参数:若是确定键,则返回0,否则返回1
***********************************************************************/
uint8  DispButton49x14(void)
{  uint8  select;
   uint8  key;
   
   WINDOWS  message;

   message.x = 45;
   message.y = 25;
   message.with = 150;
   message.hight = 80;
   message.title = (uint8 *) "Message for Demo";
   message.state = (uint8 *) 0;
   GUI_WindowsDraw(&message);
   GUI_PutString(60, 55, "Start the Demo.");
   
   select = 0;
   while(1)
   {  if(select==0)
      {  GUI_Button_OK1(60,80);
         GUI_Button_Cancle(130,80);
      }
      else
      {  GUI_Button_OK(60,80);
         GUI_Button_Cancle1(130,80);
      }
      
      key = WaitKey();
      if( (key==KEY_NEXT)||(key==KEY_BACK) ) select = 1- select;
      if(key==KEY_OK)
      {  GUI_WindowsHide(&message);
         return(select);
      }
   }

}





/***********************************************************************
* 名称:MoveCircle()
* 功能:将三个小球在屏幕上不断的滚动,实现动画操作。
* 入口参数:无
* 出口参数:无
***********************************************************************/
void  MoveCircle(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;
   
   if(DispButton49x14()==1) return; // 提示确定信息 
   /* 窗口演示 */
   mywindows.x = 0;
   mywindows.y = 0;
   mywindows.with = 240;
   mywindows.hight = 128;
   mywindows.title = (uint8 *) "Hello World!   -- HSB ";
   mywindows.state = (uint8 *) "Use the GUI for windows.";
   GUI_WindowsDraw(&mywindows);
  
   /* 使能外部中断3,用于退出函数 */ 
   VICIntEnable = 0x020000;		
   keypress = 0;	
   
   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(50);					// 延时
      
      x0 += x0_ver;					// 圆运动计算
      y0 += y0_ver;
      x0 += x0_ver;				
      y0 += y0_ver;
      
      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;

⌨️ 快捷键说明

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