初级会员

- 积分
- 157
- 金钱
- 157
- 注册时间
- 2020-12-19
- 在线时间
- 20 小时
|
10金钱
就这个显示一个字符的程序,当中chr是字符串的首地址,也就是要显示字符的地址。
第一个问题 然后chr既然是地址。为什么asc2_2412[chr][t]这样用。 这个chr怎么会是一个整数。
第二个问题 chr-“ ” 也是很不理解。我知道的是这个asc2_2412[chr][t]数组刚开始是空格的编码。
这整个程序我就这里这一点不理解了,心里特堵得慌。
本人新手,对于很多知识学习不到位,希望各位能伸手帮一下!
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{
u8 temp,t,t1;
u8 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2); //μÃμ½×Öìåò»¸ö×Ö·û¶Ôó|μãÕó¼ˉËùÕ¼μÄ×Ö½úêy
chr=chr-' ';//μÃμ½Æ«òÆoóμÄÖμ 就是这一句
for(t=0;t<csize;t++)
{
if(size==12)temp=asc2_1206[chr][t]; //μ÷óÃ1206×Öìå
else if(size==16)temp=asc2_1608[chr][t]; //μ÷óÃ1608×Öìå
else if(size==24)temp=asc2_2412[chr][t]; //μ÷óÃ2412×Öìå
else return; //ûóDμÄ×Ö¿a
for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode); //»-μãoˉêy
else OLED_DrawPoint(x,y,!mode);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
第一个问题:数组定义不能用变量,但是查找可以用变量。chr指字符在数组中的偏移量。
第二个问题:
C第一课,ASCII码表,比如'0'对应16进制0x30,那么获取'9'就是变量9+'0'就获得了‘9’这个ASCII码,'9'在内存中是0x39。实际计算是 0x30+0x9=0x39。
|