色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DS1302時鐘模塊及其驅動代碼介紹

冬至子 ? 來源:清晨的小樹洞 ? 作者:清晨。 ? 2023-11-08 17:18 ? 次閱讀

一、DS1302時鐘模塊

現在流行的串行時鐘電路很多,如DS1302、 DS1307、PCF8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。

DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.0V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。

DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力,該芯片采用普通32.768kHz晶振,DS1302 工作時功耗很低保持數據和時鐘信息時功率小于1mW。

圖1 DS1302時鐘模塊實物圖

圖片

圖2 DS1302時鐘模塊封裝

1.jpg

DS1302時鐘模塊的引腳功能介紹如表1所示,而時序不再做陳述,需要再自行查找資料

二、DS1302時鐘模塊驅動代碼

1.頭文件

#ifndef DS1302_H

#define DS1302_H

#include"STC15F2K60S2.h"

#ifndef UINT8

#define UINT8unsigned char

#endif

#ifndefDS1302_READ_BURST

#defineDS1302_READ_BURST 0xBF

#endif

#ifndefDS1302_WRITE_BURST

#defineDS1302_WRITE_BURST 0xBE

#endif

sbitDS1302_IO = P1^4;

sbitDS1302_RST = P1^5;

sbit DS1302_SCLK =P1^3;

extern UINT8 xdatatime[9];

extern UINT8 xdatadate[11];

extern UINT8 xdatacurrent_day[2];

//聲明全局變量

voidDS1302_WriteByte(UINT8 data_byte);//向ds1302寫一個字節

voidDS1302_ReadByte(UINT8 *data_byte);//從ds1302讀一個字節

voidDS1302_Start();//操作起始信號

voidDS1302_Over();//操作結束信號

voidDS1302_ClearWriteProtection();//清除寫保護

voidDS1302_SetWriteProtection();//設置寫保護

voidDS1302_SetTime(UINT8 *ds1302_set_buffer);//設置ds1302的時間

voidDS1302_ReadTime(UINT8 *ds1302_build_buffer);//讀取ds1302的時間

voidTime_Build();//系統從ds1302讀取時間

void Time_Set();//系統向ds1302設置時間

voidTime_Init();//系統時間初始化

#endif

2.主程序

#include"ds1302.h"

voidDS1302_WriteByte(UINT8 data_byte)//向ds1302寫一個字節

{

UINT8 i;

   

    for (i=0;i< 8;i++)

    {

            DS1302_IO = data_byte &0x01;

            DS1302_SCLK = 1;

            data_byte > >= 1;

            DS1302_SCLK = 0;

    }

}

voidDS1302_ReadByte(UINT8 *data_byte) //從ds1302讀一個字節

{

UINT8 i;

   

    for (i=0;i< 8;i++)

    {      

            *data_byte > >= 1;

            if (DS1302_IO){*data_byte |=0x80;}

            DS1302_SCLK = 1;

            DS1302_SCLK = 0;

    }

}

voidDS1302_Start()//操作起始信號

{

DS1302_RST  = 0;

    DS1302_SCLK = 0;

    DS1302_RST  = 1;

}

voidDS1302_Over()//操作結束信號

{

DS1302_IO  = 0;

    DS1302_RST = 0;

}

voidDS1302_ClearWriteProtection()//清除寫保護

{

DS1302_Start();

    DS1302_WriteByte(0x8E);

    DS1302_WriteByte(0x00);

    DS1302_Over();

}

voidDS1302_SetWriteProtection()//設置寫保護

{

DS1302_Start();

    DS1302_WriteByte(0x8E);

    DS1302_WriteByte(0x80);

    DS1302_Over();

}

voidDS1302_SetTime(UINT8 *ds1302_set_buffer)//突發模式下設置時間

{

UINT8 i;



    DS1302_ClearWriteProtection();



    DS1302_Start();

    DS1302_WriteByte(DS1302_WRITE_BURST);

    for (i=0; i< 7; i++)

    {

            DS1302_WriteByte(ds1302_set_buffer[i]);

    }

    DS1302_WriteByte(0x80);//突發模式一次要寫8個字節,第八個字節是寫保護字節

    DS1302_Over();

}

void DS1302_ReadTime(UINT8*ds1302_read_buffer)//突發模式下讀取時間

{

UINT8 i,Temp;



    DS1302_ClearWriteProtection();



    DS1302_Start();

    DS1302_WriteByte(DS1302_READ_BURST);

    for (i=0; i< 7; i++)

    {

            DS1302_ReadByte(ds1302_read_buffer+i);

    }

    DS1302_ReadByte(&Temp);//突發模式一次讀8個字節,最后一字節讀出來沒用

    DS1302_Over();



    DS1302_SetWriteProtection();

}

voidTime_Build()//讀取時間后轉換成需要的格式

{

UINT8 xdata ds1302_build_buffer[7];

   

    DS1302_ReadTime(ds1302_build_buffer);

    time[7] =(ds1302_build_buffer[0]&0x0f)+'0';

    time[6] =((ds1302_build_buffer[0]&0x70) >>4)+'0';

    time[4] =(ds1302_build_buffer[1]&0x0f)+'0';

    time[3] =((ds1302_build_buffer[1]&0x70) >>4)+'0';

    time[1] =(ds1302_build_buffer[2]&0x0f)+'0';

    time[0] =((ds1302_build_buffer[2]&0x30) >>4)+'0';

    date[9] =(ds1302_build_buffer[3]&0x0f)+'0';

    date[8] =((ds1302_build_buffer[3]&0x30) >>4)+'0';

    date[6] =(ds1302_build_buffer[4]&0x0f)+'0';

    date[5] =((ds1302_build_buffer[4]&0x10) >>4)+'0';

    date[3] =(ds1302_build_buffer[6]&0x0f)+'0';

    date[2] = ((ds1302_build_buffer[6]&0xf0) >>4)+'0';

}

void Time_Set()//將時間轉化為對應格式存入ds1302

{

UINT8 xdata ds1302_set_buffer[7];

   

    ds1302_set_buffer[0]  = time[7]-'0';

    ds1302_set_buffer[0] |=((time[6]-'0')&0x07)< 4;

    ds1302_set_buffer[1]  = time[4]-'0';

    ds1302_set_buffer[1] |=((time[3]-'0')&0x07)< 4;

    ds1302_set_buffer[2]  = time[1]-'0';

    ds1302_set_buffer[2] |=((time[0]-'0')&0x03)< 4;

    ds1302_set_buffer[3]  = date[9]-'0';

    ds1302_set_buffer[3] |=((date[8]-'0')&0x03)< 4;

    ds1302_set_buffer[4]  = date[6]-'0';

    ds1302_set_buffer[4] |=((date[5]-'0')&0x01)< 4;

    ds1302_set_buffer[6]  = date[3]-'0';

    ds1302_set_buffer[6] |=((date[2]-'0')&0x0f)< 4;

    ds1302_set_buffer[5] = 0x01;

    DS1302_SetTime(ds1302_set_buffer);

}

void Time_Init()//開機時間初始化

{

Time_Build();

    current_day[0] = date[8];

    current_day[1] = date[9];//保存當前日期,用于檢測日期變化

}

三、 DS1302時鐘模塊與USRAT HMI通信

uchara=0,b=0,c=0,d=0,e=0,f=0;

/**********顯示時間**********/        

a = date[2];    //發送年數據

b = date[3];

c = date[5];    //發送月數據

d = date[6];

e = date[8];    //發送日數據

f = date[9];

