OpenEdv-开源电子网

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

请教例说STM32书中问题

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-6-25
在线时间
0 小时
发表于 2012-6-25 12:18:52 | 显示全部楼层 |阅读模式
原子兄,我一直看你们的书学习,现在学到TFT这里,看了下代码
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)

#ifdef USE_HORIZONTAL
#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-' ';//得到偏移后的值 ' ' 这个是32
 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//叠加方式

其中 num=num-' ';//得到偏移后的值 ' ' 这个是32
这句是何意,请指教,谢谢。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-6-25 12:28:42 | 显示全部楼层
这个你明白字符点阵是怎么存储的,就知道为什么要减去32了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2012-5-10
在线时间
0 小时
发表于 2012-6-25 14:23:40 | 显示全部楼层
32是空格的ascii的值!因为
#ifndef __FONT_H
#define __FONT_H     
//常用ASCII表
//偏移量32
//ASCII字符集
//偏移量32
//大小:12*6
const unsigned char asc2_1206[95][12]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00},/*"!",1*/
{0x00,0x14,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
能过上面可知,如果你的字母是空格,那么刚好定位到数据的第一元素!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-6-25 16:02:15 | 显示全部楼层
楼上正解.
回复 支持 反对

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2012-5-10
在线时间
0 小时
发表于 2012-6-25 16:09:34 | 显示全部楼层
我只是把我知道的说一下!呵呵!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-6-25
在线时间
0 小时
 楼主| 发表于 2012-6-25 19:30:14 | 显示全部楼层
非常感谢 为什么要过一个字母呢
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-6-25
在线时间
0 小时
 楼主| 发表于 2012-6-25 22:04:17 | 显示全部楼层
请问是不是 先“  接着空格 然后才是字符呢?最后是'\0’  ”
我C语言谈不上功底了  只有初中水平, 见笑了
肯请楼上能不能将
如果你的字母是空格,那么刚好定位到数据的第一元素!!!
讲细点,

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-6-26 01:06:10 | 显示全部楼层
回复【7楼】特工:
---------------------------------
你知道asc2_1206怎么来的么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-6-25
在线时间
0 小时
 楼主| 发表于 2012-6-26 12:07:42 | 显示全部楼层
 就是二维数组吗,我用
LCD_ShowChar(100,100,1,16,0);
试试看能不能显示字符1
前提是// num=num-' ';不要。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-6-26 12:50:22 | 显示全部楼层
你自己写一个字符显示的工程吧.比较清楚的认识一下.包括点阵字库的提取,制作,代码编写一条龙走一遍,你就很清白了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-6-25
在线时间
0 小时
 楼主| 发表于 2012-7-1 20:11:11 | 显示全部楼层
谢谢原子,别人指点后一定要自己消化。我已经懂了,现在正在写显示汉字函数
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-3-23
在线时间
8 小时
发表于 2021-5-9 22:04:45 | 显示全部楼层

如果不减,那意思就是永远取不到自己想要显示的字符,取到的永远是自己想要显示的字符的在字符点阵中的前一个字符是吗?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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