6.3 显示函数

 

 

  1. /*横置横排打点函数 -----------------------------------------------------------------*/
    /*
    	Xpos,Ypos:显示的起点坐标
    	data:显示的数据
    	charColor:字体颜色
    	bkColor:背景颜色
    	sizeType:放大倍数,默认为1
    */
    void WriteData( uint16_t Xpos, uint16_t Ypos, uint8_t data, uint16_t charColor, uint16_t bkColor,u8 sizeType)
    {
    		uint16_t j,i;
    		unsigned char count=0;
    		for( j=0; j<8; j++ )
    		{
    				if( ((data >> (7-j))&0x01)== 0x01 ){
    						for(count=0;count<sizeType;count++){
    							for(i=0;i<sizeType;i++){
    								LCD_SetPoint( Xpos + sizeType*j+count, Ypos+i, charColor );	//修改此函数
    							}
    						}
    				}
    				else{
    						for(count=0;count<sizeType;count++){
    							for(i=0;i<sizeType;i++){
    								LCD_SetPoint( Xpos + sizeType*j+count, Ypos+i, bkColor );	//修改此函数
    							}
    						}
    				}
    		}
    }
    
    /*竖置横排打点函数 -----------------------------------------------------------------*/
    /*
    	Xpos,Ypos:显示的起点坐标
    	data:显示的数据
    	charColor:字体颜色
    	bkColor:背景颜色
    	sizeType:放大倍数,默认为1
    */
    void WriteDataY( uint16_t Xpos, uint16_t Ypos, uint8_t data, uint16_t charColor, uint16_t bkColor,u8 sizeType)
    {
    		uint16_t i,j;
    		unsigned char count = 0;
    		for( j = 0; j < 8; j++ )
    		{
    				if( ((data >> (7-j))&0x01)== 0x01 ){
    					for(count = 0;count<sizeType;count++){
    						for(i = 0;i < sizeType;i++)
    						{
    								LCD_SetPoint( Xpos+i, Ypos- sizeType*j+count, charColor );	//修改此函数
    						}
    					}
    				}
    				else{
    					for(count=0;count<sizeType;count++){
    						for(i=0;i<sizeType;i++)
    						{
    							LCD_SetPoint( Xpos+i, Ypos- sizeType*j+count, bkColor );	//修改此函数
    						}
    					}
    				}
    		}
    }
    
    
    
    
    /******* 竖置横排显示函数 ***********/
    /*
    	Xpos,Ypos:显示的起点坐标
    	W:字体显示的宽
    	H:字体显示的高
    	charColor:字体颜色
    	bkColor:背景颜色
    	DZ_Data:显示的字体数据
    	sizeType:放大倍数,默认为1
    */
    void DisZK_DZ_Y(uint16_t Xpos, uint16_t Ypos, uint16_t W,uint16_t H, uint16_t charColor, uint16_t bkColor,uint8_t*DZ_Data,u8 sizeType)
    {
    	static u16 Vertical,Horizontal;
    	u32 bit = 0;
    	u8 temp = 0;
    	Vertical = Ypos + 7*sizeType;
    	Horizontal = Xpos;
    	for(bit = 0;bit < ((H+7)/8*W);bit++) //data sizeof (byte)
    	{
    				if((bit%W==0)&&(bit>0))//W/8 sizeof
    				{
    						temp += 8 * sizeType;
    						Horizontal = Xpos;
    						Vertical = Ypos + 7*sizeType + temp;
    						//Vertical = Ypos + 7*sizeType + temp;
    				}
    				else if(bit > 0)
    				{
    						Horizontal += sizeType;
    						Vertical = Ypos+7*sizeType + temp;
    				}
    				WriteDataY(Horizontal,Vertical,DZ_Data[bit],charColor,bkColor,sizeType);
    	}
    }
    
    
    /********º横置横排显示函数************/
    /*
    	Xpos,Ypos:显示的起点坐标
    	W:字体显示的宽
    	H:字体显示的高
    	charColor:字体颜色
    	bkColor:背景颜色
    	DZ_Data:显示的字体数据
    	sizeType:放大倍数,默认为1
    */
    void DisZK_DZ_W(uint16_t Xpos, uint16_t Ypos, uint16_t W,uint16_t H, uint16_t charColor, uint16_t bkColor,uint8_t*DZ_Data,u8 sizeType)
    {
    	static u16 Vertical,Horizontal;
    	u32 bit=0;
    	Vertical=Ypos;
      Horizontal=Xpos;
    	for(bit=0;bit<((W+7)/8*H);bit++) //data sizeof (byte)
    	{
    				if((bit%((W+7)/8)==0)&&(bit>0))//W/8 sizeof
    				{
    						Vertical+=sizeType;
    						Horizontal=Xpos;
    				}
    				else if(bit>0)
    					Horizontal+=sizeType*8;
    
    				WriteData(Horizontal,Vertical,DZ_Data[bit],charColor,bkColor,sizeType);
    	}
    }
    
    
    #if 0
    void main() {
    	unsigned char zk_buff[256]; //自定义点阵数据空间大小
    	gt_16_GetData(0xb0, 0xa1, zk_buff);	//获取点阵数据
    	DisZK_DZ_W(0, 0, 16, 16, BLACK, WHITE, zk_buff, 1);	//显示函数
    }
    
    ///////////////////////////////////////////////////////////////////////////////////
    
    //拉丁文灰度 RGB565
    /*
    	x,y:显示的起始坐标
    	width;宽
    	height:高
    	DZ_Data:字形数据地址
    */
    void DisZK_565_W(u16 x, u16 y, u16 width, u16 height, u8* DZ_Data) {
    	u16 tmp_x = x, tmp_y = y;
    	u32 Data_Size = width*height, i=0, color = 0;
    	while(Data_Size) {
    		color = (DZ_Data[i]<<8) + DZ_Data[i+1];
    		LCD_Fast_DrawPoint(tmp_x, tmp_y, color);
    		i+=2;
    		tmp_x++;
    		Data_Size--;
    		if(tmp_x-x>=width) {
    			tmp_x = x;
    			tmp_y++;
    		}
    	}
    }
    
    #endif

 

 

    • 联系电话

    • 0755—83453881
    • 服务时间

    • 周一至周五 9:00-18:00
    • 高通GT-HMI交流群