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

📄 +

📁 STM32的恒温消毒柜设计
💻
📖 第 1 页 / 共 2 页
字号:
	Set_direction(0);
  while(str[strlen])strlen++; 
  while(str[strlen-i])
  {
    LCD_Char((x-8*i),y,str[strlen-i],Color,bkColor); 
    i++;
    if(i>=len || i>strlen)return;
  }  
}


/************************************************************
 * 函数名:LCD_Str_O_P
 * 描述  :在指定坐标处悬浮显示8*16大小的字符串
 * 输入  : -x   显示位置横向坐标 0 ~ 319
           -y   显示位置纵向坐标 0 ~ 239
 * 		   -str 字符串首址
 * 		   -Color字符串颜色
 * 输出  :无
 * 举例  :	LCD_Str_O_P(0, 0, "Runing", 0);
		    LCD_Str_O_P(150, 100, "Runing", 0);
           	LCD_Str_O_P(320-16, 239-8*6, "Runing", 0);
 * 注意  :字符串显示方向为纵向 已测试
******************************************************************/    
void LCD_Str_O_P(u16 x, u16 y,const u8 *str,u16 Color)	
{
	Set_direction(1);
    while(*str != '\0')
    {
        if(y > (240-8)) 
        {	/* 换行*/
            y = 0;
            x -= 16;
        }
			  if(x >(320-16)) 
        {	/*重归起点*/
            y = x = 0;
        }        
				LCD_Char_O_P(x,y,*str,Color);		
        str ++ ;
        y += 8 ;
    }
   
}





 
/******************************************************
 * 函数名:LCD_Num_6x12_O
 * 描述  :在指定坐标处悬浮显示6*12大小的数字
 * 输入  : -x   显示位置横向坐标 0 ~ 319
           -y   显示位置纵向坐标 0 ~ 239
		   -num  需要显示的数字
		   -Color 数字颜色
 * 输出  :无
 * 举例  :	LCD_Num_6x12_O(200, 100, 65535, BLACK);
		    LCD_Num_6x12_O(320-5*6, 240-12, 65535, BLACK);
			LCD_Num_6x12_O(0, 0, 65535, BLACK); 
 * 注意  :	显示方向为横向 已测试
*********************************************************/    
void LCD_Num_6x12_O(u16 x,u16 y,u32 num, u16 Color)	  
{      
    u32 res=num;   	   
    u8 t=0;

		Set_direction(0);  
	  if( num == 0 )
		{
	        LCD_Char_6x12_O(x, y, '0',Color);
					return;
		}	
	   while( res )  /*得到数字长度t*/
    {
        res/=10;
        t++;
    }

		while(num)
		{
			 LCD_Char_6x12_O(x+(6*(t--)-6), y, (num%10)+'0',Color);/*先显示低位在显示高位*/
			 num /= 10 ;
		}			     
} 



/******************************************************
 * 函数名:LCD_Str_6x12_O
 * 描述  :在指定坐标处悬浮显示6*12大小的字符串
 * 输入  : 	-x   显示位置横向坐标 0 ~ 319
           	-y   显示位置纵向坐标 0 ~ 239
 * 			-str 字符串首址
 * 			-Color字符串颜色
 * 输出  :无
 * 举例  : LCD_Str_6x12_O(300, 10,"LOVE STM32", BLACK);
		    LCD_Str_6x12_O(0, 0,"LOVE STM32", BLACK);
			LCD_Str_6x12_O(320-6*9, 10,"LOVE STM3", BLACK);
		    LCD_Str_6x12_O(320-6*10, 240-12,"LOVE STM32", BLACK);  
 * 注意  :	字符串显示方向为横向 已测试
*********************************************************/    
void LCD_Str_6x12_O(u16 x, u16 y, const u8 *str,u16 Color)	
{    
    
		Set_direction(0);     
    while(*str != '\0')
    {       
        if(x > (320-6)) 
        {	
					//换行
           x = 0;
           y += 12;
        }
        if(y > (240-12)) 
        {	
					//一屏
           x = y = 0;
        }
        
        LCD_Char_6x12_O(x ,y, *str,Color);
        x += 6;
        str ++ ;
    }
				  
}





/******************************************************
 * 函数名:LCD_Str_6x12_O_P
 * 描述  :在指定坐标处悬浮显示6*12大小的字符串
 * 输入  : -x   显示位置横向坐标 0 ~ 319
           -y   显示位置纵向坐标 0 ~ 239
 * 		   -str 字符串首址
 *         -Color字符颜色
 * 输出  :无
 * 举例  :	LCD_Str_6x12_O_P(200, 0,"LOVE STM32", 0);
		   	LCD_Str_6x12_O_P(0, 0,"LOVE STM32", 0);
		    LCD_Str_6x12_O_P(320-12, 239-6*10,"LOVE STM32", 0);
 * 注意  :	字符串显示方向为纵向 已测试
*********************************************************/    
void LCD_Str_6x12_O_P(u16 x, u16 y, const u8 *str, u16 Color)	
{   
		
	  Set_direction(1);      
    while(*str != '\0')
    {       
        if(y > (240-6)) 
        {	/* 换行*/
            y = 0;
            x -= 12;
        }
        if(x >(320-12)) 
        {	/*重归起点*/
            y = x = 0;
        }        
        LCD_Char_6x12_O_P(x, y , *str,Color);
        y +=6;
        str ++ ;
    }
		  
}





