?? lcd_dis.c
字號(hào):
PutPixel(x+a,y+b);
PutPixel(x-a,y+b);
PutPixel(x+a,y-b);
PutPixel(x-a,y-b);
}
}
//========================================================================
// 函數(shù): void W_Red_Err(int *a,int *b,int *r)
// 描述: 畫(huà)圓誤差計(jì)算
// 參數(shù):
// 返回: 無(wú)
// 備注: 該函數(shù)對(duì)用戶(hù)不可見(jiàn)
// 版本:
// 2006/10/16 First version
//========================================================================
void W_Red_Err(int *a,int *b,int *r)
{
int R_Error;
unsigned int uiTemp;
R_Error = (*a+1)*(*a+1);
uiTemp = (*b)*(*b);
R_Error += uiTemp;
uiTemp = (*r)*(*r);
R_Error -= uiTemp;
if(R_Error>=0)
{
R_Error = R_Error-*b;
if(R_Error>=0) *b = *b-1;
}
*a = *a+1;
}
//========================================================================
// 函數(shù): void Circle(int x,int y,int r,int mode)
// 描述: 以x,y為圓心R為半徑畫(huà)一個(gè)圓(mode = 0) or 圓面(mode = 1)
// 參數(shù):
// 返回: 無(wú)
// 備注: 畫(huà)圓函數(shù)執(zhí)行較慢,如果MCU有看門(mén)狗,請(qǐng)作好清狗的操作
// 版本:
// 2006/10/16 First version
//========================================================================
void Circle(int x,int y,int r,int mode)
{
int arx1=0,ary1,arx2,ary2=0;
// Pos_Switch(&x,&y); //坐標(biāo)變換
// x += 4;
ary1=r;
arx2=r;
while(1)
{
W_Red_Dot(x,y,arx1,ary1,mode);
W_Red_Err(&arx1,&ary1,&r);
if(arx1 == arx2)
{
W_Red_Dot(x,y,arx1,ary1,mode);
break;
}
W_Red_Dot(x,y,arx2,ary2,mode);
W_Red_Err(&ary2,&arx2,&r);
if(arx1 == arx2)
{
W_Red_Dot(x,y,arx2,ary2,mode);
break;
}
}
}
//========================================================================
// 函數(shù): void Rectangle(unsigned left, unsigned top, unsigned right,
// unsigned bottom, unsigned Mode)
// 描述: 以x,y為圓心R為半徑畫(huà)一個(gè)圓(mode = 0) or 圓面(mode = 1)
// 參數(shù): left - 矩形的左上角橫坐標(biāo),范圍0到118
// top - 矩形的左上角縱坐標(biāo),范圍0到50
// right - 矩形的右下角橫坐標(biāo),范圍1到119
// bottom - 矩形的右下角縱坐標(biāo),范圍1到51
// Mode - 繪制模式,可以是下列數(shù)值之一:
// 0: 矩形框(空心矩形)
// 1: 矩形面(實(shí)心矩形)
// 返回: 無(wú)
// 備注: 畫(huà)圓函數(shù)執(zhí)行較慢,如果MCU有看門(mén)狗,請(qǐng)作好清狗的操作
// 版本:
// 2005/05/21 First version
//========================================================================
void Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
{
unsigned uiTemp;
if(Mode==0)
{
Line(left,top,left,bottom);
Line(left,top,right,top);
Line(right,bottom,left+1,bottom);
Line(right,bottom,right,top+1);
}
else
{
// Pos_Switch(&left,&top); // 坐標(biāo)變換
// Pos_Switch(&right,&bottom); //坐標(biāo)變換
if(left>right)
{
uiTemp = left;
left = right;
right = uiTemp;
}
if(top>bottom)
{
uiTemp = top;
top = bottom;
bottom = uiTemp;
}
for(uiTemp=top;uiTemp<=bottom;uiTemp++)
{
Line(left,uiTemp,right,uiTemp);
}
}
}
//========================================================================
// 函數(shù): void ClrScreen(unsigned int Mode)
// 描述: 清屏函數(shù),執(zhí)行全屏幕清除或填充前景色
// 參數(shù): Mode 0:全屏除屏
// 1:全屏填充前景色
// 返回: 無(wú)
// 備注:
// 版本:
// 2007/01/11 First version
//========================================================================
void ClrScreen(unsigned int Mode)
{
if(Mode==0)
LCD_Fill(LCD_INITIAL_COLOR);
else
LCD_Fill(BMP_Color);
}
/*
//========================================================================
// 函數(shù): void Writ_Dot(int x,int y,unsigned int Color)
// 描述: 填充以x,y為坐標(biāo)的象素
// 參數(shù): x X軸坐標(biāo) y Y軸坐標(biāo) Color 像素顏色
// 返回: 無(wú)
// 備注: 這里以及之前的所有x和y坐標(biāo)系都是用戶(hù)層的,并不是實(shí)際LCD的坐標(biāo)體系
// 本函數(shù)提供可進(jìn)行坐標(biāo)變換的接口
// 版本:
// 2006/10/15 First version
//========================================================================
void Writ_Dot(int x,int y,unsigned int Color)
{
#if LCD_XY_Switch == 0
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Write_Dot_LCD(x,y,Color);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Write_Dot_LCD(LCD_X_MAX - x,y,Color);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Write_Dot_LCD(x,LCD_Y_MAX - y,Color);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Write_Dot_LCD(LCD_X_MAX - x,LCD_Y_MAX - y,Color);
#endif
#endif
#if LCD_XY_Switch == 1
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Write_Dot_LCD(y,x,Color);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Write_Dot_LCD(y,LCD_Y_MAX - x,Color);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Write_Dot_LCD(LCD_X_MAX - y,x,Color);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Write_Dot_LCD(LCD_X_MAX - y,LCD_Y_MAX - x,Color);
#endif
#endif
}*/
/*
//========================================================================
// 函數(shù): unsigned int Get_Dot(int x,int y)
// 描述: 獲取x,y為坐標(biāo)的象素
// 參數(shù): x X軸坐標(biāo) y Y軸坐標(biāo)
// 返回: Color 像素顏色
// 備注: 這里以及之前的所有x和y坐標(biāo)系都是用戶(hù)層的,并不是實(shí)際LCD的坐標(biāo)體系
// 本函數(shù)提供可進(jìn)行坐標(biāo)變換的接口
// 版本:
// 2006/10/15 First version
//========================================================================
unsigned int Get_Dot(int x,int y)
{
#if LCD_XY_Switch == 0
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
return Get_Dot_LCD(x,y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
return Get_Dot_LCD(LCD_X_MAX - x,y);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
return Get_Dot_LCD(x,LCD_Y_MAX - y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
return Get_Dot_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
#endif
#endif
#if LCD_XY_Switch == 1
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
return Get_Dot_LCD(y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
return Get_Dot_LCD(y,LCD_Y_MAX - x);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
return Get_Dot_LCD(LCD_X_MAX - y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
return Get_Dot_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
#endif
#endif
}
//========================================================================
// 函數(shù): void Clear_Dot(int x,int y)
// 描述: 清除以x,y為坐標(biāo)的象素
// 參數(shù): x X軸坐標(biāo) y Y軸坐標(biāo)
// 返回: 無(wú)
// 備注: 這里以及之前的所有x和y坐標(biāo)系都是用戶(hù)層的,并不是實(shí)際LCD的坐標(biāo)體系
// 本函數(shù)提供可進(jìn)行坐標(biāo)變換的接口
// 版本:
// 2006/10/15 First version
//========================================================================
void Clear_Dot(int x,int y)
{
#if LCD_XY_Switch == 0
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Clear_Dot_LCD(x,y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Clear_Dot_LCD(LCD_X_MAX - x,y);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Clear_Dot_LCD(x,LCD_Y_MAX - y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Clear_Dot_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
#endif
#endif
#if LCD_XY_Switch == 1
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Clear_Dot_LCD(y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Clear_Dot_LCD(y,LCD_Y_MAX - x);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Clear_Dot_LCD(LCD_X_MAX - y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Clear_Dot_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
#endif
#endif
}
//========================================================================
// 函數(shù): void Set_Dot_Addr(int x,int y)
// 描述: 設(shè)置當(dāng)前需要操作的象素地址
// 參數(shù): x X軸坐標(biāo) y Y軸坐標(biāo)
// 返回: 無(wú)
// 備注: 這里以及之前的所有x和y坐標(biāo)系都是用戶(hù)層的,并不是實(shí)際LCD的坐標(biāo)體系
// 本函數(shù)提供可進(jìn)行坐標(biāo)變換的接口
// 版本:
// 2006/10/15 First version
//========================================================================
void Set_Dot_Addr(int x,int y)
{
#if LCD_XY_Switch == 0
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Set_Dot_Addr_LCD(x,y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Set_Dot_Addr_LCD(LCD_X_MAX - x,y);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Set_Dot_Addr_LCD(x,LCD_Y_MAX - y);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Set_Dot_Addr_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
#endif
#endif
#if LCD_XY_Switch == 1
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
Set_Dot_Addr_LCD(y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
Set_Dot_Addr_LCD(y,LCD_Y_MAX - x);
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
Set_Dot_Addr_LCD(LCD_X_MAX - y,x);
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
Set_Dot_Addr_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
#endif
#endif
}*/
/*
//========================================================================
// 函數(shù): void Pos_Switch(unsigned int * x,unsigned int * y)
// 描述: 將畫(huà)面的坐標(biāo)變換為實(shí)際LCD的坐標(biāo)體系,以便于快速畫(huà)圓形以及矩形
// 參數(shù): x X軸坐標(biāo) y Y軸坐標(biāo)
// 返回: 無(wú)
// 備注: 這里以及之前的所有x和y坐標(biāo)系都是用戶(hù)層的,并不是實(shí)際LCD的坐標(biāo)體系
// 本函數(shù)提供可進(jìn)行坐標(biāo)變換的接口
// 版本:
// 2006/10/15 First version
//========================================================================
void Pos_Switch(unsigned int * x,unsigned int * y)
{
#if LCD_XY_Switch == 0
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
*x = LCD_X_MAX-*x;
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
*y = LCD_Y_MAX-*y;
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
*x = LCD_X_MAX-*x;
*y = LCD_Y_MAX-*y;
#endif
#endif
#if LCD_XY_Switch == 1
unsigned int uiTemp;
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
uiTemp = *x;
*x = y;
*y = uiTemp;
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
uiTemp = LCD_Y_MAX-*x;
*x = *y;
*y = uiTemp;
#endif
#if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
uiTemp = *x;
*x = LCD_X_MAX-*y;
*y = uiTemp;
#endif
#if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
uiTemp = LCD_Y_MAX - *x;
*x = LCD_X_MAX-*y;
*y = uiTemp;
#endif
#endif
}
*/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -