Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。
Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台
Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。
Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。
micropython RX8025T 驱动简单演示
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())
来源:https://jd3096.blog.csdn.net/article/details/129784182?spm=1001.2014.3001.5502
Copyright © 2014 ESP56.com All Rights Reserved
执行时间: 0.010299921035767 seconds