/********************************************************************
 * 函数名:LCD_Char_CH
 * 描述  :显示单个汉字字符
 * 输入  : 	x: 0~(319-16)
 *         	y: 0~(239-16)
 *			str: 中文字符串首址
 *			Color: 字符颜色   
 *			bkColor: 背景颜色
 * 输出  :无
 * 举例  :	LCD_Char_CH(200,100,"好",0,0);
 * 注意	 :如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
************************************************************************/    
void LCD_Char_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
    
#ifndef NO_CHNISEST_DISPLAY         /*如果汉字显示功能没有关闭*/
    u8 i,j;
    u8 buffer[32];
    u16 tmp_char=0;
    
    
   GetGBKCode_from_sd(buffer,str);  /* 取字模数据 */
    
    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
        tmp_char=(tmp_char<<8);
        tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+j,y+i,Color);
            }
            else
            {
                LCD_ColorPoint(x+j,y+i,bkColor);
            }
        }
    }
    
#endif
}



/******************************************************************
 * 函数名:LCD_Char_CH_P
 * 描述  :显示单个汉字字符
 * 输入  : x: 0~(319-16)
 *         y: 0~(239-16)
 *		   str: 中文字符串首址
 *		   Color: 字符颜色   
 *		   bkColor: 背景颜色
 * 输出  :无
 * 举例  :	LCD_Char_CH_P(200,100,"好",0,0);
 * 注意	 :如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
***********************************************************************/    
void LCD_Char_CH_P(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
    
#ifndef NO_CHNISEST_DISPLAY         /*如果汉字显示功能没有关闭*/
    
    u8 i,j;
    u8 buffer[32];
    u16 tmp_char=0;
    
    Set_direction(1);
   	GetGBKCode_from_sd(buffer,str);	 /* 取字模数据 */
    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
        tmp_char=(tmp_char<<8);
        tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+16-i,y+j,Color);
            }
            else
            {
                LCD_ColorPoint(x+16-i,y+j,bkColor);
            }
        }
    }	 

#endif
}


/********************************************************************************
 * 函数名:	LCD_Char_CH_O
 * 描述  : 悬浮显示单个汉字字符
 * 输入  : 	x: 0~(319-16)
 *         	y: 0~(239-16)
 *			str: 中文字符串首址
 *			Color: 字符颜色   
 * 输出  :无
 * 举例  :	LCD_Char_CH_O(200,100,"好",0,0);
 * 注意	 :1 横屏2 如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
 ********************************************************************************/    
void LCD_Char_CH_O(u16 x,u16 y,const u8 *str,u16 Color) 
{
    u8 i,j;
    u8 buffer[32];
    u16 tmp_char=0;
    Set_direction(0);   
    GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
    
    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
				tmp_char=(tmp_char<<8);
				tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {            
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+j,y+i,Color);
            }
        }
    }   
}



/******************************************************************************
 * 函数名:LCD_Char_CH_O_P
 * 描述  :在Lcd屏上任意位置悬浮显示一个中文字
 * 输入  : 	- x: 水平坐标 
 *         	- y: 垂直坐标  
 *			- str: 显示的中文字
 *			- Color: 字符颜色   
 * 输出  :无
 * 举例  :	LCD_Char_CH_O_P(200,100,"云",0); 		
 * 注意  :	1 竖屏2 如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
*********************************************************************************/    
void LCD_Char_CH_O_P(u16 x,u16 y,const u8 *str,u16 Color) 
{
    
#ifndef NO_CHNISEST_DISPLAY                           /*如果汉字显示功能没有关闭*/
    
    u8 i,j;
    u8 buffer[32];
    u16 tmp_char=0;
    Set_direction(1);
    GetGBKCode_from_sd(buffer,str);  									/* 取字模数据 */
   
    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
        tmp_char=(tmp_char<<8);
        tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {            
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+16-i,y+j,Color);
            }
        }
    }
        
            
#endif
}





/***************************************************************************
 * 函数名:LCD_Str_CH
 * 描述  :在指定坐标处显示16*16大小的指定颜色汉字字符串
 * 输入  : 	- x: 显示位置横向坐标	 
 *         	- y: 显示位置纵向坐标 
 *			- str: 显示的中文字符串
 *			- Color: 字符颜色   
 *			- bkColor: 背景颜色
 * 输出  :无		
 * 注意  :	字符串显示方向为横向 已测试
******************************************************************************/    
void LCD_Str_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)  
{
   
    Set_direction(0);
    while(*str != '\0')
    {
			if(x>(320-16))
			{	 
				 /*换行*/
				x =0;
				y +=16;
					
			}
			if(y >(240-16))
			{
				 /*重新归零*/
				 y =0;
				 x =0;
			}
	     LCD_Char_CH(x,y,str,Color,bkColor);      
       str += 2 ;
       x += 16 ;	
    }
}





