/*
*lcd显示汉字
*输入参数:
* x:开始位置横坐标
* y:开始位置纵坐标
* color:字体颜色
* ch[]:文字
*
*/
void Draw_Text16(int x, int y, int color, const unsigned char ch[])
{
unsigned short i, j ;
unsigned char mask, tem ;
for(i=0; i<16; i++)
{
mask= 0x80 ;
tem = ch[i*2] ; //俩个字节一组16位,取第一个字节
for(j=0; j<8; j++)
{
if(tem & mask)
{
PutPixel(x+j, y+i, color) ;
}
mask = mask >> 1 ;
}
mask = 0x80 ;
tem = ch[i*2 + 1] ;
for(j=0; j<8; j++)
{
if(tem & mask)
{
PutPixel(x+j+8, y+i, color) ;
}
mask = mask >> 1 ;
}
}
}
/*
* 画点
* 输入参数:
* x、y : 象素坐标
* color: 颜色值
* 对于16BPP: color的格式为0xAARRGGBB (AA = 透明度),
* 需要转换为5:6:5格式
* 对于8BPP: color为调色板中的索引值,
* 其颜色取决于调色板中的数值
*/
void PutPixel(UINT32 x, UINT32 y, UINT32 color)
{
UINT8 red,green,blue;
switch (bpp){
case 16:
{
UINT16 *addr = (UINT16 *)fb_base_addr + (y * xsize + x);
red = (color >> 19) & 0x1f;
green = (color >> 10) & 0x3f;
blue = (color >> 3) & 0x1f;
color = (red << 11) | (green << 5) | blue; // 格式5:6:5
*addr = (UINT16) color;
break;
}
case 8:
{
UINT8 *addr = (UINT8 *)fb_base_addr + (y * xsize + x);
*addr = (UINT8) color;
break;
}
default:
break;
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』