在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹DS1302時鐘芯片的電路和程序

冬至子 ? 來源:永珂在線 ? 作者:沙鷗520 ? 2023-06-13 16:16 ? 次閱讀

DS1302是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實時時鐘芯片。它可以對年、月、日、周、時、分、秒進行計時,并且具有閏年補償?shù)榷喾N功能。

1、參考電路

如下參考電路已經(jīng)過實踐驗證,可正常工作。

圖片

其中,PU151到PU153對應(yīng)DS1302的SCLK,IO,RST引腳,需接到微處理器(如單片機)的相關(guān)引腳。

第8腳加上3V的后備紐扣電池,時鐘在主電路掉電時也可以持續(xù)運行。

2、參考程序

實踐驗證,以下兩個程序任意一個都是可以運行的。

2.1參考程序1

//DS1302設(shè)置子程序

#include "ds1302.h"

sbit sclk=P3^3;//DS1302設(shè)置

sbit rst=P3^5;

sbit io=P3^4; //DS1302三個管腳定義

unsigned char xdata time[7]={23,1,3,20,5,6,7};//0年 1周 2月 3日 4時 5分 6秒 有符號

unsigned char write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//DS1302寫時間寄存器地址

unsigned char read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};//讀

void write_ds1302_byte(unsigned char dat) //DS1302寫字節(jié)函數(shù)

{

unsigned char i;

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

{

sclk=0; //下降沿數(shù)據(jù)有效

io=dat&0x01;

dat=dat>>1;

sclk=1;

}

}

void write_ds1302(unsigned char add,unsigned char dat)

{

rst=0;

nop ();

sclk=0;

nop ();

rst=1;

nop ();

write_ds1302_byte(add);

write_ds1302_byte(dat);//發(fā)送地址后立即發(fā)送數(shù)據(jù),沒有停頓

rst=0;

nop ();

sclk=1;

io=1;

}

unsigned char read_ds1302(unsigned char add)

{

unsigned char i,dat=0;

rst=0;

nop ();

sclk=0;

nop ();

rst=1;

nop ();

write_ds1302_byte(add);//發(fā)送地址后DS1302立即送出數(shù)據(jù)

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

{

dat=dat>>1;

sclk=0;

if(io)

dat=dat|0x80;

sclk=1;

}

rst=0;

nop ();

sclk=0;

nop ();

sclk=1;

io=0; //223-3-20,1改為0后可保存數(shù)據(jù)

return dat;

}

void ds1302_init()

{

unsigned char i,j;

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

{

j=time[i]/10;

time[i]=time[i]%10;

time[i]=time[i]+j*16; //轉(zhuǎn)換為BCD碼

}

write_ds1302(0x8e,0x00);//去除寫保護

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

{

write_ds1302(write_add[i],time[i]);

}

write_ds1302(0x8e,0x80);//加寫保護

}

void read_time()//讀時間

{

unsigned char i;

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

{

time[i]=read_ds1302(read_add[i]);

time[i]=time[i]/16*10+time[i]%16;//轉(zhuǎn)換BCD碼為十進制

}

if (time[4]>23) time[4]=23;

if (time[5]>59) time[5]=59;

if (time[6]>59) time[6]=59;

}

說明:

●如果要讀取時間,就調(diào)用read_time()子程序,讀取的時鐘數(shù)據(jù)存入time[]數(shù)組;

●如果要設(shè)置時間,就調(diào)用ds1302_init()子程序,要設(shè)置的時鐘數(shù)據(jù)預(yù)先存入time[]數(shù)組;

●ds1302_init()子程序不能每次開機運行,只需在修改時間時運行即可。

2.2參考程序2

#include "DS1302.h"

#define uchar unsigned char

#define uint unsigned int

//DS1302宏定義部分

#define WRITE_SECOND 0x80 //寫秒地址

#define WRITE_MINUTE 0x82 //寫分地址

#define WRITE_HOUR 0x84 //寫時地址

#define WRITE_DATE 0x86 //寫日地址

#define WRITE_MONTH 0x88 //寫月地址

#define WRITE_WEEK 0x8A //寫周地址

#define WRITE_YEAR 0x8C //寫年地址

#define WRITE_PROTECT 0x8E //寫保護

#define READ_SECOND 0x81 //讀秒地址

#define READ_MINUTE 0x83 //讀分地址

#define READ_HOUR 0x85 //讀時地址

#define READ_DATE 0x87 //讀日地址

#define READ_MONTH 0x89 //讀月地址

#define READ_WEEK 0x8B //讀周地址

#define READ_YEAR 0x8D //讀年地址

sbit ACC_7 = ACC^7; //位尋址寄存器定義

sbit SCLK = P3^3; // DS1302時鐘信號6腳

sbit DIO= P3^4; // DS1302數(shù)據(jù)信號5腳

sbit CE = P3^5; // DS1302片選7腳

uchar xdata time[7]={23,1,3,2,5,6,7}; //依次存放年月日周時分秒,十進制表示,2023年1月3日周2 5:6:7

//地址、數(shù)據(jù)發(fā)送子程序

void Write1302 ( unsigned char addr,dat )

{

unsigned char i,temp; 

          CE=0;                                          //CE 引腳為低,數(shù)據(jù)傳送中止  

          SCLK=0;                                        //清零時鐘總線  

          CE = 1;                                        //CE 引腳為高,邏輯控制有效



          //發(fā)送地址  

          for ( i=8; i >0; i-- ) //循環(huán)8次移位  

          {         

                        SCLK = 0; 

                        temp = addr; 

                        DIO = (bit)(temp&0x01);                    //每次傳輸?shù)妥止?jié)  

                        addr > >= 1;                                //右移一位  

                        SCLK = 1; 

          }              

          //發(fā)送數(shù)據(jù)  

          for ( i=8; i >0; i-- ) 

          {         

                        SCLK = 0; 

                        temp = dat; 

                        DIO = (bit)(temp&0x01);                   //每次傳輸?shù)妥止?jié)                  

                        dat > >= 1;                                //右移一位     

                        SCLK = 1; 

          } 

          CE = 0;

}

//數(shù)據(jù)讀取子程序

unsigned char Read1302 ( unsigned char addr )

{

unsigned char i,temp,dat1,dat2; 

          CE=0;                     

          SCLK=0;                         

          CE = 1;   

          //發(fā)送地址  

          for ( i=8; i >0; i-- )                                            //循環(huán)8次移位  

          {         

                        SCLK = 0; 

                        temp = addr; 

                        DIO = (bit)(temp&0x01);                            //每次傳輸?shù)妥止?jié)  

                        addr > >= 1;                                        //右移一位  

                        SCLK = 1; 

          } 

          //讀取數(shù)據(jù)  

          for ( i=8; i >0; i-- ) 

          { 

                        ACC_7=DIO; 

                        SCLK = 1; 

                      ACC >>=1; 

                        SCLK = 0; 

          }         

          CE=0; 

          dat1=ACC; 

          dat2=dat1/16;                                                      //數(shù)據(jù)進制轉(zhuǎn)換              

          dat1=dat1%16;                                                      //十六進制轉(zhuǎn)十進制  

          dat1=dat1+dat2*10; 

          return (dat1);

}

//初始化 DS1302

void InitialDS1302(void)

{

//初始化為13年04月24日周3 23時27分56秒 注意,Write1302函數(shù)第二個參數(shù)是16進制,需進行十進制到十六進制轉(zhuǎn)碼,如參數(shù)里:秒0X56表示56秒,0X12表示12月,0x23表示23時等,以下已轉(zhuǎn)碼。

Write1302 (WRITE_PROTECT,0X00);                  //禁止寫保護  

      Write1302 (WRITE_SECOND,time[6]/10*16+time[6]%10);                   //秒位初始化  

      Write1302 (WRITE_MINUTE,time[5]/10*16+time[5]%10);                  //分鐘初始化  

      Write1302 (WRITE_HOUR,time[4]/10*16+time[4]%10);                    //時位初始化

      Write1302 (WRITE_YEAR,time[0]/10*16+time[0]%10);                    //年位初始化

Write1302 (WRITE_MONTH,time[1]/10*16+time[1]%10); //月位初始化

Write1302 (WRITE_DATE,time[2]/10*16+time[2]%10); //日位初始化

Write1302 (WRITE_WEEK,time[3]/10*16+time[3]%10); //星期位初始化

Write1302 (WRITE_PROTECT,0x80);                 //允許寫保護

}

//讀取年月日周時分秒

void read_time(void)

{

time[0]=Read1302(READ_YEAR); //取年

time[1]=Read1302(READ_MONTH); //取月

time[2]=Read1302(READ_DATE); //取日

time[3]=Read1302(READ_WEEK); //取周

time[4]=Read1302(READ_HOUR); //取時

time[5]=Read1302(READ_MINUTE); //取分

time[6]=Read1302(READ_SECOND); //取

}

//// 運行 read_nyrsfm()子函數(shù)讀取數(shù)組time[]顯示即可

說明:

●如果要讀取時間,就調(diào)用read_time()子程序,讀取的時鐘數(shù)據(jù)存入time[]數(shù)組;

●如果要設(shè)置時間,就調(diào)用InitialDS1302()子程序,要設(shè)置的時鐘數(shù)據(jù)預(yù)先存入time[]數(shù)組。

●InitialDS1302()子程序不能每次開機運行,只需在修改時間時運行即可。

以上電路和程序已經(jīng)過實踐驗證,可正常運行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 時鐘芯片
    +關(guān)注

    關(guān)注

    2

    文章

    257

    瀏覽量

    40431
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    450

    瀏覽量

    51339
  • ACC
    ACC
    +關(guān)注

    關(guān)注

    1

    文章

    59

    瀏覽量

    22983
  • 紐扣電池
    +關(guān)注

    關(guān)注

    2

    文章

    112

    瀏覽量

    7879
收藏 0人收藏

    評論

    相關(guān)推薦

    實時時鐘DS1302程序列子

    實時時鐘DS1302程序列子     /*********************************************************************//*
    發(fā)表于 07-08 16:26 ?143次下載

    實時時鐘電路DS1302的原理及應(yīng)用

    實時時鐘電路DS1302的原理及應(yīng)用 現(xiàn)在流行的串行時鐘電路很多,如DS1302
    發(fā)表于 01-01 00:19 ?5767次閱讀
    實時<b class='flag-5'>時鐘</b><b class='flag-5'>電路</b><b class='flag-5'>DS1302</b>的原理及應(yīng)用

    ds1302時鐘電路

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

    ds1302時鐘程序詳解,ds1302程序流程圖(C程序)

    ds1302時鐘程序詳解 DS1302 的控制字如圖2所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302
    發(fā)表于 05-17 13:22 ?8.9w次閱讀
    <b class='flag-5'>ds1302</b><b class='flag-5'>時鐘</b><b class='flag-5'>程序</b>詳解,<b class='flag-5'>ds1302</b><b class='flag-5'>程序</b>流程圖(C<b class='flag-5'>程序</b>)

    完整LCD和DS1302時鐘程序

    完整LCD和DS1302時鐘程序,用1602顯示
    發(fā)表于 02-23 16:32 ?26次下載

    基于DS1302芯片時鐘設(shè)計

    基于DS1302芯片時鐘設(shè)計
    發(fā)表于 03-01 12:21 ?14次下載

    ds1302芯片介紹ds1302工作原理解析

    時鐘小編相信大家見怪不怪了,那么時鐘芯片大家知道是什么嗎?今天我們就來談?wù)勛畛S?b class='flag-5'>時鐘芯片ds1302
    發(fā)表于 10-18 16:19 ?4.6w次閱讀

    DS1302時鐘芯片調(diào)試經(jīng)驗,奉上調(diào)試時鐘芯片DS1302程序

     時鐘芯片DS1302目前得到廣泛的應(yīng)用,但是DS1302的調(diào)試還是很有難度的。這篇文章就來說說DS1302
    發(fā)表于 10-19 11:12 ?1.2w次閱讀

    ds1302時鐘芯片初始化,自動決定DS1302是否需要初始化程序

    ds1302芯片時鐘芯片大家都在問到底需要不需要初始化?這篇文章將會給大家一個程序,可以自動決定DS1302是否需要初始化。
    發(fā)表于 10-19 19:19 ?8808次閱讀

    51單片機DS1302實時時鐘驅(qū)動程序

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

    DS1302時鐘芯片與液晶1602的程序免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是DS1302時鐘芯片與液晶1602的程序免費下載。
    發(fā)表于 11-05 17:06 ?34次下載
    <b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b><b class='flag-5'>芯片</b>與液晶1602的<b class='flag-5'>程序</b>免費下載

    DS1302時鐘芯片的詳細(xì)資料和使用詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是DS1302時鐘芯片的詳細(xì)資料和使用簡介包括了:DS1302簡介,DS130
    發(fā)表于 12-17 08:00 ?0次下載
    <b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b><b class='flag-5'>芯片</b>的詳細(xì)資料和使用詳細(xì)說明

    實驗18:DS1302時鐘

    實驗18:DS1302時鐘程序
    發(fā)表于 01-18 09:08 ?29次下載
    實驗18:<b class='flag-5'>DS1302</b><b class='flag-5'>時鐘</b>

    基于DSP的DS1302芯片使用的程序資料

    基于DSP的DS1302芯片使用的程序,可將時鐘顯示在HS12864-15C上
    發(fā)表于 03-14 16:09 ?9次下載

    DS1302時鐘芯片電路原理

    DS1302時鐘芯片內(nèi)部的時鐘電路原理是基于晶振的振蕩原理。晶振是一種利用晶體的共振特性產(chǎn)生穩(wěn)定的振蕩信號的元件。在
    的頭像 發(fā)表于 11-18 09:40 ?3394次閱讀
    主站蜘蛛池模板: 国产你懂| 免费国产一区 | 亚洲va中文字幕 | 韩日毛片 | 黄色大片aa | 日本aaaa| 免费在线观看a视频 | hdhdhd69日本xxx| 欧美色图在线观看 | 色se01短视频永久免费 | 免费特黄视频 | 天天操天天操 | 久久久国产精品网站 | 欧美成人性高清观看 | 一区在线免费观看 | 天天干天天操天天透 | 最近2018年中文字幕免费图片 | 天天综合天天色 | 午夜剧场毛片 | 亚洲最新黄色网址 | 伊人色强在线网 | 免费在线色| 国内精品久久影视免费 | 97人人艹 | 人人玩人人添天天爽 | 亚欧成人乱码一区二区 | 一区二区视屏 | 玖玖爱这里只有精品 | 四虎最新紧急入口 | 国产手机在线国内精品 | 91久久麻豆| 人人爱干 | 国产黄在线观看 | jizz性欧美12 | 四虎国产精品永久在线网址 | 日本aaaa级| 两性色午夜视频免费老司机 | 香港日本三级在线播放 | 午夜伦理片在线观看 | 一级毛片 在线播放 | 日韩精品一区二区三区免费视频 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品