ds1302中文学习资料篇
附有C程序的学习资料
1 DS1302 简介:
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图1 DS1302的外部引脚分配
各引脚的功能为:
Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线;
CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,
图2 DS1302的内部结构
附有C程序的学习资料
CE提供结束单字节或多字节数据传输的方法。 DS1302有下列几组寄存器:
① DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如图3所示。
图 3 DS1302有关日历、时间的寄存器
小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示PM。在24小时模式时,位5是第二个10小时位。
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。
控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。 ②DS1302有关RAM的地址
DS1302中附加31字节静态RAM的地址如图4所示。
图4
③ DS1302的工作模式寄存器
所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。突发模式寄存器如图5所示。
附有C程序的学习资料
2 读写时序说明
DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。 要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图6。
图5
④此外,DS1302还有充电寄存器等。
图6 控制字(即地址及命令字节)
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):指示操作单元的地址; 位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。
控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图7 。
附有C程序的学习资料
具体操作见驱动程序。
3 电路原理图:
电路原理图如图8,DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。
图7 数据读写时序
图8
附有C程序的学习资料
4 驱动程序
//寄存器宏定义
#define WRITE_SECOND 0x80 #define WRITE_MINUTE 0x82 #define WRITE_HOUR 0x84 #define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define WRITE_PROTECT 0x8E
//位寻址寄存器定义 sbit ACC_7 = ACC^7; //管脚定义
sbit SCLK = P3^5; // DS1302时钟信号 7脚
sbit DIO= P3^6; // DS1302数据信号 6脚
sbit CE = P3^7; // DS1302片选 5脚
//地址、数据发送子程序
void Write1302 ( unsigned char addr,dat ) {
unsigned char i,temp;
CE=0; //CE引脚为低,数据传送中止
SCLK=0; //清零时钟总线
CE = 1; //CE引脚为高,逻辑控制有效
//发送地址
for ( i=8; i>0; i-- ) //循环8次移位 {
SCLK = 0; temp = addr;
DIO = (bit)(temp&0x01); //每次传输低字节
addr >>= 1; //右移一位 SCLK = 1; }
附有C程序的学习资料
//发送数据
for ( i=8; i>0; i-- ) {
SCLK = 0; temp = dat;
DIO = (bit)(temp&0x01); dat >>= 1; SCLK = 1; }
CE = 0; }
//数据读取子程序
unsigned char Read1302 ( unsigned char addr ) {
unsigned char i,temp,dat1,dat2; CE=0;
SCLK=0; CE = 1; //发送地址
for ( i=8; i>0; i-- ) //循环8次移位 {
SCLK = 0; temp = addr;
DIO = (bit)(temp&0x01); //每次传输低字节
addr >>= 1; //右移一位
SCLK = 1; }
//读取数据
for ( i=8; i>0; i-- ) {
ACC_7=DIO; SCLK = 1; ACC>>=1; SCLK = 0; } CE=0;
dat1=ACC;
dat2=dat1/16; //数据进制转换 dat1=dat1%16; //十六进制转十
附有C程序的学习资料
进制
dat1=dat1+dat2*10; return (dat1); }
//初始化DS1302
void Initial(void) {
Write1302 (WRITE_PROTECT,0X00); //禁止写保护
Write1302 (WRITE_SECOND,0x56); //秒位初始化
Write1302 (WRITE_MINUTE,0x34); //分钟初始化 Write1302 (WRITE_HOUR,0x12); //小时初始化
Write1302 (WRITE_PROTECT,0x80); //允许写保护 }
51单片机综合学习系统之 DS1302时钟应用篇 《电子制作》2008年10月 站长原创,如
需引用请注明出处
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




