📄 lcd701_functions.c
字号:
//======================================================
// 函数名称: LCD701_SetIcon
// 格式: void LCD701_SetIcon(unsigned IconCode)
// 实现功能: 显示指定的图标
// 参数: IconCode - 欲显示的图标,IconCode的bit0到bit13依次代表从
// 左到右每一个图标,要显示的图标所在位应置1
// 返回值: 无
//======================================================
/*const unsigned Icon_Map[]={
0x07,0x0D,0x0E,0x11,0x17,0x1F,0x2C,
0x3D,0x4C,0x58,0x6D,0x6F,0x72,0x75
};
void LCD701_SetIcon(unsigned IconCode)
{
unsigned TempMask = 0x0001, i = 0;
unsigned TempCode;
while(TempMask < 0x8000)
{
if(TempMask & IconCode)
{
TempCode = Icon_Map[i];
LCD701_Cmd(0x0DC0);
LCD701_Cmd(0x0E00|(TempCode&0x01FF));
if(i > 10)
LCD701_Cmd(0x0F10);
else
LCD701_Cmd(0x0F40);
}
i++;
TempMask <<= 1;
}
}
*/
//======================================================
// 函数名称: LCD701_ClrIcon
// 格式: void LCD701_ClrIcon(unsigned IconCode)
// 实现功能: 熄灭指定的图标
// 参数: IconCode - 欲熄灭的图标,IconCode的bit0到bit13依次代表从
// 左到右每一个图标,要熄灭的图标所在位应置1
// 返回值: 无
//======================================================
/*void LCD701_ClrIcon(unsigned IconCode)
{
unsigned TempMask = 0x0001, i = 0;
unsigned TempCode;
while(TempMask < 0x8000)
{
if(TempMask & IconCode)
{
TempCode = Icon_Map[i];
LCD701_Cmd(0x0DC0);
LCD701_Cmd(0x0E00|(TempCode&0x01FF));
LCD701_Cmd(0x0F00);
}
i++;
TempMask <<= 1;
}
}
*/
//======================================================
// 函数名称: LCD701_BlinkIcon
// 格式: void LCD701_BlinkIcon(unsigned IconCode)
// 实现功能: 使指定的图标闪烁
// 参数: IconCode - 欲闪烁的图标,IconCode的bit0到bit13依次代表从
// 左到右每一个图标,要闪烁的图标所在位应置1
// 返回值: 无
//======================================================
/*
void LCD701_BlinkIcon(unsigned IconCode)
{
unsigned TempMask = 0x0001, i = 0;
unsigned TempCode;
while(TempMask < 0x8000)
{
if(TempMask & IconCode)
{
TempCode = Icon_Map[i];
LCD701_Cmd(0x0DC0);
LCD701_Cmd(0x0E00|(TempCode&0x01FF));
LCD701_Cmd(0x0F80);
}
i++;
TempMask <<= 1;
}
}
*/
//======================================================
// 函数名称: LCD701_SetPaintMode
// 格式: void LCD701_SetPaintMode(unsigned ModeCode)
// 实现功能: 设置图形显示模式
// 参数: ModeCode - 图形显示模式,可以是下列数值之一:
// PAINT_COVER: 覆盖显示。图形所在位置的原有显示内容将被覆盖掉
// PAINT_SET: 叠加显示。图形所在位置中原有的黑色点将被保留
// PAINT_CLR: 擦除显示。图形反色显示,但图形所在位置中原有的白
// 色点将被保留
// PAINT_REV: 异或显示。图形中每一个点与原有的点做异或,即如果
// 图形中某点的颜色与其所在位置原有的颜色相同,则
// 该点显示白色,如果新颜色与原来颜色不同,则该点
// 显示黑色
// 返回值: 无
//======================================================
void LCD701_SetPaintMode(unsigned ModeCode)
{
if(ModeCode > 3)
ModeCode = PAINT_COVER;
CurPaintMode = ModeCode;
}
//======================================================
// 函数名称: LCD701_GetPaintMode
// 格式: unsigned LCD701_GetPaintMode(void)
// 实现功能: 获取当前的图形显示模式
// 参数: 无
// 返回值: 函数返回当前图形显示模式,可以是下列数值之一:
// PAINT_COVER: 覆盖显示。图形所在位置的原有显示内容将被覆盖掉
// PAINT_SET: 叠加显示。图形所在位置中原有的黑色点将被保留
// PAINT_CLR: 擦除显示。图形反色显示,但图形所在位置中原有的白
// 色点将被保留
// PAINT_REV: 异或显示。图形中每一个点与原有的点做异或,即如果
// 图形中某点的颜色与其所在位置原有的颜色相同,
// 则该点显示白色,如果新颜色与原来颜色不同,则
// 该点显示黑色
//======================================================
unsigned LCD701_GetPaintMode(void)
{
return CurPaintMode;
}
//======================================================
// 函数名称: LCD701_PutPixel
// 格式: void LCD701_PutPixel(unsigned x, unsigned y)
// 实现功能: 在指定位置显示一个点
// 参数: x - 欲显示点的横坐标,范围0到119
// y - 欲显示点的纵坐标,范围0到51
// (坐标原点在屏幕左上角)
// 返回值: 无
//======================================================
/*void LCD701_PutPixel(unsigned x, unsigned y)
{
unsigned TempBit, TempData;
if( x >= SCR_MAX_COL || y >= SCR_MAX_ROW)return;
TempBit = y & 0x07; // Bit to Operate
TempBit = 0x01 << TempBit; // Bit Mask
LCD701_Cmd(0x0D80|(y >> 3)); // Higher 3 bit Addr (=y/8)
LCD701_Cmd(0x0E00|x); // Lower 8 bit Addr (=x)
TempData = LCD701_Read();
switch(CurPaintMode)
{
case PAINT_CLR: // Paint a White Dot
TempData &= ~TempBit;
break;
case PAINT_REV: // Black-White Reversed Dot
TempData ^= TempBit;
break;
default: // Black Dot
TempData |= TempBit;
}
LCD701_Cmd(0x0F00|TempData);
}
*/
//======================================================
// 函数名称: LCD701_Line
// 格式: void LCD701_Line(unsigned x, unsigned y, unsigned e_x, unsigned e_y)
// 实现功能: 画一条直线
// 参数: x - 直线起点的横坐标,范围0到119
// y - 直线起点的纵坐标,范围0到51
// e_x - 直线终点的横坐标,范围0到119
// e_y - 直线终点的纵坐标,范围0到51
// (坐标原点在屏幕左上角)
// 返回值: 无
//======================================================
/*void LCD701_Line(unsigned x, unsigned y, unsigned e_x, unsigned e_y)
{
int Offset_x,Offset_y,Offset_k = 0;
int Err_d = 1;
if(y>e_y)
{
Offset_x = x;
x = e_x;
e_x = Offset_x;
Offset_x = y;
y = e_y;
e_y = Offset_x;
}
Offset_x = e_x-x;
Offset_y = e_y-y;
LCD701_PutPixel(x,y);
if(Offset_x<=0)
{
Offset_x = x-e_x;
Err_d = -1;
}
if(Offset_x>Offset_y)
{
while(x!=e_x)
{
if(Offset_k>0)
{
y+=1;
Offset_k += (Offset_y-Offset_x);
}
else Offset_k += Offset_y;
x+=Err_d;
LCD701_PutPixel(x,y);
}
}
else
{
while(y!=e_y)
{
if(Offset_k>0)
{
x+=Err_d;
Offset_k += (Offset_x-Offset_y);
}
else Offset_k += Offset_x;
y+=1;
LCD701_PutPixel(x,y);
}
}
}
*/
//======================================================
// 函数名称: LCD701_Circle
// 格式: void LCD701_Circle(unsigned x,unsigned y,unsigned r,unsigned Mode)
// 实现功能: 画一个圆
// 参数: x - 圆心的横坐标,范围0到119(左->右)
// y - 圆心的纵坐标,范围0到51(上->下)
// r - 圆的半径
// Mode - 绘制模式,可以是下列数值之一:
// PAINT_HOLLOW: 空心圆
// PAINT_SOLID: 实心圆
// 返回值: 无
//======================================================
/*
void LCD701_Circle(unsigned x,unsigned y,unsigned r,unsigned Mode)
{
unsigned dx,dy,ref;
unsigned Temp;
if(r == 0)return;
dx = r;
dy = 1;
ref = 707 * r / 1000; //0.707r
while(dy <= dx)
{
if(Mode == PAINT_SOLID)
{
CLR_WDT();
if(dx > ref)
LCD701_Line(x + ref + 1, y + dy, x + dx, y + dy);
if(x >= ref + 1 && dx > ref)
{
if(x < dx)
Temp = 0;
else
Temp = x - dx;
LCD701_Line(Temp, y + dy, x - ref - 1, y + dy);
}
if(y >= dy && dx > ref)
LCD701_Line(x + ref + 1, y - dy, x + dx, y - dy);
if(x >= ref + 1 && y >= dy && dx > ref)
{
if(x < dx)
Temp = 0;
else
Temp = x - dx;
LCD701_Line(Temp, y - dy, x - ref - 1, y - dy);
}
if(dy != dx || dx == ref)
{
if(y < dx)
Temp = 0;
else
Temp = y - dx;
LCD701_Line(x + dy, Temp, x + dy, y + dx);
}
if(x >= dy && (dy != dx || dy == ref))
{
if(y < dx)
Temp = 0;
else
Temp = y - dx;
LCD701_Line(x - dy, Temp, x - dy, y + dx);
}
}
else
{
LCD701_PutPixel(x + dx, y + dy);
LCD701_PutPixel(x - dx, y + dy);
LCD701_PutPixel(x + dx, y - dy);
LCD701_PutPixel(x - dx, y - dy);
if(dx != dy)
{
LCD701_PutPixel(x + dy, y + dx);
LCD701_PutPixel(x + dy, y - dx);
LCD701_PutPixel(x - dy, y + dx);
LCD701_PutPixel(x - dy, y - dx);
}
}
dy++;
// Temp = r*r-(dx-1)*(dx-1)-dy*dy;
// Temp2 = dx*dx + dy*dy - r*r;
// if(Temp<Temp2)dx--;
// if((r*r<<1)-(dy*dy<<1)<((dx-1)*dx<<1)+1)
if((r*r-dy*dy)<=(dx-1)*dx)
dx--;
}
if(Mode == PAINT_SOLID)
{
LCD701_Line(x + ref + 1, y, x + r, y);
if(x >= ref + 1)
{
if(x < r)
Temp = 0;
else
Temp = x - r;
LCD701_Line(Temp, y, x - ref - 1, y);
}
if(y < r)
Temp = 0;
else
Temp = y - r;
LCD701_Line(x, Temp, x, y + r);
}
else
{
LCD701_PutPixel(x + r, y);
LCD701_PutPixel(x - r, y);
LCD701_PutPixel(x, y + r);
LCD701_PutPixel(x, y - r);
}
}
*/
//======================================================
// 函数名称: LCD701_Rectangle
// 格式: void LCD701_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
// 实现功能: 画一个矩形
// 参数: left - 矩形的左上角横坐标,范围0到118
// top - 矩形的左上角纵坐标,范围0到50
// right - 矩形的右下角横坐标,范围1到119
// bottom - 矩形的右下角纵坐标,范围1到51
// Mode - 绘制模式,可以是下列数值之一:
// PAINT_HOLLOW: 矩形框(空心矩形)
// PAINT_SOLID: 矩形面(实心矩形)
// 返回值: 无
//======================================================
/*void LCD701_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
{
unsigned i,j;
if(left > right)
{
i = left;
left = right;
right = i;
}
if(top > bottom)
{
i = top;
top = bottom;
bottom = i;
}
LCD701_Line(left,top,left,bottom);
if(right != left)
LCD701_Line(right,top,right,bottom);
i = left + 1;
while(i <= right)
{
if(Mode == PAINT_SOLID)
{
CLR_WDT();
j = top;
while(j <= bottom)
LCD701_PutPixel(i,j++);
}
else
{
LCD701_PutPixel(i,top);
if(top != bottom)
LCD701_PutPixel(i,bottom);
}
i++;
}
}
*/
//======================================================
// 函数名称: LCD701_Bitmap
// 格式: void LCD701_Bitmap(unsigned *p_Bitmap, unsigned x, unsigned y)
// 实现功能: 显示指定的位图
// 参数: p_Bitmap - 位图数据的起始地址
// x - 位图的左上角横坐标,范围0到118
// y - 位图的左上角纵坐标,范围0到51
// 返回值: 无
//======================================================
/*void LCD701_Bitmap(unsigned *p_Bitmap, unsigned x, unsigned y)
{
unsigned *p,Width,fWidth,Height,HighByte;
unsigned i,j,MaxByteY,ShiftY,ShiftFlag,TailByteMask,TempCode,TempCode2;
if(x >= SCR_MAX_COL || y >= SCR_MAX_ROW)return;
p = p_Bitmap;
TempCode = *p++;
fWidth = TempCode & 0xff;
Width = fWidth;
if(x + Width >= SCR_MAX_COL)
Width = SCR_MAX_COL - x - 1;
Height = TempCode >> 8;
if(y + Height >= SCR_MAX_ROW)
Height = SCR_MAX_ROW - y - 1;
MaxByteY = (y + Height + 7) >> 3;
ShiftY = y & 0x07;
TailByteMask = 0xff >> ((8 - ((y + Height) & 0x07)) & 0x07);
HighByte = 0;
ShiftFlag = 0;
for(i=(y>>3);i<MaxByteY;i++)
{
LCD701_Cmd(0x0D80|i);
LCD701_Cmd(0x0E00|x);
for(j=0;j<Width;j++)
{
CLR_WDT();
if(HighByte == 0)
{
if(ShiftFlag != 0) // No Shift out yet
TempCode = *(p - fWidth) >> (16 - ShiftY);
else
TempCode = 0x0000;
TempCode |= *p << ShiftY;
}
else
{
TempCode = *p >> (8 - ShiftY);
}
if(i == MaxByteY - 1)
TempCode &= TailByteMask;
else
TempCode &= 0x00ff;
TempCode2 = LCD701_Read();
switch(CurPaintMode)
{
case PAINT_SET:
TempCode |= TempCode2; // PAINT_SET
break;
case PAINT_CLR: // PAINT_CLR
TempCode ^= 0xffff;
TempCode &= TempCode2;
break;
case PAINT_REV: // PAINT_REV
TempCode ^= TempCode2;
break;
default: // PAINT_COVER
if(ShiftFlag == 0 && ShiftY != 0)
TempCode |= TempCode2 & (0xff >> (8 - ShiftY));
else if(i == MaxByteY - 1)
TempCode |= TempCode2 & (TailByteMask^0xff);
break;
}
LCD701_Cmd(0x0f00|TempCode);
p++;
}
if(ShiftY != 0)
ShiftFlag = 1;
if(!HighByte)
p -= Width;
else
p += fWidth - Width;
HighByte = !HighByte;
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -