標(biāo)題: [更好用的單片機(jī)]Stduino學(xué)習(xí)(三十二)DS1302模塊 [打印本頁(yè)]

作者: Stduino    時(shí)間: 2020-8-20 19:40
標(biāo)題: [更好用的單片機(jī)]Stduino學(xué)習(xí)(三十二)DS1302模塊
本帖最后由 Stduino 于 2020-8-20 19:42 編輯

說(shuō)明:
DS1302 是美國(guó) DALLAS 公司推出的一種高性能、低功耗、帶 RAM 的實(shí)時(shí)時(shí)鐘電路, 它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能。且能自動(dòng)對(duì)少于31天的月份日期進(jìn)行調(diào)整,支持12小時(shí)制和24小時(shí)制。

工作電壓為 2.5V 5.5V。其內(nèi)部包含一個(gè)實(shí)時(shí)時(shí)鐘/日歷以及一個(gè)31字節(jié)的RAM,同時(shí)采用三線接口與 CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或 RAM 數(shù)據(jù)。
通過(guò)使用串行通信,可以簡(jiǎn)化DS1302與單片機(jī)的連接。與DS1302連接只需要三條線:
RST(復(fù)位)
I/O(數(shù)據(jù)線)
SCLK(串行時(shí)鐘信號(hào))
可以一次1字節(jié)或最多31個(gè)字節(jié)的在RAM之間傳輸數(shù)據(jù)。
其他引腳的說(shuō)明:
VCC2:工作電源。
GND:電源接地。
VCC1:后背電源,需要3V的紐扣電池,能夠在VCC2斷開(kāi)的時(shí)候繼續(xù)供電,從而保持時(shí)鐘數(shù)據(jù)。
DS1302的運(yùn)行只需要非常低的能耗,維持?jǐn)?shù)據(jù)與時(shí)鐘信息只需要不到1微瓦的功率。其內(nèi)部有多個(gè)寄存器,通過(guò)訪問(wèn)特定地址,我們就能對(duì)這些寄存器進(jìn)行讀寫(xiě)操作。例如訪問(wèn)秒寄存器,我們通過(guò)下圖左一,就可以知道在這里可以引用DS1302.h,讀寫(xiě)操作等繁瑣步驟已經(jīng)被封裝好了。

實(shí)驗(yàn)?zāi)康模?/strong>
在本例中,我們將利用DS1302庫(kù),編寫(xiě)一個(gè)互動(dòng)式的環(huán)境,從而幫助我們讀取時(shí)間、修改時(shí)間、更改12/24小時(shí)制等等。

器材:
Stduino UNO/Nano;杜邦線;DS1302模塊

電路連接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

代碼展示:
#include <DS1302.h>
void setup()
{
  DS1302_Init();
  Serial.begin(9600);
  Serial.println("歡迎使用!");  
  DS1302_GetTime(&DS1302Data);
  Show_RTCC();
  Serial.println("輸入 "help" 獲得幫助");
}
// 獲取串口輸入
void Scan_Input()
{
  String comdata="";
  while (Serial.available() > 0)  
    {
     comdata += char(Serial.read());
     delay(2);
    }
   
    if(comdata.length()==20 && comdata.startsWith("set"))
    {
      Set_Time(comdata);
    }
    else if(comdata=="show")
    {
      Serial.println("The Time Now Is:");
      Show_RTCC();
    }
    else if(comdata=="help")
    {
      help();
    }
    else if(comdata.length()==11 && comdata.endsWith("hours"))
    {
      Set_HourSystem(comdata);
    }
}

//幫助內(nèi)容
void help()
{
  Serial.println("************************************* HELP *****************************************");
  Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");
  Serial.println("Such As Type "set 08 08 08 1 12 00" To Set The Time As 2008-8-8 Monday 12:00");
  Serial.println("Type "show" To Display The Time Now!");
  Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System");
  Serial.println("************************************* HELP *****************************************");
}

void loop()
{
  Scan_Input();
  DS1302_GetTime(&DS1302Data);        //獲取當(dāng)前RTCC值
  
}


實(shí)驗(yàn)效果:
打開(kāi)串口顯示器,顯示了友好的交互界面:



Stduino IDE是一款面向32位處理器快速入門學(xué)習(xí)的集成開(kāi)發(fā)平臺(tái),目前已經(jīng)支持Arduino_Core_STM32框架,集聚快捷、高效、免費(fèi)、開(kāi)源、易得于一身,軟件還集成了GDB調(diào)試功能。IDE當(dāng)前支持的功能有:

    GDB調(diào)試
    封裝庫(kù)下載安裝
    代碼自動(dòng)補(bǔ)全提示
    中英文模式
    UTF-8\GBK編碼格式
    代碼快速格式化
    SWD\串口程序下載&調(diào)試(已驗(yàn)證)
    DFU程序下載方式(待驗(yàn)證)
    USB HID程序下載方式(待驗(yàn)證)
    maple DFU程序下載方式(待驗(yàn)證)
    maple DFU2程序下載方式(待驗(yàn)證)
    MassStorage程序下載方式(待驗(yàn)證)

更多功能細(xì)節(jié)請(qǐng)點(diǎn)擊圖片上水印顯示的網(wǎng)址進(jìn)行了解

已經(jīng)支持的芯片&板型列表:

    Stduino UNO&Nano
    Nucleo 144 boards
    Nucleo 64 boards
    Nucleo 32 boards
    Discovery boards
    Eval boards
    STM32MP1 series coprocessor boards
    Generic STM32F0 boards
    Generic STM32F1 boards
    Generic STM32F3 boards
    Generic STM32F4 boards
    Generic STM32H7 boards
    Generic STM32L0 boards
    3D printer boards
    LoRa boards
    Electronic Speed Controller boards
    Generic flight controllers
    Garatronics boards
    Midatronics boards

更多功能集成正在進(jìn)行中~






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1