DS1302使用手册缩减版,自己整理的,带例程。
实时时钟(RTC)计秒、分、时、日期、月、星期和年,并且带闰年,有效补偿到2100年 宽范围工作电压 2.0V到5.5V,可选工业级温度范围:-40℃到+85℃
二、典型工作电路及外部引脚分布图 
 三、引脚描述 - VCC2接5V主电源
- X1,X2是振荡源,外接32.768kHz晶振,与6pf电容一起工作。
- GND电源地
- RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
- I/O为串行数据输入输出端(双向)
- SCLK为时钟输入端。
- VCC1为后备电源。外接3V纽扣电池,在主电源关闭的情况下,也能保持时钟的连续运行。
注:RST、I/O、SCLK视情况需要上拉电阻 
小时寄存器(85h、84h)的位7用于定义 DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是AM/PM,当为1时,表示 PM。(24小时写入11:00--0x84,0x11; 12小时写入11:00--0x84,0x91; 12小时写入23:00--0x84,0xb1;) 秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为 0时,时钟开始运行。 控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和 RAM 的写操作之前,WP 位必须为0。当 WP 位为1时,写保护位防止对任一寄存器的写操作。 (write_1302(0x8e,0x00)-----禁止写保护,就是关闭写保护功能 write_1302(0x8e,0x00-----打开写保护功能 )

位7:必须是1,如果它为0,则不能把数据写入到 DS1302 中; 位5至位1(A4~A0):指示操作单元的地址; 位6:如果为0,则表示存取日历时钟数据,为1表示存取 RAM 数据; 位0:为0表示要进行写操作,为1表示进行读操作。 
注:读一个字节,SCLK=1,SCLK=0 写一个字节,SCLK=0,SCLK=1 表中CE为文中的RST; 写入时需要将十进制转换成BCD码 #程序参考#
- void write_byte(uchar dat)//写一个字节
- {
- ACC=dat;
- RST=1;
- for(a=8;a>0;a--)
- {
- IO=ACC0;
- SCLK=0;
- SCLK=1;
- ACC=ACC>>1;
- }
- }
- uchar read_byte()//读一个字节
- {
- RST=1;
- for(a=8;a>0;a--)
- {
- ACC7=IO;
- SCLK=1;
- SCLK=0;
- ACC=ACC>>1;
-
- }
- return (ACC);
- }
- //-----------------------------------------------------------------------------------------------------------------------
- void write_1302(uchar add,uchar dat)//向1302芯片写数据函数,写入指定地址、数据
- {
- RST=0;
- SCLK=0;
- RST=1;
- write_byte(add); //写入地址
- write_byte(dat); //写入数据
- SCLK=1; //视情况决定写不写
- RST=0;
- }
- uchar read_1302(uchar add)//向1302芯片读数据函数
-
- {
- uchar temp;
- RST=0;
- SCLK=0;
- RST=1;
- write_byte(add); //读地址
- temp=read_byte(); //读数据
- SCLK=1; //视情况决定写不写
-
- RST=0;
- return(temp);
- }
复制代码
完整的Word格式文档51黑下载地址:
DS1302使用手册缩减版.docx
(328.51 KB, 下载次数: 11)
|