天嵌 ARM开发社区

 找回密码
 注册
查看: 2255|回复: 6

解释代码

[复制链接]
daouliang 发表于 2011-12-9 22:20:47 | 显示全部楼层 |阅读模式
谁能帮我详细解释下这段代码
void Lcd_PutASCII(unsigned int x,unsigned int y,unsigned char ch,unsigned int c,unsigned int bk_c,unsigned int st)
{
       unsigned short int i,j;
       unsigned char *pZK,mask,buf;
       pZK = &__VGA[ch*16];
       for( i = 0 ; i < 16 ; i++ )
       {
              mask = 0x80;
              buf = pZK[i];
              for( j = 0 ; j < 8 ; j++ )
              {
                     if( buf & mask )
                     {
                            PutPixel(x+j,y+i,c);
                     }
                     else
                     {
                            if( !st )
                            {
                                   PutPixel(x+j,y+i,bk_c);
                            }
                     }
            
                     mask = mask >> 1;
              }
       }
}


void PutPixel(U32 x,U32 y, U32 c )
{
        if ( (x < SCR_XSIZE_TFT) && (y < SCR_YSIZE_TFT) )
                LCD_BUFFER[(y)][(x)] = c;
}
不言DXH 发表于 2011-12-10 13:45:46 | 显示全部楼层
void PutPixel(U32 x,U32 y, U32 c )的大概意思是:在LCD上(x,y)点处,显示一个点,其颜色由c中的数值决定。LCD好像是以左上方的点出发,向下为y轴,向右为x轴;至于颜色的值是具体是怎么设置的,你可以自己去查资料。
void Lcd_PutASCII这个函数是显示一个ASCII字符(颜色由c决定)或者是一个8*16的矩面(颜色由bk_c决定),这个字符宽为8个LCD点,长16个点。pZK = &__VGA[ch*16];这句是在数组中找到要显示的字符;x和y也是定位的;c和bk_c都是颜色值;st表示是显示字符还是有颜色的矩面。
不知道你看没看懂我所说的,我觉得应该是这样的。
回复

使用道具 举报

不言DXH 发表于 2011-12-10 13:47:40 | 显示全部楼层
其实这些都看几次就会明白的,要静下心来好好看,不要一遇到问题就乱了~~:(:)
回复

使用道具 举报

不言DXH 发表于 2011-12-10 14:00:42 | 显示全部楼层
我再更你补充一点吧,ASCII字符的显示在这里面以16字节来表示,16行8列,具体是8*16个点。也就是说:16个字节的每一位二进制数都表示在LCD上对应点的亮灭。由于要一个一点一点的显示,所以在函数中有mask的移位操作。
好像说的不是很明白~~哎,我语文水平有限~~你慢慢理解吧。
回复

使用道具 举报

超级忍者龟 发表于 2011-12-10 17:00:38 | 显示全部楼层
:) 不错,顶一下下!!!!
回复

使用道具 举报

 楼主| daouliang 发表于 2011-12-12 09:01:03 | 显示全部楼层
恩 谢谢前辈们的指教
回复

使用道具 举报

haikong 发表于 2011-12-12 21:45:06 | 显示全部楼层
支持!!!:D
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-18 00:53 , Processed in 2.039842 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表