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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10227|回復: 2
打印 上一主題 下一主題
收起左側

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



注意:如果時間顯示不對,請多發送幾次。反應周期有點慢。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:827989 發表于 2020-11-24 19:17 | 只看該作者
頭文件是什么??
回復

使用道具 舉報

板凳
ID:827989 發表于 2020-11-25 08:55 | 只看該作者
代碼不對呀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品-国产精品 | www久久久 | 粉嫩一区二区三区四区公司1 | 久久婷婷色 | 亚洲精品自在在线观看 | 欧美亚洲激情 | 99精品在线观看 | 国产一区二区久久 | 成人在线免费观看视频 | 阿v视频在线观看 | 一区二区免费视频 | 国产乱精品一区二区三区 | 超碰在线97国产 | 2022精品国偷自产免费观看 | 日韩国产精品一区二区三区 | 久久久久亚洲精品 | 99国产精品一区二区三区 | 81精品国产乱码久久久久久 | 国产欧美在线观看 | 黄网站涩免费蜜桃网站 | 亚洲国产成人精品久久久国产成人一区 | 国产精品久久久久久久久久久新郎 | 国产三级一区二区三区 | 亚洲一区二区三区桃乃木香奈 | 欧美日韩中文字幕在线 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲福利一区 | 亚洲精品久久久久久久久久久 | 黄网免费看 | 久久一区视频 | 国产精品18久久久久久白浆动漫 | 毛片免费视频 | 午夜ww| 91精品中文字幕一区二区三区 | 蜜桃在线一区二区三区 | 日本在线看片 | 久久久久久国产 | 日本三级网站在线 | 又爽又黄axxx片免费观看 | 精品欧美 | 成年人黄色小视频 |