极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13392|回复: 9

显示屏如何实现定时翻页功能

[复制链接]
发表于 2013-5-14 14:18:01 | 显示全部楼层 |阅读模式
因为身边材料有限,只有一个1602LCD显示屏,因此希望能够实现显示屏翻页,从而能够尽可能多的实现数据的显示。

不过在实践中发现效果并不理想,用了delay( )+lcd.clear( ),没法将此前的数据刷新掉,不知道大家有什么建议么?
回复

使用道具 举报

 楼主| 发表于 2013-5-24 15:50:00 | 显示全部楼层
原本想用以下的代码进行编译编译的,不过发现加入变量之后就出现了一些问题,测出的变量不能实时显示在lcd屏幕上,不知道有木有大神能够帮我解决一下这个问题?

  1. lcd.print("V1=");
  2. lcd.setCursor(0,2);
  3. lcd.print("V2=");
  4. lcd.setCursor(3,0);
  5. lcd.print(vin1);
  6. lcd.print(" V");
  7. delay(500);
  8. lcd.setCursor(3,1);
  9. lcd.print(vin2);
  10. lcd.print(" V");
  11. delay(5000);
  12. lcd.clear();

  13. lcd.print(ohm);
  14. lcd.print(" Ohm");
  15. delay(5000);
  16. lcd.clear();
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-5-24 16:10:02 | 显示全部楼层
用lcd.clear( )来清屏,或者直接写满整个屏,空位用空格代替。
定时翻页可以用定时时中断实现,参考这个贴子 http://www.geek-workshop.com/for ... thread&tid=4021
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-24 22:37:22 | 显示全部楼层
文少 发表于 2013-5-24 16:10
用lcd.clear( )来清屏,或者直接写满整个屏,空位用空格代替。
定时翻页可以用定时时中断实现,参考这个贴 ...

先谢过,我在看了,如果有问题再问
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-24 23:07:17 | 显示全部楼层
文少 发表于 2013-5-24 16:10
用lcd.clear( )来清屏,或者直接写满整个屏,空位用空格代替。
定时翻页可以用定时时中断实现,参考这个贴 ...

我礼拜一再去试一下,板子没带回家,没法实践。。。哎,蛋疼
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-3 21:44:05 | 显示全部楼层
文少 发表于 2013-5-24 16:10
用lcd.clear( )来清屏,或者直接写满整个屏,空位用空格代替。
定时翻页可以用定时时中断实现,参考这个贴 ...

后来试了试还是不行,不太清楚LCD的定时时间如何设定
回复 支持 反对

使用道具 举报

发表于 2013-6-4 16:02:48 | 显示全部楼层
定义个变量alt,当alt小于5时显示一个屏,大于5时显示另一个,大于9时回0
我就是这样做的,请参考

  1.         if(alt++ < 5){
  2.                 lcd.clear();                                                                        //the first screen
  3.                 lcd.setCursor(0,0);
  4.                 lcd.print("T:");
  5.                 lcd.print(temp);

  6.                 lcd.setCursor(9,0);
  7.                 lcd.print("H:");
  8.                 lcd.print(humi);

  9.                 lcd.setCursor(0,1);
  10.                 lcd.print("P:");
  11.                 lcd.print(pm25);

  12.                 lcd.setCursor(9,1);
  13.                 lcd.print("L:");
  14.                 lcd.print(light);
  15.         }else{                                                                                //the second screen
  16.                 lcd.clear();
  17.                 lcd.setCursor(0,0);
  18.                 lcd.print("BP:");
  19.                 lcd.print(bp);

  20.                 lcd.setCursor(0,1);
  21.                 lcd.print("Al:");
  22.                 lcd.print(altitude);
  23.                

  24.         }
  25.         if(alt >9) alt = 0;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-4 16:13:04 | 显示全部楼层
lemodd 发表于 2013-6-4 16:02
定义个变量alt,当alt小于5时显示一个屏,大于5时显示另一个,大于9时回0
我就是这样做的,请参考

alt可以换成时间变量然后进行操作么
之前用的是delay(),发现在delay的阶段CPU处于停滞状态,不能对外部数据进行处理
回复 支持 反对

使用道具 举报

发表于 2013-6-4 16:16:17 | 显示全部楼层
mussBAschaffen 发表于 2013-6-4 16:13
alt可以换成时间变量然后进行操作么
之前用的是delay(),发现在delay的阶段CPU处于停滞状态,不能对外 ...

可以用millis()获得时间,你可以试下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-4 16:21:31 | 显示全部楼层
lemodd 发表于 2013-6-4 16:16
可以用millis()获得时间,你可以试下

嗯,好的
我去试试看,希望多个屏幕的翻转不会出现问题
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 12:01 , Processed in 0.038351 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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