找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DS1302小时由24小时制改成12小时制 单片机编程的困惑

查看数: 4522 | 评论数: 2 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-11-1 10:17

正文摘要:

红框圈起来的0x11,代表小时初值是11,现在是24小时制  我想改成12小时制  根据手册D7为1代表12小时制 所以我改成0x11|0x91    因为初值是11   即0x11==0001 0001  & ...

回复

ID:1095747 发表于 2024-4-11 22:41
ckeai 发表于 2018-7-31 17:02
0x85是时的地址 bit5,bit7是选择12小时制还是24小时制,关键在于显示,与12小时有关的是bit0~bit4,在设定 ...

大佬牛逼
ID:370913 发表于 2018-7-31 17:02
        0x85是时的地址 bit5,bit7是选择12小时制还是24小时制,关键在于显示,与12小时有关的是bit0~bit4,在设定过12小时后,将要显示的代表小时的time[2]去掉无关的位,即通过移位将bit5~bit7全变成0
具体代码如下
       void Ds1302ReadTime()
{
        uchar i;
        for (i=0; i<7; i++)//读取7个字节的时钟信号:分秒时日月周年
        {
                time[i] =Read_add(read_addr[i]);
        }
        Write_add(0x8e,0x00);//禁止写保护位
        time[2]=Read_add(0x85);//! ! !此处是将24小时制转为12小时制,关键就在于显示,与12小时有关的是bit0~bit4,因此,读到的值需要去掉无关的位,否则0xb2显示的小时就是:2了
        time[2]<<=3;
        time[2]>>=3;
        Write_add(0x8e,0x80);         
}
               

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

Powered by 单片机教程网

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