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

📄 mcu_test.c

📁 c /c++的智能VGA控制资料。值得大家一看!!
💻 C
📖 第 1 页 / 共 2 页
字号:
} 
/****************************************************************************
* 名称:MCU_Draw_CircleFill()
* 功能:指定圆心位置及半径,画圆并填充,填充色与边框色一样。
* 入口参数:x0		圆心的x坐标值
*           y0		圆心的y坐标值
*           xr      圆的X轴半径
*           yr      圆的Y轴半径
****************************************************************************/
void  MCU_Draw_CircleFill(uint16 x0, uint16 y0, uint16 xr,uint16 yr)
{
	write_byte(0x81);  //指令开始 
	write_byte(0x34);  //指令代码(画填充圆) 
	write_byte(Fcolor.B);  //前景色3个字节
	write_byte(Fcolor.G);  //绿
	write_byte(Fcolor.R);  //红
	write_byte(x0/100);  //圆心位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1) 
	write_byte(x0%100);  // 
	write_byte(y0/100);  //圆心位置y轴坐标
	write_byte(y0%100);  //
	write_byte(xr/100);   //圆的X轴半径(取整运算-r为两字节变量,高低两字节100进1) 
	write_byte(xr%100);   // 
	write_byte(yr/100);   //圆的Y轴半径
	write_byte(yr%100);   //
	write_byte(0x84);    //指令结束 
} 

