久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: Arduino電子時鐘 [打印本頁]

作者: CoffeeTea0rI    時間: 2017-5-11 15:45
標題: Arduino電子時鐘
第一步:按照接線圖接線并上傳程序及代碼



Arduino                    DS3231                  LCD1602-I2C


5V                                 VCC                         VCC


GND                             GND                        GND


A4                                 SDA                         SDA


A5                                 SCL                          SCL

第二步:上傳程序代碼,調試模塊,檢驗程序效果


將連接好的Arduino插在電腦上,打開Arduino IDE,上傳代碼到板子里。
/*
  */
#include
#include
#include
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
byte year, month, date, DoW, hour, minute, second;
uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
LiquidCrystal_I2C lcd(0x3F,16,2);
char data[15];
char Str_year[3], Str_month[3], Str_date[3], Str_DoW[3], Str_hour[3], Str_minute[3], Str_second[3];

void setup() {
     // Start the I2C interface
     Wire.begin();
   
     Serial.begin(9600);
         
         lcd.init();
         lcd.backlight();
         
         Serial.println("Please enter the time: year[2]month[2]date[2]DoW[2]hour[2]minute[2]second[2]");
         Serial.println("example: 2014-12-3 Wednesday 14:15:15 enter:14120303141515");
   
               
}
void settime(){
    if (Serial.available() >=14)     //串口讀取數據
         {
    for (int a = 0; a <14; a++)
                 {
                 data[a] = Serial.read();
                 }
                 Str_year[0] = data[0];    //拆包
                 Str_year[1] = data[1];
                 Str_month[0] = data[2];
                 Str_month[1] = data[3];
                 Str_date[0] = data[4];
                 Str_date[1] = data[5];
                 Str_DoW[0] = data[6];
                 Str_DoW[1] = data[7];
                 Str_hour[0] = data[8];
                 Str_hour[1] = data[9];
                 Str_minute[0] = data[10];
                 Str_minute[1] = data[11];
                 Str_second[0] = data[12];
                 Str_second[1] = data[13];
  
                 //Str to byte
                 year = atoi(Str_year);    //轉換數據類型
                 month = atoi(Str_month);
                 date = atoi(Str_date);
                 DoW = atoi(Str_DoW);
                 hour = atoi(Str_hour);
                 minute = atoi(Str_minute);
                 second = atoi(Str_second);
  
  
                 Clock.setSecond(second);//Set the second
                 Clock.setMinute(minute);//Set the minute
                 Clock.setHour(hour);  //Set the hour
                 Clock.setDoW(DoW);    //Set the day of the week
                 Clock.setDate(date);  //Set the date of the month
                 Clock.setMonth(month);  //Set the month of the year
                 Clock.setYear(year);  //Set the year (Last two digits of the year)     
}              
}

