OpenEdv-开源电子网

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

好像还有人发过动态显示字符的帖子 自己捉摸的

[复制链接]

59

主题

189

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2012-4-11
在线时间
1 小时
发表于 2012-6-24 19:40:55 | 显示全部楼层 |阅读模式

我的接口不太一样 把整个文件夹发上来也没有用 我只在LCD。c里面加了这个函数
x建议从0开始y随便了  滚动的速度靠那个延时函数
感觉这个函数写的不好,但是实现了先凑合着用吧 哎!!!!
void LCD_GunDong_ShowString(u16 x,u16 y,u8 *p)
{
 u8 i,z;
 u8 table[10];
 for(i=0;i<10;i++)
 {
  table=*p++;
  printf("%c\n",table);
 }
 LCD_Fill(0,16,240,33,WHITE); 
 for(z=0;z<30;)
 { z++;
  for(i=0;i<10;i++)
  {  
          if(x>MAX_CHAR_POSX){x=0;}
          LCD_ShowChar(x,y,table,16,0);
          x+=8;
  }
  x=z*8;
  i=0;
  delay_ms(500);
  LCD_Fill(0,16,240,33,WHITE);
 }

}


 


 

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-6-24 20:47:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

16

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2012-3-20
在线时间
9 小时
发表于 2012-6-24 21:22:55 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

14

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2011-10-14
在线时间
2 小时
发表于 2012-6-25 20:41:46 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2012-6-25 21:38:21 | 显示全部楼层
回复【楼主位】shenhao7752376:
---------------------------------
一次移动8个点的话,会不怎么自然吧,会不会有种卡的感觉。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

59

主题

189

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2012-4-11
在线时间
1 小时
 楼主| 发表于 2012-6-25 22:23:37 | 显示全部楼层
没有看起来还行!!不过这样写感觉不行  必须时时刻刻都要执行这条语句
我的思路是 在0处写数据 写完了擦出 然后在8位置写数据 一次类推
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2012-6-25 22:41:07 | 显示全部楼层
回复【6楼】shenhao7752376:
---------------------------------
能用就行,像这种滚动显示,肯定要占用CPU的时间的,只要你吧CPU的时间分配好了,就OK了。就像动态数码管显示一样,有时可以利用其他函数,打成包做延时来提高CPU的效率。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-7-19
在线时间
0 小时
发表于 2012-7-21 11:06:52 | 显示全部楼层

 改进:解除字符长度限制。

void LCD_GunDong_ShowString(u16 x,u16 y,u8*p)
{
   u8 i,z;
   u8 *table;
   u8 len;
   len = my_strlen(p);
// len = strlen((const char *)p);  //运用c自带
 for(i=0;i<len;i++)
  {
    table=*p++;
    printf("%c\n",table);
  }
   LCD_Fill(0,16,240,33,WHITE);
   for(z=0;z<30;)
  { z++;
  for(i=0;i<len;i++)
  {   
          if(x>MAX_CHAR_POSX){x=0;}
            LCD_ShowChar(x,y,table,16,0);
          x+=8;
  }
  x=z*8;
  i=0;
  delay_ms(500);
  LCD_Fill(0,16,240,33,WHITE);
 }

}

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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