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

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

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

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

PCF8563時(shí)鐘芯片驅(qū)動(dòng)程序分享

姚小熊27 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 2018-03-04 09:26 ? 次閱讀

PCF8563時(shí)鐘芯片簡(jiǎn)介

PCF8563是PHILIPS公司推出的一款工業(yè)級(jí)內(nèi)含I2C總線接口功能的具有極低功耗的多功能時(shí)鐘/日歷芯片。PCF8563的多種報(bào)警功能、定時(shí)器功能、時(shí)鐘輸出功能以及中斷輸出功能能完成各種復(fù)雜的定時(shí)服務(wù),甚至可為單片機(jī)提供看門狗功能。內(nèi)部時(shí)鐘電路、內(nèi)部振蕩電路、內(nèi)部低電壓檢測(cè)電路(1.0V)以及兩線制I2C總線通訊方式,不但使外圍電路及其簡(jiǎn)潔,而且也增加了芯片的可靠性。同時(shí)每次讀寫數(shù)據(jù)后,內(nèi)嵌的字地址寄存器會(huì)自動(dòng)產(chǎn)生增量。當(dāng)然作為時(shí)鐘芯片,PCF8563亦解決了2000年問(wèn)題。因而,PCF8563是一款性價(jià)比極高的時(shí)鐘芯片,它已被廣泛用于電表、水表、氣表、電話、傳真機(jī)、便攜式儀器以及電池供電儀器儀表產(chǎn)品領(lǐng)域。

PCF8563芯片主要電氣特性

1)大工作電壓范圍:1.0~5.5V

2)400KHz 的 I2C 總線接口(VDD=1.8~5.5V 時(shí))。

PCF8563時(shí)鐘芯片驅(qū)動(dòng)程序分享

時(shí)鐘頻率最大400KH

3)i2C 總線從地址:讀,0A3H;寫,0A2H 。

PCF8563時(shí)鐘芯片驅(qū)動(dòng)程序

//******************************************************

//define

//*****************************************************

#define PCF8563_ADDR 0xa2 // PCF8563設(shè)備地址

#define PCF8563_ENABLE 0x00 // 設(shè)置

#define PCF8563_SUBADDR 0x02 // 時(shí)間地址

#define PCF8563_NUMB 0x07 // 時(shí)間個(gè)數(shù)

#define PCF8563_LOOPTIME 0x02 // 循環(huán)次數(shù)

#define PCF8563_SECMASK 0x7f // second

#define PCF8563_MINMASK 0x7f // minute

#define PCF8563_HRMASK 0x3f // hour

#define PCF8563_DAYMASK 0x3f // day

#define PCF8563_WKMASK 0x07 // week

#define PCF8563_MOMASK 0x1f // month

#define PCF8563_YRMASK 0xff // year

*

void DELAY_US(Uint16 i)

{ Uint16 m,n;

for(m=0;m《i;m++)

{

for(n=0;n《5;n++)

{

_nop_();

}

}

} */

/********************************************************

** 函數(shù)名稱: void DELAY_MS(Uint16 i)

** 功能描述: 延時(shí)函數(shù)

** 輸 入:延時(shí)毫秒數(shù)

** 輸 出:無(wú)

********************************************************/

//延時(shí)函數(shù)單位ms

void DELAY_MS(Uint16 i)

{ Uint16 m,n; for(m=0;m《i;m++)

{

for(n=0;n《1000;n++)

{

_nop_();

}

}

}

********************************************************

** 函數(shù)名稱: InitCrt()

** 功能描述: SD2405的初始化

** 輸 入:無(wú) ** 輸 出:無(wú)

********************************************************/