void loop() {
  int second,minute,hour,date,month,dow,year,temperature;
    settime();
        
               
   second= Clock.getSecond();
   minute=Clock.getMinute();
   hour=Clock.getHour(h12, PM);
   date=Clock.getDate();
   month=Clock.getMonth(Century);
   year=Clock.getYear();
   dow=Clock.getDoW();
   temperature=Clock.getTemperature();
   
   Serial.print("20");
   Serial.print(year,DEC);
   Serial.print('-');
   Serial.print(month,DEC);
   Serial.print('-');
   Serial.print(date,DEC);
   Serial.print(' ');
   Serial.print(hour,DEC);
   Serial.print(':');
   Serial.print(minute,DEC);
   Serial.print(':');
   Serial.print(second,DEC);
   Serial.print('');
   Serial.print("Temperature=");
   Serial.print(temperature);
   Serial.print('');
   
lcd.setCursor(0, 0);
   lcd.print("20");  // 顯示20世紀
     if (year>=10)  // 顯示年份
       {
       lcd.print(year,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(year,DEC);
       }
   lcd.print('-');
  
   lcd.setCursor(5, 0);
     if (month>=10)  // 顯示月份
       {
       lcd.print(month,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(month,DEC);
       }
   lcd.print('-');
  
   lcd.setCursor(8, 0);
     if (date>=10)  // 顯示日期
       {
       lcd.print(date,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(date,DEC);
       }
  
   lcd.setCursor(11, 0);
     switch (dow)  // 顯示星期
       {
       case 1:  // 當dow等于1時,執行以下語句
         lcd.print("Mon");
         break;
       case 2:  // 當dow等于2時,執行以下語句
         lcd.print("Tue");
         break;
       case 3:
         lcd.print("Wed");
         break;
       case 4:
         lcd.print("Thu");
         break;
       case 5:
         lcd.print("Fri");
         break;
       case 6:
         lcd.print("Sat");
         break;
       case 7:
         lcd.print("Sun");
         break;
       }
  
   lcd.setCursor(0, 1);  //光標移至第2行
     if (hour>=10)  // 顯示小時
       {
       lcd.print(hour,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(hour,DEC);
       }
   lcd.print(':');
  
   lcd.setCursor(3, 1);
     if (minute>=10)  // 顯示分鐘
       {
       lcd.print(minute,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(minute,DEC);
       }
   lcd.print(':');
  
   lcd.setCursor(6, 1);
     if (second>=10)  // 顯示秒鐘
       {
       lcd.print(second,DEC);
       }
       else
       {
       lcd.print("0");
       lcd.print(second,DEC);
       }
  
   lcd.setCursor(9, 1);
   if (Clock.checkAlarmEnabled(1))  // 顯示鬧鐘標識
     {
     lcd.write(0x00);
     }
     else
     {
     lcd.print(' ');
     }
  
   lcd.setCursor(12, 1);
   lcd.print(temperature);  // 顯示溫度
   lcd.write(0xdf);  // 顯示溫度單位
   lcd.print("C");
   delay(1000);
}
     

結果:上電后發現,模塊成功運行,但是顯示的時間不對。


第三步:通過串口,對時鐘模塊進行校準,使得時間正常顯示


找到上面代碼中的如下這一段,你可以了解到,圖中紅框內的文字,是程序本身對校準時間定義了格式,還舉例說明了。所以,可以通過固定的格式,在串口對時鐘模塊進行校準



首先,查看你目前情況下的年月日、北京時間、星期,隨后打開Arduino IDE 的串口監視器,在串口發送框里輸入當前北京時間,并點擊發送,原先的時間就變成了你所要設定的時間。


例:2017年2月28日 星期二 11:45:55秒  

串口輸入的就是:2017022802114555



注意:如果時間顯示不對,請多發送幾次。反應周期有點慢。

作者: 18212609409    時間: 2020-11-24 19:17
頭文件是什么??

作者: 18212609409    時間: 2020-11-25 08:55
代碼不對呀





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 逼逼网 | 国产精品一区二区无线 | 狠狠久久久 | 免费视频成人国产精品网站 | 色婷婷一区二区三区四区 | 在线成人免费视频 | 欧美日韩在线一区二区 | 一区二区av | 免费一级片 | 日韩欧美在线一区 | 99精品免费视频 | 亚洲福利在线观看 | 超碰超碰| 91伊人 | 欧美中国少妇xxx性高请视频 | 久久久久久99| 亚洲欧美视频一区 | 一区二区不卡 | 韩日精品一区 | jvid精品资源在线观看 | 天堂av免费观看 | aaaa日韩 | 成人精品鲁一区一区二区 | 久久99蜜桃综合影院免费观看 | 一级毛片视频 | 国产精品日韩在线 | 久久久久久成人 | 91av视频在线免费观看 | 国产在线一区二区 | 女女百合av大片一区二区三区九县 | 成人午夜性成交 | 日韩精品一区二区三区老鸭窝 | 天天射天天操天天干 | 国产 日韩 欧美 在线 | 影音先锋欧美资源 | 亚洲成人免费观看 | 欧美日韩国产在线观看 | 久久久久久久久久久福利观看 | 免费久久久| 麻豆精品一区二区三区在线观看 | 亚洲精品日韩一区二区电影 |