欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

DS1302時(shí)鐘芯片的電路和程序

冬至子 ? 來源:永珂在線 ? 作者:沙鷗520 ? 2023-11-02 14:07 ? 次閱讀

本文介紹DS1302時(shí)鐘芯片的電路和程序。

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

1、參考電路

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

圖片

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

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

2、參考程序

實(shí)踐驗(yàn)證,以下兩個(gè)程序任意一個(gè)都是可以運(yùn)行的。

2.1參考程序1

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

#include "ds1302.h"

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

sbit rst=P3^5;

sbit io=P3^4; //DS1302三個(gè)管腳定義

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

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

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; //下降沿?cái)?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);//去除寫保護(hù)

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

{

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

}

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

}

void read_time()//讀時(shí)間

{

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碼為十進(jìn)制

}

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

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

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

}

說明:

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

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

●ds1302_init()子程序不能每次開機(jī)運(yùn)行,只需在修改時(shí)間時(shí)運(yùn)行即可。

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 //寫時(shí)地址

#define WRITE_DATE 0x86 //寫日地址

#define WRITE_MONTH 0x88 //寫月地址

#define WRITE_WEEK 0x8A //寫周地址

#define WRITE_YEAR 0x8C //寫年地址

#define WRITE_PROTECT 0x8E //寫保護(hù)

#define READ_SECOND 0x81 //讀秒地址

#define READ_MINUTE 0x83 //讀分地址

#define READ_HOUR 0x85 //讀時(shí)地址

#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時(shí)鐘信號(hào)6腳

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

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

uchar xdata time[7]={23,1,3,2,5,6,7}; //依次存放年月日周時(shí)分秒,十進(jìn)制表示,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;                                        //清零時(shí)鐘總線  

          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ù)進(jìn)制轉(zhuǎn)換              

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

          dat1=dat1+dat2*10; 

          return (dat1);

}

//初始化 DS1302

void InitialDS1302(void)

{

//初始化為130424日周3 23時(shí)2756秒  注意,Write1302函數(shù)第二個(gè)參數(shù)16進(jìn)制,需進(jìn)行十進(jìn)制到十六進(jìn)制轉(zhuǎn)碼,如參數(shù)里:秒0X56表示56秒,0X12表示12月,0x23表示23時(shí)等,以下已轉(zhuǎn)碼。

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

          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);                    //時(shí)位初始化

          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);                 //允許寫保護(hù)

}

//讀取年月日周時(shí)分秒

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); //取時(shí)

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

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

}

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

說明:

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

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

●InitialDS1302()子程序不能每次開機(jī)運(yùn)行,只需在修改時(shí)間時(shí)運(yùn)行即可。

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

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

    關(guān)注

    4

    文章

    248

    瀏覽量

    65984
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2274

    瀏覽量

    82802
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    449

    瀏覽量

    50836
  • 電流充電器
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

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

    關(guān)注

    2

    文章

    112

    瀏覽量

    7687
收藏 人收藏

    評論

    相關(guān)推薦

    實(shí)時(shí)時(shí)鐘DS1302程序列子

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

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

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

    ds1302時(shí)鐘電路

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

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

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

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

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

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

    DS1302芯片的使用,時(shí)鐘芯片DS1302功能匯總

    DS1302大家都知道他是時(shí)鐘芯片,知道了原理肯定想知道功能和操作方法,這篇文章就是主要來說DS1302芯片的功能以及
    發(fā)表于 10-19 10:43 ?9610次閱讀

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

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

    ds1302時(shí)鐘芯片初始化,自動(dòng)決定DS1302是否需要初始化程序

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

    DS1302時(shí)鐘芯片與液晶1602的程序免費(fèi)下載

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

    時(shí)鐘芯片DS1302的原理及使用

    一.描述DS1302時(shí)鐘芯片是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。它可以對年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)
    發(fā)表于 01-17 13:03 ?29次下載
    <b class='flag-5'>時(shí)鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的原理及使用

    實(shí)驗(yàn)18:DS1302時(shí)鐘

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

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

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

    介紹DS1302時(shí)鐘芯片電路程序

    DS1302是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。它可以對年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),并且具有閏年補(bǔ)償?shù)榷喾N功能。
    的頭像 發(fā)表于 06-13 16:16 ?2463次閱讀
    介紹<b class='flag-5'>DS1302</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>芯片</b>的<b class='flag-5'>電路</b>和<b class='flag-5'>程序</b>

    DS1302時(shí)鐘芯片電路原理

    DS1302時(shí)鐘芯片內(nèi)部的時(shí)鐘電路原理是基于晶振的振蕩原理。晶振是一種利用晶體的共振特性產(chǎn)生穩(wěn)定的振蕩信號(hào)的元件。在
    的頭像 發(fā)表于 11-18 09:40 ?3038次閱讀