micropython RX8025T 驱动简单演示

2023-11-13

我就知道可能八百年会有一位大哥来找这个驱动。
让我来猜猜为啥用这个。
嫌一般的RTC不够精准是吧,想用个带温度补偿的试试?
代码拿去,其实巨简单的。。。没啥好说的,而且只有基本功能。。。

from micropython import const
import math
 
RX8025T_I2C_ADDRESS  = const(50)
RX8025T_REG_SECOND   = const(0)
RX8025T_REG_MINUTE   = const(1)
RX8025T_REG_HOUR     = const(2)
RX8025T_REG_WEEKDAY  = const(3)
RX8025T_REG_DAY      = const(4)
RX8025T_REG_MONTH    = const(5)
RX8025T_REG_YEAR     = const(6)

class RX8025T():
    def __init__(self, i2c):
        self.i2c = i2c
        self.tb = bytearray(1)
        self.rb = bytearray(1)
        self.buf = bytearray(7)
        self.DT = [0] * 8
 
    def	setReg(self, reg, dat):
        self.tb[0] = dat
        self.i2c.writeto_mem(RX8025T_I2C_ADDRESS, reg, self.tb)
 
    def	getReg(self, reg):
        self.i2c.readfrom_mem_into(RX8025T_I2C_ADDRESS, reg, self.rb)
        return self.rb[0]
 
    def TOBCD(self, dat):
        n0=n1=0
        n0=dat%10
        n1=(dat//10)%10
        return (n1<<4|n0)
 
    def FROMBCD(self, dat):
        n0=n1=0
        n0=dat&0x0f
        n1=(dat>>4)*10
        return n0+n1
 
    def year(self, year = None):
        if year == None:
            return self.FROMBCD(self.getReg(RX8025T_REG_YEAR)) + 2000
        else:
            self.setReg(RX8025T_REG_YEAR, self.TOBCD(year%100))
 
    def month(self, month = None):
        if month == None:
            return self.FROMBCD(self.getReg(RX8025T_REG_MONTH))
        else:
            self.setReg(RX8025T_REG_MONTH, self.TOBCD(month))
 
    def day(self, day = None):
        if day == None:
            return self.FROMBCD(self.getReg(RX8025T_REG_DAY))
        else:
            self.setReg(RX8025T_REG_DAY, self.TOBCD(day))
 
    def weekday(self, weekday = None):
        if weekday == None:
            return int(math.log2(self.getReg(RX8025T_REG_WEEKDAY)))
        else:
            d=1<<weekday
            self.setReg(RX8025T_REG_WEEKDAY, d)
 
    def hour(self, hour = None):
        if hour == None:
            return self.FROMBCDD(self.getReg(RX8025T_REG_HOUR))
        else:
            self.setReg(RX8025T_REG_HOUR, self.TOBCD(hour))
 
    def minute(self, minute = None):
        if minute == None:
            return self.FROMBCD(self.getReg(RX8025T_REG_MINUTE))
        else:
            self.setReg(RX8025T_REG_MINUTE, self.TOBCD(minute))
 
    def second(self, second = None):
        if second == None:
            return self.FROMBCD(self.getReg(RX8025T_REG_SECOND))
        else:
            self.setReg(RX8025T_REG_SECOND, self.TOBCD(second))
 
    def datetime(self, DT=None):
        if DT == None:
            self.i2c.readfrom_mem_into(RX8025T_I2C_ADDRESS, RX8025T_REG_SECOND, self.buf)
            self.DT[0] = self.FROMBCD(self.buf[6]) + 2000 
            self.DT[1] = self.FROMBCD(self.buf[5])
            self.DT[2] = self.FROMBCD(self.buf[4])
            self.DT[3] = int(math.log2(self.buf[3]))
            self.DT[4] = self.FROMBCD(self.buf[2]) 
            self.DT[5] = self.FROMBCD(self.buf[1]) 
            self.DT[6] = self.FROMBCD(self.buf[0]) 
            self.DT[7] = 0
            return self.DT
        else:
            self.buf[0] = self.TOBCD(DT[6])   
            self.buf[1] = self.TOBCD(DT[5])  
            self.buf[2] = self.TOBCD(DT[4])  
            self.buf[3] = 1<<DT[3] 
            self.buf[4] = self.TOBCD(DT[2])   
            self.buf[5] = self.TOBCD(DT[1])   
            self.buf[6] = self.TOBCD(DT[0]) 
            self.i2c.writeto_mem(RX8025T_I2C_ADDRESS, RX8025T_REG_SECOND, self.buf) 
 

#example   0->Sunday 1->Monday....  6->Saturday
if __name__ =='__main__':
    from machine import SoftI2C,Pin
    import time
    i2c=SoftI2C(scl=Pin(13),sda=Pin(12))
    rr=RX8025T(i2c)
    #rr.datetime((2023,3,28,2,11,49,30,0))
    print(rr.datetime())




















本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

micropython RX8025T 驱动简单演示 的相关文章

  • 根据随机选择的列生成随机天数

    我有一个如下所示的数据框 感谢 SO 社区在以下方面提供的帮助 df1 pd DataFrame person id 11 11 12 13 14 date birth 01 01 1961 12 30 1961 05 29 1967 01
  • 蟒蛇 |如何将元素随机添加到列表中

    有没有一种方法可以将元素随机添加到列表中 内置函数 ex def random append lst a lst append b lst append c lst append d lst append e return print ls
  • 无法将 datetime.datetime 与 datetime.date 进行比较

    我有以下代码并收到上述错误 由于我是 python 新手 我无法理解这里的语法以及如何修复错误 if not start or date lt start start date 有一个datetime date 从日期时间转换为日期的方法
  • 如何在“python setup.py test”中运行 py.test 和 linter

    我有一个项目setup py文件 我用pytest作为测试框架 我还在我的代码上运行各种 linter pep8 pylint pydocstyle pyflakes ETC 我用tox在多个 Python 版本中运行它们 并使用以下命令构
  • 无法安装时间模块

    我试过了pip install time and sudo H pip install time 但我不断收到错误 找不到满足要求时间的版本 从 版本 未找到时间匹配的发行版 我正在 PyCharm 中工作 但真正没有意义的是我可以在 Py
  • 使用 Python 抓取维基百科数据

    我正在尝试从以下内容中检索 3 列 NFL 球队 球员姓名 大学球队 维基百科页面 http en wikipedia org wiki 2008 NFL draft 我是 python 新手 一直在尝试使用 beautifulsoup 来
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 在 Windows 上将 Word2vec 与 Tensorflow 结合使用

    In 本教程文件 https github com tensorflow models blob master tutorials embedding word2vec py L45通过 Tensorflow 找到以下行 第 45 行 来加
  • 如何将同步函数包装在异步协程中?

    我在用着aiohttp https github com aio libs aiohttp构建一个 API 服务器 将 TCP 请求发送到单独的服务器 发送 TCP 请求的模块是同步的 对于我来说是一个黑匣子 所以我的问题是这些请求阻塞了整
  • 在 GAE/Python 中放置一次性代码和每次代码的最佳位置在哪里?

    我是 Google App Engine 和 Python 的新手 我无法理解有关在 Google App Engine 上运行的 Python 应用程序的一些基本问题 如果我想要执行代码 对于每个传入的请求 我应该将其放在哪里 我们正在捕
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 如何使用 FastAPI 在 HTMX 前端中使用 HX-Redirect?

    我试图在登录后在前端重定向 我像这样从我的 htmx 前端发出请求
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • 如何抑制 Pandas Future 警告?

    当我运行该程序时 Pandas 每次都会给出如下所示的 未来警告 D Python lib site packages pandas core frame py 3581 FutureWarning rename with inplace

随机推荐

  • adapterview android,AdapterView

    AdapterView 版本 Android 2 3 r1 结构 继承关系 public abstract class AdapterView extends ViewGroup java lang Object android view
  • QT构建好的exe在指定目录运行出现找不到dll或者定位不到程序入口点解决方法

    win10系统的话打开这台电脑 然后再系统环境变量中将D QtEnvironment 5 12 3 mingw73 32 bin添加到Path中 并且上移 解决Qt生成exe错误 无法定位程序输入点
  • 五种方法解除开机密码

    5种方法解除开机密码 教你怎样解除电脑开机密码 先记下来 以后总会有用到的 此方法仅供计算机教师交流 严禁作为非法手段使用
  • 生成项目目录树

    写项目设计文档或者在写新项目的README md文件时 都需要展示项目的一些重要的目录结构 其实可以通过安装brew等方法来进行 但是推荐一个插件 vscode中下载插件tree generator 安装完成后打开需要生成的目录结构树的项目
  • 深度学习(6):图像超分辨率(Image Super Resolution)重建

    目标 使用深度学习技术对图像进行超分辨率重建 涉及到的技术包括卷积神经网络 生成对抗网络 残差网络等 技术 本实验使用到 Jupyter Notebook 等开发组件 涉及到了 TensorFlow NumPy scipy misc PIL
  • LeetCode160-------相交链表(java)

    题目中文链接 编写一个程序 找到两个单链表相交的起始节点 例如 下面的两个链表 节点 c1 开始相交 注意 如果两个链表没有交点 返回 null 在返回结果后 两个链表仍须保持原有的结构 可假定整个链表结构中没有循环 程序尽量满足 O n
  • 有哪些期货交易理念(期货交易的概念及主要特征)

    在期货和股票市场里面 什么是交易理念 所谓交易理念 我认为就是你所认为的构建你交易策略的基础 是制定交易系统的逻辑基础 比如 你觉得现在是涨势 那么在回调的时候做多 是一种交易理念 跌势 反弹放空是一种交易理念 震荡市 震荡区间下不开多 上
  • 斐讯r1换网络_新房装修网络布线方案二:客厅电视柜放单个路由器覆盖全屋

    继续研讨新房装修的家庭网络搭建的问题 我昨天推荐的是一个AC AP的方案 如果是小户型 对网络这块要求并不高 比如 并不要求全屋都5G覆盖满的 基于成本考虑 可以先不上AC AP 先用一个性能稍好的千兆路由器 比如 斐讯的K2p 网件R70
  • WinDbg Command-Line Options

    First time users of WinDbg should begin with the Debugger Operation section The WinDbg command line uses the following s
  • SQL注入点判断及注入方式

    SQL注入类型 一 判断注入点 当参数可控时 看参数是否对数据产生影响 若有影响则可能是注入点 输入SQL看是否可以产生报错 通过报错信息得到数据库部分语句 利用引号 双引号 圆括号进行报对 二 注入方式 get注入 在get传参时写入参数
  • 简便快捷 解决burp suite不能抓本地包的问题

    v 解决burp suite不能抓本地包的问题 蛋黄小课堂开课啦 蛋黄碎碎念 第一次遇到不能抓本地包的时候 通过百度找到用本机实际IP地址替代 127 0 0 1 的方法可以解决不能抓本地包的问题 但是后来又不行了 于是再百度 找了好久 最
  • 伪似然估计(Pseudo Maximum Likelihood Estimation)

    伪似然估计 和 剖面似然估计 伪似然估计 参考文献 Gong G and Samaniego F J 1981 pseudo Maximum Likelihood Estimation Theory and Applications The
  • 属性layout_weight不起作用的解决方法

    在使用线性布局的时候 使用layout weight属性来达到控件自适应屏幕宽度的效果 但是有的时候这个属性没有起作用 这个时候就需要仔细检查一下 1 只有LinearLayout标签支持 2 设置layout weight时要根据布局的方
  • SSM实战项目——Java高并发秒杀API

    SSM实战项目 Java高并发秒杀API 项目截图 秒杀列表 秒杀详情页 错误提示 开始秒杀 秒杀成功 重复秒杀 秒杀倒计时 秒杀结束 项目介绍 何为秒杀 所谓 秒杀 就是网络卖家发布一些超低价格的商品 所有买家在同一时间网上抢购的一种销售
  • c++智能指针

    智能指针是一种用于管理动态分配的内存的工具 它可以自动地不再需要时释放内存 智能指针目的 避免内存泄漏和释放已经释放的内存 用法 会在堆上分配内存 并在不再需要时自动释放 通常会跟踪指向堆上对象的引用计数 并在引用计数为0时自动释放内存
  • linux软连接显示broken link

    解决方案 sudo ln s 源文件 目标文件 注 两者必须为绝对路径
  • 关于测试用例

    测试专栏 软件测试的基本概念 关于软件测试 作为一个测试人员 这些基础知识必不可少 目录 一 测试用例的基本要素 1 什么是测试用例 2 为什么软件测试人员要写测试用例 二 测试用例的设计方法 1 基于需求设计测试用例 2 具体设计测试用例
  • docker制作镜像,导出导入本地镜像等初级指南

    首先安装 docker 1 prepare 更改 yum 源加快安装环境 添加下面 yum 源 docker ce stable name Docker CE Stable basearch baseurl https mirrors al
  • 当绘图遇上Caché之元数据代理

    很久以前到沈阳实习的时候还一个个问度娘C 画图 画了电路图绘制软件的毕业设计 雪花屏保等等 搞LIS软件后绘制各种仪器图 对C 画笔 画字符串 画线 画圆等等耳熟能详 然而却碰到一个问题 我们的仪器大部分是盒子用数据库M连接的 如果盒子仪器
  • micropython RX8025T 驱动简单演示

    我就知道可能八百年会有一位大哥来找这个驱动 让我来猜猜为啥用这个 嫌一般的RTC不够精准是吧 想用个带温度补偿的试试 代码拿去 其实巨简单的 没啥好说的 而且只有基本功能 from micropython import const impo