×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-09-01 发布时间:
|

/*

*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;

    }

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会