/*
******************************************************************
*
* 名称:    MCU_Draw_ClearScreen()
* 功能:    用指定的颜色清屏。
* 入口参数:清屏颜色
******************************************************************
*/
void  MCU_Draw_ClearScreen()
{
	write_byte(0x81);  //指令开始 
	write_byte(0x35);  //指令代码(画圆) 
	write_byte(Fcolor.B);  //前景色3个字节
	write_byte(Fcolor.G);  //绿
	write_byte(Fcolor.R);  //红
	write_byte(0x84);    //指令结束 
} 
/*
******************************************************************
*
* 名称:    MCU_Draw_Wave()
* 功能:    用指定的颜色画波形或曲线。显示波形的原理是:
			x轴从坐标原点开始自动加一,y轴(幅度)是*p_data
* 入口参数:x0		坐标原点位置x轴坐标
*           y0		坐标原点位置y轴坐标
*           con=1 y轴(幅度)的大小用一个字节表示。con = 2:y轴(幅度)的大小用二个字节表示
******************************************************************
*/
void  MCU_Draw_Wave(uint16 x0,uint16 y0,uint8 con,uint16 *p_data)
{
	write_byte(0x81);  //指令开始 
	write_byte(0x36);  //指令代码(画圆) 
	write_byte(Fcolor.B);  //前景色3个字节
	write_byte(Fcolor.G);  //绿
	write_byte(Fcolor.R);  //红
	write_byte(x0/100);  //坐标原点位置x轴坐标(取整运算-x0为两字节变量,高低两字节100进1) 
	write_byte(x0%100);  // 
	write_byte(y0/100);  //坐标原点位置y轴坐标
	write_byte(y0%100);  //
    write_byte(con);
	switch(con)
    {case 1:
   		   do
   		   {
            write_byte(*p_data%100); //因为*p_data定义为short类型指针,所以这里要先取模运算再发送
			p_data++;
   	  	   }
   		   while(*p_data !=0x84);
	       break;

	 case 2:
		    do
			{
			 write_byte(*p_data/100);
			 write_byte(*p_data%100);
			 p_data++;
			}
			while(*p_data !=0xffff);   //这里不能定义为0x84,因为p_data[x]有可能是0x84
		    break;

	 default: break;
	 }
 	write_byte(0x84);    //指令结束 
}
uint16 mouse_x,mouse_y;
uint8  mouse_buf[5];
uint8  cnt=0;
void Wait_MouseKeyDown(void)
{
   uint8 ch;
   while(1)
  {	if(RI==0)	continue;
    ch=SBUF;
	RI=0;
    if((cnt==0) && ((ch==0xf3)||(ch==0xf4)))   {cnt++;}
    else if((cnt==1)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
	else if((cnt==2)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
	else if((cnt==3)&& (ch<100)) {mouse_buf[cnt]=ch;cnt++;}
    else if((cnt==4)&& (ch<100)) 
	{
		  
		  mouse_buf[cnt]=ch;
		  cnt=0;
		  mouse_x=mouse_buf[1]*100+mouse_buf[2];
		  mouse_y=mouse_buf[3]*100+mouse_buf[4];
		  break;
	}
	else {cnt=0;}
  }
}
/*
******************************************************************
*
* 名称:    MCU_Draw_ClearScreen()
* 功能:    用指定的颜色清屏。
* 入口参数:清屏颜色
******************************************************************
*/
void  MCU_Mouse(uint8 en)
{
	write_byte(0x81);  //指令开始 
	if(en) write_byte(0x40);  //指令代码
	else   write_byte(0x41);  //指令代码
	write_byte(0x84);    //指令结束 
} 
/*
*/
 
/********************************************
定义数据常量,这些数据在实际应用中一般由A/D转换器采样所得到。
这里的每一个字节代表一个Y轴坐标的大小即幅度。
**********************************************/

unsigned short code y_data1[110] = {
  0x0b,0x0b,0x0b,0x0b,0x0b,
  0x0b,0x0b,0x0b,0x0b,0x0b,
  0x0b,0x0b,0x0b,0x0b,0x0b,
  0x1c,0x1c,0x1c,0x1c,0x1c,
  0x1c,0x1c,0x1c,0x1c,0x1c,
  0x1c,0x1c,0x1c,0x1c,0x1c,
  0x1c,0x1c,0x1c,0x1c,0x1c,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x50,0x50,0x50,0x50,0x50,
  0x50,0x50,0x50,0x50,0x50,
  0x50,0x50,0x50,0x50,0x50,
  0x50,0x50,0x50,0x50,0x50,
  0x50,0x50,0x50,0x50,0x50,
  0x48,0x46,0x44,0x42,0x40,
  0x3e,0x3c,0x3a,0x38,0x36,
  0x34,0x32,0x30,0x2e,0x2c,
  0x2a,0x28,0x26,0x24,0x22,
  0x20,0x1e,0x1c,0x1a,0x18,
  0x16,0x14,0x12,0x10,0x84
  };
  
unsigned short code y_data2[110] = {
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x015e,0x015e,0x015e,0x015e,0x015e,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,
  0x0084,0x0084,0x0084,0x0084,0x0084,
  0x0084,0x0084,0x0084,0x0084,0x0084,
  0x0084,0x0084,0x0084,0x0084,0x0084,
  0x0084,0x0084,0x0084,0x0084,0x0084,
  0x0084,0x0084,0x0084,0x0084,0x0084,
  0x48,0x46,0x44,0x42,0x40,
  0x3e,0x3c,0x3a,0x38,0x36,
  0x34,0x32,0x30,0x2e,0x2c,
  0x2a,0x28,0x26,0x24,0x22,
  0x20,0x1e,0x1c,0x1a,0x18,
  0x16,0x14,0x12,0x10,0xffff
  };	 
 //下面是图片的排序号。它是一个头文件,需将其加入到您的程序中。
#define        background            0
#define        BiaoTi_0              1
#define        BiaoTi_1              2
#define        product               3
#define        wave                  4
void main(void)     
{ 
    uint16 delay;

	for(delay=0;delay<65530;delay++);//延迟一点时间,等待智能VGA控制板初始化完毕	

    InitUART();
	
	
	Fcolor.B=191;      Fcolor.G=188;       Fcolor.R=192;
	MCU_Draw_ClearScreen();
    MCU_Draw_Pic(0,0,background);
	MCU_Draw_Pic_Auto(0,0,BiaoTi_0,BiaoTi_1,25);
	

	MCU_Mouse(1);		 //打开鼠标功能	
  
	
  while(1)
  {
    Wait_MouseKeyDown();  //等待鼠标或触摸屏按下并获取按下时的坐标

	if((mouse_x>0)&&(mouse_x<156))
	{
	   if((mouse_y>208)&&(mouse_y<288))
	   {
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
 	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0xff;
          MCU_Draw_LineWith(208,308,558,488,1);         //画线
          MCU_Draw_LineWith(558,308,208,488,1);     	//画线	
	   }
 
	   if((mouse_y>288)&&(mouse_y<368))
	   {
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
 		  Fcolor.B=0;      Fcolor.G=0xff;       Fcolor.R=0;
          MCU_Draw_Rectangle(650,300,100,180);      	//矩形
          MCU_Draw_RectangleFill(850,300,100,180);  	//填充矩形  
	   }

	   if((mouse_y>368)&&(mouse_y<448))
	   {
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
 		  Fcolor.B=0;      Fcolor.G=0xff;       Fcolor.R=0;
          MCU_Draw_CircleFill(270,648,88,88);         //填充正圆
          MCU_Draw_Circle(460,648,88);              	//正圆
	   }

	   if((mouse_y>448)&&(mouse_y<528))
	   {
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
  	      Fcolor.B=0xff;      Fcolor.G=0xff;       Fcolor.R=0;
          MCU_Draw_CircleFill(698,648,60,100);     	//填充椭圆
          MCU_Draw_CircleFill(915,648,60,100);     	//填充椭圆 
	   }

	   if((mouse_y>528)&&(mouse_y<608))
	   {  
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
  	      Fcolor.B=0xff;      Fcolor.G=0xff;       Fcolor.R=0;
          MCU_Draw_Wave(200,80,1,y_data1);			//波形1
          MCU_Draw_Wave(700,80,2,y_data2);  		//波形2
	   }

 	   if((mouse_y>608)&&(mouse_y<688))
	   {
	      
		  Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;
          MCU_Draw_RectangleFill(156,208,868,560);
		  Bcolor=Fcolor;
  	      Fcolor.B=0xff;      Fcolor.G=0xff;       Fcolor.R=0xff;
		  
          MCU_Draw_String(208,250,0,"欢迎使用EasyVGA(12点阵)");
          MCU_Draw_String(208,273,1,"欢迎使用EasyVGA(16点阵)");
		  MCU_Draw_String(208,338,2,"欢迎使用EasyVGA(24点阵)"); 
          MCU_Draw_String(208,403,3,"欢迎使用EasyVGA(32点阵)");
          MCU_Draw_String(208,468,4,"欢迎使用EasyVGA(40点阵)");
		  MCU_Draw_String(208,550,5,"欢迎使用EasyVGA(48点阵)"); 
		  MCU_Draw_String(208,630,6,"欢迎使用EasyVGA(64点阵)"); 		  

	   }
  
 	   if((mouse_y>688)&&(mouse_y<767))
	   {
	      Fcolor.B=0x0;      Fcolor.G=0x0;       Fcolor.R=0x0;          
	      MCU_Draw_Pic(156,208,product);
		  //MCU_Draw_Pic_Step(698,518,wheel_0,wheel_1,25);
	   }
	}
  }
 
    while(1);
}

⌨️ 快捷键说明

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