极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13090|回复: 7

请问如何可以做到LCD 的字符能闪动?

[复制链接]
发表于 2012-7-16 09:50:08 | 显示全部楼层 |阅读模式
我的程序里有按钮控制,不能用delay,

我之前试过用这样的方法去做。

lcd.setCursor(0,1);
lcd.print ("number");
delay(500);
lcd.setCursor(0,1);
lcd.print("  ");
delay(500);

但这样做会影响按钮
回复

使用道具 举报

发表于 2012-7-16 09:53:10 | 显示全部楼层
其实闪屏很快的话我们是很难看得到的,所以建议加一下延时会比较好一点!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 09:55:08 | 显示全部楼层
但是我的程式碼裡面有if statement,這樣會影響按鈕的輸入。
回复 支持 反对

使用道具 举报

发表于 2012-7-16 09:57:39 | 显示全部楼层
tonify 发表于 2012-7-16 09:55
但是我的程式碼裡面有if statement,這樣會影響按鈕的輸入。

你的代码用途是什么方面的?能详细点吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 09:57:43 | 显示全部楼层
  1.         //Begin of set time Menu
  2.                    if(btn == 1){
  3.                                 set_hour_menu:
  4.                                 lcd.clear();
  5.                                 delay(200);                                
  6.                                 do{                                   
  7.                                    btn = btn_selector();                                 
  8.                                    lcd.setCursor(0,0);
  9.                                    lcd.print("Set Hour");
  10.                                    if (set_time_hour >= 10){                                   
  11.                                                            lcd.setCursor(0,1);                                                           
  12.                                                            lcd.print (set_time_hour);    <----閃這個                                                
  13.                                                            }else{
  14.                                                                 lcd.setCursor(0,1);
  15.                                                                 lcd.print ("0"); <---閃這個
  16.                                                                 lcd.setCursor(1,1);
  17.                                                                 lcd.print (set_time_hour);<---閃這個
  18.                                                                 }                                                               
  19.                                    lcd.setCursor(2,1);
  20.                                    lcd.print (":");
  21.                                    if (set_time_min >= 10){                                   
  22.                                                            lcd.setCursor(3,1);                                                                  
  23.                                                            lcd.print (set_time_min);
  24.                                                            }else{
  25.                                                                 lcd.setCursor(3,1);
  26.                                                                 lcd.print ("0");
  27.                                                                 lcd.setCursor(4,1);
  28.                                                                 lcd.print (set_time_min);
  29.                                                                 }
  30.                                    lcd.setCursor(0,3);
  31.                                    lcd.print("[1]+ [2]- [3]< [4]>");                                 
  32.                                    if(btn == 1){                                               
  33.                                                set_time_hour = set_time_hour +1;
  34.                                                delay(200);
  35.                                                if (set_time_hour == 24){
  36.                                                                         set_time_hour = 0;
  37.                                                                        }
  38.                                               }
  39.                                     if(btn == 2){                                               
  40.                                                set_time_hour = set_time_hour - 1;
  41.                                                delay(200);
  42.                                                if (set_time_hour == -1){
  43.                                                                         set_time_hour = 23;
  44.                                                                        }                                                                     
  45.                                               }
  46.                                      if(btn == 3){
  47.                                                   goto root_menu;
  48.                                                  }                     
  49.                                      }while (btn != 4);                                   
  50.                                    lcd.clear();
  51.                                    delay(200);
  52.                                    do{
  53.                                      btn = btn_selector();
  54.                                      lcd.setCursor(0,0);
  55.                                      lcd.print ("Set Minute");
  56.                                      if (set_time_hour >= 10){                                   
  57.                                                            lcd.setCursor(0,1);                                                                  
  58.                                                            lcd.print (set_time_hour);
  59.                                                            }else{
  60.                                                                 lcd.setCursor(0,1);
  61.                                                                 lcd.print ("0");
  62.                                                                 lcd.setCursor(1,1);
  63.                                                                 lcd.print (set_time_hour);
  64.                                                                 }                                                               
  65.                                    lcd.setCursor(2,1);
  66.                                    lcd.print (":");
  67.                                    if (set_time_min >= 10){                                   
  68.                                                            lcd.setCursor(3,1);                                                                  
  69.                                                            lcd.print (set_time_min);
  70.                                                            }else{
  71.                                                                 lcd.setCursor(3,1);
  72.                                                                 lcd.print ("0");
  73.                                                                 lcd.setCursor(4,1);
  74.                                                                 lcd.print (set_time_min);
  75.                                                                 }   
  76.                                    lcd.setCursor(0,3);
  77.                                    lcd.print("[1]+ [2]- [3]< [4]>");                                      
  78.                                    if(btn == 1){                                               
  79.                                                set_time_min = set_time_min +1;
  80.                                                delay(200);
  81.                                                if (set_time_min == 60){
  82.                                                                       set_time_min = 0;
  83.                                                                       }                        
  84.                                                 }
  85.                                    if(btn == 2){                                               
  86.                                                set_time_min = set_time_min - 1;
  87.                                                delay(200);
  88.                                                if (set_time_min == -1){
  89.                                                                       set_time_min = 59;
  90.                                                                       }                                 
  91.                                                }  
  92.                                    if(btn == 3){
  93.                                                 goto set_hour_menu;
  94.                                                }  
  95.                                                
  96.                                         }while(btn != 4);                                         
  97.                                   RTC.adjust(DateTime(now.year(), now.month(),now.day() , set_time_hour,set_time_min ,now.second()));                                                                       
  98.                                   }
  99.                    //End of set time Menu
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 10:37:29 | 显示全部楼层
我是想當我通過LCD 和按鈕選擇小時的時候,小時的數字會閃,選擇分鐘的時候,分鐘會閃
回复 支持 反对

使用道具 举报

发表于 2012-7-16 11:03:57 | 显示全部楼层
tonify 发表于 2012-7-16 10:37
我是想當我通過LCD 和按鈕選擇小時的時候,小時的數字會閃,選擇分鐘的時候,分鐘會閃

选择闪的说法,不就是你让字符刷新一下吗?可以这样理解?就是相当于给LCD屏清屏一下,然后再显示一下东西。你让字符在按键按下时闪一下,就是让字符先给清屏在显示,道理应该是这样子!你试一下,只是建议!
回复 支持 反对

使用道具 举报

发表于 2012-7-16 13:34:12 | 显示全部楼层
可以参考ide 的 example 中 的blink without delay
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-5 00:12 , Processed in 0.048529 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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