arduino 串口1602LCD显示模块使用及倒计时器程序

结果如下:
arduino <wbr>串口1602LCD显示模块使用及倒计时器程序
该模块背面接口如下图:

arduino <wbr>串口1602LCD显示模块使用及倒计时器程序
从下到上,分别为 RX,TX,VCC,GND,  rx,tx为 3.3V。
主要说明:
串口波特率9600 kbps。屏幕对比度可通过背面的电位器调整。
1. sc; – 清屏指令
2. sdx,y; – 设置显示位置的坐标,x,y 为行和列坐标,x可是选择0,1;y可以从0-15;
3. ssxxxxxxx; – 在设置的坐标显示字符串,xxxxx为要显示字符串内容;
4. sbx;- 背光设置,sb0;为关额背光,sb1;为开背光;
5. sux;- 光标设置,su1;为显示光标,su1;为显示光标;
6. sfx; – 光标闪设置,sf0;为普通模式,sf1为光标闪烁模式;
7. smx;- 光标移动设置。sm0;光标左移一位;sm1;光标右移一位;

最终程序如下:

unsigned long time;
unsigned long starttime;
int timeHour;  //显示小时数
int timeMinute; //显示分钟数
int timeSecond; //显示秒数
int ledPin=7;
int startHour=1; //初始小时数
int startMinute=58;  //初始分钟数
int startSecond=25;  //初始秒数
void setup()
{
  Serial.begin(9600);
  Serial.print(“sc;”);
  delay(10);
  pinMode(ledPin,OUTPUT);
  starttime=startHour*60*60+startMinute*60+startSecond;
  Serial.print(String(starttime*1000));
}
void loop()
  if (millis()<=starttime*1000)
  {
    time =starttime-(millis()/1000);
    timeHour=time/(60*60);
    timeMinute=(time-timeHour*60*60)/60;
    timeSecond=time-timeHour*60*60-timeMinute*60;
    Serial.print(“sd0,0;”);
    delay(10);
    Serial.print(“ss Time “+Pressing_string(timeHour)+”:”+Pressing_string(timeMinute)+”:”+Pressing_string(timeSecond)+”;”);      
    delay(90);  
   }
   else
   {
     Serial.print(“sd0,0;”);
     delay(10);
     Serial.print(“ss Time 00:00:00;”); 
     delay(10);
     Serial.print(“sd1,0;”);
     delay(10);
     Serial.print(“ssIt’s game over.;”); 
     delay(10);
     digitalWrite(ledPin,HIGH);
   }
}
//n->”0n”,nn->”nn”
String Pressing_string(int myint){
  String mystring; 
  if (myint<10 )
      {
        mystring=”0″+String(myint);
      }
      else
      {
         mystring=String(myint);
      }
  return mystring;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注