📄 lpc_lib_mylcd.c
字号:
myLCD_Yaddr(y);
myLCD_Xaddr(x);
com = (x/256)<<2;//TFT板为CMD = ( x/256)<<2;,CSTN板为CMD = (( x/256)<<6)|0x04;
myLCD_wrcom(com);
disp_line_byte(han16x16[k++],mygfore_clr,mygback_clr);//左边字节
disp_line_byte(han16x16[k++],mygfore_clr,mygback_clr);//右边字节
}
else
{
disp_line_byte_fore(han16x16[k++],mygfore_clr,x,y);
x=x+8;
disp_line_byte_fore(han16x16[k++],mygfore_clr,x,y);
x=x-8;
}
}
mygcolth=mygcolth+2; //1个汉字对应于2个mygcolth
if(!(mygcolth%z_column_num)) //写满换行
{
myglineth++;
mygcolth=0;
}
}
}
/*
**********************************************************************************************
* name: mycls
* func: 用参数的颜色清屏
* para: col:清屏的颜色
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void mycls(INT8U col)
{
myposi_piexl_start(0,0);
myposi_piexl_end(319,239);
myLCD_line_rectangle(col);
}
/*
**********************************************************************************************
* name: myposi_set
* func: set position of the displaying string
* para: lineth:line number
colth: column number
* ret: none
* modify:
* comment: set value to global variable of position
**********************************************************************************************
*/
void myposi_set(INT8U lineth,INT8U colth)
{
myglineth=lineth;
mygcolth=colth;
}
/*
**********************************************************************************************
* name: myposi_piexl_start
* func: 开始位置的像素地址
* para: y:line number
x: column number
* ret: none
* modify:
* comment: set value to global variable of position
**********************************************************************************************
*/
void myposi_piexl_start(INT16U x,INT8U y)
{
x_piexl_start=x;
y_piexl_start=y;
}
/*
**********************************************************************************************
* name: myposi_piexl_end
* func: 结束位置的像素地址
* para: y:line number
x: column number
* ret: none
* modify:
* comment: set value to global variable of position
**********************************************************************************************
*/
void myposi_piexl_end(INT16U x,INT8U y)
{
x_piexl_end=x;
y_piexl_end=y;
}
/*
**********************************************************************************************
* name: myLCD_disp_picture_full
* func: 用于显示320*240的图片
* para: data:要显示图片的数据
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_disp_picture_full(INT8U data[])
{
INT8U y,com;
INT16U x;
INT32U k=0;
for(y=0;y<line_max;y++)
{
x=0;
myLCD_Xaddr(x);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
for(;x<column_max;x++)
myLCD_wrdata(data[k++]);
}
}
/*
**********************************************************************************************
* name: myLCD_disp_picture
* func: 用于显示非全屏显示的图片
* para: data:显示图片的数据
* ret: none
* modify:
* comment: 显示图片左上角坐标为(x_piexl_start,y_piexl_start)
右下角坐标为(x_piexl_end,y_piexl_end)
**********************************************************************************************
*/
void myLCD_disp_picture(INT8U data[])
{
INT8U y,com,y_min,y_max;
INT16U x,x_min,x_max;
INT32U k=0;
//防止输入进时x_piexl_start<x_piexl_end,出现错误
x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end; //
x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end; //
y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
if((y_max<line_max)&&(x_max<column_max)) //防止y_max和x_max超出范围
{
for(y=y_min;y<=y_max;y++)
{
myLCD_Xaddr(x_min);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
for(x=x_min;x<=x_max;x++)
myLCD_wrdata(data[k++]);
}
}
}
/*
**********************************************************************************************
* name: myLCD_disp_picture_fore
* func: 专用于鼠标的显示
* para: data:显示图片的数据
* ret: none
* modify:
* comment: 当数据为0时,不显示,为1时,显示前景色
**********************************************************************************************
*/
//专用于不显示背景色的不规则图标 (鼠标)
void myLCD_disp_picture_fore(INT8U data[])
{
INT8U y,com,y_min,y_max,data1;
INT16U x,x_min,x_max;
INT32U k=0;
//防止输入进时x_piexl_start<x_piexl_end,出现错误
x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end; //
x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end; //
y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
for(y=y_min;y<=y_max;y++)
{
for(x=x_min;x<=x_max;x++)
{
data1=data[k++];
if(data1!=mygback_clr) //当data1为背景色时,不显示。
{
myLCD_Xaddr(x);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
myLCD_wrdata(data1);
}
}
}
}
/*
**********************************************************************************************
* name: myLCD_init
* func: initialize LCD screen
* para: none
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_display_mouse(INT16U x_mouse,INT8U y_mouse)
{
INT16U x;
INT8U y;
x=x_mouse-mouse_length_a/2;
y=y_mouse-mouse_length_b/2;
myposi_piexl_start(x,y);
x=x_mouse+mouse_length_a/2;
y=y_mouse+mouse_length_b/2;
myposi_piexl_end(x,y);
mycolor_set(0x0,0xff);
myLCD_disp_picture_fore(gImage_mouse);
}
void myLCD_display_mouse_1(INT16U x_mouse,INT8U y_mouse)
{
// INT16U x;
// INT8U y,i;
INT8U y,com,data1,j;
INT16U x;
INT32U k=0;
if((x_mouse<column_max)&&(x_mouse>0)&&(y_mouse<line_max)&&(y_mouse>0))
for(y=y_mouse;y<=y_mouse+mouse_length_b&&y<line_max;y++)
{
data1=gImage_mouse[k++];
for(x=x_mouse,j=0x80;x<=x_mouse+mouse_length_a&&x<column_max;x++,j=j>>1)
{
if(data1&j) //当data1为背景色时,不显示。
{
myLCD_Xaddr(x);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
myLCD_wrdata(0xff);
}
}
}
}
/*
**********************************************************************************************
* name: myLCD_line_xie
* func: 画斜线
* para: col:线的颜色
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line_xie(INT8U col)
{
INT8U y,com;
INT16U x,i;
FP32 k;
if(x_piexl_start>x_piexl_end)
{
i=x_piexl_start;
x_piexl_start=x_piexl_end;
x_piexl_end=i;
i=y_piexl_start;
y_piexl_start=y_piexl_end;
y_piexl_end=i;
}
k=(y_piexl_end-y_piexl_start)/(x_piexl_end-x_piexl_start);
for(x=x_piexl_start;x<=x_piexl_end;x++)
{
myLCD_Xaddr(x);
y=(unsigned int)(k*(x-x_piexl_start)+y_piexl_start);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
myLCD_wrdata(col);
}
}
/*
**********************************************************************************************
* name: myLCD_line_0
* func: 画x轴线,y轴线
* para: col:线的颜色
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line_0(INT8U col)
{
INT8U y,com,k=0,y_min,y_max;
INT16U x,x_min,x_max;
x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end;
x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end;
y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
for(y=y_min;y<=y_max;y++)
{
x=x_min;
myLCD_Xaddr(x);
myLCD_Yaddr(y);
com=(x/256)<<2;
myLCD_wrcom(com);
for(;x<=x_max;x++)
myLCD_wrdata(col);
}
}
/*
**********************************************************************************************
* name: myLCD_line
* func: 画直线
* para: col:线的颜色
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line(INT8U col)
{
if((x_piexl_start==x_piexl_end)||(y_piexl_start==y_piexl_end))
myLCD_line_0(col);
else
myLCD_line_xie(col);
}
/*
**********************************************************************************************
* name: myLCD_line-rectangle
* func: 画矩形
* para: col:矩形的颜色
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line_rectangle(INT8U col)
{
INT8U com;
//定义A点坐标(20,20)
myLCD_wrcom(0x00);
myLCD_Xaddr(x_piexl_start);
myLCD_Yaddr(y_piexl_start);
//定义B点低位坐标(300,220)及填充颜色
myLCD_wrcom(0x20);
myLCD_Xaddr(x_piexl_end);//
myLCD_Yaddr(y_piexl_end);//
myLCD_wrdata(col);//填充颜色
//启动填充操作及B点高位坐标
com=0x30|((x_piexl_end/256)<<2);
myLCD_wrcom(com);
//延时16.6毫秒
myDelayms(17);
//退出填充操作
myLCD_wrcom(0x00);
}
/*
**********************************************************************************************
* name: mycolor_set
* func: set color of char and background
* para: fcolor: char color
bcolor: background color
* ret: none
* modify:
* comment: set value to global variable of color
**********************************************************************************************
*/
void mycolor_set(INT16U fcolor,INT16U bcolor)
{
mygfore_clr=fcolor;
mygback_clr=bcolor;
}
/*
**********************************************************************************************
* name: myclear_line
* func: 删除一行
* para: line_num:要删除的行号
* ret: none
* modify:
* comment:
**********************************************************************************************
*/
void myclear_line(INT8U line_num)
{
INT8U x,y;
for(y=0;y<16;y++)
{
x=X_SPACE0;
myLCD_Xaddr(x);
myLCD_Yaddr(line_num*16+Y_SPACE0+y);
for(x=X_SPACE0;x<column_max-X_SPACE1;x++)
myLCD_wrdata(mygback_clr);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -