一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)
來源:阿莫論壇,作者:humancn
微信公眾號:芯片之家(ID:chiphome-dy)
公眾號不少粉絲,大一大二做的第一個項目,都是電子時鐘吧,非常經典的STC89C52+DS1302+數碼管組合,帶我們跨入了電子的世界,今天介紹一個小項目,一款漂亮的時鐘,包含菜單等程序,大家可以可以看看,回憶下大學的生活。
這款電子鐘,不僅僅是一個普通電子鐘,因為它包含了一種特殊的感情,更準確的說是基情,四射啊!本人就讀于一個普通的一本大學,學的是電氣工程及其自動化專業,臨近畢業了,想給我的好伙伴們做點什么東西,留作紀念。四年時光匆匆而過,正好也可以用它來見證我們終將逝去的青春以及前行在曲折人生路上的不屈背影。
功能說明:顯示時間日期,溫度,公歷節日(可自己添加,非節日的時候顯示時段,比如:白天、中午之類的)、農歷、鬧鐘、分項設置,配合上位機實現一鍵時間日期設置,在線顯示電腦運行狀況(CPU使用率和內存使用情況),在上位機顯示環境溫度等。
?本設計主要分為三個部分:時鐘的硬件部分、時鐘的軟件部分、上位機的設計。
硬件設計部分
1、主要是這么幾個芯片:stc12c560s2+18b20+ds1302+12864G-086-PC(COG工藝 超薄啊,帶GB2312字庫,串口,可調對比度,顯示起來挺清晰的)。從這看上去,這絕對是一個簡單+經濟的設計。
stc12c560s2:STC號稱51宇宙第一啊,還有什么世界超級獨一無二的加密技術,我就暫且相信了吧。看這價錢,4塊多的,功能夠,也就支持一下國產吧。
18b20:用爛了一個片子,始終感覺計算出的溫度要比實際高2~3度,沒事,我又不是做溫度計的.
ds1302:飽受其害啊,由于32768晶振沒有買到高質量的,誤差有點大(絕對是國產中的山寨品啊)。下回用內置晶振的芯片。
2、原理圖:
原理圖比較簡單,因此就不仔細說明了(注意有些器件信號線的上拉,同時省略了很多濾波電容)。采用AD Summer 09設計,先上圖片,最后一起上附件資源
圖中是雙供電方案,MINI USB+排針。不過USB那個不能用上位機了,排針另加PL2303轉換板即可。當初地方沒有設計好,已經計劃在內的CH340給去掉了。
3、PCB
這是我第二次畫PCB,經驗奇缺啊。由于先設計的程序后設計的原理圖,導致IO分配十分混亂,PCB也亂的嚇人,只能保證能用,不保證穩定性,大家勿噴那。(誰還沒個第一次,是吧,嘿嘿)
這個是打樣回來的PCB:
軟件設計部分
1、驅動部分
18b20、ds1302都是以前的驅動修改過來的,12864廠家例程不夠規范,而且頁地址分配有誤,所以自己在此基礎之上進行了修改,實現了某行反顯,顯示某些自定義大小的圖畫文字,并且將其中的字母和數字向下平移了一個像素,更加美觀。大家打開附件后就會發現,驅動使用兩種方式寫的,一種是 extern void fun();另外一種使用的結構體。兩種用起來都不錯~
2、功能部分
菜單移植的網上一個COB 12864液晶的菜單。這個菜單長處在于多層嵌套,很直觀明了。我用的都是一層的菜單,有點大財小用了,原版菜單見附件。此部分很是混亂啊。? 用定時器0和外部中斷0實現LED背光2S左右后自動關閉,定時器1用于鬧鐘聲響。一會有大量照片)
3、通信部分
由于采用的是12M晶振,所以波特率選取為2400,誤差0.16%,采用獨立波特率發生器(T0被用了)。通信協議自己編的,處理也是自己瞎弄的,你別說,還真有BUG:上位機請求兩次溫度數據,下位機只上傳一次,這么地了吧。
上位機設計部分
開發環境是VC++6.0+MFC,先上一下效果圖,然后講一下開發
第一頁是顯示CPU情況的,由于CDC畫圖的操作我還沒弄明白,所以這個是從別人那COPY的,CPU使用率由于計算方法的原因,會和任務管理器有出入。
第二頁比較簡單,下面的進度條用了一個類,大家打開源碼就會看見叫SwingProgressCtrl,很亮麗有木有,而且隨著使用情況的變化,進度條的背景顏色會變化。
第三頁串口通信部分計劃使用的是CSerialPort類,但是最后發現只能發送一次數據然后不沒反應了,多次百度+調試無果,于是放棄了而去采用調用Moxa的pcomm.dll完成設計,Moxa主要生產工業串口通信設備,所以他們的串口通信組件還是值得信賴的,功能也很豐富。其中有個回調函數,在我的應用中始終有問題,于是在1S定時器中sio_iqueue()查詢緩沖區的數據量(實時性不高的應用),如果是8的話就sio_read()出來(我的報文固定是8個字節),注意sio_read()后從緩沖區讀出的數據,在緩沖區內不再存在。網上說還可以開一個線程不斷sio_iqueue(),我倒是沒試過。溫度顯示原先準備用一個數碼管顯示的空間顯示出來,但是數據不知道怎么回事沒法更新(估計和消息沒處理好有關系),暫時放棄了。
最后本上位機還有托盤,可能是由于開發環境的原因,托盤的氣泡沒有弄出來,只弄出來了基本功能和標題。本人沒有系統學過VC,基本都是東拼西湊+模仿,唉
上位機圖片上有作者的QQ,有需要交流的伙伴們可以聯系作者,謝謝大家閱讀!
資料下載
感興趣的童鞋可以在?公眾號后臺?回復關鍵詞:激情電子鐘,即可獲取全部資料!
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~
總結
以上是生活随笔為你收集整理的一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 的几个for 循环,范围for语
- 下一篇: ARM指令集详解