2014-03-07 66 views
0

我有一個小問題在這裏。我有16×2液晶顯示器與Arduino接口。在下面的眨眼中,我可以閃爍光標,但我想閃爍數字而不是光標。如何在這裏做arduino。 Keypad shield used 我想眨眼日期變量上面。如何操作液晶顯示屏上的閃爍字符

#include <LiquidCrystal.h> 
LiquidCrystal lcd(12, 11, 7, 6, 5, 4); 
int Blink_pos[6][2]={ 
    { 
    5,0 } 
    , 
    { 
    8,0 } 
    , 
    { 
    11,0 } 
    , 
    { 
    5,1 } 
    , 
    { 
    8,1 } 
    , 
    { 
    11,1 }       
}; 
enum _Screen_edit_item 
{ 
    EDIT_DAY, 
    EDIT_MONTH, 
    EDIT_YEAR, 
    EDIT_HOUR, 
    EDIT_MINUTE, 
    EDIT_SEC 
}; 
typedef enum _Screen_edit_item EDIT_SCREEN_ITEM; 
static int local_day=1; 
static int local_month=3; 
static int local_year=2014; 
int local_s=12; 
static int local_h=23; 
static int local_m=1; 
void setup(){ 
    lcd.begin(16,2); 
    lcd.clear(); 
} 

void loop() 
{ 
    Blink_LCD(); 
} 
void Blink_LCD(){ 
    int j=0; 
    for(int j=0; j<6;j++) 
    { 
    digitalClockDisplay(); 
    lcd.setCursor(Blink_pos[j][0],Blink_pos[j][1]); 
    Serial.print(Blink_pos[j][0]); 
    Serial.print(" "); 
    Serial.println(Blink_pos[j][1]); 

    delay(300); 
    switch(j) 
{ 
case EDIT_DAY: 
    lcd.print(local_day); goto LABEL; 
    break; 
case EDIT_MONTH: 
    lcd.print(local_month); goto LABEL; 
    break; 
case EDIT_YEAR: 
    lcd.print(local_year); goto LABEL; 
    break; 
case EDIT_HOUR: 
    lcd.print(local_h); goto LABEL; 
    break; 
case EDIT_MINUTE: 
    lcd.print(local_m); goto LABEL; 
    break; 
case EDIT_SEC: 
    lcd.print(local_s); goto LABEL; 
    break; 

} 
LABEL: lcd.setCursor(Blink_pos[j][0],Blink_pos[j][1]); 
     lcd.print("_"); 
     delay(300); 
     } 

} 
void digitalClockDisplay() 
{ 
    Serial.print(local_s); 

    lcd.begin(16,2); 
    lcd.setCursor(0,0); 
    lcd.print("Date:"); 
    if((local_day>0) &&(local_day<10)) 
    { 
    lcd.print("0"); 
    lcd.print(local_day); 
    } 
    else{ 
    lcd.print(local_day); 
    } 
    lcd.print("/"); 
    if((local_month>0) &&(local_month<10)) 
    { 
    lcd.print("0"); 
    lcd.print(local_month); 
    } 
    else{ 
    lcd.print("0"); 
    lcd.print(local_month); 
    } 
    lcd.print("/"); 
    lcd.print(local_year); 
    lcd.print(" "); 
    lcd.setCursor(0,1); 
    lcd.print("Time:"); 
    if((local_h>0) &&(local_h<10)){ 
    lcd.print("0"); 
    lcd.print(local_h); 
    } 
    else{ 
    lcd.print(local_h); 
    } 
    lcd.print(":"); 
    if((local_m>0) &&(local_m<10)){ 
    lcd.print("0"); 
    lcd.print(local_m); 
    } 
    else{ 
    lcd.print(local_m); 
    } 
    lcd.print(":"); 
    if((local_s>0) &&(local_s<10)){ 
    lcd.print("0"); 
    lcd.print(local_s); 
    } 
    else{ 
    lcd.print(local_s); 
    } 
    lcd.print(" "); 
} 
+0

是否要打印並閃爍LCD的第二行上的數字(第1行=「輸入密碼」)?或者只是打印任何數字並保持閃爍? –

+0

最好的答案是:不要這樣做。從可用性的角度來看,這是一件可怕的事情。液晶顯示屏吸吮,如果你沒有從正確的角度看,他們會更糟。不要通過閃爍文字讓它變得更糟。由於這實際上不是答案,我選擇Ignacios的答案。 – krowe

+0

你會有什麼建議。我有陣列。這些陣列應該與屏幕上的值顯示存儲。我想看看數組元素 – RKNAYAK

回答

1

在顯示數字和在適當位置顯示空格之間的替代項。

+0

我無法理解 – RKNAYAK

+0

轉到該位置。顯示號碼。延遲。去那個位置。顯示空格。延遲。重複。 –

+0

我按照你的說法做了。但在** digitalClockDisplay()**我說的是,如果不少於9. lcd.print 0和變量。所以當開關函數調用和位置是@ 5打印5而不是05時 – RKNAYAK

0

USE lcd.display();和lcd.noDisplay(); 在循環中使文本閃爍,同時使用延遲功能