📄 lcddrive.c
字号:
/****************************************************************************
* 名称:GUI_ClearSCR()
* 功能:清屏。
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
****************************************************************************/
void GUI_ClearSCR(void)
{
TFT_FillSCR(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);
/* 刷新显示 */
TftSetWrite(x, y);
TftSendDat(color);
return(1);
}
/****************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定位置点的颜色数据。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* 出口参数:返回值即是读出值(RRRRRGGGGGGBBBBB)。
****************************************************************************/
uint8 GUI_ReadPoint(uint16 x, uint16 y, TCOLOR *ret)
{
uint16 dat;
uint16 bak;
/* 参数过滤 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 读取数据 */
TftSetAddr(x, y); // 设置地址
TftSendCom(WR_RD_DATA);
bak = TftRcvDat();
bak = TftRcvDat();
dat = (bak>>11); // B色
dat |= (bak<<11); // R色
dat |= (bak&0x07E0); // G色
*ret = dat;
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)
{ TftSendDat(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++;
}
}
void Line(unsigned int x1,unsigned char y1,unsigned int x2,unsigned char y2,uint8 color)
//画线,起点:(x1,y1);终点:(x2-1,y2-1)
{
register unsigned int x;
register unsigned char y;
register int Delta,DeltaX,DeltaY;
Delta = 0;
DeltaX = x2 - x1;
DeltaY = y2 - y1;
x = x1;
y = y1;
if(y1 < y2)
{
if(DeltaX >= 0)
{
if(DeltaY <= DeltaX)
{
do
{
GUI_Point(x, y, color);
DelaymS(DLAYTIME);
if(Delta > 0)
{
x++;
y++;
Delta += DeltaY - DeltaX;
}
else
{
x++;
Delta += DeltaY;
}
}while(x <= x2);
}
else
{
do
{
GUI_Point(x, y,color);
DelaymS(DLAYTIME);
if(Delta < 0)
{
x++;
y++;
Delta += DeltaY-DeltaX;
}
else
{
y++;
Delta -= DeltaX;
}
}while(y<y2);
}
}
else
{
DeltaX =- DeltaX;
if(DeltaY <= DeltaX)
{
do
{
GUI_Point(x, y,color);
DelaymS(DLAYTIME);
if(Delta <= 0)
{
x--;
Delta += DeltaY;
}
else
{
x--;
y++;
Delta += DeltaY - DeltaX;
}
}while(x > x2);
}
else
{
do
{
GUI_Point(x, y, color);
DelaymS(DLAYTIME);
if(Delta < 0)
{
x--;
y++;
Delta += DeltaY - DeltaX;
}
else
{
y++;
Delta -= DeltaX;
}
}while(y <= y2);
}
}
}
else
{
DeltaY = -DeltaY;
if(DeltaX >= 0)
{
if(DeltaY <= DeltaX)
{
do
{
GUI_Point(x, y, color);
DelaymS(DLAYTIME);
if(Delta > 0)
{
x++;
y--;
Delta += DeltaY - DeltaX;
}
else
{
x++;
Delta += DeltaY;
}
}while(x <= x2);
}
else
{
do
{
GUI_Point(x, y,color);
DelaymS(DLAYTIME);
if(Delta < 0)
{
x++;
y--;
Delta += DeltaY-DeltaX;
}
else
{
y--;
Delta -= DeltaX;
}
}while(y > y2);
}
}
else
{
DeltaX =- DeltaX;
if(DeltaY <= DeltaX)
{
do
{
GUI_Point(x, y,color);
DelaymS(DLAYTIME);
if(Delta <= 0)
{
x--;
Delta += DeltaY;
}
else
{
x--;
y--;
Delta += DeltaY - DeltaX;
}
}while(x > x2);
}
else
{
do
{
GUI_Point(x, y, color);
DelaymS(DLAYTIME);
if(Delta < 0)
{
x--;
y--;
Delta += DeltaY - DeltaX;
}
else
{
y--;
Delta -= DeltaX;
}
}while(y >= y2);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -