资源简介

DS3231官方资料,采用官方的8051微控制器DS2250作为主控芯片,资源中提供官方例程、电路原理图、中文数据手册,开发者可以方便的修改程序

资源截图

代码片段和文件信息

/***************************************************************************/
/* DEMO3231.C                                                              */
/***************************************************************************/
#include                       /* Prototypes for I/O functions */
#include                      /* Register declarations for DS5000 */
/************************* bit definitions ****************************/
sbit    scl = P0^0;             /* I2C pin definitions */
sbit    sda = P0^1;
sbit    E = P1^0;               /* DCM LCD module control signal definitions */
sbit    RS = P1^1;
sbit    RW = P1^2;
sbit    CLK = P2^5;             /* DS1267 control signal definitions */
sbit    RSTb = P2^6;
sbit    DQ = P2^7;
sbit    int0 = P3^2;
/**************************** defines *******************************/
#define ADDRTC  0xd0    /* DS3231 slave address (write) */
#define ACK     0
#define NACK    1
/*********************** Function Prototypes **************************/
void    start();
void    stop();
uchar   i2cwrite(uchar d);
uchar   i2cread(char);
void    wr_dsp_dat(uchar);
void    wr_dsp_ins(uchar);
uchar   rd_dsp_ins();
void    hex2asc(uchar);
void    dsp_adj(uchar pos);
void    init_dsp();
void    writebyte();
void    initialize_DS3231();
void    disp_regs();
void    rd_temp();
void    frq_out_tog();
void    init_alrm();
void    comm_init();
/************************* Global Variables ***************************/
xdata   uchar   sec min hr dy dt mn yr;
/**************************** functions ******************************/
void start()            /* --------- Initiate start condition ---------- */
{
        sda = 1;  scl = 1;
        sda = 0; 
}
void stop()             /* ---------- Initiate stop condition ----------- */
{
        sda = 0;  sda = 0;
        scl = 1;  scl = 1;  sda = 1;
}
uchar i2cwrite(uchar d)         /* ----------------------------- */
{
uchar i;

        scl = 0;
        for (i = 0;i < 8; i++)
        {
                if (d & 0x80)
                        sda = 1; /* Send the msbits first */
                else
                        sda = 0;
                scl = 0;
                scl = 1;
                d = d << 1;     /* do shift here to increase scl high time */
                scl = 0;
        }
        sda = 1;        /* Release the sda line */
        scl = 0;
        scl = 1;
        i = sda;
        if (i) printf(“Ack bit missing  %02X\n“(unsigned int)d);
        scl = 0;
        return(i);
}
uchar i2cread(char b)   /* ----------------------------------- */
{
uchar i d;

        d = 0;
        sda = 1;             /* Let go of sda line */
        scl = 0;
        for (i = 0; i < 8; i++) /* read the msb first */
        {
                scl = 1;
                d = d << 1;
                d = d | (unsigned char)sda;
                scl = 0;
        }
        sda = b;          /* low for ack high for nack */
        scl = 1;
        scl = 0;

        sda 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      37376  2014-08-17 23:41  应用笔记3506.doc

     文件     108638  2014-08-17 23:35  3506Fig02.pdf

     文件      15325  2014-08-17 23:32  AN3506_software.c

     文件    1484415  2014-08-17 23:37  DS3231_cn.pdf

----------- ---------  ---------- -----  ----

              1645754                    4


评论

共有 条评论