找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1910|回复: 5
收起左侧

关于ds12c887时钟芯片单片机修改时间的问题

[复制链接]
ID:703745 发表于 2020-3-22 22:57 来自手机 | 显示全部楼层 |阅读模式
由于是BCD格式,所以读的时候除16分别得到个位与十位,但是当写时间进去的时候应该怎样将十位数转换成时钟芯片读的懂的数呢?
回复

使用道具 举报

ID:164602 发表于 2020-3-23 09:40 | 显示全部楼层
个人理解:
1、BCD码,就是用四位二进制,表示一位十进制,也就是说:一个二位的十进制数,就要有八位二进制数。
2、举例1——数据换算——静态
例如要写一个时间48秒,应该写入芯片的数据就是0x48。那么:①48/10,得到4,赋值一个变量A②该变量A左移四位③48%10,得到8④与那个变量A相加,得到0x48。
3、举例2——数据换算——动态
如果是在调节时间这个动态状态下,就非常简单了。
例如:时间变量A从0开始调节到11秒,那么一直加,即0x00,0x01,0x02......0x09,再加就会是0x0a,而a大于9,就加6,0x0a+0x06=0x10,就是BCD码了,再加1,就是0x11,就是我们要的BCD时间码。
这是我的理解,也是这样编程的
只是不知道我讲清楚没有
回复

使用道具 举报

ID:703745 发表于 2020-3-23 09:58 来自手机 | 显示全部楼层
HC6800-ES-V2.0 发表于 2020-3-23 09:40
个人理解:
1、BCD码,就是用四位二进制,表示一位十进制,也就是说:一个二位的十进制数,就要有八位二进 ...

谢谢大神,解决了,是将两位数分为个位与十位,然后十位×16加上个位,时钟芯片就认识了。
回复

使用道具 举报

ID:164602 发表于 2020-3-24 08:58 | 显示全部楼层
最高权限 发表于 2020-3-23 09:58
谢谢大神,解决了,是将两位数分为个位与十位,然后十位×16加上个位,时钟芯片就认识了。

其实就是读取数据的逆运算嘛
回复

使用道具 举报

ID:1011444 发表于 2022-5-23 14:20 | 显示全部楼层
我刚开始学做ds12c887时钟,走时和显示都没问题,但无法调整设置时间,就是只能读取和显示时间而不能重新写入时间,按键加减不起作用,什么原因?请指教
回复

使用道具 举报

ID:23303 发表于 2023-6-21 10:04 | 显示全部楼层
刚开始学习12C887,请各位老师多帮助,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表