/********************************************************************************
 * 函数名:LCD_Str_CH_P
 * 描述  :在指定坐标处显示16*16大小的指定颜色汉字字符串
 * 输入  : 	- x: 显示位置横向坐标	 
 *         	- y: 显示位置纵向坐标 
 *			- str: 显示的中文字符串
 *			- Color: 字符颜色   
 *			- bkColor: 背景颜色
 * 输出  :无		
 * 注意  :	字符串显示方向为纵向 已测试
**********************************************************************************/    
void LCD_Str_CH_P(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)	
{
        
    Set_direction(1);
    while(*str != '\0')
    {
        if(y >(240-16))
				{
						y = 0;
						x -= 16;
				}
				if(x >(320-16))
				{		
						y = 0;
						x = 0;
				}
				LCD_Char_CH_P(x,y,str,Color,bkColor);       
        str += 2 ;
        y += 16 ;	
    }
    
}


/*********************************************************************************
 * 函数名:LCD_Str_CH_O
 * 描述  :在指定坐标处悬浮显示16*16大小的指定颜色汉字字符串
 * 输入  : 	- x:  显示位置横向坐标	 
 *         	- y:  显示位置纵向坐标 
 *			- str:   显示的中文字符串
 *			- Color: 字符颜色    
 * 输出  :无		
 * 注意  :	字符串显示方向为横向 已测试
***************************************************************************************/    
void LCD_Str_CH_O(u16 x,u16 y,const u8 *str,u16 Color)	 
{
    	
	Set_direction(0);
    while(*str != '\0')
    {
			if(x>(320-16))
			{	 
				 /*换行*/
				x =0;
				y +=16;
					
			}
			if(y >(240-16))
			{
				 /*重新归零*/
				 y =0;
				 x =0;
			}
	     LCD_Char_CH_O(x,y,str,Color);     
       str += 2 ;
       x += 16 ;	
    }
       
}



/**********************************************************************************
 * 函数名:LCD_Str_CH_O_P
 * 描述  :在指定坐标处悬浮显示16*16大小的指定颜色汉字字符串
 * 输入  : - x: 显示位置横向坐标	 
 *         - y: 显示位置纵向坐标 
 *		   - str: 显示的中文字符串
 *		   - Color: 字符颜色   
 * 输出  :无
 * 注意  :	字符串显示方向为纵向 已测试
**************************************************************************************/    
void LCD_Str_CH_O_P(u16 x,u16 y,const u8 *str,u16 Color) 
{    
    Set_direction(1);
    while(*str != '\0')
    {
				if(y > 240-16)
				{
					y = 0;
					x -=16;
				}
				if(x > 320-16)
				{
						y = 0;
						x = 0;
				}
        LCD_Char_CH_O_P(x,y,str,Color);        
        str += 2 ;
        y += 16 ;	
    } 
   
}





/**********************************************************************************
 * 函数名:LCD_Str_ENCH_O_P
 * 描述  :中英文混合悬浮显示,英文大小为16*8
 * 输入  : 	- x: 显示位置横向坐标	 
 *         	- y: 显示位置纵向坐标 
 *			- str: 显示的中文字符串
 *			- Color: 字符颜色   
 * 输出  :无
 * 注意  :	字符串显示方向为纵向 已测试
**************************************************************************************/    
void LCD_Str_ENCH_O_P(u16 x,u16 y,const u8 *str,u16 Color)
{
    u16 Tmp_x, Tmp_y;
    Tmp_x = x;
    Tmp_y = y;
    Set_direction(1);
    while(*str != '\0')
    {
        if(*str<125)
				{
					if(Tmp_y >(240-8))
					{
						 /*换行*/
						 Tmp_y =0;
						 Tmp_x -=16;
					}
					LCD_Char_O_P(Tmp_x,Tmp_y, *str,Color);
					str++ ;
					Tmp_y	+= 8;
				}
				else
				{
					if(*str==163)									/*163-172 是中文逗号	 163-187是中文分号*/
					{
						LCD_Char_O_P(Tmp_x,Tmp_y, ' ',Color);		/*改为显示1个空格*/
						str += 2 ;
						Tmp_x	+= 8 ;

					}
					if(Tmp_y >(240-16))
					{
						 /*换行*/
						 Tmp_y =0;
						 Tmp_x -=16;
					}

					LCD_Char_CH_O_P(Tmp_x,Tmp_y,str,Color);
          str += 2 ;
        	Tmp_y += 16 ;						
        }
    }
}



/******************* CHD1807 Team *****END OF FILE************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -