无OS的课程基本都完成了。有之前C/C++的基础,完成得还是比较轻松的。
刚刚完成了 从uC/OS中提取字库,并移植到无OS的环境下。
理解了:
点阵字库实际上就是点阵的二进制表示,通常英文字符用16*8的点阵,中文字符用16*16的点阵。
比如一个英文字符,在字库中就是用16个8位的数来表示,每个数代表点阵的一行。
类似地,汉字在字库中就是用16个16位的数来表示。如下图中,每个点,黑色为1,白色为0,就组成了点阵字库

几个关键的函数
//在显示上显示一个英文字符(ASCII码)
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;
}
}
}
/*****************************************************

基于C语言和无操作系统环境,理解并实现了从uC/OS中提取字库的移植过程。点阵字库中,英文字符用16*8点阵,中文字符用16*16点阵表示,通过16个8位或16位数值来存储。重点在于掌握点阵字库的二进制表示和关键操作函数。
最低0.47元/天 解锁文章
5796

被折叠的 条评论
为什么被折叠?



