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

標題: 10分鐘理解DS1302時鐘模塊 [打印本頁]

作者: ppptalk    時間: 2018-4-19 18:43
標題: 10分鐘理解DS1302時鐘模塊
1. 思路分析


講解DS1302模塊之前先來看看我們平時使用的電子表或者手機。主要涉及兩個方面,如下圖所示。第一個就是查看時間和日期,比如2014年11月15日09時00分50秒星期六,等等。另外一個方面就是設置或者調整時間/日期信息。




圖1 時鐘信息示意圖


同樣的道理,對于DS1302模塊,我們也是從這兩個方面來類比分析的。第一個,查看日期時間,既然是“查看”也就是從DS1302“獲取”信息,那么與‘讀’ DS1302相關。第二個,設置日期時間,既然是“設置”也就是向DS1302“輸入”信息,那么就是與 ‘寫’ DS1302相關了,或者說修改它的相關信息。好了,分析到這里,根據以前講過的內容,你應該可以猜到它的大概設計模樣了。既然是‘讀’和‘寫’ DS1302,那么緊跟著的問題就是,怎么讀,從哪里‘讀‘,怎么“寫”,往哪里“寫”?前面講過,對于機器只有0和1,那么很明顯需要把年月日時間等轉成用0和1來表示。根據前面的經驗通常以一個字節為單位。現在我們把年月日時分秒星期拆成幾個部分。比如‘秒’,我們就用一個字節來表示,‘分’也用一個字節來表示,依此類推,這樣‘秒-分-時-日-月-年’一共需要6個字節,另外加一個‘星期’,一共7個字節來表示,同時給它們排序。比如地址0的字節表示‘秒’,地址1的字節表示’分‘,等等。如下表1所示,注意這個表格只是我們自己的猜測。




表1 時鐘信息存儲分布猜測


這樣就好理解了,當我們需要設置時間和日期時,就是往這7個字節寫入信息,當需要查看時間和日期時,就是去讀取這7個字節內容即可。如果理解了這個,那么對DS1302的整個分析思路也就清晰了,下面我們就按照這個思路看看具體的操作步驟。


2. 操作步驟分析


這里以"寫"為例,簡單描述這個過程,"讀"的過程與"寫"類似。


(1) 如何確定地址

既然是寫,首先要告訴1302寫到哪一個地址,思考過程與LCD1602類似,那么就給DS1302發送一個地址命令(CMD)。前面說過,機器之間的溝通通常是以字節也就是8位為基本單元的,那么就用"0000 0000"來表示1302地址0的字節,用"0000 0001"來表示1302地址1的字節,依此類推。前面做了個猜想,DS1302一共才7個字節(表格1所示),用8個bit來確定,太浪費了。那么就改進一下,如何改進呢?我們用這個地址命令CMD的bit1~bit5來確定這7個字節,比如當bit1~bit5取00000的時候就表示DS1302地址0的字節,取00001的時候就表示DS1302地址1的字節,依此類推。那么地址命令CMD的bit0,bit6和bit7如何處理?這個bit7也就是最高位固定為1,bit6用來設置選擇CK(時鐘)還是RAM。那么還剩下最后一位bit0如何處理?

(2) 如何確定"寫"還是"讀"

通過上面的分析已經知道了單片機如何告訴1302"寫"的地址。注意,這里只是確定了"地址",DS1302仍然不知道你對這個地址是要"讀"還是"寫"。這樣地址命令CMD的最低位還沒有處理,剛好拿來用作"寫"和"讀"的確定。比如當CMD的bit0取0的時候就表示"寫", 取1的時候就表示"讀"。這樣CMD里面既有地址信息,又有命令信息,所以叫做地址命令字節。

現在我們來舉個例子,假如往表格1中的地址0寫入數據(實際上就是設置秒鐘),那么CMD的bit1~bit5就取00000,最低位bit0確定"讀"還是"寫",很明顯也取"0"。最高位bit7固定為1。剩下bit6用來選擇寫RAM還是CK,我們要寫時鐘相關的信息,很明顯取0,這樣CMD就是1000 0000(0x80). 如果你要"讀"地址0的數據(實際上就是查看秒鐘)呢?只需要把CMD的bit0修改為1就可以了。那么CMD就為1000 0001(0x81).


(3) 確定寫入的數據


