MicroPython实战之TurnipBit开发板DIY电子时钟

一、 实验目的:
?学习在PC机系统中扩展简单I/O 接口的方法
?学习TurnipBit拼插编程
?学习TurnipBit扩展板与DS3231时钟模块连接接线方式
?学习时钟模块的使用

二、所需原器件:
?TurnipBit一块
?TurnipBit扩展板一块
?DS3231时钟模块一个
?杜邦线若干
?usb数据线一条

三、实验原理:
1. DS3231时钟模块原理
DS3231(图11-12)是一个时钟模块,其实就是像一个电子时钟,它自身带有电池,当设置好时间后,DS3231就会自动走时。DS3231与开发板之间的通讯是通过I2C接口来完成的。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要SDA(串行数据线)和SCL(串行时钟线)两根线即可在连接于总线上的器件之间传送信息。SDA和SCL都是双向I/O线,连接时,只需要将DS3231上的SDA和SCL与TurnipBit扩展板上的SDA和SCL相连即可。


四、接线方法:
TurnipBit扩展板与发光二极管接口对应如下表:


五、 源代码:

from microbit import *

DS3231_ADDR       = 0x68
DS3231_REG_SEC    = b‘\x00‘
DS3231_REG_MIN    = b‘\x01‘
DS3231_REG_HOUR   = b‘\x02‘
DS3231_REG_DAY    = b‘\x04‘
DS3231_REG_MONTH  = b‘\x05‘
DS3231_REG_YEAR   = b‘\x06‘
DS3231_REG_TEMP   = b‘\x11‘
class DS3231(object):

    def __init__(self):
        pass
    def DATE(self, dat=[]):
        if dat==[]:
            t = []
            t.append(self.year())
            t.append(self.month())
            t.append(self.day())
            return t
        else:
            self.year(dat[0])
            self.month(dat[1])
            self.day(dat[2])

    def TIME(self, dat=[]):
        if dat==[]:
            t = []
            t.append(self.hour())
            t.append(self.min())
            t.append(self.sec())
            return t
        else:
            self.hour(dat[0])
            self.min(dat[1])
            self.sec(dat[2])
    def DateTime(self, dat=[]):
        if dat==[]:
            return self.DATE() + self.TIME()
        else:
            self.year(dat[0])
            self.month(dat[1])
            self.day(dat[2])
            self.hour(dat[3])
            self.min(dat[4])
            self.sec(dat[5])

    def dec2hex(self, dat):
        return (int(dat/10)<<4) + (dat%10)

    def setREG(self, dat,reg):
        buf = bytearray(2)
        buf[0] = reg[0]
        buf[1] = dat
        i2c.write(DS3231_ADDR,buf, repeat=False)

    def getREG_DEC(self,reg):
        i2c.write(DS3231_ADDR,reg)
        t = i2c.read(DS3231_ADDR,1)[0]
        #print("--===",t,"----------")
        return (t>>4)*10 + (t%16)

    def sec(self, sec=‘‘):
        if sec == ‘‘:
            return self.getREG_DEC(DS3231_REG_SEC)
        else:
            self.setREG(self.dec2hex(sec), DS3231_REG_SEC)

    def min(self, min=‘‘):
        if min == ‘‘:
            return self.getREG_DEC(DS3231_REG_MIN)
        else:
            self.setREG(self.dec2hex(min), DS3231_REG_MIN)

    def hour(self, hour=‘‘):
        if hour==‘‘:
            return self.getREG_DEC(DS3231_REG_HOUR)
        else:
            self.setREG(self.dec2hex(hour), DS3231_REG_HOUR)

    def day(self, day=‘‘):
        if day==‘‘:
            return self.getREG_DEC(DS3231_REG_DAY)
        else:
            self.setREG(self.dec2hex(day), DS3231_REG_DAY)

    def month(self, month=‘‘):
        if month==‘‘:
            return self.getREG_DEC(DS3231_REG_MONTH)
        else:
            self.setREG(self.dec2hex(month), DS3231_REG_MONTH)

    def year(self, year=‘‘):
        if year==‘‘:
            return self.getREG_DEC(DS3231_REG_YEAR)
        else:
            self.setREG(self.dec2hex(year), DS3231_REG_YEAR)

    def TEMP(self):
        i2c.write(DS3231_ADDR,DS3231_REG_TEMP, repeat=False)
        t1 = i2c.read(DS3231_ADDR,1, repeat=False)[0]
        i2c.write(DS3231_ADDR,b‘\x12‘, repeat=False)
        t2 = i2c.read(DS3231_ADDR,1, repeat=False)[0]
        if t1>0x7F:
            return t1 - t2/256 -256
        else:
            return t1 + t2/256
ds=DS3231()
ds.DATE([17,10,24])
ds.TIME([10,03,00])
while True:
    Time=ds.TIME()
    Time_s=‘‘
    for i in Time:
        Time_s+=str(i)+‘:‘
    display.scroll(Time_s[:-1]+"-")

    #print(Time)
    #print(ds.TEMP())
    sleep(1000)

