七.DS1302时钟模块
DS1302时钟模块
原理图
我们可控的引脚为5,6,7,P13为复位,P23输入数据,P17为时钟引脚。其余口是已经配置好的。
功能实现
如果要写入s,秒的地址为10000000(0x80),读时末位为1。
如果要写入57,用bcd码写入,把57化为16进制:0x57.
所以是先选中,再写入。
小时位如果是12小时制的,通过第三位判断上午下午。
12小时:0x12.
数据地址
画圈的就是读取和写入数据所调用的地址。
当复位拉高时才能进行数据写入
数据由上升沿开始读取,每一位是在每一个上升沿才会读。
写入函数定义
1 | void write_ds1302(unsigned char temp) |
第二次循环就是第二位为1,那就会读取第二位,循环八次,我会把我需要的数据写入。
1 | void write_ds1302_byte(unsigned char address,unsigned char dat) |
读取函数定义
读取的时候是下降沿。
1 | unsigned char Read_Ds1302_Byte ( unsigned char address ) |
第一次循环之后,我的数据为100000000,第二次循环,1右移一位,再次判断SDA,循环八次就能读出所有数据了。
值得庆幸的是,这两个底层官方在赛点数据包里提供了。
外设添加
在赛点资源包里添加头文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 你好,这里是鹏鹏的博客!