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

📄 mcu_test.c

📁 c /c++的智能VGA控制资料。值得大家一看!!
💻 C
字号:
//下面是图片的排序号。它是一个头文件,需将其加入到您的程序中。
#define        hehua              0
#define        pic_0              1
#define        pic_1              2
#define        pic_2              3
#define        wheel_0              4
#define        wheel_1              5
#include<Atmel/AT89x52.H>
//定义颜色数据类型(可以是数据结构) 
typedef struct _tcolor
{
   unsigned char R;
   unsigned char G;
   unsigned char B;
} TCOLOR;
#define uint16 unsigned short
#define uint8  unsigned char
TCOLOR Fcolor,  Bcolor;
//*************************************************************
void InitUART(void)  //串口初始化函数,使用11.0592M晶体
{
  	SCON = SCON|0x50; 		//选择模式1,8位数据格式,使能UART 
   	PCON |= 0x80;		    //波特率加倍
   	TMOD =TMOD| 0x20; 		//定时器1:模式2
    //TH1=256-(2f/32*12*19200)
   	TH1 = 0xfd; 		    //定时器1自动装载初值,时钟频率11.0592MHz,fd(19200bps)
   	TL1 = 0xfd;
	TR1 = 1; 			    //定时器1计数使能 
	REN = 1;                //允许串口接受使能
}
/*
******************************************************************
*
* 名称:    write_byte()
* 功能:    向串口发送一个字节的数据
* 入口参数:i为待发送的字节数据
******************************************************************
*/

void write_byte(uint8 i)
{
	SBUF=i;
	while(TI==0){}
    TI=0;
}
/****************************************************************************
* 名称:MCU_Draw_Pic()
* 功能:显示一幅图片
*     
* 入口参数:x		起点的x坐标值
*           y		起点的y坐标值
*           num	    图片编号
****************************************************************************/
void  MCU_Draw_Pic(uint16 x,uint16 y,uint16 num)
{
	write_byte(0x81);  //指令开始 
    write_byte(0x20);
	write_byte(x/100);  //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1) 
	write_byte(x%100); //起点位置x轴坐标(取模运算) 
	write_byte(y/100);  //起点位置y轴坐标
	write_byte(y%100); //起点位置y轴坐标
	write_byte(num/100);  //图片编号
	write_byte(num%100); //
	write_byte(0x84);   //指令结束 

}
/****************************************************************************
* 名称:MCU_Save_Window()
* 功能:
*     
* 入口参数:
*           
*           num	    后台窗口编号编号
****************************************************************************/
void  MCU_Save_Window(uint8 num)
{
    if(num>3) return;
	write_byte(0x81);  //指令开始 
    write_byte(0x50);
	write_byte(num);  
	write_byte(0x84);   //指令结束 

}
/****************************************************************************
* 名称:MCU_ReSave_Window()
* 功能:
*     
* 入口参数:
*           
*           num	    后台窗口编号编号
****************************************************************************/
void  MCU_ReSave_Window(uint8 num)
{
    if(num>3) return;
	write_byte(0x81);  //指令开始 
    write_byte(0x51);
	write_byte(num);  
	write_byte(0x84);   //指令结束 
}
/****************************************************************************
* 名称:MCU_Change_WriteWindow()
* 功能:
*     
* 入口参数:
*           
*           num	    后台窗口编号编号
****************************************************************************/
void  MCU_Change_WriteWindow(uint8 num)
{
    if(num>3) return;
	write_byte(0x81);  //指令开始 
    write_byte(0x52);
	write_byte(num);  
	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_Mouse()
* 功能:    
* 入口参数:
******************************************************************
*/
void  MCU_Mouse(uint8 en)
{
	write_byte(0x81);  //指令开始 
	if(en) write_byte(0x40);  //指令代码
	else   write_byte(0x41);  //指令代码
	write_byte(0x84);    //指令结束 
} 
void main(void)     
{ 
    uint16 delay;
	uint8 i=2;
	for(delay=0;delay<65530;delay++);//延迟一点时间,等待智能VGA控制板初始化完毕	
    InitUART();
    MCU_Draw_Pic(0,0,0);
	MCU_Save_Window(1);
	MCU_Change_WriteWindow(2);
	MCU_Draw_Pic(0,0,1);
	MCU_Change_WriteWindow(3);
	MCU_Draw_Pic(0,0,2);
	MCU_Change_WriteWindow(0);
	MCU_Mouse(1);		 //打开鼠标功能	

  while(1)
  {
    Wait_MouseKeyDown();  //等待鼠标或触摸屏按下并获取按下时的坐标
	MCU_ReSave_Window(i);
	i++;
	if(i>3) i=1;
   }
    while(1);
}

⌨️ 快捷键说明

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