原文地址:https://www.cnblogs.com/xxosu/p/9229126.html

时间: 2024-12-21 09:37:05

MicroPython实战之TurnipBit开发板DIY电子时钟的相关文章

TurnipBit开发板DIY呼吸的吃豆人教程实例

转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) 0x00前言 吃豆人是耳熟能详的可爱形象,如今我们的TurnipBit也集成了这可爱的图形,我们这就让他来呼吸了~. 0x01效果展示 先一起看下最终的成品演示视频: 0x02准备 TurnipBit一块 数据线一条 TurnipBit可视化编程网站:www.tpyboard.com 0x03代码实现 打开我们的TurnipBit在线图形编辑器. http://www.

MicroPython之TPYBoard v102开发板控制OLED显示中文

转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近利用空余时间搞定了这个实验,特此将实验过程及源码分享出来,方便以后使用. 0x01实验器材 TPYBoardv102开发板1块 0.96寸OLED显示屏(ssd1306)1块 杜邦线若干 0x02前期准备 1. 首先我们先来看一下,之前参考的OLED显示字符的文章. http://docs.tpyb

TPYBoard V102:能跑Python的stm32开发板

近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBoardV102开发板. 一.板载硬件资源介绍 按照惯例先来介绍一个这块开发板的硬件组成,个人感觉这个开发板的性能还是属于相当不错的,下面详细介绍一下. TPYBoardV102是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于

TPYBoard:一款可以发挥无限创意的MicroPython开发板

今天给大家带来一款MicroPython开发板的拆解和测评.所谓MicroPython也就是运行在单片机上的Python.Python在国外是一门非常热门的编程语言,近些年在国内也被发掘与追捧, Python的开放.简洁.黏合正符合了现发展阶段对大数据分析.可视化.各种平台程序协作产生了快速的促进作用.自Python3的发布到现在已有五六年的时间,从刚发布的反对声音到慢慢被接受与喜欢经过了太漫长的时间,然而可能也与国情与发展需求有着相当的关系.总之,越来越多人开始使用Python. 先简单说说C

iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板

实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统 开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubuntu 安装了 ssh 服务器,这样就可以通过ssh 在 Windows 和虚拟机 Ubuntu 之间传输文件.其实在开发 板上也是可以移植和安装ssh 服务器,这样就可以通过网络,在 Windows 和开发板之间传 输文件.“实战教程-ssh 服务器移植到开发板”,我们要完成的目标是能够通过 ssh 在开

2020毕业设计选用4412开发板,实战教程,小成果不放过

4412精英版在Linux官网默认支持的,从Linux官方下载的最新内核可直接跑在4412上,同步不要太酷噢文档教程超过3000页+,视频260期+,实用文档160+实战项目包含物联网智能家居,门禁系统,WEB服务及远程控制,手机远程控制开发板,GPS定位系统,智能网关,机顶盒 部分视频观看地址( 更多视频教程可在B站上搜索‘迅为电子’ )iTOP-4412精英版开发板硬件连接        https://www.bilibili.com/video/av82341079iTOP4412开发板

带以太网的MicroPython开发板:TPYBoardv201温湿度上传实例

转载请以链接形式注明文章来源,MicroPythonQQ交流群:157816561,公众号:MicroPython玩家汇 历来关于温湿度的检测都是没有间断过的,这次我们继续检测温湿度,同样还是使用DHT11来检测.但是这次检测到的温湿度不进行显示,也不进行报警,这次要把检测到的数据通过以太网上传到服务器上去. 先来说一下需要的器件: TPYBoard_V201开发板一块: DHT11温湿度模块一个: 面包板一个(可省略): 杜邦线若干: 先来简单介绍一下各个器件. TPYBoard_V201开发

新华龙电子推出最新网络开发板(W5100&amp;W5500方案)

2014/12/16 | Filed under: TCP/IP芯片 and tagged with: C8051, W5100, W5500, 新华龙电子, 网络开发板 42 Views 深圳新华龙电子有限公司近日推出了最新的网络开发板(F380-W5500&W5100-DK),集成了以太网专业方案提供商-WIZnet的W5100和W5500.利用全硬件TCP/IP协议栈的优势,从而使得C8051更加便捷,轻松地实现以太网功能.并且使用了W5100/W5500方案,能够大大节省C8051网络方

荣品电子2代三星六核5260开发板支持GPS+北斗4G上网蓝牙4.0

荣品2代三星六核Exynos5260开发板搭配Android4.4.2+10.1寸IPS液晶屏(1920*1200),运行主频1300MHz~1700MHz:2G DDR3内存+16G EMMC存储,800W自动对焦摄像头,支持UBS3.0.GPS+北斗.4G上网(包括移动.联通.电信),蓝牙4.0 产品名称:RP5260开发板(4G全功能版) 产品型号:RP5260-4G 核心板型号:RP5260核心板(2G内存+16G存储) RP-Exynos5260开发板评估板是荣品电子于15年初发布的一