OpenEdv-开源电子网

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

关于miniTFTLCD显示字符程序问题

[复制链接]

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2013-8-28
在线时间
0 小时
发表于 2013-9-12 19:39:17 | 显示全部楼层 |阅读模式

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;
      }
  }
 }
 OINT_COLOR=colortemp;             
}

非叠加方式时temp&0x01是取temp的最低位,但是LCD_DrawPoint(x,y); 函数不是先在他的最高位画点吗,不理解为什么是这样的

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

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-9-12 19:49:53 | 显示全部楼层
回复【楼主位】lqf2060:
---------------------------------
temp是一个字节字模,&0x01再>>1或是&0x80再<<1是与字模的取模方向有关,和在屏幕什么位置画点无关。
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2013-8-28
在线时间
0 小时
 楼主| 发表于 2013-9-12 20:17:58 | 显示全部楼层

回复【2楼】ricefat:
---------------------------------
还是搞不懂,他的取模方向是向下的,画点时不是从最高位到最低位吗,就是这段搞不懂
 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 OINT_COLOR=BACK_COLOR;
     LCD_DrawPoint(x,y); 
     temp>>=1; 
    x++;
       }
    x=x0;
    y++;
   }             

求指导

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-12 21:35:54 | 显示全部楼层
回复【3楼】lqf2060:
---------------------------------
你按自己的想法,改代码,再测试下。
这种软件问题,仿真可以很好的帮你解决。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2013-8-28
在线时间
0 小时
 楼主| 发表于 2013-9-14 00:18:59 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
通过刚才对代码的测试和修改,我突然搞懂了,原来那里面取字模的方式是从上到下,右高位,我一直以为是左高位
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 03:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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