qj19941028 2023-12-08 23:30 采纳率: 0%
浏览 4

可充电纽扣电池如何设计

DS1302,现在想把图中的纽扣电池改成可充电的,请问可充电的纽扣电池电路怎么设计

img

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-10 00:46
    关注

    【相关推荐】



    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7414371
    • 这篇博客你也可以参考下:【蓝桥杯单片机组】| DS1302(官方驱动)+ 矩阵按键 + 数码管(改,解决数码管跳动的问题)
    • 除此之外, 这篇博客: 【完美解决】ds1302外置时钟模块重复初始化时间问题(单片机掉电,模块电池供电)中的 关键代码: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      ds1302头文件:

      #define WRITE_FLAG_ADDR  0xc0 
      #define READ_FLAG_ADDR   0xc1 
      #define FLAG_VAL         0x3a 
      

      解释:
      定义三个宏,分别是写地址,读地址,和标记数值。
      注意:读地址为写地址+1。(数据手册有图)
      ds1302头文件:

      设置时间函数

      void ds1032_set_time(u16 year,u8 mon,u8 day,u8 hour,u8 min,u8 sec)
      {
      	year -= 2000; //年默认2000开始
      	if(year > 100) year = 0; 
      	
      	// 10转为bdc码
      	year = ((year /10) << 4) + year %10;
      	mon  = ((mon  /10) << 4) + mon  %10;
      	day  = ((day  /10) << 4) + day  %10;
      	hour = ((hour /10) << 4) + hour %10;
      	min  = ((min  /10) << 4) + min  %10;
      	sec  = ((sec  /10) << 4) + sec  %10;
      	
      	// 写入寄存器,同时标记一个地址
      	ds1302_wirte_rig(0x8e,0x00);//关闭写保护
      	ds1302_wirte_rig(WRITE_FLAG_ADDR,FLAG_VAL);//写入已经设置时间标记
      	ds1302_wirte_rig(0x80,sec);//seconds秒
      	ds1302_wirte_rig(0x82,min);//minutes分
      	ds1302_wirte_rig(0x84,hour);//hours时
      	ds1302_wirte_rig(0x86,day);//date日
      	ds1302_wirte_rig(0x88,mon);//months月
      	ds1302_wirte_rig(0x8c,(u8) year);//year年
      	// ds1302_wirte_rig(0x8a,7);// 星期日
      	ds1302_wirte_rig(0x8e,0x80);//开启写保护
      }
      

      初始化时间函数:

      void ds1032_init_time(void)
      {
      	if(ds1302_read_rig(READ_FLAG_ADDR)!= FLAG_VAL) // 如果未标记,执行初始化时间
          {
      		ds1032_set_time(2020,12,31,23,59,30);// 2020年12月31日,23:59:30
      		printf("Y时间初始化完成,标记:%x\r\n",ds1302_read_rig(READ_FLAG_ADDR));
      	}
      	else
      	{
      		printf("N时间不用重复初始化,标记:%x\r\n",ds1302_read_rig(READ_FLAG_ADDR));
      	}
      	
      }
      

      解释:
      先判断有无标记,有则执行ds1032_set_time,否则不执行。

      main源文件:
      使用示例
      在这里插入图片描述
      实物效果图:
      在这里插入图片描述


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月8日