導航:首頁 > 編程語言 > pythonbcd碼

pythonbcd碼

發布時間:2023-09-02 01:03:36

❶ 樹莓派基礎實驗32:DS1302實時時鍾模塊實驗

  現在有很多流行的串列時鍾晶元,如DS1302,DS1307,PCF8485等,由於簡單的介面,低成本和易用性,他們被廣泛應用於電話、傳真、攜帶型儀器等產品領域。在本實驗中,我們將使用DS1302實時時鍾(RTC)模塊獲取當前日期和時間。

  DS1302可以用於數據記錄,特別是對某些具有特殊意義的數據點的記錄,能實現數據與出現該數據的時間同時記錄。這種記錄對長時間的連續測控系統結果的分析,及對異常數據出現的原因的查找具有重要意義。

  傳統的數據記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此,只能記錄數據而無法准確記錄其出現的時間;若採用單片機計時,一方面需要採用計數器,佔用硬體資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且,某些測控系統可能不允許。但是,如果在系統中採用時鍾晶元DS1302,則能很好地解決這個問題。

★Raspberry Pi 3主板*1

★樹莓派電源*1

★40P軟排線*1

★DS1302實時時鍾模塊*1

★麵包板*1

★跳線若干

  DS1302是DALLAS(達拉斯)公司出的一款涓流充電時鍾晶元,2001年DALLAS被MAXIM(美信)收購。
  DS1302實時時鍾晶元廣泛應用於電話、傳真、攜帶型儀器等產品領域,他的主要性能指標如下:
  1、DS1302是一個實時時鍾晶元,可以提供秒、分、小時、日期、月、年等信息,並且還有軟年自動調整的能力,可以通過配置AM/PM來決定採用24小時格式還是12小時格式。
  2、擁有31位元組數據存儲RAM。
  3、串列I/O通信方式,相對並行來說比較節省IO口的使用。
  4、DS1302的工作電壓比較寬,大概是2.0V~5.5V都可以正常工作。
  5、DS1302這種時鍾晶元功耗一般都很低,它在工作電壓2.0V的時候,工作電流小於300nA。
  6、DS1302共有8個引腳,有兩種封裝形式,一種是DIP-8封裝,晶元寬度(不含引腳)是300mil,一種是SOP-8封裝,有兩 種寬度,一種是150mil,一種是208mil。我們看一下DS1302的引腳封裝圖:

  7、當供電電壓是5V的時候,兼容標準的TTL電平標准,這里的意思是,可以完美的和單片機進行通信。
   8、由於DS1302是DS1202的升級版本,所以所有的功能都兼容DS1202。此外DS1302有兩個電源輸入,一個是主電源, 另外一個是備用電源,比如可以用電池或者大電容,這樣是為了保證系統掉電的情況下,我們的時鍾還會繼續走。如果使用的是充電電池,還可以在正常工作時,設置充電功能,給我們的備用電池進行充電。

  DS1302的特點第二條「擁有31位元組數據存儲RAM」,這是DS1302額外存在的資源。這31位元組的RAM相當於一個存儲器一樣,我們編寫單片機程序的時候,可以把我們想存儲的數據存儲在DS1302里邊,需要的時候讀出來,這塊功能和EEPROM有點類似,相當於一個掉電丟失數據的「EEPROM」,如果我們的時鍾電路加上備用電池,那麼這31個位元組的RAM就可以替代EEPROM的功能了。

  DS1302一共有8個引腳,下邊要根據引腳分布圖和典型電路圖來介紹一下每個引腳的功能:

  DS1302的電路一個重點就是時鍾電路,它所使用的晶振是一個32.768k的晶振,晶振外部也不需要額外添加其他的電容或者電阻電路了。時鍾的精度,首先取決於晶振的精度以及晶振的引腳負載電容。如果晶振不準或者負載電容過大過小,都會導致時鍾誤差過大。在這一切都搞定後,最終一個考慮因素是晶振的溫漂。隨著溫度的變化,晶振往往精度會發生變化,因此,在實際的系統中,其中一種方法就是經常校對。比如我們所用的電腦的時鍾,通常我們會設置一個選項「將計算機設置於internet時間同步」。選中這個選項後,一般可以過一段時間,我們的計算機就會和internet時間校準同步一次。

  對DS1302的操作就是對其內部寄存器的操作,DS1302內部共有12個寄存器,其中有7個寄存器與日歷、時鍾相關,存放的數據位為BCD碼形式。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鍾突發寄存器及與RAM相關的寄存器等。時鍾突發寄存器可一次性順序讀/寫除充電寄存器以外的寄存器。

  DS1302的一條指令一個位元組8位,其中第7位(即最高位)是固定1,這一位如果是0的話,那寫進去是無效的。第6位是選擇RAM還是CLOCK的,這里主要講CLOCK時鍾的使用,它的RAM功能我們不用,所以如果選擇CLOCK功能,第6位是0,如果要用RAM,那第6位就是1。從第5到第1位,決定了寄存器的5位地址,而第0位是讀寫位,如果要寫,這一位就是0,如果要讀,這一位就是1。

  DS1302時鍾的寄存器,其中8個和時鍾有關的,5位地址分別是00000一直到00111這8個地址,還有一個寄存器的地址是01000,這是涓流充電所用的寄存器,我們這里不講。在DS1302的數據手冊里的地址,直接把第7位、第6位和第0位值給出來了,所以指令就成了80H、81H那些了,最低位是1,那麼表示讀,最低位是0表示寫。

  寄存器一:最高位CH是一個時鍾停止標志位。如果我們的時鍾電路有備用電源部分,上電後,我們要先檢測一下這一位,如果這一位是0,那說明我們的時鍾在系統掉電後,由於備用電源的供給,時鍾是持續正常運行的;如果這一位是1,那麼說明我們的時鍾在系統掉電後,時鍾部分不工作了。若我們的Vcc1懸空或者是電池沒電了,當我們下次重新上電時,讀取這一位,那這一位就是1,我們可以通過這一位判斷時鍾在單片機系統掉電後是否持續運行。剩下的7位高3位是秒的十位,低4位是秒的個位,這里注意再提一次,DS1302內部是BCD碼,而秒的十位最大是5,所以3個二進制位就夠了。
  寄存器二:bit7沒意義,剩下的7位高3位是分鍾的十位,低4位是分鍾的個位。
  寄存器三:bit7是1的話代表是12小時制,是0的話代表是24小時制,bit6固定是0,bit5在12小時制下0代表的是上午,1代表的是下午,在24小時制下和bit4一起代表了小時的十位,低4位代表的是小時的個位。
  寄存器四:高2位固定是0,bit5和bit4是日期的十位,低4位是日期的個位。
  寄存器五:高3位固定是0,bit4是月的十位,低4位是月的個位。
  寄存器六:高5位固定是0,低3位代表了星期。
  寄存器七:高4位代表了年的十位,低4位代表了年的個位。這里特別注意,這里的00到99年指的是2000年到2099年。
  寄存器八:bit7是一個保護位,如果這一位是1,那麼是禁止給任何其他的寄存器或者那31個位元組的RAM寫數據的。因此在寫數據之前,這一位必須先寫成0。

   物理上,DS1302的通信介面由3個口線組成,即RST,SCLK,I/O。其中RST從低電平變成高電平啟動一次數據傳輸過程,SCLK是時鍾線,I/O是數據線。這個DS1302的通信線定義和SPI很像,事實上,DS1302的通信是SPI的變異種類,它用了SPI的通信時序,但是通信的時候沒有完全按照SPI的規則來,下面我們介紹DS1302的變異SPI通信方式。

  請注意數據是對時鍾信號敏感的,而且一般數據是在下降沿寫入,上升沿讀出。平時SCLK保持低電平,當需要寫命令或者寫數據時,在時鍾輸出變為高電平之前先輸出數據;當需要讀數據時,在時鍾輸出變為高電平之前采樣讀取數據。

   第1步: 連接電路。

   第2步: DS1302的Python程序比較復雜,我們先編寫一個模塊ds1302.py,在裡面創建一個類DS1302(),在裡面編寫讀取時鍾信息等方法。

   第3步: 編寫實際控製程序,導入上面的模塊ds1302。運行本文件,不斷循環讀取並列印時鍾信息。

  實驗結果示例:

