⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc.c

📁 STM32 单片机例程
💻 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 + -