write_txt("t0.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(a);

write_COM(b);

write_COM(34);

write_END();               //結束符

write_txt("t1.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(c);

write_COM(d);

write_COM(34);

write_END();               //結束符

write_txt("t2.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(e);

write_COM(f);

write_COM(34);

write_END();               //結束符





a = time[0];    //發送時數據

b = time[1];

c = time[3];    //發送分鐘數據

d = time[4];

e = time[6];    //發送秒鐘數據

f = time[7];

write_txt("t3.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(a);

write_COM(b);

write_COM(34);

write_END();               //結束符

write_txt("t4.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(c);

write_COM(d);

write_COM(34);

write_END();               //結束符

write_txt("t5.txt=");   //發送文本

write_COM(34);         //雙引號

write_COM(e);

write_COM(f);

write_COM(34);

write_END();               //結束符



write_txt("t9.txt=");   //發送文本

write_COM(34);

if(week==1)                        //發送星期數據

    write_txt("一");

if(week==2)

    write_txt("二");

if(week==3)

    write_txt("三");

if(week==4)

    write_txt("四");

if(week==5)

    write_txt("五");

if(week==6)

    write_txt("六");

if(week==7)

    write_txt("日");

write_COM(34);

write_END();
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    120920
  • 實時時鐘
    +關注

    關注

    4

    文章

    248

    瀏覽量

    65895
  • DS1302
    +關注

    關注

    8

    文章

    449

    瀏覽量

    50759
  • PCF
    PCF
    +關注

    關注

    0

    文章

    32

    瀏覽量

    20927
  • 時鐘模塊
    +關注

    關注

    1

    文章

    52

    瀏覽量

    14405
收藏 人收藏

    評論

    相關推薦

    DS1302時鐘模塊簡介

    Arduino IDE代碼完成效果注意事項材料準備① Arduino UNO R3主板(僅供參考)② DS1302時鐘模塊③ TM1637四位數碼管④ 面包板⑤ 杜邦線若干
    發表于 07-26 06:34

    DS1302基本介紹

    目錄DS1302基本介紹電氣說明引腳說明時序解讀寄存器及其功能地址/命令字節數據字節單次讀/寫操作1. 發送一個byte的數據2.寫入數據3. 接收一個byte的數據4. 讀取數據突發(BURS
    發表于 01-17 06:21

    DS1302驅動代碼分享

    藍橋杯單片機 驅動代碼總結1. DS1302驅動在官方提供的DS1302驅動
    發表于 02-23 06:18

    時鐘芯片DS1302及其在數據記錄中的應用

    時鐘芯片DS1302及其在數據記錄中的應用:介紹了美國DALLAS公司推出的低功耗時鐘芯片DS1302
    發表于 05-22 08:35 ?140次下載

    ds1302時鐘電路

    ds1302時鐘電路
    發表于 05-17 13:17 ?7997次閱讀
    <b class='flag-5'>ds1302</b><b class='flag-5'>時鐘</b>電路

    DS1302時鐘模塊原理圖

    ds1302時鐘芯片簡單介紹及其原理圖。
    發表于 04-06 16:01 ?15次下載

    DS1302時鐘模塊產品使用手冊

    ds1302時鐘芯片簡單介紹及其原理圖。
    發表于 04-06 16:02 ?4次下載

    基于DS1302芯片的時鐘設計

    基于DS1302芯片的時鐘設計
    發表于 03-01 12:21 ?12次下載

    基于實時時鐘模塊 時鐘芯片DS1302

    基于實時時鐘模塊 時鐘芯片DS1302
    發表于 10-16 11:35 ?40次下載
    基于實時<b class='flag-5'>時鐘</b><b class='flag-5'>模塊</b> <b class='flag-5'>時鐘</b>芯片<b class='flag-5'>DS1302</b>

    51單片機DS1302實時時鐘驅動程序

    本文首先闡述了ds1302引腳及功能,其次介紹DS1302的控制字節及電路圖,最后詳細介紹了51單片機DS1302實時
    發表于 05-15 08:45 ?9597次閱讀
    51單片機<b class='flag-5'>DS1302</b>實時<b class='flag-5'>時鐘</b><b class='flag-5'>驅動</b>程序

    DS1302時鐘芯片的使用源代碼免費下載

    本文檔的做作業內容詳細介紹的是DS1302時鐘芯片的使用源代碼免費下載。
    發表于 10-31 17:20 ?17次下載
    <b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b>芯片的使用源<b class='flag-5'>代碼</b>免費下載

    微雪電子RTC 時鐘模塊 DS1302簡介

    RTC 時鐘模塊 DS1302實時時鐘 SPI接口 板載紐扣電池座 支持三線或四線同步串行通信 應用于手持設備 電子手表 鬧鐘 型號 D
    的頭像 發表于 12-30 10:03 ?3410次閱讀
    微雪電子RTC <b class='flag-5'>時鐘</b><b class='flag-5'>模塊</b> <b class='flag-5'>DS1302</b>簡介

    DS1302時鐘芯片的Keil代碼免費下載

    本文檔的主要內容詳細介紹的是DS1302時鐘芯片的Keil代碼免費下載
    發表于 12-23 08:00 ?6次下載
    <b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b>芯片的Keil<b class='flag-5'>代碼</b>免費下載

    畢業設計之時鐘模塊設計DS1302

    模塊:使用的芯片是:DS1302芯片,DS1302芯片是一個自動計時的時鐘模塊,有8個時鐘寄存
    發表于 11-15 11:51 ?4次下載
    畢業設計之<b class='flag-5'>時鐘</b><b class='flag-5'>模塊</b>設計<b class='flag-5'>DS1302</b>

    基于STM32的DS1302時鐘模塊驅動程序(詳細)

    0.96寸OLED屏驅動代碼(SPI驅動)1.項目概述本程序采用的主控芯片為STM32F103RCT6,通過主控芯片驅動DS1302
    發表于 01-18 09:14 ?58次下載
    基于STM32的<b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b><b class='flag-5'>模塊</b><b class='flag-5'>驅動</b>程序(詳細)
    主站蜘蛛池模板: 国产香蕉九九久久精品免费| 成人亚洲视频在线观看| 亚洲精品成人无码A片在线| 亚洲高清视频在线| 张津瑜的9分58秒7段免费| 2019在秋霞理论| A国产一区二区免费入口| 囯产精品一品二区三区| 精品久久久久久久高清| 欧美黑人巨大性极品hd欧| 午夜片无码区在线观看| 野花香在线观看免费观看大全动漫| 69精品国产人妻蜜桃国产毛片| 国产-第1页-浮力影院| 久久久久久电影| 色欲蜜臀AV免费视频| 妖精视频一区二区免费| 久久xxxx| 亚洲女人网| 国产精品人妻无码久久久2022| 美女教师朝桐光在线播放| 偷拍自怕亚洲在线第7页| 这里只有精品在线视频| 男男校园园bl文全肉高h寝室| 亚洲欧美日本国产在线观18| 精品少妇爆AV无码专区| 51精品国产AV无码久久久密桃| 欧美亚洲另类热图| 最近中文字幕MV高清在线| 国产一区内射最近更新| 三级在线观看网站| S货SAO死你BL大点声叫BL| 久久精品观看影院2828| 99久久久国产精品免费蜜臀| 乐乐亚洲精品综合影院| 亚洲 欧美 国产 综合不卡| 国产ZZJJZZJJ视频全免费| 日韩一级精品久久久久| ping色堂| 亚洲第一免费播放区| 美女议员被泄裸照|