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