STM32做一个时钟(1)——用51初识时钟

由于我买的材料还没到,咱们先用51单片机来做一个时钟。后续会一直更新这个系列,直到用STM32做一个完美的时钟出来。

第一部分 DS1302时钟芯片 

RTC (Real Time Clock)实时时钟 通常称为时钟芯片 DS1302就属于其中的一类。

拿到一个模块 需要自己来看手册。

两种封装方式 1.直插封装DIP 2.贴片封装SO

2.应用电路

晶振提供一个精度很高的时钟频率,用来计时。

右边三个引脚叫做通信引脚 用来把芯片内部的时间给读出来。并且可以写进去。写进去读出来。

总体来说,DS1302芯片就像一个小的单片机,它内部有一些寄存器,存的就是年月日时分秒等,然后我们通过一些通信协议,读取寄存器的数据,实现对寄存器的访问和读写。

任务是 在哪 写入 什么数据(单片机写入的)

           在哪 读出 什么数据(DA1302输出的)

前两部分由地址和命令字来完成 ,在手册里面 

对于 写入就是10000000     第五位到第一位就是地址  R读 W写 加一横线代表低电平有效

10000000换成16进制就是 0X80 对应上面表格中的READ WRITE

命令字和数据咋对应起来的啊? 时序图

CE 操作使能,读写过程中要保证高电平 完成之后再清零。

SCLK 在时钟的上升沿 IO的数据会被写入 意思是我要向时钟芯片写入数据

          在时钟的下降沿 DA1302输出数据 意思是我读出时钟芯片的数据

这一点跟通信接口SPI很像 时钟上升沿写入数据 下降沿读出数据

IO负责给数据

现在进入编程时间!

注意 时钟芯片内部数据是以BCD码的格式进行存储的,所以编程中会涉及到BCD码与十进制的转换。

具体代码如图 注释很详细。

main.c

#include <REGX52.H>
#include "LCD1602.h"
#include "DS1302.h"

void main()
{	
	LCD_Init();//初始化
	DS1302_Init();//初始化
	LCD_ShowString(1,1,
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值