"讀"還是"寫"確定了,地址也確定了,之后再發送一個字節的數據,這個數據與秒鐘是如何對應的,就去翻一翻芯片手冊了,這個比較好理解。

3. 突發模式(Burst Mode)分析


以上操作過程如果正確,就能顯示和設置時間了。但是這里面實際上還有個BUG,舉個例子來說明一下。假如你要記錄一個人跑步的圖像,第一次觀察到他的左腿在前,第二次觀察到他的右腿在前,如果你把這兩次信息結合起來一定會得出錯誤的結論,就是兩條腿都在前面,這不是"跑"這是"跳"。 錯誤的原因是"跑"是一個動態的過程。同樣的道理,假設現在時間為00分59秒,你先讀"秒",記錄為59秒,然后讀"分"。注意這也是一個動態的過程,此時00分可能變成01分了,這樣你讀到就是01分,然后把這兩次讀的結果結合起來就是01分59秒。很明顯是不對的,那么如何處理呢?對于"跑",處理過程很簡單,"拍照"就行了,拍完照片然后去觀察照片就不會出錯了,因為照片是"靜止"的。對于DS1302也用同樣"拍照"的處理方法,把"時"分"""秒"等信息"照"下來,然后去讀這張"靜止"的照片就不會出錯了。拍照是一個比較平民化的詞匯,為了體現這個行業的專業性,換一個比較難懂的詞匯顯得更高深,叫Burst Mode-突發模式,實際上就是拍照或者說我們平時用的截屏。


綜合來看,不論是LCD1602,OLED 還是DS18B20,如果仔細去分析的話,它們還是有很多內在共同點的。


上一篇:


10分鐘理解LCD1602液晶顯示模塊
10分鐘理解LCD1602如何顯示自定義字符
10分鐘理解OLED顯示模塊
10分鐘理解DS18B20數字溫度計模塊


所有參考代碼工具視頻下載百度網盤鏈接:


百度云盤鏈接地址-51HEI分享.rar (180 Bytes, 下載次數: 107)




作者: A17094430    時間: 2018-4-24 20:16
學習了,精彩的文章
作者: AOP    時間: 2018-4-27 00:16
人才,我得好好學習學習。
作者: a779229648    時間: 2018-9-11 09:41
感謝樓主分享
作者: qq76832893    時間: 2018-9-11 13:43
鏈接失效了。
作者: 1988    時間: 2018-9-11 14:44
大家都好厲害呀。
作者: 9-9-9-9    時間: 2018-9-11 15:37
精彩的文章,值得一看
作者: HWL0541    時間: 2018-9-18 11:07
下載了分享的連接不能用啊,黑幣浪費了
作者: dd2dd    時間: 2021-2-26 00:53
精彩的文章,好厲害呀值得一看
作者: T-123258    時間: 2021-3-31 10:17
很有用的答案,對DS1302時鐘模塊解釋的很到位,很清晰。
作者: T-123258    時間: 2021-3-31 10:18
很有用的答案,對DS1302時鐘模塊的解釋很到位,很清晰。
作者: yudingan    時間: 2021-4-17 10:29
文章很詳細啊  謝謝了  好好學習




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲最大av | 午夜精品久久久 | 欧美黄在线观看 | 亚洲一区二区三区久久 | 国产免费一区二区三区 | 成人一区二区三区在线观看 | 久久久久国产 | 日韩免费视频一区二区 | 一级特黄在线 | 亚洲在线一区 | 午夜在线精品 | 伊人影院99 | 久久99视频这里只有精品 | 91精品国产综合久久国产大片 | 色黄视频在线 | 99热在线免费 | 操亚洲 | 九九免费| 91 在线| 久久久久久亚洲 | 亚洲精品一区二三区不卡 | 99热视 | 亚洲视频中文字幕 | 国产精品一区二 | 亚洲一区二区久久 | 国产精品99久久久久久久久久久久 | 一区二区三区视频在线观看 | 成人中文字幕在线观看 | 欧美专区日韩 | www国产精品| 欧美aⅴ| 青青草社区 | 国产传媒在线观看 | 一级黄色片免费 | 亚洲人久久| 欧美黄在线观看 | 超碰人人插 | 亚洲成人中文字幕 | 成人欧美一区二区三区黑人孕妇 | 成人免费网站 | 在线免费观看毛片 |