void InitCrt() { //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR; }

/********************************************************

** 函數(shù)名稱: CrtGetDateTime(struct SYSTEM_TIME *Time)

** 功能描述: 讀取時(shí)間

** 說(shuō) 明:將從PCF8563中讀取的時(shí)間放入Time指向的結(jié)構(gòu)中

** 輸 入:無(wú)

** 輸 出:無(wú)

********************************************************/

void CrtGetDateTime(struct SYSTEM_TIME *Time) {

Uint8 buf[8]; //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR;

SM_Receive (PCF8563_SUBADDR , buf, PCF8563_NUMB);

Time-》time.ucSecond = buf[0]; //秒

Time-》time.ucMinute = buf[1]; //分

Time-》time.ucHour = buf[2]; //時(shí)

屏蔽最高位 Time-》date.ucDay = buf[3]; //日

Time-》Week = buf[4]; //星期 Time-》date.ucMonth = buf[5]; //月

Time-》date.ucYear = buf[6]; //年

}

/******************************************************** ** 函數(shù)名稱: CrtSetDateTime(struct SYSTEM_TIME *Time) ** 功能描述: 設(shè)置時(shí)間

** 說(shuō) 明:將Time指向的結(jié)構(gòu)中日期時(shí)間參數(shù)設(shè)置到sd24.5中

** 輸 入:無(wú) ** 輸 出:無(wú)

********************************************************/

void CrtSetDateTime(struct SYSTEM_TIME *Time)

{

Uint8 buf[8]; //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR;

//寫入設(shè)置(時(shí)鐘工作、關(guān)閉復(fù)位、關(guān)閉測(cè)試模式)

buf[0] = PCF8563_ENABLE;

SM_Send (0, buf, 0);

//寫入日期時(shí)間 buf[0] = Time-》time.ucSecond; //秒

buf[1] = Time-》time.ucMinute; //分

buf[2] = Time-》time.ucHour|0x80; //時(shí) 置為24小時(shí)格式

buf[3] = Time-》date.ucDay; //日

buf[4] = Time-》Week; //星期

buf[5] = Time-》date.ucMonth; //月

buf[6] = Time-》date.ucYear; //年

SM_Send (PCF8563_SUBADDR, buf, PCF8563_NUMB);

}

4 新華龍C8051F022的IIC驅(qū)動(dòng)程序

//----------------------------------------------------------------------------- // Includes

//-----------------------------------------------------------------------------

#include 《c8051f020.h》 // SFR declarations #include 《stdio.h》

#include 《king.h》

#include 《DYSJ.h》

#include 《I2C.H》

#define SMB_FREQUENCY 10000L // Target SCL clock rate

/******************************************************************************

** 函數(shù)名稱:void SPI0_Init()

** 功能描述:I2C初始化程序

** 說(shuō) 明:

1. 置下降沿有效

2. 置工作時(shí)鐘2MHz

3.

** 輸 入:無(wú)

** 輸 出:無(wú)

*******************************************************************************/

void I2C_Init() { SMB0CN = 0x44; // Enable SMBus with ACKs on acknowledge cycle

SMB0CR = -80; //257 - (SYSCLK / (2 * SMB_FREQUENCY));

EIE1 |= 2; // SMBus interrupt enable

// EA = 1; // Global interrupt enable

I2cSM_BUSY = 0; // Free SMBus for first transfer.

}

/******************************************************************************

** 函數(shù)名稱:void SM_Send (Uint8 byte_address,Uint8 *SendBuf,Uint8 count)

** 功能描述:I2C寫入程序

** 說(shuō) 明:

1. 等待空閑

2. 寫入數(shù)據(jù)

3. 等待結(jié)束

** 輸 入:地址byte_address、寫入數(shù)據(jù)緩沖區(qū)*SendBuf、數(shù)量count

** 輸 出:無(wú)

*******************************************************************************/

void SM_Send (Uint8 byte_address,Uint8 *SendBuf,Uint8 count)

{

ET0 = 0; //禁止中斷

ET2 = 0; //禁止中斷

while (I2cSM_BUSY); // 等待空閑

I2cSM_BUSY = 1; // 置忙

SMB0CN = 0x44; // SMBus enabled, ACK on acknowledge cycle

I2cSendCount = count; // 置寫入數(shù)量

I2cRecCount = 0; // 讀出數(shù)量清零

I2cSendDPTR = SendBuf; // SMBus enabled, ACK on acknowledge cycle

I2CWRITE; // Chip select + WRITE

I2cMemAdd = byte_address;

STO = 0;

STA = 1; // 啟動(dòng)傳輸

FeedWatchdog(); while (I2cSM_BUSY); // 等待空閑

ET0 = 1; //允許中斷

ET2 = 1; //允許中斷

******************************************************************************

** 函數(shù)名稱:void SM_Receive (Uint8 byte_address,Uint8 *ReadBuf,Uint8 count)

** 功能描述:I2C讀取程序

** 說(shuō) 明:

1. 等待空閑

2. 置地址

3. 讀取數(shù)據(jù)

3. 等待結(jié)束

** 輸 入:地址byte_address、讀取數(shù)據(jù)緩沖區(qū)*SendBuf、數(shù)量count

** 輸 出:無(wú)

*******************************************************************************

/

void SM_Receive (Uint8 byte_address,Uint8 *ReadBuf,Uint8 count)

{

ET0 = 0; //禁止中斷

ET2 = 0; //禁止中斷

while (I2cSM_BUSY); // 等待空閑

I2cSM_BUSY = 1; // 置忙

SMB0CN = 0x44; // SMBus enabled, ACK on acknowledge cycle

I2cSendCount = 0; // 置寫入數(shù)量

I2CWRITE; // Chip select + WRITE

I2cMemAdd = byte_address; //值地址偏移

I2cRecCount = count; //要接收的數(shù)據(jù)個(gè)數(shù)

I2cRecDPTR = ReadBuf; //指向要接收的數(shù)據(jù)區(qū)

STO = 0;

STA = 1; // Start transfer

FeedWatchdog();

while (I2cSM_BUSY); // 等待空閑

ET0 = 1; //允許中斷

ET2 = 1; //允許中斷

}

/******************************************************************************

** 函數(shù)名稱:void SMBUS_ISR (void) interrupt 7

** 功能描述:I2C中斷服務(wù)程序

** 說(shuō) 明:

1. 選擇器件地址

2. 置讀寫地址

3. 讀取或?qū)懭霐?shù)據(jù)

3. 置結(jié)束標(biāo)志

** 輸 入:無(wú)

** 輸 出:無(wú)

*******************************************************************************

/

void SMBUS_ISR (void) interrupt 7

{

switch (SMB0STA) // Status code for the SMBus (SMB0STA register)

{

// 主發(fā)送器/接收器:起始條件已發(fā)送

// 在該狀態(tài)發(fā)送的COMMAND 字的R/W 位總是為0(W),

// 因?yàn)閷?duì)于讀和寫操作來(lái)說(shuō)都必須先寫存儲(chǔ)器地址。

case SMB_START:

SMB0DAT = I2cCOMMAND;

// 寫入含讀寫指令的設(shè)備地址

STA = 0;

// 清除啟動(dòng)標(biāo)志

break;

//主發(fā)送器/接收器:重復(fù)起始條件已發(fā)送。

// 該狀態(tài)只應(yīng)在讀操作期間出現(xiàn),在存儲(chǔ)器地址已發(fā)送并得到確認(rèn)之后

case SMB_RP_START:

I2CREAD; // 置設(shè)備讀

SMB0DAT = I2cCOMMAND; // 寫入含讀寫指令的設(shè)備地址

STA = 0;

break;

// 主發(fā)送器 設(shè)備地址+(W/R)已發(fā)出。收到ACK。

case SMB_MTADDACK:

SMB0DAT = I2cMemAdd; // 發(fā)送要寫入的字節(jié)地址

break;

// 主發(fā)送器 從地址+W已發(fā)出。收到NACK。

case SMB_MTADDNACK:

/* if (I2cSendCount) // 傳輸結(jié)束

{

SMB0DAT = *I2cSendDPTR; //傳送數(shù)據(jù)

I2cSendDPTR++;

I2cSendCount--;

}

else

{ if(I2cRecCount)

{

STO = 0;

STA = 1;

}

else

{

STO = 1

I2cSM_BUSY = 0; //發(fā)送停止,釋放總線

}

}*/

STO = 1;

STA = 1;

break;

// 數(shù)據(jù)字節(jié)已經(jīng)發(fā)出,收到ACK

case SMB_MTDBACK:

if (I2cSendCount) // 傳輸結(jié)束

{

SMB0DAT = *I2cSendDPTR; //傳送數(shù)據(jù)

I2cSendDPTR++;

I2cSendCount--;

}

else

{

if(I2cRecCount)

{ STO = 0;

STA = 1;

}

else

{

STO = 1;

I2cSM_BUSY = 0; //發(fā)送停止,釋放總線

} }

break;

// 數(shù)據(jù)字節(jié)已經(jīng)發(fā)出,收到NACK

case SMB_MTDBNACK:

STO = 1;

STA = 1;

break;

// 主發(fā)送器 競(jìng)爭(zhēng)失敗

case SMB_MTARBLOST:

STO = 1;

STA = 1;

break;

// 從地址+R已經(jīng)發(fā)出,收到ACK

case SMB_MRADDACK:

SysBuff[500]=8;

//if (counter == 1) //只接收一個(gè)字節(jié)時(shí)要設(shè)置接收后就NACK

//{

// AA = 0;

// NACK sent on acknowledge cycle.

//}

break;

// 從地址+R已經(jīng)發(fā)出,收到NACK

case SMB_MRADDNACK:

STO = 0;

STA = 1;

break; // 數(shù)據(jù)字節(jié)收到,ACK已經(jīng)發(fā)出

case SMB_MRDBACK:

if (I2cRecCount == 1)

{

AA = 0;

// 收到最后一個(gè)字節(jié)前準(zhǔn)備設(shè)置最后一個(gè)字節(jié)不應(yīng)答

}

I2cRecCount--;

*I2cRecDPTR = SMB0DAT;

I2cRecDPTR++;

break;

// 數(shù)據(jù)字節(jié)收到,NACK已經(jīng)發(fā)出

case SMB_MRDBNACK:

*I2cRecDPTR = SMB0DAT;

STO = 1;

I2cSM_BUSY = 0; // Free SMBus

break;

// 未知狀態(tài)或總線錯(cuò)誤

default:

STO = 1; // Reset communication.

I2cSM_BUSY = 0;

break;

}

SI=0; // clear interrupt flag

}

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

    關(guān)注

    19

    文章

    849

    瀏覽量

    48234
  • PCF8563
    +關(guān)注

    關(guān)注

    3

    文章

    37

    瀏覽量

    24657
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于PCF8563的數(shù)字時(shí)鐘設(shè)計(jì)

    PCF8563是PHILIPS公司推出的一款工業(yè)級(jí)、內(nèi)含I2C總線接口功能,且具有極低功耗的多功能時(shí)鐘/日歷芯片,還具有多種報(bào)警功能、定時(shí)器功能、時(shí)鐘輸出功能,以及中斷輸出功能等,能完
    發(fā)表于 09-29 14:47 ?7748次閱讀
    基于<b class='flag-5'>PCF8563</b>的數(shù)字<b class='flag-5'>時(shí)鐘</b>設(shè)計(jì)

    通用IIC總線驅(qū)動(dòng)程序設(shè)計(jì)及實(shí)時(shí)時(shí)鐘芯片PCF8563的控制實(shí)例

    ;><strong>通用IIC總線驅(qū)動(dòng)程序設(shè)計(jì)及實(shí)時(shí)時(shí)鐘芯片PCF8563的控制實(shí)例<br/></strong&
    發(fā)表于 10-31 16:24

    PCF8563時(shí)鐘設(shè)計(jì)應(yīng)用

    前天我用時(shí)鐘芯片PCF8563與89C51搭了個(gè)系統(tǒng)!現(xiàn)在分享下PCF8563R日歷時(shí)鐘芯片原理
    發(fā)表于 08-26 11:32

    關(guān)于PCF8563時(shí)鐘模塊的介紹

    ESP32使用PCF8563時(shí)鐘模塊獲取網(wǎng)絡(luò)校時(shí)關(guān)于PCF8563時(shí)鐘模塊的介紹接線下載Arduino的PCF8563庫(kù)關(guān)于
    發(fā)表于 01-17 08:20

    PCF8563匯編程序

    剛寫的一個(gè)PCF8563匯編程序,請(qǐng)教高手?。?!;***************************************************************;PCF8563
    發(fā)表于 08-19 17:41 ?90次下載

    PCF8563驅(qū)動(dòng)程序演示實(shí)驗(yàn)

    PCF8563驅(qū)動(dòng)程序演示實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?b class='flag-5'>PCF8563是一款性價(jià)比極高的時(shí)鐘
    發(fā)表于 09-26 17:40 ?4160次閱讀

    PCF8563日歷時(shí)鐘芯片原理及應(yīng)用設(shè)計(jì)

    PCF8563日歷時(shí)鐘芯片原理及應(yīng)用設(shè)計(jì),很好的學(xué)習(xí)資料。
    發(fā)表于 06-03 15:31 ?80次下載

    時(shí)鐘芯片PCF8563

    時(shí)鐘芯片PCF8563
    發(fā)表于 12-17 10:06 ?16次下載

    pcf8563芯片功能_工作原理和引腳圖及應(yīng)用介紹

    本文開(kāi)始介紹了了pcf8563主要特性與pcf8563引腳圖及功能,其次介紹了pcf8563功能和pcf8563工作原理,最后介紹了PCF8563
    發(fā)表于 03-04 09:01 ?7.3w次閱讀

    如何調(diào)整pcf8563精度_PCF8563高精度調(diào)整方法介紹

    本文開(kāi)始介紹看pcf8563的特性與pcf8563方框圖,其次介紹了pcf8563工作原理及管腳配置圖及說(shuō)明,最后詳細(xì)的闡述了PCF8563實(shí)時(shí)時(shí)鐘
    的頭像 發(fā)表于 03-04 10:00 ?2.4w次閱讀
    如何調(diào)整<b class='flag-5'>pcf8563</b>精度_<b class='flag-5'>PCF8563</b>高精度調(diào)整方法介紹

    基于PCF8563時(shí)鐘芯片的萬(wàn)年歷制作

    PCF8563是PHILIPS公司推出的一款工業(yè)級(jí)內(nèi)含I2C總線接口功能的具有極低功耗的多功能時(shí)鐘/日歷芯片.本文介紹了pcf8563工作原理及pc
    發(fā)表于 03-04 16:07 ?2w次閱讀

    使用單片機(jī)應(yīng)用PCF8563時(shí)鐘芯片的C語(yǔ)言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)應(yīng)用PCF8563時(shí)鐘芯片的C語(yǔ)言程序免費(fèi)下載。
    發(fā)表于 09-04 17:27 ?21次下載
    使用單片機(jī)應(yīng)用<b class='flag-5'>PCF8563</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>芯片</b>的C語(yǔ)言<b class='flag-5'>程序</b>免費(fèi)下載

    微雪電子RTC時(shí)鐘模塊PCF8563 PCF8563T介紹

    PCF8563 RTC時(shí)鐘模塊 I2C接口 帶日歷功能,接入備用電池,掉電后可繼續(xù)工作 型號(hào) PCF8563 RTC Board
    的頭像 發(fā)表于 12-30 08:59 ?7787次閱讀
    微雪電子RTC<b class='flag-5'>時(shí)鐘</b>模塊<b class='flag-5'>PCF8563</b> <b class='flag-5'>PCF8563</b>T介紹

    PCF8563時(shí)鐘模塊

    電子發(fā)燒友網(wǎng)站提供《PCF8563時(shí)鐘模塊.zip》資料免費(fèi)下載
    發(fā)表于 07-19 09:28 ?10次下載
    <b class='flag-5'>PCF8563</b><b class='flag-5'>時(shí)鐘</b>模塊

    PCF8563時(shí)鐘芯片 C語(yǔ)言編程樣例

    PCF8563 時(shí)鐘芯片 C語(yǔ)言編程樣例
    發(fā)表于 10-17 14:46 ?31次下載
    主站蜘蛛池模板: 欧美综合国产精品日韩一 | 青草99 | 3344成年在线视频免费播放男男 | 久久免费精品高清麻豆 | 欧美tube44videos| 一级毛片aaaaaa视频免费看 | 手机在线色 | 欧美αv日韩αv另类综合 | 深爱激情成人 | 97人人揉人人捏人人添 | 人与牲动交xxxxbbbb高清 | 无毒不卡在线观看 | 久久草在线视频播放 | 夜夜爽夜夜 | 又黄又湿又爽 | 视频在线观看高清免费看 | 美女视频永久黄网站免费观看国产 | 成人免费看毛片 | 一区二区中文字幕在线观看 | 五月婷婷深深爱 | 日本bbxx| 开心色xxxx| 婷婷四房综合激情五月性色 | 中文字幕1区2区 | 看黄网站在线看 | 久久九色| 四虎在线免费视频 | 免费一级欧美片片线观看 | 天堂男人网 | 四虎影院视频在线观看 | 97人人看| 在线成人精品国产区免费 | 一级欧美日韩 | 大又大粗又爽又黄少妇毛片 | 国内精品手机在线观看视频 | 国产精品久久久久久久久福利 | 久久免费精品国产72精品剧情 | 久久99精品国产麻豆宅宅 | 亚洲天天操 | 欧美呜巴又大粗又长 | 午夜精品一区二区三区在线视 |