LCD显示文字的函数-ARM体系-2440

来源:互联网 发布:linux top 某个进程 编辑:程序博客网 时间:2024/05/19 17:06
/**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;    }}



原创粉丝点击