DIY過程1、原理還是很簡單的,就是用單片機讀取實時時鐘芯片產生的時間數據,并根據時間數據調制成對應的電壓,通過指針電壓表顯示出來就行了。但是要用時間來產生可控的電壓,會用到D/A(數字-模擬轉換),但家里沒有D/A芯片,就一直沒有動手。直到偶然發現STC手冊上有用PMW(脈沖寬度調制)做D/A的說明,就簡單地搭了實驗電路試了一下,覺得可行就匆忙“開工”了。時鐘芯片選用了單片機愛好者常用的DS1302,表頭是2個5V量程的指針電壓表,主控用的是STC12C2052AD,正好2路PWM對應小時和分鐘。STC12C2052AD單片機是STC生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速A/D轉換,20腳封裝。
DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.0V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。使用3V的備用電池可以在主電源斷電的時候繼續走時。
時間的調整使用EC11旋轉編碼器,也就是常說的“飛梭”,可以左右旋轉可按下,這么一個玩意配合程序就能實現小時、分鐘的調節功能了。
2、制作PCB根據選用的元器件繪制出電路圖,畫出PCB來。軟件是Altium Designer。
熱轉印制板、焊接完成后的模樣。受條件所限沒有制作阻焊層,焊錫不太受約束焊點不好看,不如打樣的板子養眼。3、重新繪制表盤
原來是5V的電壓表,為了改成小時和分鐘,需要重新繪制表盤。上網搜了下發現干這個活CAD最拿手,可惜一點基礎也木有,為了畫這個玩意看了2天的視頻教程+百度,才總算勉強畫好。普通打印紙打印的,為防潮在上面貼了一層塑料膜。雙面膠粘到原來的表盤上,自我感覺做得還算不錯。
4、外殼和組裝手里最合適的就是以前弄的這個塑料盒了,大小還合適,就是黑不溜秋的不好看。
正面小電鉆+挫刀開好表頭的孔,好在塑料材質較軟,手工制作也不算吃力,不過精度就很難保證了。裝好EC11編碼器和電源插座,再找合適位置放了2個LED(調節小時和分鐘的指示)就行了。
5、程序和調試DS1302以前玩過,復制粘貼后簡單修改一下就行。EC11的解碼來自互聯網。PWM相關的寄存器參照STC手冊就行了。
用實驗板試一下調零:單片機PWM輸出0,調整電壓表的調零螺絲讓指針指在0的位置。調高端:表頭里的色環電阻換成了3296可調電阻,PWM輸出高,調節3296電阻讓指針指向滿刻度調線性:想要指針指在9點整的位置,輸入理論值后發現會指到9點10分左右,只好逐個刻度在程序里面調整,這應該叫做“線性補償”吧!
就在項目準備完工的時候發現了重大的BUG,每更換一個不同電源,指針指示的位置都有很大的誤差,畢竟每個5V的適配器輸出的電壓不會完全相同,0.1V的差距都會造成指針位置的不同。只好用洞洞板做了個5V的穩壓模塊來補救一下,這樣顯示就穩定了,但輸入電壓就不能使用常見的手機充電器了,找了個9V的路由適配器當電源。
6、如何操作?
正常的時間顯示狀態下,編碼器不起作用,LED全滅。按下編碼器,紅色LED亮起,表示為小時調節模式,左右旋轉調整到正確的位置。再次按下編碼器,紅色LED熄滅,綠色LED點亮,進入分鐘設置狀態,同樣左右旋轉調整到當前的分鐘數,每加減一分鐘,就把秒歸零。這樣在標準時間為X時X分0秒時調一下就達到了分秒同時對好的目的。再按一下,LED全滅,回到正常顯示狀態。美圖鎮樓
后記:就是這么一個簡單的時鐘,磕磕碰碰的做了好久。擺在桌上看著還像那么回事。但折騰的意義大過實用價值,看個時間還得反應一會兒才能明白,有時候還會看錯。但是DIY就是這樣,從想象到完成,這個曲折的過程還是挺美好的。
-
51單片機
+關注
關注
273文章
5699瀏覽量
123220 -
DIY
+關注
關注
176文章
886瀏覽量
348281 -
指針
+關注
關注
1文章
480瀏覽量
70512
原文標題:用51單片機驅動指針電壓表做的時鐘
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論