📄 gal.#1
字号:
//***************************************************************************************************************************************************
//文件名:GAL.c
//作用:图形接口
//****************************************************************************************************************************************************
#include "Typedef.h"
#include "system.h"
unsigned char test[4];
//***********************************************************************************************************************************************
//测字符串的长度
//***********************************************************************************************************************************************
unsigned int strlen(char* str)
{
unsigned int i=0;
while(str[i]!='\0')
{
i++;
}
return i;
}
//===========================================================================================================================
//置前景色
//===========================================================================================================================
void set_fore_color(unsigned char fore_color)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x42);
send_lcd_byte(fore_color);
}
//=======================================================================================================
//显示汉字或英文
//=======================================================================================================
void languge_mode(unsigned char lan_flag,unsigned char cover_flag)
{
//置西文模式
send_lcd_byte(0x1b);
if(lan_flag==English)
send_lcd_byte(0x24);
else
send_lcd_byte(0x23); //中文显示
//覆盖方式显示
send_lcd_byte(0x1b);
send_lcd_byte(0x58);
if(cover_flag==yes)
send_lcd_byte(0x01);
else
send_lcd_byte(0x00);
}
//****************************************************************************************************************************************************
//作用:在指定像素处输入字符串
//参素:像素x坐标,像素y坐标,要显示字符串指针
//****************************************************************************************************************************************************
void set_window_text(unsigned int x,unsigned int y,unsigned char language_mode,unsigned char cover_flag, char* str)
{
unsigned i,str_len;
//设置插入点
send_lcd_byte(0x1b);
send_lcd_byte(0x48);
send_lcd_byte((unsigned char)x);
send_lcd_byte(x>>8);
send_lcd_byte((unsigned char)y);
send_lcd_byte(y>>8);
languge_mode(language_mode,cover_flag);
//显示字符串
str_len=strlen(str);
for(i=0;i<str_len;i++)
{
send_lcd_byte(str[i]);
}
}
//======================================================================================================
//显示单个英文字符字符
//======================================================================================================
void set_window_char(unsigned char Char)
{
send_lcd_byte(Char);
}
//=======================================================================================================
//显示一串字符
//=======================================================================================================
void set_window_str(unsigned char* str)
{
unsigned i,str_len;
str_len=strlen(str);
for(i=0;i<str_len;i++)
{
send_lcd_byte(str[i]);
}
}
//===================================================================================================================================
//指定光标到特定像素处
//=====================================================================================================================================
void set_caract_pos(unsigned int x,unsigned int y)
{
//光标定位到像素(x,y)处
send_lcd_byte(0x1b);
send_lcd_byte(0x48);
send_lcd_byte((unsigned char)x);
send_lcd_byte(x>>8);
send_lcd_byte((unsigned char)y);
send_lcd_byte(y>>8);
}
//===============================================================================================================================================
//指定光标的前景色和背景色
//===============================================================================================================================================
void set_caract_color(unsigned char back_color,unsigned char fore_color)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x38);
send_lcd_byte(fore_color);
send_lcd_byte(back_color);
}
//=======================================================================================================
//显示和隐藏光标
//======================================================================================================
void show_caract(unsigned char show)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x57);
if(show==yes)
send_lcd_byte(1);
else
send_lcd_byte(0);
}
//=======================================================================================================
//初始化光标,注意:以下设置光标的三种顺序不能打乱
//=======================================================================================================
void init_caract(unsigned int x,unsigned int y,unsigned char back_color,unsigned char fore_color,unsigned char show)
{
//设置光标的前景色和背景色
set_caract_color(back_color,fore_color);
//是否显示光标
show_caract(show);
//光标定位到像素(x,y)处
set_caract_pos(x,y);
}
//=======================================================================================================
//画实心矩阵,(x1,y1),(x2,y2)分别对应矩形左上角和右下角坐标,颜色默认为黑色
//=======================================================================================================
void draw_full_rect(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned char color)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x41);
send_lcd_byte(color); //默认颜色为黑色
send_lcd_byte((unsigned char)x1);
send_lcd_byte(x1>>8);
send_lcd_byte((unsigned char)y1);
send_lcd_byte(y1>>8);
send_lcd_byte((unsigned char)x2);
send_lcd_byte(x2>>8);
send_lcd_byte((unsigned char)y2);
send_lcd_byte(y2>>8);
}
//================================================================================================================
//覆盖静态框
//=================================================================================================================
void cover_static(Cstatic* sta)
{
draw_full_rect(sta->x1,sta->y1,sta->x2,sta->y2,0x4f);
}
//=======================================================================================
//在闭合曲线里填充颜色
//==========================================================================================
fill_color(unsigned int x1,unsigned int y1,unsigned char border_color)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x2a);
//坐标
send_lcd_byte((unsigned char)x1);
send_lcd_byte(x1>>8);
send_lcd_byte((unsigned char)y1);
send_lcd_byte(y1>>8);
//填充yanse
send_lcd_byte(0x01); //暂定填充颜色为白色
send_lcd_byte(border_color); //边界颜色
}
//***************************************************************************************************************************************************
//作用:button按下时,呈灰色显示
//参数:button范围内任一像素的坐标值x,y,
//****************************************************************************************************************************************************
void button_down(Cbutton* butt)
{
//draw_full_rect(butt->x1,butt->y1,butt->x2,butt->y2,0x01);
//命令
send_lcd_byte(0x1b);
send_lcd_byte(0x2a);
//坐标
send_lcd_byte((unsigned char)(butt->x1));
send_lcd_byte((butt->x1)>>8);
send_lcd_byte((unsigned char)(butt->y1));
send_lcd_byte((butt->y1)>>8);
//填充yanse
send_lcd_byte(0x01); //暂定填充颜色为白色
send_lcd_byte(butt->border_color); //边界颜色
}
//**************************************************************************************************************************
//作用:按钮弹起来后颜色恢复
//参数:Cbutton结构体
//**************************************************************************************************************************
void button_up(Cbutton* butt)
{
//draw_full_rect(butt->x1,butt->y1,butt->x2,butt->y2,butt->backcolor);
send_lcd_byte(0x1b);
send_lcd_byte(0x2a);
//坐标
send_lcd_byte((unsigned char)(butt->x1));
send_lcd_byte((butt->x1)>>8);
send_lcd_byte((unsigned char)(butt->y1));
send_lcd_byte((butt->y1)>>8);
//填充yanse
send_lcd_byte(butt->backcolor); //恢复为原来背景颜色
send_lcd_byte(butt->border_color); //边界颜色
}
//============================================================================================================
//刷新曲线框
//===========================================================================================================
void updata_curve_zone(unsigned char number)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x2a);
if(number==0)
{
send_lcd_byte(54);
send_lcd_byte(0);
send_lcd_byte(41);
send_lcd_byte(0);
}
else if(number==1)
{
send_lcd_byte(55);
send_lcd_byte(0);
send_lcd_byte(252);
send_lcd_byte(0);
}
send_lcd_byte(0x00); //恢复为原来背景颜色
send_lcd_byte(0x7d); //边界颜色
}
/*//**************************************************************************************************************************
//作用:在指定编辑框显示字符串
//参数:Cedit结构体
//**************************************************************************************************************************
void set_edit_window(Cedit* edit)
{
set_window_text(edit->x,edit->y,English,yes,edit->text);
}*/
//***************************************************************************************************************************************
//作用:在指定状态栏显示
//*****************************************************************************************************************************************
void set_statusbar_window(Cstatusbar* status)
{
draw_full_rect(status->x1,status->y1,status->x2,status->y2,0x4f);
set_window_text(status->x1,status->y1,Chinese,no,status->text);
}
//***************************************************************************************************************************************
//作用:在指定编辑框显示
//*****************************************************************************************************************************************
void set_edit_window(Cedit* edit)
{
draw_full_rect(edit->x1,edit->y1,edit->x2,edit->y2,0xff);
set_window_text(edit->x1,edit->y1,English,no,edit->text);
}
//***************************************************************************************************************************
//画曲线,用直线拟合
//**************************************************************************************************************************
void draw_curve(Ccurve* curve)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x46);
send_lcd_byte(curve->color);
send_lcd_byte((unsigned char)curve->x0);
send_lcd_byte(curve->x0>>8);
send_lcd_byte((unsigned char)curve->y0);
send_lcd_byte(curve->y0>>8);
send_lcd_byte((unsigned char)curve->x1);
send_lcd_byte(curve->x1>>8);
send_lcd_byte((unsigned char)curve->y1);
send_lcd_byte(curve->y1>>8);
curve->x0=curve->x1; //当前点作为上一点,为画下一点准备
curve->y0=curve->y1;
}
//**************************************************************************************************************************
//重绘曲线
//*************************************************************************************************************************
void redraw_curve()
{
}
//===================================================================================================================
//用指定的颜色清屏
//================================================================================================================
void clrscr(unsigned char color)
{
send_lcd_byte(0x1b);
send_lcd_byte(0x42);
send_lcd_byte(color);
}
//=======================================================================================================
//显示窗体
//=======================================================================================================
void show_form(Cform* form)
{
//关闭光标
show_caract(no);
//置叠加方式
languge_mode(English,no);
//送起始地址
send_lcd_byte(0x1b);
send_lcd_byte(0x50);
send_lcd_byte(form->start_addr);
//以0xff结束
send_lcd_byte(0x1b);
send_lcd_byte(0x50);
send_lcd_byte(0xff);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -