OpenEdv-开源电子网

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

OLED如何滚动显示全汉字

[复制链接]

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-27
在线时间
46 小时
发表于 2017-12-16 13:58:06 | 显示全部楼层 |阅读模式
1金钱
OLED显示汉字并滚动显示
  

OLED如何滚动显示全歌曲名字,如:
http://v.youku.com/v_show/id_XNjEzMDY0NTE2.html


目前通过
uint8_t* f_name_left_shift(uint8_t* s,uint8_t len){
        static uint8_t  file_name3[100]={0},addr_index3=0;
        uint8_t index=0;
        for(index=0;index<len;index++){
                file_name3[index]=s[index];
        }
        file_name3[len]=0x20;
        addr_index3++;
        addr_index3%=len;
       
        return &file_name3[addr_index3];
}


if(my_strlen((const int8_t*)DIS_TMP)>10)
                {//长度一屏显示不完则滚动显示
                        uint8_t bytes_index=0,*pstr1=NULL,ps_buffer[100];
                        printf("111111[%d]\n",disp_scroll1);
               
                        memset(ps_buffer,0x00,100);
                        pstr1=(u8 *)f_name_left_shift((u8 *)DIS_TMP, my_strlen((const int8_t*)DIS_TMP));
                        for(bytes_index=0;bytes_index<my_strlen((const int8_t*)pstr1)+1;bytes_index++){
                                ps_buffer[bytes_index]=pstr1[bytes_index];
                        }
                        Show_Str(0,0,64,16,"        ",16,1);
                        Show_Str(0,0,64,16,ps_buffer,16,1);
                }

对于汉字显示移动时会出现乱码。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-16 20:52:23 | 显示全部楼层
简单问题,多想几天,就出来了。我们综合实验也支持汉字滚动
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-16 23:21:19 | 显示全部楼层
这个很简单,先开辟一个缓冲区,名字叫显存.
在这个缓冲区里面填充好将来要显示的内容.
适当的频率刷新这个缓冲区的内容到OLED显示屏里.
适当的频率更新这个缓冲区的内容,让人看起来在门滚动.
完毕.
回复

使用道具 举报

22

主题

133

帖子

2

精华

高级会员

Rank: 4

积分
901
金钱
901
注册时间
2015-12-24
在线时间
197 小时
发表于 2017-12-17 16:02:39 | 显示全部楼层
本帖最后由 玉麒麟 于 2017-12-17 16:03 编辑

自己玩SSD1306的OLED显示屏的话,控制器本身好像支持页滚动的。其他屏幕不太清楚。也可以看看我写的GUI,里面有滚动处理的一种实现方法。
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-12-18 14:36:11 | 显示全部楼层
和贪吃蛇的有点像.
自己选择的路,成家前走完。
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-27
在线时间
46 小时
 楼主| 发表于 2017-12-19 20:58:26 | 显示全部楼层
正点原子 发表于 2017-12-16 20:52
简单问题,多想几天,就出来了。我们综合实验也支持汉字滚动

综合实验的代码在哪,给个链接
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-21 23:37:24 | 显示全部楼层
STM8Sstu 发表于 2017-12-19 20:58
综合实验的代码在哪,给个链接

买了我们开发板么?
在开发板例程-程序源码-标准例程-寄存器版本里面
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-2-3
在线时间
0 小时
发表于 2018-2-3 21:32:33 | 显示全部楼层
玉麒麟 发表于 2017-12-17 16:02
自己玩SSD1306的OLED显示屏的话,控制器本身好像支持页滚动的。其他屏幕不太清楚。也可以看看我写的GUI,里 ...

对的 它本身可以设置滚动 但是不知道怎么写
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-2-5 03:03:08 | 显示全部楼层
ljy5241 发表于 2018-2-3 21:32
对的 它本身可以设置滚动 但是不知道怎么写

那你慢慢研究下
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

45

主题

99

帖子

1

精华

高级会员

Rank: 4

积分
539
金钱
539
注册时间
2015-7-24
在线时间
89 小时
发表于 2018-3-29 22:57:15 | 显示全部楼层
这个代码是滚动ASCII码的,每次移动一个字节,一个汉字是2个字节,判断一下下一个字符是汉字还是ascii码来决定向前推动几个字节就OK了,大于127的就不属于ASCII码范畴了
我的淘宝小店 shop113369282.taobao.com
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2018-9-30
在线时间
1 小时
发表于 2018-9-30 19:39:19 | 显示全部楼层
我看过几个类似的OLED滚动字帖子,发现都不能从根本上解决问题,
因为首先文件名长度是不确定的,字符也是不确定的,有中文、英文,符号,
如果字库在外挂FLASH的话,最好还是先读到RAM里,这样速度快开销小,
最简单的是通过不停地变X的地址,但缺点也很明显,文件名长度稍长一点,
要么显示不全(超过X地址就退出的话),要么覆盖掉前面的字,拙见
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 07:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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