Micropython TurnipBit 电子时钟 青少年编程入门
电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了。TurnipBit相比于其他开发板,制作电子时钟就更加简单了,无需外接任何显示器,因为Turnipbit自带显示功能,只需将Turnipbit扩展板与时钟模块连接,编写相应的代码就OK了,那么接下来,就让我们一起学习下吧。
所需元器件:
TurnipBit一块
TurnipBit扩展板一块
DS3231时钟模块一个
杜邦线若干
usb数据线一条
实验原理:
DS3231时钟模块原理
DS3231(图11-12)是一个时钟模块,其实就是像一个电子时钟,它自身带有电池,当设置好时间后,DS3231就会自动走时。DS3231与开发板之间的通讯是通过I2C接口来完成的。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要SDA(串行数据线)和SCL(串行时钟线)两根线即可在连接于总线上的器件之间传送信息。SDA和SCL都是双向I/O线,连接时,只需要将DS3231上的SDA和SCL与TurnipBit扩展板上的SDA和SCL相连即可。
接线方法:
Turnipbit扩展板与发光二极管接口对应如下表:
TurnipBit扩展板 DS3231时钟模块
3V3 - VCC
GND-GND
SCL-SCL
SDA-SDA
关于代码,这里我们就不用拼插编程了,代码太长拼插起来就有点费时间了
源代码:
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
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)
- 1
- 2
- 3
- 分享
- 举报

-
浏览量:3106次2020-11-19 09:51:59
-
浏览量:3134次2022-11-17 17:54:29
-
2022-12-06 09:45:50
-
浏览量:2447次2018-08-04 13:59:45
-
浏览量:3366次2020-08-22 16:09:02
-
浏览量:3845次2021-04-02 09:37:00
-
浏览量:30685次2021-01-05 15:11:35
-
浏览量:1471次2023-05-16 14:10:29
-
浏览量:6575次2022-06-08 21:18:55
-
浏览量:1792次2018-07-29 08:30:16
-
浏览量:2363次2018-02-04 16:56:03
-
浏览量:2798次2021-12-25 09:00:17
-
浏览量:3177次2021-12-25 09:00:19
-
浏览量:3933次2021-12-26 09:00:15
-
浏览量:9719次2020-11-14 15:42:52
-
浏览量:1556次2020-08-07 17:15:53
-
浏览量:1332次2022-10-10 11:44:39
-
浏览量:7248次2021-12-21 09:00:31
-
浏览量:5648次2022-01-24 14:53:52
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖

qn1521090455






举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明