📄 mcu_test.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 + -