久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1653|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MicroPython實(shí)戰(zhàn)之TurnipBit開發(fā)板DIY電子時鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
   一、 實(shí)驗(yàn)?zāi)康模?br />     ?學(xué)習(xí)在PC機(jī)系統(tǒng)中擴(kuò)展簡單I/O 接口的方法
    ?學(xué)習(xí)TurnipBit拼插編程
    ?學(xué)習(xí)TurnipBit擴(kuò)展板與DS3231時鐘模塊連接接線方式
    ?學(xué)習(xí)時鐘模塊的使用

    二、所需原器件:
    ?TurnipBit一塊
    ?TurnipBit擴(kuò)展板一塊
    ?DS3231時鐘模塊一個
    ?杜邦線若干
    ?usb數(shù)據(jù)線一條

    三、實(shí)驗(yàn)原理:
    1. DS3231時鐘模塊原理
    DS3231(圖11-12)是一個時鐘模塊,其實(shí)就是像一個電子時鐘,它自身帶有電池,當(dāng)設(shè)置好時間后,DS3231就會自動走時。DS3231與開發(fā)板之間的通訊是通過I2C接口來完成的。I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)兩根線即可在連接于總線上的器件之間傳送信息。SDA和SCL都是雙向I/O線,連接時,只需要將DS3231上的SDA和SCL與TurnipBit擴(kuò)展板上的SDA和SCL相連即可。



    四、接線方法:
    TurnipBit擴(kuò)展板與發(fā)光二極管接口對應(yīng)如下表:



    五、 源代碼:
  1. from microbit import *

  2. DS3231_ADDR       = 0x68
  3. DS3231_REG_SEC    = b'\x00'
  4. DS3231_REG_MIN    = b'\x01'
  5. DS3231_REG_HOUR   = b'\x02'
  6. DS3231_REG_DAY    = b'\x04'
  7. DS3231_REG_MONTH  = b'\x05'
  8. DS3231_REG_YEAR   = b'\x06'
  9. DS3231_REG_TEMP   = b'\x11'
  10. class DS3231(object):
  11.    
  12.     def __init__(self):
  13.         pass
  14.     def DATE(self, dat=[]):
  15.         if dat==[]:
  16.             t = []
  17.             t.append(self.year())
  18.             t.append(self.month())
  19.             t.append(self.day())
  20.             return t
  21.         else:
  22.             self.year(dat[0])
  23.             self.month(dat[1])
  24.             self.day(dat[2])
  25.             
  26.     def TIME(self, dat=[]):
  27.         if dat==[]:
  28.             t = []
  29.             t.append(self.hour())
  30.             t.append(self.min())
  31.             t.append(self.sec())
  32.             return t
  33.         else:
  34.             self.hour(dat[0])
  35.             self.min(dat[1])
  36.             self.sec(dat[2])
  37.     def DateTime(self, dat=[]):
  38.         if dat==[]:
  39.             return self.DATE() + self.TIME()
  40.         else:
  41.             self.year(dat[0])
  42.             self.month(dat[1])
  43.             self.day(dat[2])
  44.             self.hour(dat[3])
  45.             self.min(dat[4])
  46.             self.sec(dat[5])

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

  49.     def setREG(self, dat,reg):
  50.         buf = bytearray(2)
  51.         buf[0] = reg[0]
  52.         buf[1] = dat
  53.         i2c.write(DS3231_ADDR,buf, repeat=False)
  54.         
  55.     def getREG_DEC(self,reg):
  56.         i2c.write(DS3231_ADDR,reg)
  57.         t = i2c.read(DS3231_ADDR,1)[0]
  58.         #print("--===",t,"----------")
  59.         return (t>>4)*10 + (t%16)

  60.     def sec(self, sec=''):
  61.         if sec == '':
  62.             return self.getREG_DEC(DS3231_REG_SEC)
  63.         else:
  64.             self.setREG(self.dec2hex(sec), DS3231_REG_SEC)

  65.     def min(self, min=''):
  66.         if min == '':
  67.             return self.getREG_DEC(DS3231_REG_MIN)
  68.         else:
  69.             self.setREG(self.dec2hex(min), DS3231_REG_MIN)

  70.     def hour(self, hour=''):
  71.         if hour=='':
  72.             return self.getREG_DEC(DS3231_REG_HOUR)
  73.         else:
  74.             self.setREG(self.dec2hex(hour), DS3231_REG_HOUR)

  75.     def day(self, day=''):
  76.         if day=='':
  77.             return self.getREG_DEC(DS3231_REG_DAY)
  78.         else:
  79.             self.setREG(self.dec2hex(day), DS3231_REG_DAY)

  80.     def month(self, month=''):
  81.         if month=='':
  82.             return self.getREG_DEC(DS3231_REG_MONTH)
  83.         else:
  84.             self.setREG(self.dec2hex(month), DS3231_REG_MONTH)

  85.     def year(self, year=''):
  86.         if year=='':
  87.             return self.getREG_DEC(DS3231_REG_YEAR)
  88.         else:
  89.             self.setREG(self.dec2hex(year), DS3231_REG_YEAR)

  90.     def TEMP(self):
  91.         i2c.write(DS3231_ADDR,DS3231_REG_TEMP, repeat=False)
  92.         t1 = i2c.read(DS3231_ADDR,1, repeat=False)[0]
  93.         i2c.write(DS3231_ADDR,b'\x12', repeat=False)
  94.         t2 = i2c.read(DS3231_ADDR,1, repeat=False)[0]
  95.         if t1>0x7F:
  96.             return t1 - t2/256 -256
  97.         else:
  98.             return t1 + t2/256
  99. ds=DS3231()
  100. ds.DATE([17,10,24])
  101. ds.TIME([10,03,00])
  102. while True:
  103.     Time=ds.TIME()
  104.     Time_s=''
  105.     for i in Time:
  106.         Time_s+=str(i)+':'
  107.     display.scroll(Time_s[:-1]+"-")
  108.    
  109.     #print(Time)
  110.     #print(ds.TEMP())
  111.     sleep(1000)
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品综合 | 夜夜艹| 黄色大片免费观看 | 亚洲日本视频 | 亚洲 日本 欧美 中文幕 | 久久美国 | 美女张开腿露出尿口 | 国产精品黄视频 | 天天搞天天操 | 免费的色网站 | 免费av观看 | 久久成人免费 | 午夜在线小视频 | 中文字幕综合 | 国产精品美女久久久久aⅴ国产馆 | 美女中文字幕视频 | 欧美99久久精品乱码影视 | 成人av一区二区三区 | 在线视频一区二区三区 | 日韩美女在线看免费观看 | 美女久久久久久久久 | 久久中文字幕在线 | 久久大香 | 韩日在线 | 国产一区二区电影 | 女朋友的闺蜜3韩国三级 | 成人免费三级电影 | 91国内在线观看 | 欧美一级淫片免费视频黄 | 国产亚洲精品久久久久动 | 国产日韩欧美一区 | 精品久久九九 | 91久久精品一区二区二区 | 91大神在线看 | 日韩精品久久 | 欧美日韩国产一区二区三区 | 欧美一区二区三区四区视频 | 伊人手机在线视频 | 中文av电影 | 亚洲v区| 欧美一区二区在线免费观看 |