micropython RX8025T 驱动简单演示
我就知道可能八百年会有一位大哥来找这个驱动。
让我来猜猜为啥用这个。
嫌一般的RTC不够精准是吧,想用个带温度补偿的试试?
代码拿去,其实巨简单的。。。没啥好说的,而且只有基本功能。。。
from micropython import const
import mathRX8025T_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 = i2cself.tb = bytearray(1)self.rb = bytearray(1)self.buf = bytearray(7)self.DT = [0] * 8def setReg(self, reg, dat):self.tb[0] = datself.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=0n0=dat%10n1=(dat//10)%10return (n1<<4|n0)def FROMBCD(self, dat):n0=n1=0n0=dat&0x0fn1=(dat>>4)*10return n0+n1def year(self, year = None):if year == None:return self.FROMBCD(self.getReg(RX8025T_REG_YEAR)) + 2000else: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<<weekdayself.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] = 0return self.DTelse: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,Pinimport timei2c=SoftI2C(scl=Pin(13),sda=Pin(12))rr=RX8025T(i2c)#rr.datetime((2023,3,28,2,11,49,30,0))print(rr.datetime())
micropython RX8025T 驱动简单演示相关推荐
- Java简单演示悲观锁
每博一文案 看过这样一句话,时间在不断的筛选你身边的人和事.当你什么都不在乎的时候,你的人生才刚刚开始. 当我们什么都不在乎时,会发现什么都可能会进行经历,但什么都一定会过去,起始都会离开的或早或晚吧 ...
- Qt 多线程的简单演示
Qt 多线程的简单演示 任务:单击""开始""按钮将启动数个工作线程,线程由checkBox 来决定线程的启用或者关闭,各个线程循环打印数字,数字每秒累加1:单 ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- linux驱动简单介绍
linux驱动简单介绍 驱动基本介绍 驱动.顾名思义就是"驱使硬件设备行动".设备驱动与底层硬件之间打交道,按照硬件设备的具体操作方式来读写设备寄存器,最终完成一系列操作. 设备 ...
- csrf攻击与防护—2用flask简单演示防范csrf攻击之referer
接上篇 csrf攻击与防护-1用flask简单演示csrf攻击 以下是根据referer字段防止csrf攻击的新代码: bank.py import uuid from flask import re ...
- Micropython ESP32驱动CH455控制4位数码管
Micropython ESP32驱动CH455控制4位数码管 1.硬件 CH455驱动4位共阴数码管的原理图如下所示. ESP32-S模块,用GPIO4作为SCL和GPIO16作为SDA. 2.软件 ...
- Linux驱动 简单的Linux驱动基础知识
Linux驱动 简单的Linux驱动基础知识 一.简述 记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...
- micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室
概要 阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度.同时也涉及到了MicroPython-ESP32的I2C资源与API讲解. 出品:1Z实验室 ...
- 【K210+micropython】驱动HS420561k-32四位数码管显示数字
[K210+micropython]使用HS420561k-32四位数码管显示数字 文章目录 [K210+micropython]使用HS420561k-32四位数码管显示数字 相关知识准备 一.四位 ...
最新文章
- java 简单万年历_JAVA实现的简单万年历代码
- [4.9福建四校联考]
- python3 bytes和str转换,解决图片base64调用api的问题
- 百度“如流”开启智能办公模式,“四两拨千斤”开启差异化模式
- Quartz.Net进阶之四:CronTrigger 详述
- 对计算机网络用户而言 掌握网络,计算机网络的特点
- [剑指offer]面试题22:栈的压入、弹出序列
- python 怎么注释_python的代码怎么写注释
- SLAM和三维重建中的SFM区别
- soap python_Zeep: Python SOAP 客户端
- C++实现高质量游戏游戏!!!不点开你会后悔的!!!包括 买彩票游戏 勇者游戏 等 5个游戏
- JVM中的-Xms -Xmx -XXnewSize -XXMaxnewSize -Xmn -XXPermSize -XXMaxPermSize区别介绍
- 小程序loding动画组件封装及源码
- 微信小程序------API
- Apache安装时出现OS:拒绝访问的解决办法
- 使用 Google Apps 账号申请 GAE 的问题
- ubuntu中静态ip的修改配置
- STC12驱动PCF8575
- 对于传统教育和线上教育的思考
- linux m2硬盘驱动,Linux R720挂载M.2固态硬盘