❷ 如何將二進制碼轉換成ASCII碼

每一個ASCII碼都對應一個字元圖形,ASCII有個碼表,是個標准,你可以網路搜一下。它主要用於系統和字元輸入輸出設備之間的信息交換。如果你按下鍵盤上帶圖形「5」的鍵,鍵盤就會送給主機一個它對應的ASCII碼35H;如果你送35H給字元顯示設備,它就會顯示設備內預先存儲好的圖形「5」到屏幕上。
另外,BCD碼一般不說成2進制數,BCD碼集{00H,,,09H}和自然一位數數集{0,,,9}是一一對應關系。拿到一個BCD碼,等於拿到一個自然數,把它翻譯成ASCII碼,一般的目的都是為了送字元顯示設備顯示。如果你把16進制數05H送給字元顯示設備,它一定顯示不出「5」這樣的東西來,把05H轉換成BCD碼(十進制),再轉換成ASCII碼,然後輸出,就OK了。如果是16進制的0AH,轉換成BCD是10H,轉換成ASCII分別是31H和30H,送給字元顯示器,屏幕上就出現了「10」的字樣。

閱讀全文

與pythonbcd碼相關的資料

熱點內容
命令與征服叛逆者修改器 瀏覽:244
怎麼用ios玩安卓全民槍戰 瀏覽:666
程序員入行前後的頭發 瀏覽:709
嵌入式圖像演算法 瀏覽:327
伺服器如何訪問伺服器失敗 瀏覽:873
android進度球 瀏覽:999
Linux造成xfs文件夾 瀏覽:455
華為手機怎麼修改wifi加密類型 瀏覽:248
伺服器封口是什麼意思 瀏覽:741
有限元分析是演算法嗎 瀏覽:901
空氣壓縮機性能曲線 瀏覽:20
京城程序員2019 瀏覽:403
android新系統 瀏覽:510
安卓80有什麼bug 瀏覽:678
如何做單機伺服器 瀏覽:943
校訊通查成績怎麼顯示伺服器異常 瀏覽:882
冰箱壓縮機工作壓力是多少 瀏覽:408
程序員20多平米租房 瀏覽:451
電工知識用線的演算法 瀏覽:338
極光推送php伺服器端 瀏覽:5