📄 lcddrive.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: LCDDRIVE.C
** Last modified Date: 2008-05-15
** Last Version: 1.0
** Descriptions: ZLGGUI的底层驱动
**
**--------------------------------------------------------------------------------------------------------
** Created by: Houxiaolong
** Created date: 2008-05-15
** Version: 1.0
** Descriptions: ZLGGUI的底层驱动
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
*********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
* 名称:GUI_Initialize()
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void GUI_Initialize(void)
{
lcd_Init();
lcd_Clear(GUI_CCOLOR);
}
/*********************************************************************************************************
* 名称:GUI_FillSCR()
* 功能:全屏填充。直接使用数据填充显示缓冲区
* 入口参数:dat 填充的数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void GUI_FillSCR(TCOLOR dat)
{ lcd_Clear(dat);
}
/*********************************************************************************************************
* 名称:GUI_ClearSCR()
* 功能:清屏
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void GUI_ClearSCR(void)
{
lcd_Clear(GUI_CCOLOR);
}
/*********************************************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* color 显示颜色
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
*********************************************************************************************************/
uint8 GUI_Point(uint16 x, uint16 y, TCOLOR color)
{
/* 参数过滤 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 刷新显示 */
lcd_SetPixel(x, y, color);
return(1);
}
/*********************************************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定位置点的颜色数据
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* 出口参数:返回值即是读出值(RRRRRGGGGGGBBBBB)。
*********************************************************************************************************/
uint8 GUI_ReadPoint(uint16 x, uint16 y, TCOLOR *ret)
{
uint16 bak;
/* 参数过滤 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 读取数据 */
bak = lcd_ReadPixel(x, y);
*ret = bak;
return(1);
}
/*********************************************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线
* 入口参数:x0 水平线起点所在列的位置
* y0 水平线起点所在行的位置
* x1 水平线终点所在列的位置
* color 显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void GUI_HLine(uint16 x0, uint16 y0, uint16 x1, TCOLOR color)
{
uint16 bak;
if(x0>x1) { /* 对x0、x1大小进行排列 */
bak = x1;
x1 = x0;
x0 = bak;
}
GUI_Point(x0, y0, color); /* 显示第一点 */
x0++;
while(x1>=x0) {
lcd_SetPixel(x0, y0, color); /* 不断填充并显示 */
x0++;
}
}
/*********************************************************************************************************
* 名称:GUI_RLine()
* 功能:画垂直线
* 入口参数:x0 垂直线起点所在列的位置
* y0 垂直线起点所在行的位置
* y1 垂直线终点所在行的位置
* color 显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void GUI_RLine(uint16 x0, uint16 y0, uint16 y1, TCOLOR color)
{
uint16 bak;
if(y0>y1) { /* 对y0、y1大小进行排列 */
bak = y1;
y1 = y0;
y0 = bak;
}
while(y1>=y0) {
GUI_Point(x0, y0, color); /* 逐点显示,描出垂直线 */
y0++;
}
}
/*********************************************************************************************************
* 名称:GUI_DrawBmp()
* 功能:画位图
* 入口参数:x0 位图起点所在列的位置
* y0 位图起点所在行的位置
* iwidth 位图的行的宽度
* ilength 位图的列的宽度
* pucBmp 位图的指针
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void GUI_DrawBmp (uint16 ix0,
uint16 iy0,
uint16 iwidth,
uint16 ilength,
uint8 *pucBmp)
{
lcd_DrawBmp(ix0, iy0, iwidth, ilength, pucBmp);
}
#if (FONT_TRANS_EN == 1)
extern const uint8 FONT5x7ASCII[][8];
/*********************************************************************************************************
* 名称:GUI_ProgbarPutChar()
* 功能:显示ASCII码,显示值为20H-7FH(若为其它值,则显示' ')
* 入口参数:x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* dy 指定要读取像素点的Y轴坐标
* ch 要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。(显示格式为6*8)
*********************************************************************************************************/
uint8 GUI_ProgbarPutChar(uint32 x, uint32 y, uint32 dy, uint8 ch)
{
uint8 font_dat;
uint8 i, j;
TCOLOR bakc;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-8) ) return(0);
if( y>(GUI_LCM_YMAX-8) ) return(0);
if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
ch -= 0x20;
for(i=0; i<8; i++) {
/* 读取点阵数据 */
font_dat = FONT5x7ASCII[ch][i];
for(j=0; j<6; j++) {
back_color = lcd_ReadPixel(x, dy); /* add ,读取背景颜色 */
/* 设置相应的点为color或为back_color */
if((font_dat&DCB2HEX_TAB[j])==0 ) {
GUI_CopyColor(&bakc, back_color);
} else {
GUI_CopyColor(&bakc, disp_color);
}
GUI_Point(x, y, bakc);
x++;
}
y++; /* 指向下一行 */
x -= 6; /* 恢复x值 */
}
return(1);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -