DS1302时钟芯片单片机控制操作步骤.docx

上传人:小飞机 文档编号:3155872 上传时间:2023-03-11 格式:DOCX 页数:4 大小:38.03KB
返回 下载 相关 举报
DS1302时钟芯片单片机控制操作步骤.docx_第1页
第1页 / 共4页
DS1302时钟芯片单片机控制操作步骤.docx_第2页
第2页 / 共4页
DS1302时钟芯片单片机控制操作步骤.docx_第3页
第3页 / 共4页
DS1302时钟芯片单片机控制操作步骤.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《DS1302时钟芯片单片机控制操作步骤.docx》由会员分享,可在线阅读,更多相关《DS1302时钟芯片单片机控制操作步骤.docx(4页珍藏版)》请在三一办公上搜索。

1、DS1302时钟芯片单片机控制操作步骤DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力. RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功

2、能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 时钟相关寄存器:时钟数据为BCD码格式, 秒寄存器的CH位:时钟暂停位,为1是,振荡器停止工作,进入低功耗。 小时寄存器: 最高位12/24: 为1时表示12小时模式,0表示24小时模式。第5位A/P,1表示下午,0表示上午。

3、DS1302命令控制字: DS1302的RAM共31个,寄存器地址范围:C0HFDH,其中奇数为读操作,偶数为写操作 DS1302的读写时序:通过控制RST端为高电平启动读写操作,首先发送8位命令控制字,指明读操作还是写操作,及读写的地址。数据从低到高位顺序传输。 上电时,RST脚必须为低电平,当把RST置为高电平前,SCLK必须为低电平。 写过程: 一、启动准备:RST为低电平,SCLK为低电平- PORTB&=(1PB2); PORTB&=(1PB0); 二、 启动读写开始信号:将RST置为高电平- PORTB|=(1PB2); 三、发送要写入地址的命令字节数据,如写秒寄存器,命令字节为8

4、0H,write_byte(0x80); 四、延时10ms,SCLK 置低电平,-delay; PORTB&=(1PB0); 五、发送要写入秒寄存器的数据; write_byte(0x02); 六、结束写入过程:SCLK清0,RST置为低电平。 PORTB&=(1PB2); PORTB&=(1PB0); 读过程: 一、启动准备:RST为低电平,SCLK为低电平- PORTB&=(1PB2); PORTB&=(1PB0); 二、 启动读写开始信号:将RST置为高电平- PORTB|=(1PB2); 三、发送要读取数据的地址的命令字节数据,如读秒寄存器,命令字节为81H,write_byte(0x

5、81); 四、延时10ms,SCLK 置低电平,-delay; PORTB&=(1PB0); 五、读取秒寄存器的数据; read_byte(0x02); 六、结束读取过程:SCLK清0,RST置为低电平。 PORTB&=(1PB2); PORTB&=(1PB0); 写入一个字节数据的代码: /*向DS1302写一个字节数据*/ void write_byte(uchar dat) uchar i; for(i = 0;i 8;i+) /写8位,低位在前 PORTB&=(1PB0);/SCLK置0,产生移位时钟 if(dat & 0x01) /写数据位 PORTB|=(1PB1); /如果写入字

6、节的第0位为1,则 PB1脚置1 else PORTB&=(1PB1); / /如果写入字节的第0位为0,则 PB1脚置0 Delay_us(10); /延时 PORTB|=(1= 1; /数据右移1位 读取一个字节的过程: /*从DS1302读一个字节数据*/ uchar read_byte(void) uchar i,dat = 0; /dat存放读出的数据,初始化为0 DDRB|=(1PB1); /PB1置为输入 PORTB&=(1PB1); /不带上位电阻 for(i= 0;i 7;i+) /读7位; /SCLK 置0 Delay_us(10); /延时 if(PINB&0x02) /读数据端口状态 dat=dat|0x80; /如果PB1为1,则将dat 的最高位置1 else dat=dat&0x7f; 如果PB1为0,则将dat 的最高位置0 PORB|=(11; /数据右移一位 DDRB&=(1PB1); / 恢复为输出 return dat; /返回读出的数据 小企鹅diy 科学探究学习网 更多文章转到 文章分类单片机

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号