樓主是一名業(yè)余的單片機(jī)愛好者,從開始玩單片機(jī)到現(xiàn)在,做過不少的時鐘。從最初的純軟件計(jì)時,到DS1302時鐘芯片再到后來的GPS授時都做過。純軟件計(jì)時一斷電就全歸零了,完全沒有實(shí)用價值;DS1302的好一些,有斷電走時,但也存在走時不準(zhǔn)的問題;GPS授時倒是準(zhǔn)了,可是在室內(nèi)使用信號不好,還要拖一根線到窗臺或室外,顯得不夠簡潔。于是把目光轉(zhuǎn)向了美信的高精度時鐘芯片DS3231(±2ppm ,年誤差1分鐘左右)。最近正好有空,就用它做了個實(shí)用的時鐘。從器件手冊上摘抄的DS3231介紹:DS3231 是低成本、高精度 I2C實(shí)時時鐘 (RTC),具有集成的溫補(bǔ)晶體振蕩器 (TCXO) 和晶體。該器件包含電池輸入端,斷開主電源時仍可保持精確的計(jì)時。集成晶體振蕩器提高了器件的長期精確度。 DS3231采用 16引腳、300mil的 SO封裝。RTC 保持秒、分、時、星期、日期、月和年信息。少于31 天的月份,將自動調(diào)整月末日期,包括閏年補(bǔ)償。時鐘的工作格式可以是 24 小時或帶 AM/PM 指示的 12 小時格式。提供兩個可編程日歷鬧鐘和一路可編程方波輸出。地址與數(shù)據(jù)通過 I2C雙向總線串行傳輸。精密的、經(jīng)過溫度補(bǔ)償?shù)?a target="_blank">電壓基準(zhǔn)和比較器用來監(jiān)視 VCC狀態(tài),檢測電源故障、提供復(fù)位輸出,并在必要時自動切換到備用電源。另外, RST監(jiān)視引腳可以作為手動按鈕輸入以產(chǎn)生外部復(fù)位信號。特性
0°C 至 +40°C 范圍內(nèi)精度為 ±2ppm
-40°C 至 +85°C 范圍內(nèi)精度為 ±3.5ppm
為連續(xù)計(jì)時提供備用電池輸入
低功耗
實(shí)時時鐘提供秒、分、時、星期、日期、月、年信息,并提供有效期到 2100
年的閏年補(bǔ)償
兩個日歷鬧鐘
可編程方波輸出
快速 (400kHz) I2C 接口
3.3V工作電壓
數(shù)字溫度傳感器輸出:精度為 ±3°C
顯示部分使用TM1650驅(qū)動4位0.56寸的共陰極數(shù)碼管。TM1650是天微生產(chǎn)的一款數(shù)碼管驅(qū)動,2線串行驅(qū)動,8級亮度調(diào)整,并且支持28個按鍵掃描。只要把要顯示的數(shù)據(jù)寫入其中就能正確的顯示了,不用再去寫動態(tài)掃描的函數(shù),硬件連接也更簡單。用起來很方便。
MCU的選用:先算了下I/O的占用,I2C 接口2個,TM1650 2個,DS3231的SQW1個(1HZ方波用于刷新顯示)。這樣僅僅用了5個I/O口,配合DS3231的3.3V供電,就選用了手頭現(xiàn)成的STC 15L104W單片機(jī)。
IC選好后,發(fā)現(xiàn)如果用貼片元件的話,和數(shù)碼管差不多大小的PCB就能放得下。
原理圖:
畫好的PCB:
熱轉(zhuǎn)印制板:
焊接完成:
完成后的樣子:
大小控制的不錯吧
最終的成品
后記:程序很簡單,互聯(lián)網(wǎng)上有現(xiàn)成的DS3231和TM1650的函數(shù),稍微改一下就能用了。DS3231的SQW口輸出1HZ方波,單片機(jī)在方波的每個下降沿產(chǎn)生中斷然后讀取DS3231的時間,再發(fā)送到TM1650的顯示寄存器去刷新數(shù)碼管的顯示就行了。放置了2個按鍵用來調(diào)節(jié)時間。所用的單片機(jī)沒有AD,不好實(shí)現(xiàn)自動亮度,只好靠時間去判斷,白天亮度高晚上亮度低,用起來也很不錯。
DS3231的后備電源原來打算用手機(jī)上拆的備份電池,但實(shí)際證明不好用,試過斷電時間超過2個小時就不能保存時間了。后來焊接了一片1.5V的紐扣電池,斷電后可以正常的走時了。由于是自己制板,受單面PCB的限制,布線頗費(fèi)了一番周折。不過每天看到自己的“作品”正常的工作,還是很有成就感的。
-
DS3231
+關(guān)注
關(guān)注
2文章
51瀏覽量
23867 -
多變量函數(shù)運(yùn)算
+關(guān)注
關(guān)注
0文章
2瀏覽量
2000
原文標(biāo)題:DS3231+TM1650做的4位0.56寸數(shù)碼管迷你時鐘(開源)
文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機(jī)精講吳鑒鷹】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論