LCD顯示文字的函式-ARM體系-2440
阿新 • • 發佈:2019-01-07
/* *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; } }