OpenEdv-开源电子网

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

LCD取模的问题

[复制链接]

3

主题

138

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2014-5-12
在线时间
4 小时
发表于 2015-1-30 17:38:36 | 显示全部楼层 |阅读模式
5金钱
    原子哥,我想问一下,为什么同样的取模方式,你的可以直接显示,而我的却是乱码?本身是做个简单24*24ascII码的字符数组,没想到没成功,倒是汉字的时候这个倒是可以显示。用的是mini板。
首先是原子哥的方式:
  



取的模:
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x18,0x18,0x00,0x00},/*"!",1*/
{0x00,0x48,0x6C,0x24,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
{0x00,0x00,0x00,0x24,0x24,0x24,0x7F,0x12,0x12,0x12,0x7F,0x12,0x12,0x12,0x00,0x00},/*"#",3*/
{0x00,0x00,0x08,0x1C,0x2A,0x2A,0x0A,0x0C,0x18,0x28,0x28,0x2A,0x2A,0x1C,0x08,0x08},/*"$",4*/
{0x00,0x00,0x00,0x22,0x25,0x15,0x15,0x15,0x2A,0x58,0x54,0x54,0x54,0x22,0x00,0x00},/*"%",5*/
{0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0A,0x76,0x25,0x29,0x11,0x91,0x6E,0x00,0x00},/*"&",6*/



而我的也是一一对应的啊:


我的是:
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/
{0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x00,0x00},/*"#",3*/
{0x00,0x00,0x0E,0x18,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00,0x00,0x00},/*"$",4*/
{0x0F,0x00,0x10,0x84,0x0F,0x38,0x00,0xC0,0x07,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/

最佳答案

查看完整内容[请看2#楼]

对比一下就明白了   很明显  上面的点阵    取模方式是逐行式  取模走向是低位在前
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-1-30 17:38:37 | 显示全部楼层
对比一下就明白了   很明显  上面的点阵    取模方式是逐行式  取模走向是低位在前
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-1-30 17:38:37 | 显示全部楼层
回复【5楼】伤剑使者:
--------------------------------- 
肯定要改啊   你要计算下   24*24的点阵   一个字符多少个字节  这个对应着这个循环  for(pos=0;pos<size;pos++)   里的size   很明显这儿size不应该是24
然后呢,你应该记得刚刚的取模方式    逐行 低位在前   也就要求在显示的时候遵循这个规则  那就是把点阵字符数据一行一行的 低位在前的方式  显示出来
那么这儿涉及到一个问题--什么时候换行: 24的点阵,字符占一半=12,也就是说从点阵第一个字节开始,每显示完12个点(x=x0+12),你需要将坐标调到下一行起始点(x=x0;y+=1;)
然后等点阵显示完(size个字节) 就OK了>
回复

使用道具 举报

3

主题

138

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2014-5-12
在线时间
4 小时
 楼主| 发表于 2015-1-30 18:20:07 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
好吧 对的我是对着教程来改的,你这么改确实是对的,谢谢,倒是
对比一下就明白了   很明显 ,这个怎么看的那么快啊
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-1-30 18:31:20 | 显示全部楼层
多看多想 多观察    答案自然就出来了
回复

使用道具 举报

3

主题

138

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2014-5-12
在线时间
4 小时
 楼主| 发表于 2015-1-30 19:28:16 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
改成24*24 还是有点显示不全的样子,是不是这里得修改什么呢
u16 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 if(size==16) temp=asc2_1608[num][pos];  //
else if(size==24) temp=asc2_2412[num][pos]; //自己定义的数组
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++;
}
}
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-30 20:31:12 | 显示全部楼层
有个工具叫Beyond Compare
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 07:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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