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

📄 gal.#1

📁 该程序是基于c8051f的红外线发射率的测量程序
💻 #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 + -