OpenEdv-开源电子网

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

LCD滚动显示,可连接汉字字库

[复制链接]

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-2-6 21:29:31 | 显示全部楼层 |阅读模式
上回分享的代码可能有点low了,现在分享可以连接汉字字库的LCD滚动显示,同样在OLED上是可以显示的,算法是一样的。这次把显示的间距改成固定的,不让调显示间距了。个人感觉当字符或者汉字太少的时候显示还是有点BUG,需要再改进。 QQ截图20180206212827.png
QQ截图20180206212844.png

汉字显示实验.rar

6.3 MB, 下载次数: 870

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

使用道具 举报

48

主题

135

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2017-8-29
在线时间
89 小时
发表于 2018-3-1 15:40:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2018-12-6 09:21:11 | 显示全部楼层
赞,看了3.5寸屏幕数据手册没整明白,看看楼主代码0.0
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-12-6 14:01:57 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-12-6 14:59:08 | 显示全部楼层
多谢分享~~
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2019-6-17
在线时间
23 小时
发表于 2019-6-17 18:00:13 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2019-8-10 11:16:26 | 显示全部楼层
感谢分享,你说的BUG也不是大问题,加个参数控制一下就好了,滚动效果就出来了,哈哈
void LCD_RoRoshow(u16 y,u8 *str,u8 size,u8 mode,u8 speed)
  1. /**************************************************************************
  2. 函数功能:滚动显示
  3. 入口参数:y坐标0~319;m显示字数1~4087; speed 滚动速度;
  4. 返回  值:无
  5. **************************************************************************/
  6. void LCD_RoRoshow(u16 y,u8 *str,u8 size,u8 mode,u8 speed)
  7. {
  8.         static u16 n=0,n0=0;
  9.         static u8 Show_Flag1=1,Show_Flag2=0;
  10.         static int x;
  11.         u8 *strbuff;
  12.         u8 bHZ=0; //是否为字符/汉字
  13.         u16 Tolnum=0,numchar=0,numHZ=0;
  14.        
  15.         strbuff=str;  //备用
  16.         x=lcddev.width-1;
  17.        
  18.         if(Show_Flag1)
  19.         {
  20.           while(*str != 0)//数据未结束
  21.     {
  22.         if(!bHZ)
  23.         {
  24.                 if(*str>0x80) bHZ=1;//中文
  25.                 else              //字符
  26.                 {      
  27.                
  28.                         LCD_ShowChar(x-n,y,*str,size,mode);//有效部分写入
  29.                                     str++;
  30.                         x+=size/2; //字符,为全字的一半
  31.                                                 numchar++;
  32.                 }
  33.         }else//中文
  34.         {     
  35.           bHZ=0;//有汉字库                                                         
  36.                 Show_Font(x-n,y,str,size,mode); //显示这个汉字,空心显示
  37.                 str+=2;
  38.                 x+=size;//下一个汉字偏移
  39.                                         delay_ms(speed);
  40.           numHZ++;                                       
  41.         }                                                 
  42.     }  
  43.                
  44.      n++;
  45.                  Tolnum=size/2*numchar+size*numHZ;
  46.                  numchar=0;
  47.                  numHZ=0;
  48.                  x=lcddev.width-1;
  49.                  if(n>(x+Tolnum)) {n=0; Show_Flag1=0; Show_Flag2=1;} //n>239+8倍数 移出屏幕       
  50.   }
  51.              
  52. //        if(n==(Tolnum+size*10))  Show_Flag2=1;    //间隔10个字位再次显示
  53.        
  54.         str=strbuff;
  55.        
  56.         if(Show_Flag2)
  57.         {
  58.           while(*str != 0)//数据未结束
  59.     {
  60.         if(!bHZ)
  61.         {
  62.                 if(*str>0x80) bHZ=1;//中文
  63.                 else              //字符
  64.                 {      
  65.                
  66.                         LCD_ShowChar(x-n0,y,*str,size,mode);//有效部分写入
  67.                                     str++;
  68.                         x+=size/2; //字符,为全字的一半
  69.                                                 numchar++;
  70.                 }
  71.         }else//中文
  72.         {     
  73.           bHZ=0;//有汉字库                                                         
  74.                 Show_Font(x-n0,y,str,size,mode); //显示这个汉字,空心显示
  75.                 str+=2;
  76.                 x+=size;//下一个汉字偏移
  77.                                         delay_ms(speed);
  78.           numHZ++;                                       
  79.         }                                                 
  80.     }  
  81.                
  82.      n0++;
  83.                  Tolnum=size/2*numchar+size*numHZ;
  84.                  numchar=0;
  85.                  numHZ=0;
  86.                  x=lcddev.width-1;
  87.                  if(n0>(x+Tolnum)) {n0=0; Show_Flag2=0;Show_Flag1=1; } //n>239+8倍数 移出屏幕       
  88.   }
  89.      
  90. //        if(n0==(Tolnum+size*10))  Show_Flag1=1;    //间隔10个字位再次显示
  91.        
  92.         //str=strbuff;
  93. }

复制代码
回复 支持 反对

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
825
金钱
825
注册时间
2016-6-28
在线时间
160 小时
发表于 2020-3-9 15:06:47 | 显示全部楼层
你好,请问下在OLED上,是怎么样实现滚动后,最后一个字后面清空的?我按照你这个函数改了后,滚动时最后一个字后面全是这个字
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
 楼主| 发表于 2020-8-3 23:03:20 | 显示全部楼层
zhanming1990 发表于 2020-3-9 15:06
你好,请问下在OLED上,是怎么样实现滚动后,最后一个字后面清空的?我按照你这个函数改了后,滚动时最后一 ...

不好意思,好久没玩这个了,目前我一时半会也不会解决了
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6084
金钱
6084
注册时间
2018-6-27
在线时间
524 小时
发表于 2021-1-7 08:57:10 | 显示全部楼层
谢谢分享,学习学习。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-12-27
在线时间
3 小时
发表于 2021-6-16 23:28:22 | 显示全部楼层

谢谢分享,感谢给了我学习的机会。
回复 支持 反对

使用道具 举报

0

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2021-7-27
在线时间
18 小时
发表于 2021-7-31 21:09:35 | 显示全部楼层

多谢分享~~
回复 支持 反对

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-8-4 12:34:17 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

3

主题

32

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1996
金钱
1996
注册时间
2016-8-7
在线时间
150 小时
发表于 2021-8-4 13:05:51 | 显示全部楼层
支持一下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2022-10-19
在线时间
1 小时
发表于 2023-3-3 15:24:00 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 15:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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