📄 dc.c
字号:
/*----------------------------------------------------------------------------
QQ: 958664258
21IC用户名:banhushui
交流平台:http://blog.21ic.com/user1/5817/index.html
淘宝店铺:http://shop58559908.taobao.com
旺旺:半壶水电子
编译器版本:MDK3.5
*---------------------------------------------------------------------------*/
#include "..\main\include.h"
#define COLOR_STEP 1//颜色改变步进值
//将RGB565 转化为16BIT
uint16 RGB(u8 R, u8 G, u8 B)
{
u16 color;
color = R&B0001_1111;
color <<= 6;
color |= G&B0011_1111;
color <<= 5;
color |= B&B0001_1111;
return(color);
}
//该函数防止颜色突变
void RGBadd(u8 *R, u8 *G, u8 *B, u8 change)
{u16 temp;
temp=*R+change;
if(temp>R_MAX)
*R = R_MAX;
else
*R += change;
temp=*G+change;
if( temp>G_MAX )
*G = G_MAX;
else
*G += change;
temp=*B+change;
if( temp>B_MAX )
*B = B_MAX;
else
*B += change;
}
//该函数防止颜色突变
void RGBdec(u8 *R, u8 *G, u8 *B, u8 change)
{
if( *R<change )
*R = 0;
else
*R -= change;
if( *G<change )
*G = 0;
else
*G -= change;
if( *B<change )
*B = 0;
else
*B -= change;
}
/*----------------------------------------------------------------------
调用该成员函数用指定的固体色填充矩形
x: 矩形左上角的X逻辑坐标。
y: 矩形左上角的Y逻辑坐标。
Width: 指定矩形的宽度。
Height: 指定矩形的高度。
Color: 填充颜色
----------------------------------------------------------------------*/
void FillSolidRect(u16 x, u16 y, u16 Width, u16 Height, COLOR Color)
{uint32 i;
LCD_WR_CmdPar(0x20, x);//起始X坐标
LCD_WR_CmdPar(0x21, y);//起始Y坐标
LCD_WR_CmdPar(0x0050, x);//水平 GRAM起始位置
LCD_WR_CmdPar(0x0051, x+Width-1);//水平GRAM终止位置
LCD_WR_CmdPar(0x0052, y);//垂直GRAM起始位置
LCD_WR_CmdPar(0x0053, y+Height-1);//垂直GRAM终止位置
LCD_WR_Cmd(0x0022);//开始读/写
for(i=0; i<(u32)Width*Height; i++)
{
LCD_WR_DATA(Color);
}
}
/*----------------------------------------------------------------------
调用该成员函数用指定的渐变色填充矩形
x: 矩形左上角的X逻辑坐标。
y: 矩形左上角的Y逻辑坐标。
Width: 指定矩形的宽度。
Height: 指定矩形的高度。
Color: 填充颜色
y_step: 每多少行改变颜色,如果颜色数值变化范围大将出现色彩跳变,调整y_step可以调整颜色数值变化范围
----------------------------------------------------------------------*/
void FillSolidRectChange(u16 x, u16 y, u16 Width, u16 Height, u16 color, u8 y_step )
{
u8 r,g,b;
//u8 y_step;//每多少行改变颜色
u16 ix,iy;
r=color>>11;
g=(color>>5)&B0011_1111;
b=color&B0001_1111;
// if(Height>24)
// y_step=Height/6;//Height/16;
// else if(Height>32)
// y_step=Height/16;
// else //if(Height>96)
// y_step=Height/24;
RGBadd(&r, &g, &b, (Height/y_step)*COLOR_STEP);
for( iy = 0; iy<Height; iy++)
{
if(iy<Height/2)
{
if(iy%y_step==0)
{
RGBdec(&r, &g, &b, COLOR_STEP);
}
}
else
{
if(iy%y_step==0)
{
RGBadd(&r, &g, &b, COLOR_STEP);
}
}
for( ix = 0; ix<Width; ix++)
{
//if(iy==2)
// DrawPixel(x+ix, y+iy, RGB(255, 255, 255));
//else
DrawPixel(x+ix, y+iy, RGB(r, g, b));
}
}
}
//测试字符串中ASCII个数
uint16 TestASCIINum(uint8 *p)
{uint16 len;
len=0;
while(*p)
{
if((*p&0x80)==0)//英文
len++;
p++;
}
return(len);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -