OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6197|回复: 5

显示一个字符中的非叠加方式

[复制链接]

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2013-1-27
在线时间
0 小时
发表于 2013-2-6 19:52:15 | 显示全部楼层 |阅读模式
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{  
#if USE_HORIZONTAL==1
#define MAX_CHAR_POSX 312
#define MAX_CHAR_POSY 232 
#else     
#define MAX_CHAR_POSX 232
#define MAX_CHAR_POSY 312
#endif 
    u8 temp;
    u8 pos,t;
u16 x0=x;
u16 colortemp=POINT_COLOR;      
    if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY) return;    
//设置窗口   
num=num-' ';//得到偏移后的值
if(!mode) //非叠加方式
{
for(pos=0;pos<size;pos++)
{
if(size==12)temp=asc2_1206[num][pos];//调用1206字体
else temp=asc2_1608[num][pos]; //调用1608字体
for(t=0;t<size/2;t++)
   {                 
       if(temp&0x01)POINT_COLOR=colortemp;
else POINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);
temp>>=1; 
x++;
   }
x=x0;
y++;
}
}else//叠加方式
{
for(pos=0;pos<size;pos++)
{
if(size==12)temp=asc2_1206[num][pos];//调用1206字体
else temp=asc2_1608[num][pos]; //调用1608字体
for(t=0;t<size/2;t++)
   {                 
       if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点     
       temp>>=1; 
   }
}
}
POINT_COLOR=colortemp;        
}   

在非叠加方式中最后几句 x++; x=x0; y++;分别有什么作用?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-2-6 20:02:10 | 显示全部楼层
这个很好理解吧。比如12字体一排打6个点,然后然后换行打第二排的点,总共y就要加12次。
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2013-1-27
在线时间
0 小时
 楼主| 发表于 2013-2-6 20:05:30 | 显示全部楼层
回复【2楼】miaoguoqiang:
---------------------------------
那为什么在叠加方式就不用呢
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-2-6 20:08:46 | 显示全部楼层
回复【3楼】仰望星空的孩纸:
---------------------------------
一回事,加的t和pos
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2013-1-27
在线时间
0 小时
 楼主| 发表于 2013-2-6 20:10:40 | 显示全部楼层
回复【2楼】miaoguoqiang:
---------------------------------
   if(temp&0x01)POINT_COLOR=colortemp;
else OINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);
temp>>=1; 
x++;
    }
x=x0;
y++;
}

既然要x++,为什么退出if语句又要把x=x0,看不懂
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-2-6 20:13:56 | 显示全部楼层
回复【5楼】仰望星空的孩纸:
---------------------------------
唉,多思考啊!你要不一个点一个点的在草稿上画一下。按照xy坐标一点点的打出来。画完一个正方形你就知道为什么了.

还有是退出内层for而不是if
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 06:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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