蓝桥杯单片机学习笔记(8)——DS1302时钟芯片 这篇写写DS1302时钟芯片,竞赛题只要与时钟有关,那必定少不了用到板子上的DS1302芯片。掌握对1302的操作,主要包括更改和读取ds1302中的时间数据。 一、DS1302和电路 1.简介 DS1302 是美国DALLAS公司推出的一种实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,可通过后备电源实现时钟防掉电的功能。 DS1302采用3线同步串行的通讯方式:RES复位线、I/O数据线、SCLK时钟线。 DS1302有12个寄存器,有7个寄存器是用来存储时间的,此外还有控制寄存器、充电寄存器、时钟突发寄存器等。我们操作DS1302其实就是操作其寄存器,若仅使用其读写时间的功能,只需掌握7个时间寄存器和1个控制寄存器即可。 那么我们如何确定寄存器的位置呢?这就需要主机向DS1302发送控制字节,控制字节中包含所要操作的寄存器的地址,实现对寄存器的操作。(也常把控制字节直接称作地址)
控制(地址)字节格式 在控制字节中,D6用来确定操作的寄存器的种类,我们肯定操作时间寄存器,所以为0; D5~D1这5位是所要操作的寄存器的地址; D0是读/写标志位,读1写0
寄存器地址 说明书也很人性化,已经将各个寄存器的控制字节都给整理好了,需注意读/写控制字节不相同。WP是控制寄存器中的写保护标志位,WP=1时开启写保护。TCS是涓流充电选择,无需掌握。 2.电路
SCK———P17 I/O———P23 RST———P13 板上没有给ds1302进行独立供电,因此掉电后不能继续工作。 二、驱动程序 在ds1302数据传输过程中,都是先传低位再传高位!(与I2C不同) SCK为0时RST才能置为1 。 1.写寄存器 RST低电平复位,因此数据传输的过程只能在RST为高时进行。另外,在写数据(主机向1302传数据)时,SCK在上升沿时进行数据的传输,因此,读时序如下图所示:
读时序图 编写程序时,要注意SCK的跳变应有固定的周期。先将SCK拉低,然后输出数据,再将SCK拉高使数据传出。 整个写寄存器时序分为两步,先传送地址(控制字节),再发送数据。
2.读寄存器 读的时候SCK在下降沿有效。 要先写入控制字节(读地址),才能接收数据。
注意读时序完成后,RST复位后要有一段稳定操作(拉低拉高SCK和SDA),这段不可缺少。 3.DS1302初始化时间程序 要更改DS1302的时间寄存器,需注意: 时间寄存器有写保护,写入时间数据之前要先关闭写保护(将WP置0)。 时间数据在寄存器内以BCD码的形式储存,要注意先将十进制的时间数据转换为BCD码的形式,再存入相应寄存器中。
4.DS1302读取时间程序 从寄存器读出的时间是BCD码格式的,要注意转换为十进制方便使用。
看都看到这里了,求赞求赞🤞 点个不迷路hhh~~
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/64583.html