- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验 串行实时时钟实验
实验三 串行口实时时钟实验
实验目的
1、了解实时时钟电路工作原理
2、了解串行时钟芯片的控制方法
3、掌握DS1302串行时钟芯片的使用方法
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
DS1302串行时钟芯片工作原理
DS1302是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。芯片内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。引脚图如图4-77所示。
图4-77 DS1302引脚图
DS1302的控制字如下所示。
DS1302的控制字最高位必须为1;D6位:1:读写内部通用存储器,0:读写时钟存储器;随后是地址位。最低位是读写控制:1代表读,0:代表写。
DS1302内部日历数据存储器位定义如图4-78所示。
图4-78 DS1302内部日历数据存储器结构图
CH:时钟停止位(CH=0振荡器工作允许,CH=1振荡器停止)
寄存器2的第7位:12/24小时标志(bit7=1,12小时模式,bit7=0,24小时模式)
寄存器2的第5位:AM/PM定义(AP=1下午模式,AP=0上午模式)
WP:写保护位(WP=0 寄存器数据能够写入,WP=1寄存器数据不能写入)
TCS:涓流充电选择(TCS=1010使能涓流充电,TCS=其它禁止涓流充电)
DS:二极管选择位(DS=01一个二极管,DS=10两个,DS=00或11,充电功能也被禁止)
从图中可以看出,第1脚电源经过开关、二极管、电阻对接在第8脚的备用电源进行充电。调整涓流充电控制寄存器的值可以控制涓流充电方式。
DS1302芯片读写时序
DS1302采用三线串行口通迅,占用IO口少。数据在SCLK的上升沿有效。每个SCLK正脉冲锁存一位数据。如图4-80所示。
图4-80 DS芯片读写时序图
DS1302支持单字节读写和多字节读写方式。单字节读写时,单片机先发出读写的地址,然后再读写一字节数据;多字节读写时,单片机先发出读写的地址,然后再连续读写多个字节。如图4-81所示。
图4-82 DS1302读数据帧结构
DS1302应用电路
51单片机没有SPI接口,只能用普通IO口来模拟读写时序。将芯片IO口与单片机连接,电容C1用于备份电源,电源断电时为DS1302提供电能。DS1302的复位端与74LS138的Y6连接,当P2=0CH时,复位端有效。电路如图4-83所示。
图4-83 DS1302应用电路
DS1302应用程序设计
DS1302应用程序设计包含:DS1302串口驱动程序、DS1302接口程序等。DS1302串口驱动程序就是串口发送、接收一个字节数据程序。DS1302接口程序包含:时钟启动/停止、时间日期设置、读时间日期、充电方式设计等。根据原理说明,我们可以设计出一部分程序。流程序图如图4-84所示。
图4-84 DS1302应用程序流程图
实验内容
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
#define data 1000
sbit LEDCLK=P3^4;
sbit LEDDIN=P2^3;
uchar code ledtable[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,
0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,0xFD};
uchar dispbuf[8];
uint msecond=0;
uchar wei=0;
uchar timebuf[3]={0x12,0x34,0x56};
#define second timebuf[0]
#define minute timebuf[1]
#define hour timebuf[2]
#define NOP3() _nop_();_nop_();_nop_()
/**DS1302与MCU连接的各端口定义*****************/
sbit DS_IO=P3^5;//DS1302数据口
sb
文档评论(0)