tonify 发表于 2012-7-16 09:50:08

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

我的程序里有按钮控制,不能用delay,

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

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

但这样做会影响按钮

Randy 发表于 2012-7-16 09:53:10

其实闪屏很快的话我们是很难看得到的,所以建议加一下延时会比较好一点!

tonify 发表于 2012-7-16 09:55:08

但是我的程式碼裡面有if statement,這樣會影響按鈕的輸入。

Randy 发表于 2012-7-16 09:57:39

tonify 发表于 2012-7-16 09:55 static/image/common/back.gif
但是我的程式碼裡面有if statement,這樣會影響按鈕的輸入。

你的代码用途是什么方面的?能详细点吗?

tonify 发表于 2012-7-16 09:57:43

      //Begin of set time Menu
                   if(btn == 1){
                              set_hour_menu:
                              lcd.clear();
                              delay(200);                              
                              do{                                 
                                 btn = btn_selector();                                 
                                 lcd.setCursor(0,0);
                                 lcd.print("Set Hour");
                                 if (set_time_hour >= 10){                                 
                                                         lcd.setCursor(0,1);                                                         
                                                         lcd.print (set_time_hour);    <----閃這個                                                
                                                         }else{
                                                                lcd.setCursor(0,1);
                                                                lcd.print ("0"); <---閃這個
                                                                lcd.setCursor(1,1);
                                                                lcd.print (set_time_hour);<---閃這個
                                                                }                                                               
                                 lcd.setCursor(2,1);
                                 lcd.print (":");
                                 if (set_time_min >= 10){                                 
                                                         lcd.setCursor(3,1);                                                                  
                                                         lcd.print (set_time_min);
                                                         }else{
                                                                lcd.setCursor(3,1);
                                                                lcd.print ("0");
                                                                lcd.setCursor(4,1);
                                                                lcd.print (set_time_min);
                                                                }
                                 lcd.setCursor(0,3);
                                 lcd.print("+ - < >");                                 
                                 if(btn == 1){                                             
                                             set_time_hour = set_time_hour +1;
                                             delay(200);
                                             if (set_time_hour == 24){
                                                                        set_time_hour = 0;
                                                                     }
                                              }
                                    if(btn == 2){                                             
                                             set_time_hour = set_time_hour - 1;
                                             delay(200);
                                             if (set_time_hour == -1){
                                                                        set_time_hour = 23;
                                                                     }                                                                     
                                              }
                                     if(btn == 3){
                                                goto root_menu;
                                                 }                     
                                     }while (btn != 4);                                 
                                 lcd.clear();
                                 delay(200);
                                 do{
                                     btn = btn_selector();
                                     lcd.setCursor(0,0);
                                     lcd.print ("Set Minute");
                                     if (set_time_hour >= 10){                                 
                                                         lcd.setCursor(0,1);                                                                  
                                                         lcd.print (set_time_hour);
                                                         }else{
                                                                lcd.setCursor(0,1);
                                                                lcd.print ("0");
                                                                lcd.setCursor(1,1);
                                                                lcd.print (set_time_hour);
                                                                }                                                               
                                 lcd.setCursor(2,1);
                                 lcd.print (":");
                                 if (set_time_min >= 10){                                 
                                                         lcd.setCursor(3,1);                                                                  
                                                         lcd.print (set_time_min);
                                                         }else{
                                                                lcd.setCursor(3,1);
                                                                lcd.print ("0");
                                                                lcd.setCursor(4,1);
                                                                lcd.print (set_time_min);
                                                                }   
                                 lcd.setCursor(0,3);
                                 lcd.print("+ - < >");                                    
                                 if(btn == 1){                                             
                                             set_time_min = set_time_min +1;
                                             delay(200);
                                             if (set_time_min == 60){
                                                                      set_time_min = 0;
                                                                      }                        
                                                }
                                 if(btn == 2){                                             
                                             set_time_min = set_time_min - 1;
                                             delay(200);
                                             if (set_time_min == -1){
                                                                      set_time_min = 59;
                                                                      }                                 
                                             }
                                 if(btn == 3){
                                                goto set_hour_menu;
                                             }
                                             
                                        }while(btn != 4);                                       
                                  RTC.adjust(DateTime(now.year(), now.month(),now.day() , set_time_hour,set_time_min ,now.second()));                                                                     
                                  }
                   //End of set time Menu

tonify 发表于 2012-7-16 10:37:29

我是想當我通過LCD 和按鈕選擇小時的時候,小時的數字會閃,選擇分鐘的時候,分鐘會閃

Randy 发表于 2012-7-16 11:03:57

tonify 发表于 2012-7-16 10:37 static/image/common/back.gif
我是想當我通過LCD 和按鈕選擇小時的時候,小時的數字會閃,選擇分鐘的時候,分鐘會閃

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

davidce 发表于 2012-7-16 13:34:12

可以参考ide 的 example 中 的blink without delay
页: [1]
查看完整版本: 请问如何可以做到LCD 的字符能闪动?